![]() |
Dynamisches mehrdimensionales Array???
Hallo zusammen!
Trotz meines Geburtstages heute :party: (Danke an das DelphipraxisTeam), bin ich schwer am Rödeln... :spin: Ich habe ein mehrdimensionales Array zu füllen, wo ich zuvor aber die Länge nicht kenne. Bei Bedarf soll ein Feld angehängt werden können. Irgendwie werde ich aus der Hilfe grad nicht schlau, wie muss ich diesen nun genau definieren :?: :?: :?:
Code:
Also zum Code, es soll so ablaufen. Wenn er in die Schleife springt, dann wird an die erste Stelle des Arrays VarA geschrieben. Dann in Folge die Berechnung durchgeführt. Ist bei dem zweiten Durchlauf nun der Wert von VarA gleich dem vorherigen, dann Soll er in der anschließenden Berechnung den Wert von VarB eben um den Batrag von VarC erhöhen. TempArray : Array of Array of Double; ... begin ... FirstRow:=0; SetLength(DynArr,2); //2 Spalten müssen drin sein, aber mehrere, vorher nicht bekannt wieviele zeilen begin for FirstRow := 0 to Obergrenze do if TempArray[FirstRow,0] = VarA then begin TempArray[FirstRow,1] := VarB + VarC; VarB := VarB + VarC; end; if TempArray [FirstRow,0] = 0 then begin TempArray[FirstRow,0] := VarA; TempArray[FirstRow,1] := VarB; FirstRow := FirstRow + 1; TempArray[FirstRow,0] := 0; if TempArray[FirstRow,0] = VarA then Break; end; end; end; Erst wenn der Wert von VarA sich verändert, dann soll er eine neue Zeile im Array beginnen und eben dort die Berechnung weiterführen. Kommt nun wieder der Anfangswert von VarA, dann soll er eben bei dem Anfangswert von A (erster Eintrag im Array) weitermachen. :freak: Alles klar? Verständlich erklärt? Wie mache ich nun das mit dem dynamischen Array? Denn ein Feld soll nur hinzugefügt werden, wenn sich eben der Wert von VarA ändert. :coder: LG, Mada :cat: |
Bsp:
Delphi-Quellcode:
und so setzt Du die Länge der 2ten Dimension des Arrays:
Var
aktienkurs : array of array[1..2] of array of array[1..4] of string[10];
Delphi-Quellcode:
Noch Fragen ?
SetLength(aktienkurs[i,1],tage+1);
Hoffe, dass hilft dir weiter !!! Gruß, Helld EDIT: Denke, dass ist doch etwas zu konfus !!! Also, noch ein Versuch:
Delphi-Quellcode:
Und nun die erste Dimension setzten:
VAR TempArray : Array of Array of Double;
Delphi-Quellcode:
Und nun die 2te Dimension setzten:
SetLength(DynArr,2);
Delphi-Quellcode:
(Setzt die 2te Dimension auf die Länge 2 !!!
for i := 1 to 2 do SetLength(DynArr[i],2);
Gruß, Helld |
SetLength() wurde extra für dynamische Arrays erweitert, so dass in einem Zug alle Dimensionslängen gesetzt werden können.
Delphi-Quellcode:
var a: array of array of array of string;
begin SetLength(a, 10, 2, 20); a[9, 1, 19] := 'Hallo'; end; |
Danke an Euch! :)
Hab nun ein anderes Problem, ist aber ähnlich. Es geht um eine Liste mit verschiedenen Einträgen. Diese Einträge werden mit einer schleife hinzugefügt. Da ich im Voraus nicht weiß, wieviele Einträge es werden können dachte ich mir, ich setze das SetLenght(zeile, 2); dynamisch und erhöhe das zeile in einer repeat schleife immer wieder um 1. Also sprich ich schreibe einen Wert, erweitere die Liste um einen Punkt und gehe dann die Schleife weider durch. Aber es funktioniert nicht. :cry: Geht das gar nicht? Weiß mir jemand eine Lösung :?: :coder: LG, Mada :cat: |
Zitat:
Zitat:
|
Das Problem hat sich erledigt. Habe halt nun doch eine feste Grenze gesetzt.
Danke nochmal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 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