Step 7 Array in string wandeln mit scl v5.5

Gerri

Level-1
Beiträge
822
Reaktionspunkte
37
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe ein ARARY[0..20] CHARACHTERS (Auch als Bytes verfügbar) und möchte das nun in eine Zeichenkette übertragen. Wie ist hier der besten Lösungsansatz?
 
Ich habe das wie folgt gelöst:

Code:
Code_Data : String[40];
MyCharArray : Array[0..20] of Char;


Code_Data := '                                        ';  //oder auch mit andern Inhalt vorbelegen
Code_Data[15] := MyCharArray[0];
Code_Data[16] := MyCharArray[1];
...


ginge evt. auch in einer Schleife, aber bei 20 Zeichen ist das noch zu Fuß vertretbar.

Code_Data belege ich eimal mit 40 Leerzeichen oder einem gewünschten Text vor, damit der String auch von der Länge her initialisiert ist. Wenn man das gleich bei der Deklaration macht könnte das evtl. auch reichen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Es geht auch ohne Schleife mit einer entsprechenden (Typ-gleichen) AT-Sicht auf den String und dann einer passenden Zuweisung ... (womit wir schon wieder bei der AT-Sicht sind)

Gruß
Larry
 
@ Larry:

Das AT habe ich jetzt schon einige male verwendet. klappt auch. Hier aber nicht

Str : STRING(20);
StrAT AT Str : ARRAY[0..20] of CHAR;

-> ebenfalls geht nücht
 
Zuviel Werbung?
-> Hier kostenlos registrieren
diese Array Sache funktioniert nicht. Das geht meines wissen bei Codesys so.

Das habe ich fast original so in einem Step7-SCL Baustein.
Ichhabe kein Array für die Char, sindern weise direkt ein paar Char zu.
Ist dein Array ein Array of Char, dann sollte das schon so gehen.
 
Zuletzt bearbeitet:
Das AT habe ich jetzt schon einige male verwendet. klappt auch. Hier aber nicht

Str : STRING(20);
StrAT AT Str : ARRAY[0..20] of CHAR;

Hallo Gerri,
das geht schon, wenn du es richtig machst.
Der Strings hat am Anfang noch 2 Header-Bytes (tatsächliche Länge und deklarierte Länge) - die mußt du bei der AT-Sicht natürlich auch berücksichtigen und die mußt du dann auch richtig zuweisen.
Das heißt, der String muß initialisiert sein, dann kannst du den Char-Array zuweisen und dann solltest du noch in den Header die Anzahl der Zeichen des Char-Arrays eintragen.
Also etwa so :
Code:
Str : STRING(20);
StrAT AT Str : struct
   maxLen : byte;
   totalLen : byte
   chars : ARRAY[0..20] of CHAR;
end_struct ;

myCharArray : ARRAY[0..20] of CHAR;
und als Code dann :
Str := '' ;
StrAT.chars := myCharArray ;
StrAT.totalLen := 20 ;
Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Tja ... so ist das mit der Erinnerung ...
So lange mich erinnere hat der String bei Step7 immer schon 2 Headerbytes (wie oben genannt).
Das hat übrigens nichts mit AWL, KOP, FUP oder SCL zu tun - das liegt einfach in der Variablendefinition selbst ...

Gruß
Larry
 
Zurück
Oben