AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dynamisches Array in Liste schreiben?

Ein Thema von ysveikata · begonnen am 12. Feb 2010 · letzter Beitrag vom 12. Feb 2010
Antwort Antwort
Seite 1 von 2  1 2   
ysveikata

Registriert seit: 30. Jul 2008
10 Beiträge
 
#1

Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 11:29
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]
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#2

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 12:14
"Leider..."


Hmm...

xList.Add(FloatToStr(x[i,j])); Ist es das was Du suchst? Wenn Du es noch formatieren willst, nimm FloatToStrF(...)
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#3

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 12:16
Hallo ysveikata,

Die Adresse des Real Wertes abspeichern mit

Code:
 xList.Add(@x[i,j]);
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.
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.824 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 12:20
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#5

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 12:27
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

  xList.Add(FloatToStr(x[i,j])); lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.824 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 12:29
Vermutlich hat er an eine TStringlist gedacht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#7

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 12:40
Zitat von DeddyH:
Vermutlich hat er an eine TStringlist gedacht.
Hallo DeddyH, hoffentlich, sonst gibts noch mehr inkompatibilitäten?

lg. Astat
Lanthan Astat
  Mit Zitat antworten Zitat
ysveikata

Registriert seit: 30. Jul 2008
10 Beiträge
 
#8

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 12:42
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
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
1.221 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 14:21
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?
  Mit Zitat antworten Zitat
ysveikata

Registriert seit: 30. Jul 2008
10 Beiträge
 
#10

Re: Dynamisches Array in Liste schreiben?

  Alt 12. Feb 2010, 14:57
Besten Dank, Sign kennt mein Delphi zwar nicht, aber mit if und else hat s funktioniert...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
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