![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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