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 Dynamisches Array in Liste schreiben? (https://www.delphipraxis.net/147610-dynamisches-array-liste-schreiben.html)

ysveikata 12. Feb 2010 12:29


Dynamisches Array in Liste schreiben?
 
Hallo,

ich habe ein 2-dimensionales dynamisches Array und möchte Teile davon in eine Liste schreiben (um sie dann zu sortieren).
Leider funktioniert zwar die Zuweisung des kompletten Arrays auf die Liste, denn dynamische Arrays sind ja Pointer, aber die einzelnen Elemente sind vom Typ 'Real'. Was kann ich da tun?

Die relevanten Abschnitte meines Codes:

Delphi-Quellcode:
var x: Array of Array of Real;
    xlist: TList;

...

SetLength(x,nn,nn);

x[i,j]:= ... // x wird mit Werten gefüllt

xlist.Create;

for i:=0 to nn-1 do
    for j:=0 to nn-1 do
        if x[i,j] > testvalue
            xList.Add(x[i,j]);

...
[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit]

GHorn 12. Feb 2010 13:14

Re: Dynamisches Array in Liste schreiben?
 
"Leider..." :gruebel:


Hmm...

Delphi-Quellcode:
xList.Add(FloatToStr(x[i,j]));
Ist es das was Du suchst? Wenn Du es noch formatieren willst, nimm FloatToStrF(...)

Astat 12. Feb 2010 13:16

Re: Dynamisches Array in Liste schreiben?
 
Hallo ysveikata,

Die Adresse des Real Wertes abspeichern mit

Code:
 xList.Add(@x[i,j]);
Zitat:

Zitat von ysveikata
.. in eine Liste schreiben (um sie dann zu sortieren).

Die liste wird dann nach den Adressen sortiert, und nicht nach den Werten.

DeddyH 12. Feb 2010 13:20

Re: Dynamisches Array in Liste schreiben?
 
Zitat:

Zitat von Astat
Die liste wird dann nach den Adressen sortiert, und nicht nach den Werten.

Es sei denn, man schreibt eine entsprechende TListSortCompare für Delphi-Referenz durchsuchenTList.Sort

Astat 12. Feb 2010 13:27

Re: Dynamisches Array in Liste schreiben?
 
Hallo GHorn, ist das jetzt ab D2009 neu, dass eine TList auch andere Werte als Pointe aufnehmen kann? :?:
Ist ja so einiges geändert worden, womöglich auch dass :gruebel:

Delphi-Quellcode:
  xList.Add(FloatToStr(x[i,j]));
lg. Astat

DeddyH 12. Feb 2010 13:29

Re: Dynamisches Array in Liste schreiben?
 
Vermutlich hat er an eine TStringlist gedacht.

Astat 12. Feb 2010 13:40

Re: Dynamisches Array in Liste schreiben?
 
Zitat:

Zitat von DeddyH
Vermutlich hat er an eine TStringlist gedacht.

Hallo DeddyH, hoffentlich, sonst gibts noch mehr inkompatibilitäten? :?: :gruebel:

lg. Astat

ysveikata 12. Feb 2010 13:42

Re: Dynamisches Array in Liste schreiben?
 
Vielen Dank erstmal, das Eintragen in die Liste mit @x[i,j] funktioniert.

Wie läuft das jetzt mit TListSortCompare um nach den Werten zu sortieren? Oder gibt s vielleicht doch ne andere Möglichkeit?

Grüße

Blup 12. Feb 2010 15:21

Re: Dynamisches Array in Liste schreiben?
 
Delphi-Quellcode:
function VergleicheReal(Item1, Item2: Pointer): Integer;
begin
  Result := Sign(Real(Item1^) - Real(Item2^));
end;

Liste.Sort(VergleicheReal);
Aber für was soll das Ganze gut sein?

ysveikata 12. Feb 2010 15:57

Re: Dynamisches Array in Liste schreiben?
 
Besten Dank, Sign kennt mein Delphi zwar nicht, aber mit if und else hat s funktioniert...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.
Seite 1 von 2  1 2   

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