Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: Länge Mehrdimensionales Array

  1. #1
    Registriert seit
    09.09.2010
    Beiträge
    106
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard


    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
    Zitieren Zitieren Länge Mehrdimensionales Array  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    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])

  3. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    mkersch (04.03.2015)

  4. #3
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    So geht es:

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

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

  5. Folgende 2 Benutzer sagen Danke zu StructuredTrash für den nützlichen Beitrag:

    mkersch (05.03.2015),Thomas_v2.1 (05.03.2015)

  6. #4
    mkersch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.09.2010
    Beiträge
    106
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    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

  7. #5
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    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.
    Geändert von StructuredTrash (05.03.2015 um 15:18 Uhr)

  8. #6
    mkersch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.09.2010
    Beiträge
    106
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für die Hilfe.

    Ich werde in Zukunft meine Mehrdimensionalen Arrays so deklarieren.
    Ist eleganter und bietet mehr Möglichkeiten.

    mfg.
    mkersch

Ähnliche Themen

  1. Antworten: 20
    Letzter Beitrag: 25.07.2016, 11:38
  2. TIA Länge eines Array of Struct kontrollieren
    Von Bereichslängenfehler im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 03.07.2013, 09:15
  3. Mehrdimensionales Array als Konstante
    Von forellengarten im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 02.03.2011, 00:06
  4. Array länge mit SCL ermitteln
    Von Linowitch im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 08.07.2010, 12:12
  5. Länge eines Array variabel halten
    Von Kuffel im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 17.01.2007, 15:46

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •