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

Ergebnis 1 bis 4 von 4

Thema: dezimalwerte nach komma oder punkt durchsuchen

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich lese eine csv ein. jetzt will ich dort realwerte zur sps senden, habe jedoch das problem, dass von dem englischen excel die werte mit nem punkt als dezimalstellte geschrieben werden und vom deutschen mit nem komma. wie kann ich denn in einem script vorgehen, um immer einen wert mit komma an die sps zu senden? denn dann sind die werte ok.
    Zitieren Zitieren dezimalwerte nach komma oder punkt durchsuchen  

  2. #2
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Kann man das nicht schon in Excel einstellen?

    Gleitpunktdarstellung Komma-getrennt

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo Benson,
    im VB-Script-Bereich gibt es da z.B. den Befehl InStr. Die gibt dir die Position eines gesuchten Zeichens in einer Zeichenkette aus. Nun könntest du dieses dann Ersetzen in dem du den linken Teilstring (bis zur gelieferten Pos. nimmst) und dann das neue Zeichen dazwischen schreibst und dann den rechten Teilstring da dran hängst.
    Alternativ gäbe es aber auch noch die Funktion Replace ...

    Gruß
    Larry

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.293
    Danke
    932
    Erhielt 3.320 Danke für 2.682 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Die von Excel verwendeten Trennzeichen beim Speichern als csv richten sich nach den regionalen Einstellungen in der Windows-Systemsteuerung.
    Beim Einlesen der csv in einem VBS-Skript in WinCC flex RT richten sich die Konvertierfunktionen nach dem Gebietsschema des Windows, unter dem die RT läuft.
    Es ist gut möglich, daß die regionalen Einstellungen nicht zueinander passen.

    Deshalb würde ich nicht die automatischen Konvertierfunktionen benutzen, sondern unabhängig vom Gebietsschema in Excel eigene VBA-Makros zum Speichern
    eines Bereiches als csv erstellen, wo ich die Datei-Ausgabewerte mit festgelegten Trennzeichen erzeuge. Zum Einlesen natürlich auch ein eigenes Makro,
    welches die Zeilen selber in einzelne Zahlen zerlegt.
    Auf der anderen Seite in WinCC flex RT muß man das "eigene" Gebietsschema-unabhängige Zerlegen selbstverständlich auch programmieren.

    Beim selber-Erzeugen der csv-Datei kann man auch gut Kopfinformationen in die ersten Zeilen schreiben, z.B. Kennungen und Format-Versionsnummern,
    so daß das Einlese-Script eine unbekannt formatierte csv-Datei gleich ablehnt und keinen Runtime-Error erzeugt.

    Ersetzen von Dezimalpunkten durch Kommas in Strings kann man in VBS mit der Replace-Funktion machen oder mit der InStr-Funktion nach den Punkten
    oder Kommas suchen. Oder mit der Mid-Funktion den String zeichenweise analysieren.

    Hier lauert aber noch eine weitere Falle: Woran soll das WinCC flex Script erkennen, ob Komma oder Punkt als Dezimaltrennzeichen verwendet wurden?
    Eine csv-Datei von einem Excel unter deutsch eingestelltem Windows erzeugt kann Kommas als Dezimaltrennzeichen und Punkte als Zifferngruppierungs-
    Zeichen (Tausender-Punkt) enthalten! Auch das Listentrennzeichen zwischen den Zahlenwerten muß nicht unbedingt das Semikolon sein!

    Dazu fällt mir nur dieser Workarround ein:
    die csv-Datei enthält vor den eigentlichen Zahlenwerten 2 oder mehr feste bekannte Zahlenwerte (z.B. 1234,56), die durch die csv-Exportfunktion mit
    den in der Datei verwendeten Trennzeichen formatiert wurden, z.B.
    Code:
    "Trennzeichen-Sample";1.234,56;1.234,56;;
    "Wert1";"Wert2";"Wert3";"Wert4";"Wert5"
    0;123;0,45;876.543,21;0
    Das Einlese-Script kann nun aus der ersten Zeile die verwendeten Trennzeichen ermitteln und auf die nachfolgenden Zahlenwerte anwenden:
    die Zifferngruppierungs-Zeichen entfernen, die Dezimaltrennzeichen ggf. von Punkt zu Komma ersetzen (und wenn gewünscht die Zeile in die einzelnen
    Zahlenwerte splitten).

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Excel: Komma statt Punkt
    Von ch1576 im Forum PC- und Netzwerktechnik
    Antworten: 10
    Letzter Beitrag: 24.11.2017, 10:57
  2. Verzeichnis nach Dateien durchsuchen.
    Von Nobbie im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 11.04.2012, 14:30
  3. Gesamtes Projekt nach Variablenname durchsuchen
    Von twincatter im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 21.04.2011, 12:26
  4. DB nach Werten durchsuchen - SCL ?
    Von karsten.schmidt im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 26.03.2011, 13:15
  5. DB's nach Strings durchsuchen
    Von Flying Maulwurf im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 10.05.2010, 14:42

Lesezeichen

Berechtigungen

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