![]() |
AW: Mehrdimensionales Array an anderes anhängen
TeeChart funktioniert aus direkt mit Datenbanken
|
AW: Mehrdimensionales Array an anderes anhängen
Length(array) liefert 0 bei einem leeren Array, wo SetLength noch nicht benutzt wurde. Somit geht ungefähr sowas:
Delphi-Quellcode:
OldLength:=Length(MyArray);
SetLength(MyArray,OldLength+ZeilenInCSV); for i:=0 to ZeilenInCSV-1 do MyArray[OldLength+i]:=CSV.Zeile[i].Spalte[3].Value; |
AW: Mehrdimensionales Array an anderes anhängen
Zitat:
Zitat:
|
AW: Mehrdimensionales Array an anderes anhängen
Bei Mehrdimensionalen Arrays gibt Length() immer die Länge der aktuellen Dimension im Argument zurück. (Mit Zeilen/Spalten haben Arrays übrigens nichts zu tun, das ist nur deine Interpretation ;))
Delphi-Quellcode:
Man muss es also so sehen, dass ein zweidimensionales Array im Grunde ein eindimensionales Array von weiteren eindimensionalen Arrays ist. Wenn man alle "sekundären" Arrays gleich lang macht (was man mit SetLength(MyArray, x, y) tut), dann reicht es die Länge eines der Elemente vom primären Array zu erfragen um die Länge aller sekundären zu erhalten.
var
MyArray: array of array of Integer; begin foo := Length(MyArray); // Länge der 1. Dimension foo := Length(MyArray[0]); // Länge der 2. Dimension end; Man kann aber auch sowas machen:
Delphi-Quellcode:
Dann hat man quasi eine Tabelle, bei der jede Spalte eine unterschiedliche Anzahl von Zeilen hat (oder umgekehrt, je nach dem wie man es interpretiert eben). Dann müsste man für jedes primäre Array einzeln die Länge seines jeweiligen sekundären Arrays ermitteln. (In praktischem Einsatz sehe ich sowas aber sehr selten. Aber es wäre möglich!) Und man ist natürlich nicht auf nur 2 Dimensionen beschränkt. Da kann man echt witzige Dinge mit machen.
var
MyArray: array of array of Integer; begin SetLength(MyArray, 3); SetLength(MyArray[0], 2); SetLength(MyArray[1], 8); SetLength(MyArray[2], 7); end; |
AW: Mehrdimensionales Array an anderes anhängen
Ok dann sind es halt die Dimensionen ;)
Ich ging halt davon aus, dass man ein zweidimensionales Array (was ich ja benötige) wie eine Art Matrix oder, wie du es auch einmal nanntest, Tabelle auffassen kann, da wird ja von Reihen und Spalten gesprochen. Es wäre also sinnvoll die Anzahl der "Zeilen" (die Zeitwerte) in die 1. Dimension zu legen, also die variable Länge und in die 2. Dimension die Anzahl der "Spalten" (die verschiedenen Messreihen), die nur einmal gesetzt werden muss und beim anhängen immer gleich bleibt?
Delphi-Quellcode:
das müsste ja dann gehen, oder? Kann es grad leider nicht testen, da ich meine VM mit Delphi nicht zur Hand habe.
Hilfsarray := Getfile(Filepath); //fülle das Hilfsarray mit Hilfe einer Funktion, welche ein Array zurückgibt, mit den Werten der CSV Datei
Oldlength := length(MyArray); Setlength(MyArray, Oldlength + length(Hilfsarray), length(Hilfsarray[0])); for i := 0 to length(Hilfsarray)-1 do begin for j := 0 to length(Hilfsarray[0])-1 do MyArray[Oldlength + i, j] := Hilfsarray[i,j]; end; |
AW: Mehrdimensionales Array an anderes anhängen
Noch prüfen, ob die Spaltenanzahlen kompatibel sind, aber ansonsten sollte das so passen.
|
AW: Mehrdimensionales Array an anderes anhängen
Mach aus der Getfile besser eine procedure.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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