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

Ergebnis 1 bis 8 von 8

Thema: dynamische Arrays?

  1. #1
    Registriert seit
    16.03.2004
    Beiträge
    173
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Gibt es eigentlich ein Array mit einer dynamischen Grösse zu erstellen?

    Ich möchte einen FB erstellen der als OUT ein ARRAY OF STRING liefert. Dieses Array soll aber nicht immer die gleiche Grösse haben sonder ich muss im FB selbst die Grösse entscheiden. Lässt sich das machen?

    Wie kann ich die Anahl der ARRAY-Einträge ermitteln?
    ARRAY[1..10] OF STRING sind 9 Arrayeinträge. Gibts ne Funktion die mir das ausgibt?

    Besten Dank
    Thomas
    greetings from upper austria

    ... merlin ...
    Zitieren Zitieren dynamische Arrays?  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    Hallo,
    dynamische ARRAY's gehen nicht. Du könntest ein ARRAY aber auf deinen Max-Bedarf dimensionieren und über eine zusätzliche Variable mit ausgeben welche (wieviele) Elemente benutzt werden.

    Gruß
    LL

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von merlin Beitrag anzeigen
    Wie kann ich die Anahl der ARRAY-Einträge ermitteln?
    ARRAY[1..10] OF STRING sind 9 Arrayeinträge. Gibts ne Funktion die mir das ausgibt?

    Besten Dank
    Thomas
    Und es sind 10 Einträge nach Adam Riese !
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #4
    Registriert seit
    16.03.2004
    Beiträge
    173
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich könnt ja damit leben dem FB einen IN mit ARRAY_SIZE anzugeben und das OUT dann mit AUSGABE[1..ARRAY_SIZE] OF STRING machen. Aber leider will ned mal das

    und die 2. Frage? Gibts ne Art UBound im TwinCAT?
    greetings from upper austria

    ... merlin ...

  5. #5
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Du kannst auch mit Pointern auf ein Array arbeiten und die Grösse des Array mitliefern. Ich habe mich dagegen lange gewehrt, aber manchmal ist es sinnvoll.

  6. #6
    Registriert seit
    16.03.2004
    Beiträge
    173
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ähm, ja hört sich spannend an, wobei i grad gestehen muss, dass ma da ansatz fehlt.

    wäre über ein beispiel dankbart.
    greetings from upper austria

    ... merlin ...

  7. #7
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Da deklarierst einen Pointer p auf Byte. Der wird einer Adresse eines Arrayelementes initialisiert:

    p := ADR(meinarray[23]);

    Dann kannst du:

    p^ := 1; (* Byte beschreiben *)
    a := p^; (* Byte lesen *)
    p := p + 1; (* Pointer auf das nächste Arrayelement zeigen lassen *)

    Wenn du dann einem FB noch die Grösse des Arrays mitteilst, kannste jede denkbare Schweinerei produzieren.

  8. #8
    Registriert seit
    09.01.2008
    Beiträge
    85
    Danke
    5
    Erhielt 13 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von merlin Beitrag anzeigen
    Hallo

    Wie kann ich die Anahl der ARRAY-Einträge ermitteln?
    ARRAY[1..10] OF STRING sind 9 Arrayeinträge. Gibts ne Funktion die mir das ausgibt?

    Thomas


    Hallo Thomas,
    mit der Funktion SIZEOF(ARRAY[1..10]) solltest Du die Größe ermitteln können.

    Zum Thema dynamische Arrays: Das geht nicht. Arrays müssen ja zuvor deklariert werden, ob lokal oder global. Bei der Deklaration sind keine variablen zur Größenangabe zulässig.
    Wenn Du nun ein Array mit der Größe 1..10 hast, und du beschreibst das Array z.B. bei 0, oder bei 15 (das geht ohne Probleme) werden Variablen willkürlich beschrieben, welche sich vor oder hinter diesem Speicherbereich liegen. Dies kann sehr unangenehme folgen haben. Hierfür sollte zusätzlich die Funktion CHECKBOUNDS verwendet werden. Diese überwacht eine Array-Überschreitung und verhindert diese, aber Achtung: Diese Funktion kann je nach Anwendung die Systemlast hochsetzen.

    Gruß
    Benjamin

Ähnliche Themen

  1. Dynamische DB Adressierung bei SCL
    Von mr.binford im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 08.11.2009, 11:51
  2. Dynamische Förderanlage
    Von thomasgull im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 28.09.2009, 05:25
  3. Dynamische Datenstrukturen in S7-SCL
    Von jck0815 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 20.11.2008, 15:33
  4. Dynamische Schrittkette
    Von Pau1e im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 26.03.2008, 20:09
  5. dynamische Passwortvergabe
    Von CrazyCat im Forum HMI
    Antworten: 8
    Letzter Beitrag: 10.07.2006, 11:31

Lesezeichen

Berechtigungen

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