Sind die vertauschten Positionen immer gleich?
Statt in einen String zuladen Stringlist verwenden, dann kannst du auf die einzelnen Teilstring indiziert zugreifen.
Delphi-Quellcode:
..
var
..
sl1, sl2: TStrings;
begin
sl1 := TStringList.Create;
sl2 := TStringList.Create;
sl1.Delimiter := ' ';
sl2.Delimiter := ';';
..
Readln(f1, s1);
sl2.DelimitedText := '';
sl1.DelimitedText := s1;
sl2.ValueFromIndex[0] := sl1.ValueFromIndex[2];
sl2.ValueFromIndex[1] := sl1.ValueFromIndex[1];
usw.