![]() |
Zwei zusammenhängende Listen sortieren
Hallo ihr,
ich habe selber eine TIntegerList implementiert. So und in dieser stehen halt Zahlen drinne. Zusätzlich sind mit den Zahlen Strings verknüpft. Diese Strings werden dann in einer ComboBox angezeigt und hätte ich gerne sortiert. Aber sobald ich Sorted auf true setze sortiert er ja nur die StringList und somit sind die Daten nicht zurückzuverfolgen. Wie kann ich sozusagen sagen, dass der 5. StringList-Eintrag und der 5. IntegerList-Eintrag zusammenhängen. Also das wenn er sortiert entweder die IntegerList mitsortiert oder das er jedem Stringeintrag einen Eintrag in der IntegerList zuweist und es irgendwo merkt? MfG xZise |
Re: Zwei zusammenhängende Listen sortieren
Wieso hast Du überhaupt 2 Listen? Weil eigentlich könntest Du den String gemeinsam mit dem Integer in der Stringlist speichern. Siehe z.B. hier:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} uses Classes, SysUtils; var IntegerStringListe : TStringList; i : Integer; begin IntegerStringListe := TStringList.Create; IntegerStringListe.AddObject('String 3', TObject(1)); IntegerStringListe.AddObject('String 2', TObject(2)); IntegerStringListe.AddObject('String 1', TObject(3)); writeln('Vor dem sortieren:'); for i := 0 to IntegerStringListe.Count - 1 do writeln('string = ' + IntegerStringListe[i] + ' - integer = ', Integer(IntegerStringListe.Objects[i])); IntegerStringListe.Sorted := true; IntegerStringListe.Sort; writeln; writeln('Nach dem sortieren:'); for i := 0 to IntegerStringListe.Count - 1 do writeln('string = ' + IntegerStringListe[i] + ' - integer = ', Integer(IntegerStringListe.Objects[i])); readln; IntegerStringListe.Free; end. |
Re: Zwei zusammenhängende Listen sortieren
AddObject() ist Dein Freund.
S.o., diesmal war ich zu langsam :zwinker: |
Re: Zwei zusammenhängende Listen sortieren
Entweder du nimmst das Sortieren selber und schreibst dir dafür 'ne eigene Funktion, oder ...
nja, was mir dann noch einfällt, wäre die Prozedur Exchange der beiden Listen zu überschreiben.
Delphi-Quellcode:
und das Selbe in der IntegerList.
TMyStringList = class(TStringList)
public procedure Exchange(Index1, Index2: Integer); override; end; procedure TMyStringList.Exchange(Index1, Index2: Integer); begin IntegerList.Exchange(Index1, Index2); // hier halt die IntegerListe ändern inherited; end; Aber warum machst du nicht Beises in eine Liste? [add] waren andere wohl schneller -.-° |
Re: Zwei zusammenhängende Listen sortieren
Weil ich das mit Object nicht wusste.
MfG xZise |
Re: Zwei zusammenhängende Listen sortieren
Zitat:
|
Re: Zwei zusammenhängende Listen sortieren
und ich war mir sicher ich hätte das vorm Absenden geändert :shock:
|
Re: Zwei zusammenhängende Listen sortieren
Was anderes :mrgreen:
Muss ich das Objekt dann nachher auch irgendwie freigeben? |
Re: Zwei zusammenhängende Listen sortieren
wenn du da wirklich ein Objekt drin ablegst, dann ja.
Aber du kannst auch ganz einfach deine Integer da reinkonvertieren. SizeOf(TObject) = SizeOf(Integer) (da TObjekt eh nur ein Zeiger auf das Objekt ist)
Delphi-Quellcode:
und bei der Variante mußt du nix freigeben, da nicht im "Objekt" gespeichert ist, was man freigeben muß.
var i: Integer;
IntegerStringListe.AddObject('String 3', TObject(i)); i := Integer(IntegerStringListe.Objects[index]); |
Re: Zwei zusammenhängende Listen sortieren
Aber rein theoretisch könnte man damit ausversehen ein Objekt erreichen? :D (Aber habe nichts dagegen)
MfG xZise |
Re: Zwei zusammenhängende Listen sortieren
Klar, Du kannst da auch ein Object reinpacken. Du hattest halt nach nem Integer gefragt, also hab ich da einen Integer reingepackt. Aber prinzipiell könntest Du jedem String auch ein beliebiges Objekt verpassen.
|
Re: Zwei zusammenhängende Listen sortieren
Zitat:
MfG xZise |
Re: Zwei zusammenhängende Listen sortieren
Achso, ja. Könntest damit auch zufällig ein Objekt erreichen. Ich mach mir hier einfach nur zu nutze, das TObject in Wirklichkeit ein Pointer ist, der letztlich genau wie ein Integer 4 Byte groß ist. Wenn Du so einen Wert dann wirklich mal als Objekt nutzen würdest, dann knallts ;).
|
Re: Zwei zusammenhängende Listen sortieren
Letzendlich muß nur der Programmierer wissen, was er darin abgelegt hat und wenn er's vergißt und es knallt ... selber Schuld :angel2:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz