Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Datenstruktur für (viele) xy-Werte (https://www.delphipraxis.net/162452-datenstruktur-fuer-viele-xy-werte.html)

silver-moon-2000 23. Aug 2011 14:55

AW: Datenstruktur für (viele) xy-Werte
 
Zitat:

Zitat von cltom (Beitrag 1118988)
Hej,
Aktuell hab ich die Daten in einer StringListe (durch den Import aus einer Textdatei) und müsste im nächsten Schritt ein wenig rechnen damit. Nachdem ich hier im Forum immer wieder lese, dass man dynamische Arrays meiden sollte, bin ich ein wenig am Überlegen, was sonst.

Ich habe jetzt keine Ahnung, wie bei Dir dieses "rechnen" aussieht, vielleicht liege ich jetzt komplett daneben, aber vielleicht kann man das auch in eine Klasse verpacken
Delphi-Quellcode:
TFloatPoint = class(TObject)
  private
    FX : Double;
    FY : Double;
  public
    constructor Create(_x, _y : Double);
    function getAbstandVomUrsprung : Double;
    function getAbstandVonAnderemPunkt(_p : TFloatPoint);
    property X : Double read FX write FX;
    property Y : Double read FY write FY;
end;
und die Speicherung dann über eine T(Object)List.
Delphi-Quellcode:
procedure TransferValues;
var
  list : TObjectList;
  tx, ty : Double;
begin
  list := TObjectList.Create;
  for i := 0 to StringList.Count - 1 do
  begin
    tx := StrToInt({x-Element aus}StringList.Lines[i]);
    ty := StrToInt({y-Element aus}StringList.Lines[i]);
    list.Add(TFloatPoint.Create(tx, ty));
  end;
  //Weitere Arbeitsschritte mit den Werten
  List.Free;
end;
Fehlerbehandlung außen vor gelassen

Ist etwas langsamer als der Zugriff über Records, aber wenn Geschwindigkeit nicht das oberste Gebot ist, finde ich ObjectLists eigentlich immer sehr komfortabel.
Vielleicht bin ich aber auch komplett über's Ziel hinaus oder knapp dran vorbei geschossen...:wink:

DeddyH 23. Aug 2011 15:02

AW: Datenstruktur für (viele) xy-Werte
 
Das entspricht in etwa dem, was ich auch bereits vorgeschlagen hatte, nur dass ich keine TObjectList, sondern gleich die Stringliste verwendet hätte. Im Hinblick auf die Speicherverwaltung ist die TObjectList allerdings komfortabler.

silver-moon-2000 23. Aug 2011 15:17

AW: Datenstruktur für (viele) xy-Werte
 
Zitat:

Zitat von DeddyH (Beitrag 1119021)
Das entspricht in etwa dem, was ich auch bereits vorgeschlagen hatte, nur dass ich keine TObjectList, sondern gleich die Stringliste verwendet hätte. Im Hinblick auf die Speicherverwaltung ist die TObjectList allerdings komfortabler.

sorry, habe ich überlesen.
Ich wollte einfach darauf hinaus (wie Du auch schon geschrieben hast), dass es mEn mit Klassen / Objekten komfortabler geht, sobald man mehr als eine reine Datenhaltung braucht.

[OT]
<ironie> menno, jetzt hab' ich mich für SO intelligent gehalten, eine vollständig neue Lösung zu finden</ironie>
[/OT]

cltom 23. Aug 2011 15:41

AW: Datenstruktur für (viele) xy-Werte
 
vielen Dank für die Antworten!

@SilverMoon
sieht gut aus, ob Record oder doch gleich Dein Ansatz werde ich mir ansehen, sobald klarer wird, wie ich mit den Daten weitermache. Es wird primär darum gehen, Polynome durchzulegen, auf Ausreisser zu prüfen und dergleichen.

für den Start nehme ich mal den Record-Ansatz, der erscheint mir übersichtlich

vielen Dank nochmals!

gammatester 23. Aug 2011 15:57

AW: Datenstruktur für (viele) xy-Werte
 
Zitat:

Zitat von cltom (Beitrag 1119049)
... Es wird primär darum gehen, Polynome durchzulegen, auf Ausreisser zu prüfen und dergleichen.

für den Start nehme ich mal den Record-Ansatz, der erscheint mir übersichtlich

Übersichtlichkeit ist doch nur ein Kriterium. Bei den Anforderungen (Regressionspolynome, Statistik etc.) wirst Du mM einen ganzen Fuhrpark von Rädern neuerfinden müssen bei Objektlisten, Records etc. Für Arrays gibt's da doch wohl mehr Vorlagen.

himitsu 23. Aug 2011 15:58

AW: Datenstruktur für (viele) xy-Werte
 
Zitat:

Zitat von DeddyH (Beitrag 1119008)
Nur sollte man aufpassen, dass man das Array nicht allzu oft vergrößern muss, sonst geht die Performance doch wieder in die Knie.

FastMM ist doch in D2006 integreirt oder kam das erst später rein?

Wenn ja, dann würd über den neuen Speichermanager dort Einiges optimiert, da dieser Speicher "inplace" vergrößern/-kleiner kann. (wenn genug Platz)

Jumpy 24. Aug 2011 07:40

AW: Datenstruktur für (viele) xy-Werte
 
Zitat:

Zitat von cltom (Beitrag 1118988)
Aktuell hab ich die Daten in einer StringListe (durch den Import aus einer Textdatei) und müsste im nächsten Schritt ein wenig rechnen damit.

Versteh ich das so, das deine Anwendung die Daten aus der Messung nicht zur Laufzeit erfasst, sondern nach der Messung die Ergebnisse als Textdatei bekommt?

Dann ist doch die Anzahl der Datensätze bekannt und es muss noch nichtmal ein dyn. Array sein, bzw. besser ausgedrückt eines, dass nur einmal vergrößert werden muss.

cltom 24. Aug 2011 15:42

AW: Datenstruktur für (viele) xy-Werte
 
Kleine Zusatzfrage, die sich direkt aus dem obigen ergibt:

warum geht das hier nicht?:

Delphi-Quellcode:
procedure FloatArrayFromStringList(astringlist : TStringList; afloatarray : TFloatArray);
var
  i : integer;
begin
  SetLength(afloatarray,astringlist.count); //das hier geht so offenbar nicht!
  for i := 0 to astringlist.count-1 do
    begin
      TryStrToFloat(etc.)
    end;
end;
Ich will also der Prozedur die StringList und das daraus gerechnete Array übergeben und dort die Größe des Arrays festlegen. Das klappt aber nicht. Ich muss SetLength ausserhalb der Prozedur machen.

danke
cltom

Jumpy 24. Aug 2011 16:13

AW: Datenstruktur für (viele) xy-Werte
 
Muss man das vllt. als var oder sowas übergeben?

DeddyH 24. Aug 2011 16:37

AW: Datenstruktur für (viele) xy-Werte
 
Jepp.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
Seite 2 von 3     12 3      

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