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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Array länge mit SCL ermitteln

  1. #11
    Registriert seit
    06.10.2003
    Beiträge
    3.410
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Grubba Beitrag anzeigen
    ...Aus irgendeinem Grund geht Step7 wohl hin und formatiert bei symbolischer Adressierung intern auf Byte um.

    Mein Interesse ist hier nur theoretischer Natur, würde mich halt mal interessieren warum das so ist.
    Ich vermute, es ist ganz einfach mal so fest gelegt worden. Der Compiler generiert in den Fällen der sympolischen Programmierung immer einen Pointer mit dem Datentyp Byte. Verständlicher wird es, wenn man bedenkt dass der symbolische ANY z.Bsp. auch auf ein STRUCT zeigen kann. Man kann den Datentyp in SCL und AWL allerdings auch auslesen und bei der Längenermittlung berücksichtigen. Ich prüfe meist nur, ob der Datentyp vom Typ Byte ist. Ist er es nicht, breche ich die Bearbeitung ab und gebe einen Fehlercode aus.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  2. #12
    Registriert seit
    21.04.2007
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    wenn man(n) die Array-Indexe (insbesondere den Ende-Index) als Variable benötigt, so geht dies nur über Konstante:

    Code:
    CONST
      BufStart   :=  1;      // Start-Index
      BufEnd     :=  100;   // End-Index
    END_CONST
    
    VAR
      N : INT;                 // Loop-Variable (FOR - NEXT)
    END_VAR
    Die Deklaration sieht dann so aus:
    Code:
    VAR
      // static Variables
      // replace for: Buffer  :   ARRAY[1..100] OF WORD;
      Buffer  :   ARRAY[BufStart..BufEnd] OF WORD;
    END_VAR
    So kann man dann z.B. in einer For - Next - Schleife direkt mit den Konstanten arbeiten:
    Code:
    BEGIN
      // Commands
      .
      .
      // erase buffer
      FOR N := BufStart TO BufEnd DO
        Buffer[N]   :=  0;
      END_FOR;
      .
      .
    So kann man direkt die Array-Elemente (in diesem Fall WORD) behandeln
    und muss nicht über BYTE-Umrechnungen gehen.

    Ich hoffe, das das zu Eurem Problem passt.

    Gruss, Oldman
    Geändert von oldman (08.07.2010 um 14:52 Uhr)
    Zitieren Zitieren Array-Indexe als Variable ?  

Ähnliche Themen

  1. SCL DB Länge ermitteln
    Von Dotzi im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 03.07.2010, 20:01
  2. Länge eines UDT ermitteln
    Von Woto im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.04.2009, 08:21
  3. Länge einer Struktur im DB ermitteln
    Von Knut333 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 22.01.2009, 18:04
  4. DB-Länge ermitteln
    Von Fliegertiger im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 18.12.2007, 15:39
  5. Gechwindigkeit aus Länge ermitteln
    Von capri-fan im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 02.02.2005, 15:43

Lesezeichen

Berechtigungen

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