Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zwei zusammenhängende Listen sortieren (https://www.delphipraxis.net/124060-zwei-zusammenhaengende-listen-sortieren.html)

xZise 13. Nov 2008 20:07


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

Fridolin Walther 13. Nov 2008 20:16

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.

DeddyH 13. Nov 2008 20:18

Re: Zwei zusammenhängende Listen sortieren
 
AddObject() ist Dein Freund.
S.o., diesmal war ich zu langsam :zwinker:

himitsu 13. Nov 2008 20:21

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:
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;
und das Selbe in der IntegerList.


Aber warum machst du nicht Beises in eine Liste?
[add] waren andere wohl schneller -.-°

xZise 13. Nov 2008 20:23

Re: Zwei zusammenhängende Listen sortieren
 
Weil ich das mit Object nicht wusste.

MfG
xZise

DeddyH 13. Nov 2008 20:24

Re: Zwei zusammenhängende Listen sortieren
 
Zitat:

Delphi-Quellcode:
Inherridet;

[OT] Und ich dachte, sowas krieg nur ich hin :mrgreen: [/OT]

himitsu 13. Nov 2008 20:43

Re: Zwei zusammenhängende Listen sortieren
 
und ich war mir sicher ich hätte das vorm Absenden geändert :shock:

xZise 13. Nov 2008 21:02

Re: Zwei zusammenhängende Listen sortieren
 
Was anderes :mrgreen:

Muss ich das Objekt dann nachher auch irgendwie freigeben?

himitsu 13. Nov 2008 21:30

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:
var i: Integer;

IntegerStringListe.AddObject('String 3', TObject(i));

i := Integer(IntegerStringListe.Objects[index]);
und bei der Variante mußt du nix freigeben, da nicht im "Objekt" gespeichert ist, was man freigeben muß.

xZise 13. Nov 2008 22:35

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 09:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz