Initalisieren von zweidimensionalen Arrays

charly

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte ein zweidimensionales Array dynamisch initalisieren.

a:=1;
b:=4;

array1 array[0..a,0..b] of int;

bei einem eindimensionalen geht es ja folgendermaßen:

array 1 array[0..a] of int := a(12);

Hat da jemand eine Idee, oder ist das so nicht möglich?

Grüße
Charly
 
Hallo,
CoDeSys Hilfe:
Initialisierung von Arrays:
Beispiele für die komplette Initialisierung eines Arrays:arr1 : ARRAY [1..5] OF INT := 1,2,3,4,5;
arr2 : ARRAY [1..2,3..4] OF INT := 1,3(7); (* kurz für 1,7,7,7 *)
arr3 : ARRAY [1..2,2..3,3..4] OF INT := 2(0),4(4),2,3; (* kurz für 0,0,4,4,4,4,2,3 *)
Gruß,
Rayk
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort,

d.h. ich kann nur den letzten Index automatisieren, oder?

mein Problem ist eigentlich, dass der erste Index variabel ist, der zweite wäre weniger kritisch.
Bräuchte also so irgendwas:

array1 : array[0..a,0..2] of int := a(11,12,13);
 
Mit initialisieren meinst Du aber schon den Anfangswert. Den ersten Beitrag da oben macht auch mich den Eindruck als wolltest Du die Array-Größe dynamisieren (was nicht so einfach geht).

Wenn es um den Anfangswert geht schreib Dir doch eine kleine Schleife zum Initialisieren. Die kannst Du mit einer Initvariable anstoßen.
 
ja, meinte die Anfangswerte,

Das mit dem dynamisch ist vielleicht etwas unverständlich,
die dynamische varibale wird als Konstante definiert. Die hat für mich mehrere Vorteile.

Stimmt mit ner Schleife könnte man es auch realisieren...

Danke!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Bei der Initialisierung von Arrays werden immer alle Felder der Reihe nach behandelt.
Das bedeutet in folgendem Beispiel:
Code:
myArray : ARRAY [0..2,0..2] OF INT:= [COLOR=Red][[/COLOR]#Wert1,WERT2,#WERT3,4(#WERT4)[COLOR=Red]][/COLOR];
myArray[0,0] = #WERT1
myArray[0,1] = #WERT2
myArray[0,2] = #WERT3
myArray[1,0] = #WERT4
myArray[1,1] = #WERT4
myArray[1,2] = #WERT4
myArray[2,0] = #WERT4
myArray[2,1] = 0
myArray[2,2] = 0

Da dein Array dynamisch ist, würde ich die Initschleife empfehlen.

Edit: Die Initialwerte müssen in [] geschrieben werden (CoDeSys V3.4). Hatte mich von den vorangegangenen Beiträgen verleiten lassen.
 
Zuletzt bearbeitet:
So ich noch mal,
hat mir jetzt doch keine Ruhe gelassen.
Falls du alle Felder mit dem gleichen Wert initialisieren möchtest, kannst du das auch folgendermaßen machen. (getestet mit CoDeSys V3.4)
Code:
VAR
    myArray : ARRAY [0..c_iArr1,0..c_iArr2] OF INT:= [((c_iArr1[COLOR=Red]+1[/COLOR])*(c_iArr2[COLOR=Red]+1[/COLOR]))(99)];
END_VAR
VAR CONSTANT
    c_iArr1:INT:=2;
    c_iArr2:INT:=2;
END_VAR
+1 weil das Array jeweils bei 0 beginnt

Ergebnis siehe Anhang
 

Anhänge

  • Test_Array.jpg
    Test_Array.jpg
    69,7 KB · Aufrufe: 115
Hi,

ich glaube, meine Frage passt hier ganz gut rein:

Was ist denn an dieser Deklaration des Arrays (bzw. der Initialisierung) falsch?

Code:
    arFade_Rate_DALI:     ARRAY[0..15] OF STRING(20):= [    'nicht anwendbar',
                                                        '357,796',
                                                        '253,000',
                                                        '178,898',
                                                        '126,500',
                                                        '89,449',
                                                        '63,250',
                                                        '44,725',
                                                        '31,625',
                                                        '22,362',
                                                        '15,813',
                                                        '11,181',
                                                        '7,906',
                                                        '5,591',
                                                        '3,953',
                                                        '2,795'];

Habe ein ARRAY OF STRING und in diesem ARRAY möchte ich eben gleichzeitig REAL und Zeichen speichern können. daher OF STRING.
Kann man das so nicht machen?

Grüße,
Flo
 
Zurück
Oben