AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches mehrdimensionales Array???

Ein Thema von Mada · begonnen am 10. Mär 2003 · letzter Beitrag vom 14. Mär 2003
Antwort Antwort
Mada

Registriert seit: 31. Dez 2002
Ort: Bayern
33 Beiträge
 
Delphi 5 Professional
 
#1

Dynamisches mehrdimensionales Array???

  Alt 10. Mär 2003, 13:51
Hallo zusammen!
Trotz meines Geburtstages heute (Danke an das DelphipraxisTeam), bin ich schwer am Rödeln...

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.

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.

LG,
Mada
Glaube an Deine Phantasie und Du kannst erreichen, was immer Du willst!
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#2
  Alt 10. Mär 2003, 14: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:

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:

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

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

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

Gruß, Helld
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3
  Alt 10. Mär 2003, 17: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;
  Mit Zitat antworten Zitat
Mada

Registriert seit: 31. Dez 2002
Ort: Bayern
33 Beiträge
 
Delphi 5 Professional
 
#4
  Alt 13. Mär 2003, 15: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.
Geht das gar nicht? Weiß mir jemand eine Lösung

LG,
Mada
Glaube an Deine Phantasie und Du kannst erreichen, was immer Du willst!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5
  Alt 13. Mär 2003, 19:47
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.
Ohne Quellcode können wir da sehr wenig sagen.
  Mit Zitat antworten Zitat
Mada

Registriert seit: 31. Dez 2002
Ort: Bayern
33 Beiträge
 
Delphi 5 Professional
 
#6
  Alt 14. Mär 2003, 10:02
Das Problem hat sich erledigt. Habe halt nun doch eine feste Grenze gesetzt.

Danke nochmal.
Glaube an Deine Phantasie und Du kannst erreichen, was immer Du willst!
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:16 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