Step 7 Vergleich CHAR - STRING

Maeiyer

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich stehe vor folgendem Problem:

Über eine Schnittstelle zur vorgelagerten Anlage bekomme ich eine Materialnummer zugesendet (Format CHAR), diese muss ich mit der
eigenen Materialnummer vergleichen, welche jedoch im Format STRING vorliegt.
Beide Variablen haben die gleiche Datenlänge (20Byte), somit nicht die gleiche Zeichenanzahl, zusätzlich sind nicht alle Zeichen beschrieben.

Gibt es eine einfache Möglichkeit die Charvariable in einen String umzuwandeln oder anders herum?
Ein Byteweiser vergleich ist ja auch nicht so einfach da im Char unbeschriebene Bytes den Wert ' ' (in dez "32") besitzen und nicht wie im String "0"...

Danke schon mal im Voraus

Grüßle
 
Zuletzt bearbeitet:
In einem CHAR kann nur 1 Zeichen bzw. 1 BYTE stecken. Vermutlich meinst Du wohl ein ARRAY OF CHAR. Gibt die vorgelagerte Anlage eine Information wie lang die Zeichenfolge im CHAR-Array ist oder ist ein Endezeichen vereinbart?

Vergleichen Möglichkeit: über einen temporären STRING[20] per AT ein CHAR-Array legen, das empfangene CHAR-Array in das temporäre Array kopieren und in die STRING-Headerbytes die max Länge und die aktuelle Länge eintragen, und dann die beiden Strings vergleichen.

da im Char unbeschriebene Bytes den Wert ' ' (in dez "32") besitzen und nicht wie im String "0"...
Das ist so nicht richtig. In unbeschriebene Bytes muß man kontrolliert Füllzeichen reinschreiben - das gilt für CHAR-Array genauso wie für STRING. Tut man das nicht, dann liegen da irgendwelche Zeichen drin, die vorher auf dem Speicherplatz lagen.

Was für eine CPU programmierst Du mit welcher Step7-Version?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... Das ist so nicht richtig. In unbeschriebene Bytes muß man kontrolliert Füllzeichen reinschreiben - das gilt für CHAR-Array genauso wie für STRING. Tut man das nicht, dann liegen da irgendwelche Zeichen drin, die vorher auf dem Speicherplatz lagen. ...
[/QUOTE]
Ich vermute, dass etwas anderes hinter dem vom TE beobachteten stecken könnte: unterschiedliche Formatierungen der beiden zu vergleichenden Zahlen.
Z.B. mal mit "Unterdrückung vorlaufender Nullen" (blank = Leerzeichen = ' ' = 32) und mal ohne (Null = '0' = 48 ).
- Mal mit und mal ohne Trennzeichen ('.'),
- unterschiedliche Anzahl NachKommaStellen,
- gleiche Anzahl NachKommaStellen, jedoch mal abgeschnitten und mal gerundet,
- unterschiedliche Zeichen für DezimalKomma bzw. DezimalPunkt sowie Trennzeichen (Komma und Punkt getauscht)
können einem auch das Leben schwer machen.
Wenn möglich, vorhandene KonvertierFunktionen nutzen und Zahlen (REAL usw.) vergleichen.

Gruss, Heinileini
 
Zuletzt bearbeitet:
Zurück
Oben