Länge Mehrdimensionales Array

mkersch

Level-1
Beiträge
111
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forenmitglieder,

habe Probleme die Länge einer Dimension in Codesys abzufragen. Könnte mir evtl. jemand von Euch einen Tip
geben, wie ich dies machen könnte.

my_Array:ARRAY[0..9,0..19] OF BYTE;

laenge := SIZEOF(my_Array[0,0]); ==> 1 da 1 Byte je Element
laenge := SIZEOF(my_Array); ==> 200 da 200 Elemente zu je 1 Byte

Wie kann ich die Länge einer Dimension abfragen ?

laenge := SIZEOF(my_Array[0,X]); Diesen Befehl gibt es leider nicht

mfg

mkersch
 
Geht meines Wissens nach nicht, würde ich über Konstanten lösen.

Um die Anzahl der Elemente abzufragen, würde ich die Anzahl der Elemente noch durch die Anzahl der Bytes eines Elements teilen. Dann wird zumindest bei einer Änderung des Datentyps die Anzahl korrekt berechnet.

anzahlarrayelemente = SIZEOF(my_Array) / SIZEOF(my_Array[0,0])
 
Vielen Dank für die Info,

ich werde es gleich ausprobieren.

In diesem Fall ist es ja besser ein zweidimensionales Array so wie "StructuredTrash" es vorgeschlagen hat zu deklarieren.

Oder gibt es hier einen Unterschied zwischen
- my_Array:ARRAY[0..9,0..19] OF BYTE;
- my_Array:ARRAY[0..9] OF ARRAY[0..19] OF BYTE;

mfg.

mkersch
 
Der einzige Unterschied ist die Schreibweise für den Zugriff auf einzelne Felder.
Statt my_Array[0,0] eben my_Array[0][0]

Habe ich noch vergessen:
Auch dies ist dann möglich: my_Array[0]:=my_Array[1];
Aus dem Grund bin ich ursprünglich auf diese Deklarationsart umgestiegen.
 
Zuletzt bearbeitet:
Zurück
Oben