Ich will mal versuchen das auf die altmodische Art zu Lösen:
Code:
var ozeile:integer;
// in die Form zwei Tmemo und eine Tlistbox einfügen
....
memo1.lines.loadfromfile('ursprung.txt'); // Textladen
Listbox1.items.clear; // Zwischenpuffer zum sortieren
Listbox1.Sorted:=False; // Sortierung aus
for i:=0 to memo1.lines.count-1 do begin
if Pos(#9,Memo1.lines[i])>0 then begin // SP2 ermitteln
ListBox1.items.Add(Copy(Memo1.lines[i],Pos(#9,Memo1.lines[i])+1),255); // Sp2+sp3 einsetzen
ListBox1.Items[ListBox1.items.count-1]:=Copy(ListBox1.Items[ListBox1.items.count-1],1,Pos(#9,ListBox1.Items[ListBox1.items.count-1])))+intTostr(i); // sp3 entfernen und ID mit übergeben
end;
Listbox1.Sorted:=True; // sortieren
memo2.Lines.clear; // hier nun das ergebnis speichern
for i:=0 to ListBox1.items.count-1 do begin
// ursprüngliche zeile herausfinden
ozeile:=StrToInt(Copy(ListBox1.items[i],Pos(#9,ListBox1.Items[i]+1),255)); //id der sortierten Listbox auslesen
memo2.lines.Add(memo1.lines[ozeile]); // ursprüngliche zeile übergeben
end;
//
// in memo2 steht nun das ergebnis
Sollte ich Tippfehler oder Klammern vergessen haben, so bitte ich dies zu entschuldigen, da ich das hier einfach mal so reingehackt habe .....