Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dynamisches mehrdimensionales Array??? (https://www.delphipraxis.net/3396-dynamisches-mehrdimensionales-array.html)

Mada 10. Mär 2003 12:51


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:

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;
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.
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:

Helld_River 10. Mär 2003 13:16

Bsp:

Delphi-Quellcode:
Var
  aktienkurs   : array of array[1..2] of array of array[1..4] of string[10];
und so setzt Du die Länge der 2ten Dimension des Arrays:

Delphi-Quellcode:
SetLength(aktienkurs[i,1],tage+1);
Noch Fragen ?

Hoffe, dass hilft dir weiter !!!

Gruß, Helld

EDIT:
Denke, dass ist doch etwas zu konfus !!!
Also, noch ein Versuch:

Delphi-Quellcode:
VAR TempArray : Array of Array of Double;
Und nun die erste Dimension setzten:

Delphi-Quellcode:
SetLength(DynArr,2);
Und nun die 2te Dimension setzten:

Delphi-Quellcode:
for i := 1 to 2 do SetLength(DynArr[i],2);
(Setzt die 2te Dimension auf die Länge 2 !!!

Gruß, Helld

jbg 10. Mär 2003 16:17

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;

Mada 13. Mär 2003 14:50

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:

jbg 13. Mär 2003 18:47

Zitat:

Zitat von Mada
Also sprich ich schreibe einen Wert, erweitere die Liste um einen Punkt und gehe dann die Schleife weider durch.

Das würde ich nicht machen, da Delphi da ein kleines Problem hat, es wird immer mehr und mehr Speicher von Windows angefordert aber nicht mehr abgegeben, was sich darin äußert, dass dein Programm dann so mal 100 MB auf einmal belegt.


Zitat:

Aber es funktioniert nicht. :cry:
Ohne Quellcode können wir da sehr wenig sagen.

Mada 14. Mär 2003 09:02

Das Problem hat sich erledigt. Habe halt nun doch eine feste Grenze gesetzt.

Danke nochmal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.

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