Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamisches 2D array deklatieren. Wie? (https://www.delphipraxis.net/8463-dynamisches-2d-array-deklatieren-wie.html)

Matze 5. Sep 2003 07:38


Dynamisches 2D array deklatieren. Wie?
 
Hallo, tja, wie geht das?

Ich meine das hier:

ein dynamischea array:
Delphi-Quellcode:
a: array of real;
mein 2D array:
Delphi-Quellcode:
a: array[1..20,1..3] of real;
jetzt möchte ich das so haben:
Delphi-Quellcode:
a: array[ListBox1.Count-1,1..3] of real;
Das dürfte ja kein so großes Problem sein. :mrgreen:
Aber ich schaff es nicht. ;)

Nimoee 5. Sep 2003 07:50

Re: Dynamisches 2D array deklatieren. Wie?
 
Hallo,

Diese Deklaration deklariert kein dynamisches Array. Nach dem die Struktur erzeugt ist ist das Ding statisch. So gehts nicht.

Schau mal in der Delphi Hilfe unter dynamische Arrays, da kriegst du explizit erklärt wie man dynamische Arrays deklariert und ihre Grösse festlegt.

Solltest du Probleme haben, schick mir ne Mail.

nimoee

Tpercon 5. Sep 2003 07:58

Re: Dynamisches 2D array deklatieren. Wie?
 
Nein, poste hier im Forum!
Schau mal unter SetLength nach.

Matze 5. Sep 2003 07:58

Re: Dynamisches 2D array deklatieren. Wie?
 
Ich habe festgestellt, dass ein 2D array das hier ist:

Delphi-Quellcode:
array of array...
Das suche ich gar nicht. :mrgreen:

Ich möchte eine ganz einfache Matrix haben mit 3 Spalten und beliebig vielen Zeilen.

Kann mir da jemand helfen?

Also das hier, nur dynamisch:
Delphi-Quellcode:
a: array[1..20,1..3] of real;

Matze 5. Sep 2003 08:00

Re: Dynamisches 2D array deklatieren. Wie?
 
@Tpercon:

Bei SetLength finde ich nur das hier:

Delphi-Quellcode:
var
  arr : array of integer;

begin
  SetLength(arr, 10);

...

Tpercon 5. Sep 2003 08:03

Re: Dynamisches 2D array deklatieren. Wie?
 
Vielleicht so? :roll:
array2D: array[1..3] of array of double;

SetLEngth(array2D[1], 20);

Matze 5. Sep 2003 08:08

Re: Dynamisches 2D array deklatieren. Wie?
 
Jetzt habe ich das so:

Delphi-Quellcode:
A:array of array[1..3] of real;

SetLEngth(A[ListBox1.Count-1],);
Was gehört hinter das Komma?

Tom 5. Sep 2003 08:10

Re: Dynamisches 2D array deklatieren. Wie?
 
Auszug aus der Delphi-Hilfe
Zitat:

Zur Deklaration von mehrdimensionalen dynamischen Arrays verwenden Sie aufeinanderfolgende array of ...
-Konstruktionen. Die beiden folgenden Zeilen deklarieren ein zweidimensionales String-Array:

type TMessageGrid = array of array of string;

var Msgs: TMessageGrid;

Um dieses Array zu instantiieren, rufen Sie SetLength mit zwei Integer-Argumenten auf. Wenn beispielsweise I und J Integer-Variablen sind, wird Speicherplatz für ein I mal J großes Array zugewiesen. Msgs[0,0] bezeichnet dann ein Element dieses Arrays:

SetLength(Msgs,I,J);
...
Wird diese bei der D6-Enterprise nicht ausgeliefert?

Tpercon 5. Sep 2003 08:12

Re: Dynamisches 2D array deklatieren. Wie?
 
Die Größe des dynamischen Arrays.

Matze 5. Sep 2003 08:15

Re: Dynamisches 2D array deklatieren. Wie?
 
Delphi-Quellcode:
SetLEngth(A,ListBox1.Count-1);
Geht das so? Ober habe ich ja mit

Delphi-Quellcode:
A:array of array[1..3] of real;
Schon die 2. Spalte bestimmt, muss ich die dann nicht mehr angeben?

Tpercon 5. Sep 2003 08:21

Re: Dynamisches 2D array deklatieren. Wie?
 
Es müßte glaube
Delphi-Quellcode:
SetLEngth(A[1],ListBox1.Count-1);
heißen. Probier's doch mal aus!

Matze 5. Sep 2003 08:26

Re: Dynamisches 2D array deklatieren. Wie?
 
Hab ich auch schon gemacht, dann kommt:

Zitat:

[Fehler] Unit1.pas(46): Inkompatible Typen
Ist das so schwer? ;)

Tpercon 5. Sep 2003 08:33

Re: Dynamisches 2D array deklatieren. Wie?
 
Dann überleg mal selbst!
Delphi-Quellcode:
var myarray: array[1..3] of array of real;

  SetLength(myarray[1],5);
  SetLength(myarray[2],5);
  SetLength(myarray[3],5);

Matze 5. Sep 2003 08:40

Re: Dynamisches 2D array deklatieren. Wie?
 
Danke, aber mein array sieht so aus:

Delphi-Quellcode:
Tabelle: array of array[1..3] of real;
Und ich möchte das auch so herum haben, nur geht das nicht.
Wie weise ich dem 1., nur dem 1. array mit SetLenth etwas zu?

also dem:
Delphi-Quellcode:
Tabelle: array...
denn, dem
Delphi-Quellcode:
array of array[1..3]
habe ich ja schon die 3 zugewiesen.

Tpercon 5. Sep 2003 08:47

Re: Dynamisches 2D array deklatieren. Wie?
 
So sind alle 3 aber immer gleich groß!
Delphi-Quellcode:
  SetLength(myarray,5);
Wenn du das so lassen wilslt, gibt es keine andere Möglichkeit.

Matze 5. Sep 2003 08:51

Re: Dynamisches 2D array deklatieren. Wie?
 
Es ist so:

alle 3 Spalten müssen gleich groß sein.
Die Zeilenanzahl soll aber beliebig sein. Z.B. Alle 3 Spalten haben 100 Zeilen, oder 200...

Mit deinem SetLength-Code geht das leider nicht.
Trotzdem danke für deine Hilfe.

Matze 5. Sep 2003 08:55

Re: Dynamisches 2D array deklatieren. Wie?
 
Mein Programm geht, wenn ich es so mache:

Delphi-Quellcode:
Tabelle: array[1..25,1..3] of real;
nur das 1..25 möchte ich jetzt so groß haben, wie ListBox1.Count-1. ;)

Tpercon 5. Sep 2003 08:56

Re: Dynamisches 2D array deklatieren. Wie?
 
Wenn alle nur die Größe 3 gemeinsam haben sollen und die andere bleibig sein soll, mußt du dein array halt wie oben gezeigt umbauen!

Matze 5. Sep 2003 09:04

Re: Dynamisches 2D array deklatieren. Wie?
 
Ich bekomme das nicht hin. :cry:

Ich habe jetzt:

Delphi-Quellcode:
Tabelle: array[1..3] of array of real;
...
SetLength(Tabelle[1],25);
das geht nicht. :(

Tpercon 5. Sep 2003 09:12

Re: Dynamisches 2D array deklatieren. Wie?
 
Dein letzter Sourcecode geht 100%ig! Damit hast du die Größe der ersten Spalte festgelegt.

Matze 5. Sep 2003 09:22

Re: Dynamisches 2D array deklatieren. Wie?
 
Vielen Dank!

Das geht jetzt, nachher kommt zwardie Fehlermeldung
Ungültige Zeichenoperation, aber das liegt wohl an meinem Programm. ;)

Nachtrag: Hab den Fehler gefunden. :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 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