Inhalt eines Strings bearbeiten

Tenobaal

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich bin relativ unerfahren mit Programmierung in Codysys und versuche eine Funktion zu schreiben, die eine REAL Zahl als STRING speichert, um danach einzelne "Zeichen" zu manipulieren.

Ich brauche die Funktion zum einlesen der Daten in Excel! Excel scheint Probleme mit dem Punkt als Dezimalzeichen in Verbindung mit REAL Zahlen zu haben.
Beispiel: Aus "4.589E-3" macht Excel "4,59E+00" trotz korrekter Angabe des Dezimalzeichens beim Öffnen der Datei.

Ich wollte ursprünglich wie in C++ mein String als Array aus "Char" interpretieren, nur leider geht es nicht, da Codesys scheinbar anders vorgeht. Zusätzlich gibt es den Datentypen "Char" gar nicht, oder er wurde gut versteckt ;)
Mein Vorgehen war jetzt den String in ein Byte-Array zu schreiben. Dort stehen dann die Zahlen drin, die das Zeichen aus der ASCII-Tabelle abbilden (->schon überprüft).
Das Problem ergibt sich nun beim Umwandeln von Byte nach String... die Funktion Byte_to_String macht im Prinzip nichts außer nur die Zahlen des Byte-Arrays zu kopieren.
Es sollte allerdings anstatt der Zahl, das entsprechende ASCII-Zeichen gespeichert werden.

Edit: Es handelt sich um eine Wago SPS!

Code:
FUNCTION TO_EXCEL : STRING
VAR_INPUT
    Input_Data:REAL; (*Eingabedaten*)
END_VAR

VAR
    help_array:ARRAY[0..80] OF BYTE;

    i,lenght:INT;
    ptr:POINTER TO STRING;
END_VAR



ptr:=ADR(help_array);
ptr^:=REAL_TO_STRING(Input_Data); (*in help_array steht der Zahlenwert von Input_Data als String gespeichert*)


(* Suche in help_array nach '.' und ersetze durch ','*)
FOR i:=0 TO LEN(REAL_TO_STRING(Input_Data)) DO

    IF help_array[i] = 46 THEN (*46 enspricht '.'*)
    help_array[i]:=44; (*44 enspricht ','*)
    END_IF;

    (*Hier sollten nun mein neuer String zusammengesetzt werden*)
    TO_EXCEL:= CONCAT(TO_EXCEL,BYTE_TO_STRING(help_array[i]));

END_FOR;
 
Vielleicht verstehe ich irgendwas falsch, aber warum willst Du den String neu zusammensetzen? Er steht doch schon in "help_array". Am Ende der Funktion "TO_EXCEL:=ptr^", oder?
 
Zurück
Oben