Array als String darstellen

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
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

Well-known member
Beiträge
2.235
Punkte Reaktionen
249
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
 
OP
D

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
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 ? :D


Gruß

Martin

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

churchill

Well-known member
Beiträge
193
Punkte Reaktionen
4
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
 
OP
D

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
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 :D

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

Well-known member
Beiträge
2.235
Punkte Reaktionen
249
Zuviel Werbung?
->Hier kostenlos registrieren
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
 
OP
D

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
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
 
OP
D

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
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 :D
 

churchill

Well-known member
Beiträge
193
Punkte Reaktionen
4
Hallo Maddinsche

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

Code:
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
 
OP
D

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
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 :D
 
Oben