Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 4 von 4

Thema: Inhalt eines Strings bearbeiten

  1. #1
    Registriert seit
    13.12.2011
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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;
    Zitieren Zitieren Inhalt eines Strings bearbeiten  

  2. #2
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    757
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    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?

  3. #3
    Tenobaal ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.12.2011
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja, du hast recht
    Hatte irgentwie in Erinnerung, dass dann ein Typenkonflikt kommt... jetzt funktionierts, danke

  4. #4
    Registriert seit
    10.05.2005
    Beiträge
    2.005
    Danke
    220
    Erhielt 234 Danke für 205 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi


    lade dir die Oscat-Basis-Lib herunter. ( WWW.OSCAT.DE )

    Öffne die LIB --> Funktion REAL_TO_STRF

    Ändere das "," durch "." --> Fertig


    Oder erfinde das "Rad" neu

    Gruß Karl
    Karl

  5. Folgender Benutzer sagt Danke zu gravieren für den nützlichen Beitrag:

    ukemnitz (16.04.2012)

Ähnliche Themen

  1. Inhalt eines DB in Peripherie schreiben
    Von FinalMistery im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.09.2011, 10:33
  2. Inhalt eines MP 370 Loeschen.
    Von lieuthnant im Forum HMI
    Antworten: 4
    Letzter Beitrag: 04.03.2010, 08:47
  3. Übertragen eines Strings [9] in DB
    Von Wiedenn? im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 14.07.2009, 21:11
  4. Inhalt eines DB in einen DB Schreiben
    Von nonguru im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.08.2008, 18:04
  5. Befehl zum auslesen eines Strings
    Von nonguru im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 21.04.2008, 12:16

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •