Zweidimensionalen CHAR[ , ] in CHAR kopieren

  • Hallo,


    Ich habe ein Problem mit dem CHAR[ 32, 24] Array: BASE_NAME aus der config.dat

    Ich möchte eigentlich nur die Namen auslesen, damit ich sie mit HMI easy ausgeben und bearbeiten kann.


    Der Code sollte ja eigentlich so aussehen:

    FOR U = 1 TO 32 STEP 1

    TextTest[] = BASE_NAME[U,]

    TextSet100(BaseDaten[U].BaseName[], TextTest[])

    ENDFORTextTest ist ein Array mit 24 Zeichen.

    BaseDaten ist eine Struktur, die unter anderem ein Char Array der Größe 24 enthält.


    Auf der Steuerung wird jedoch ein Fehler: "Operand oder Ausdruck erwartet" ausgegeben.


    Habe auch schon versucht die Chars einzeln über eine weitere For-Schleife zu kopieren, hier scheint ein Problem aufzutreten, wenn ein Char nicht beschrieben wurde.


    Habt ihr da eine Idee? Ein zweidimensionales Char Array scheint auch nur in der Config.dat möglich zu sein.

  • Schritt für Schritt zum Roboterprofi!
  • Leider wirft auch STRLEN(BASE_NAME[U,]) den Fehler Operand oder Ausdruck erwartet.

    Hast du "U" einen Wert zugewiesen?


    So funktionierts:


    DECL INT N,Z,U

    DECL CHAR TextTest[24]


    U = 1


    N=StrLen(BASE_NAME[U,])

    FOR Z = 1 TO 24 STEP 1

    IF Z < N THEN

    TextTest[Z]= BASE_NAME[U,Z]

    ELSE

    TextTest[Z]=0

    ENDIF

    ENDFOR

  • Moin Lukas,


    StrLen liefert dir ja auch nur die Länge des Strings. Weiter wirst du wahrscheinlich mit der Funktion CopyStrArray2Str. Die Funktion kommt allerdings aus der Zusatzsoftware AppTech.

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Danke für die Idee, hilft bei mir leider nicht.

    Hatte U bereits einen Wert zugewiesen, aber es jetzt nochmals direkt mit 1 getestet, leider immer noch derselbe Fehler.

    Hast du deinen Code mal auf einer Steuerung getestet?

    Bei mir ist die C4 compact verbaut, kann das noch ein Problem sein?

  • Moin Lukas,


    StrLen liefert dir ja auch nur die Länge des Strings. Weiter wirst du wahrscheinlich mit der Funktion CopyStrArray2Str. Die Funktion kommt allerdings aus der Zusatzsoftware AppTech.

    Danke, sollte ja aber eigentlich auch ohne Zusatzsoftware funktionieren.

    Ich wäre ja froh, wenn ich die String-Länge zurückbekommen würde.

    Leider lässt sich das Programm aber gar nicht starten, da er in jeder Zeile, bei der ich mit BASE_NAME[U,] arbeiten möchte einen Fehler meldet.

  • So, habe eine Lösung gefunden.

    FOR Z = 1 TO 24 STEP 1

    TestText[Z]= 0

    ON_ERROR_PROCEED

    TestText[Z]= BASE_NAME[U,Z]

    ENDFOR Vielen Dank für eure Ideen, hoffe das ON_ERROR_PROCEED verursacht keine weiteren Fehler.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden