# Array als String darstellen



## DiplomandSPS (29 März 2004)

Hi zusammen,

ich kopiere mir über den SFC20 verschiende Wörter (Buchstaben) in einen Datenbaustein; gnauergesagt in 10 array`s  vom Typ char mit der Länge 8 Byte.

Ich habe hier leider keinen Weg gefunden einen Screenshot einzubinden. Also kurz per Hand

4    out     Ende_Messdurchgang1[1]       char   '  '                ',,'   
5    out     Ende_Messdurchgang1[2]       char   '  '                  
6    out     Ende_Messdurchgang1[3]       char   '  '                'B'   
7    out     Ende_Messdurchgang1[4]       char   '  '                'R'   
8    out     Ende_Messdurchgang1[5]       char   '  '                'U'   
9    out     Ende_Messdurchgang1[6]       char   '  '                'C'   
10   out     Ende_Messdurchgang1[7]       char   '  '               'H' 
11   out     Ende_Messdurchgang1[8]       char   '  '               ' '   
12   out     Ende_Messdurchgang2[1]       char   '  '               ',,'      
13   out     Ende_Messdurchgang2[2]       char   '  '                 
14   out     Ende_Messdurchgang2[3]       char   '  '               'A' 
15   out     Ende_Messdurchgang2[4]       char   '  '               'N'
16   out     Ende_Messdurchgang2[5]       char   '  '               'R'
17   out     Ende_Messdurchgang2[6]       char   '  '                'I'
18   out     Ende_Messdurchgang2[7]       char   '  '               'S'
19   out     Ende_Messdurchgang2[8]       char   '  '               'S'  
29   out     Ende_Messdurchgang3[1]       char   '  '               ',,'

usw
(leider übernimmt das System hier im Forum nicht meine Abstände, so dass Ihr es nahe beieinander sehen werdet.....) Naja, das Zeichen ganz rechts stellt jeweils den Aktualwert dar. 

Meine Absicht war es immer die ersten beiden Bytes des Strings frei zu lassen. Laut Doku benötigt der Datentyp string 2 Bytes für maximale Länge des Strings und die tatsächliche Stringlänge.

Wenn ich die array`s in ProTool als String darstelle fehlt jeweils der erste Buchstabe meiner Wörter ; also wird irgendwie immer die Feld-Zelle [3] überschrieben. Woran kann das liegen oder was mache ich falsch ?


Gruß

Martin


----------



## sps-concept (29 März 2004)

*Strings*

Hallo Diplomand,

es macht aber schon nen Unterschied ob du ein Array of Char nimmst oder nen String. Da musste dich erstmal entscheiden.

MfG
André Räppel


----------



## DiplomandSPS (29 März 2004)

*Array`s in ProTool ?*

N`Abend Andre,

naja dann sag mir doch mal Bitte, wie ich ein array in einem Ausgabefeld in ProTool darstelle .....gibt es da einen Trick, den ich nicht kenne ?   


Gruß

Martin

P.s
darfst ruhig Martin zu mir sagem weil *g* so heiße ich


----------



## churchill (30 März 2004)

Hallo Martin

am einfachsten ist es wenn du den CHAR-Format beibehältst und im Pro Tool als Ausgabevariable einen "StringOfChar" oder "CharOfString" (habs nicht im Kopf) :lol:  und die genaue Länge deiner Zeichenkette eingibst.

Falls du dich für String entscheidest, dann musst du deine CHAR-Kette in eine String-Kette umwandeln, ist nämlich nicht dasselbe. Das meint warscheinlich auch André.

mfG churchill


----------



## DiplomandSPS (30 März 2004)

*ok, gehen wir das zusammen an*

Morgen die Herren,

versuchen wir es also kurz zusammen und Ihr haut mit auf die Finger, wenn ich etwas falsch mache   

Ich lege ein Ausgabefeld mit der  Länge 6 an (die Wörter "Winkel, Anriss haben je 6 Buchtstaben; das Wort Bruch hat dagegen nur 5....hier fülle ich den letzten Buchstaben mit einem Leerzeichen). Ist das soweit ok ?

Bei der Darstellungswahl des Ausgabefeldes wähle ich String, weil ich wohl kaum Dezimal, Hexadezimal,Binär, Datum oder Zeit nutzen kann !?

Die Feldlänge gebe ich mit 6 an, da meine Wörter immer 6 Zeichen aufweisen

Ich weise eine neue Variable zu. Dabei kann ich eben nur string wählen, weil mein Ausgabefeld den Typ string hat. Char oder sonstiges kann ich gar nicht anwählen !?

Die Länge in Bytes gebe ich mit 6 an ( in meinem DB nimmt ein Wort 6 Bytes in Anspruch)

Für Bereich gebe ich den den ersten Buchtstaben in meinem DB an 


Das funktioniert alles ja auch soweit nur wird eben der erste Buchstabe nicht in mein Ausgabefeld übernommen. Ich nehme an dieser wird irgendwie überschrieben ?


Wo habe ich jetzt meine Denkbarriere ? Welchen Fehler übersehe ich oder was muß ich wo ändern ?

Liebe Grüße

Maddinsche


----------



## sps-concept (30 März 2004)

*String*

Hallo Maddinsche,

>>Für Bereich gebe ich den den ersten Buchstaben in meinem DB an 

Nein! Für Bereich gibst du die Anfangsadresse des Strings an, also die Kopfdaten. Ausserdem musst du im String mit der Aktuallänge initialisieren, in deinem Fall also 6.

Stringlänge
Aktuallänge
Zeichen 1
Zeichen 2
Zeichen 3
Zeichen 4
Zeichen 5
Zeichen 6

MfG
André Räppel


----------



## DiplomandSPS (30 März 2004)

*Morgen mal erst*

Morgen Andre,

also wenn ich bei den Kopfdaten anfange, bleibt mein Ausgabefeld ganz leer. Was tun ?

Gruß

Martin

Ergänzend vielleicht ein Hinweis: wenn ich mir die aktuellen Werte in meinem DB ansehe, wird mir in der ersten Char-Zelle ; Feld 1 also ein komisches Zeichen angezeigt ....es sieht aus wie zwei Backslashes // in "Gänsefüßchengröße" " Ich weiß damit so gar nichts anzufangen


----------



## sps-concept (30 März 2004)

*String*

Hallo,

mail mir doch mal das Prog komplett. Ich guck mal

andre.raeppel@sps-concept.de

MfG
André Räppel


----------



## DiplomandSPS (30 März 2004)

*den Tag gebe ich mir noch*

Hi nochmal,

*schmunzel* so einfach gebe ich nicht geschlagen von der Software. Ich versuche das heute nochmal und wenn ich dann bis morgen früh keine Lösung habe, schicke ich Dir das Teilprojekt ...

Gruß

Maddinsche


----------



## churchill (30 März 2004)

Hallo Maddinsche

Schau dir mal diese Erklärung an, es stammt aus der STEP 7-Hilfe


```
Format des Datentyps STRING 

Datentyp 
 Länge (Byte) 
 Format 
 
STRING[n] 
oder 
STRING 
 n+2 
 ASCII-Zeichenkette beliebiger Länge. n gibt die Länge der Zeichenkette an. Maximale Länge sind 254 Zeichen. Wird keine Länge angegeben, ist die Voreinstellung 254 Zeichen. 
 
Datentyp 
 Beispiele für das Format 
 
STRING[2] 
STRING[55] 
 'AB' 
'Die Zeichenkette kann aus maximal 55 Zeichen bestehen.' 
 
 Hinweis 
Sie müssen Ihre Zeichenkette in einzelne Hochkommata einschließen. 
 
Das folgende Beispiel zeigt die Reihenfolge der Bytes bei der Angabe des Datentyps STRING[4] mit dem Ausgangswert 'AB'. 

Dynamische Lokaldaten vom Datentyp STRING müssen vom Anwender vor dem ersten Verwenden initialisiert werden, z.B. durch eine AWL-Sequenz der Form: 

LAR1 P#lokal_string_var // lokal_string_var ist in VAR_TEMP deklariert als STRING[200] 

L 200 // oben genannte STRING-Länge 

T LB [AR1, P#0.0] // im MAX Len Byte des Strings eintragen 

L 5 // tatsächliche Länge des Strings 

T LB [AR1, P#1.0] // tatsächliche Länge des Strings eintragen 

Hinweis 
Wird der Inhalt eines Strings vom Anwenderprogramm geändert, muß auch das Byte "Tatsächliche Länge" beschrieben bzw. aktualisiert werden, damit der String vom PG angezeigt werden kann. 
Wurde eine temporäre Variable vom Datentyp STRING definiert, muß das Byte "Max. Länge" vor der Verwendung der Variablen im Anwenderprogramm mit der definierten Länge beschrieben werden.
```

mfG churchill


----------



## DiplomandSPS (30 März 2004)

*habs im Griff*

N `Abend zusammen,

ich habe das Problem gelöst: 
Ich habe meinen Array auf 9 Felder aufgestockt, weil ich irgendwo im Netzt gelesen habe, dass bei Einannderreihung von Strings im DB die einzelnen Strings durch Endmarkierung versehen werden. Den Bereich richte ich dann, wie hier angeraten auf die Kopfdaten; die Feldlänge ist dabei nach wie vor 6.

Ich kann dies Aussage, die ich im Netz gelesen habe, leider nicht mehr finden, um sie von Euch prüfen zu lassen. Vielleicht könnt Ihr trotzdem mal eben ein Statement dazu abgeben ?

Gibt es eigentlich eine Möglichkeit hier irgendwíe sreenshots zu publizieren ?

Gruß

Martin

P.s
hab morgen schon das nächste Problem, das gelöst werden muß *schmunzel* ..ich mache dafür aber ein neues Thema auf


----------

