Es kann sein, dass ich das Problem nicht verstehe, aber warum tauschst du nicht in der Tauschfunktion den ganzen Record? Irgendwie so:
Delphi-Quellcode:
procedure TForm1.WertTauschen(var Liste : Array of PBusEintrag; StelleA, StelleB: Integer);
var tempI: TBusEintrag;
begin
tempI := Liste[StelleA];
Liste[StelleA]:= Liste[StelleB];
Liste[StelleB]:= tempI;
end;