Thema: Delphi Stringliste Umkehren

Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

Re: Stringliste Umkehren

  Alt 14. Mär 2008, 16:49
Zitat von bluesbear:
...Exchange ist eine superelegante Lösung! Da müssen keine Speicherbereiche kopiert oder sonstwas gemacht werden, sondern nur ein paar Pointer vertauscht. Was schreibst denn Du da für einen... okok, ich werd wieder paranoid.
Jo. Siehe hier :

Delphi-Quellcode:
procedure TStringList.Exchange(Index1, Index2: Integer);
begin
  if (Index1 < 0) or (Index1 >= FCount) then Error(@SListIndexError, Index1);
  if (Index2 < 0) or (Index2 >= FCount) then Error(@SListIndexError, Index2);
  Changing;
  ExchangeItems(Index1, Index2);
  Changed;
end;

procedure TStringList.ExchangeItems(Index1, Index2: Integer);
var
  Temp: Integer;
  Item1, Item2: PStringItem;
begin
  Item1 := @FList^[Index1];
  Item2 := @FList^[Index2];
  Temp := Integer(Item1^.FString);
  Integer(Item1^.FString) := Integer(Item2^.FString);
  Integer(Item2^.FString) := Temp;
  Temp := Integer(Item1^.FObject);
  Integer(Item1^.FObject) := Integer(Item2^.FObject);
  Integer(Item2^.FObject) := Temp;
end;
So sieht das intern aus. Und elegant ist IMHO lesbarer Quelltext. Wer meine 7 relevanten Zeilen nicht versteht, der tut mir leid. Ergebnis : siehe Anhang.
Angehängte Dateien
Dateityp: exe testpro_741.exe (377,0 KB, 10x aufgerufen)
Gruß
Hansa
  Mit Zitat antworten Zitat