Here a ready-to-use example, based on the wiki:
procedure BubbleSort( a: TStrings );
var
n, newn, i:integer;
begin
n := a.Count - 1;
repeat
newn := 0;
for i := 1 to n do
begin
if a[ i - 1 ] > a[ i ] then
begin
a.Exchange( i - 1 , i );
newn := i ;
end;
end ;
n := newn;
until n = 0;
end;
procedure TForm1.Button1Click(Sender :TObject);
begin
BubbleSort(memo1.Lines);
end;