csv Trennzeichen abfragen

  • Hallo zusammen,

    ich schreibe gerade ein Script, dass eine .csv Datei öffnet und als array einliest. Als Trennzeichen nehme ich ";"(Semikolon). Da mein Programm aber (falls ich es gut hinbekomme) auch in anderen Ländern verwendet wird, kann es ja sein, dass die .csv Dateien ein","(Komma) als Trennzeichen haben werden. 8|

    Jetzt möchte ich einfach vor den Befehl, die .csv Datei in einen Array zu schreiben eine Abfrage machen, ob Semikolons oder Kommas drin sind. Ich dachte das sei total leicht mit if.. ABER... mit welchem Befehl kann ich zum Beispiel das 5. Zeichen in der 2. Zeile der .csv Datei anschauen (welches in dem Fall entweder ein Komma oder ein Semikolon ist).

    Es wäre echt super wenn ihr mir ein Paar Tipps geben würdet! :)

    Danke!!

    Einmal editiert, zuletzt von vakaba (28. Januar 2014 um 11:16)

    • Offizieller Beitrag
    [autoit]


    Global $sRead = FileRead("Pfad.csv")
    Global $sDelimiter = _GetDelim($sRead)

    [/autoit][autoit][/autoit][autoit]

    Func _GetDelim($sContent)
    If StringInStr($sContent, ',') Then
    Return ','
    ElseIf StringInStr($sContent, ';') Then
    Return ';'
    Else
    Return SetError(1,0,'')
    EndIf
    EndFunc

    [/autoit]


    Wobei aber trotzdem das Problem besteht, dass bei Komma als Trenner Semikolon im Text enthalten sein kann und umgekehrt bei Semikolon als Trenner im Text dann Kommas sind. Hier müsstest du dann prüfen ob beides enthalten ist und in diesem Fall den User auffordern mitzuteilen, welches Zeichen der Trenner ist. Brauchst ja die Funktion nur entsprechend anzupassen.

  • Hey BugFix!

    Super danke für deine Hilfe! Den Befehl mit dem Substring kannte ich noch nicht und bin auch bei meiner Suche im Netz nicht darauf gestoßen. (Muss noch ein Bisschen lernen die richtigen Suchbegriffe einzugeben)...

    Das Problem mit den Kommas oder Semikolons im Text gibt es nicht, da in der Tabelle nur Namen und Werte stehen, die nicht durch Kommas sonder wenn dann Unterstriche oder Punkte getrennt sind.

    Werde gleich mal den Status des Themas ändern

  • Wenn z.B. das Dezimaltrennzeichen ein Komma statt einem Punkt ist würde mit der Methode herauskommen, dass das Komma das Datentrennzeichen wäre.
    Das wäre natürlich falsch.
    Wenn man erst das Semikolon abfragt und dann erst das Komma könnte man das umgehen.
    Aber auch das wäre nicht gerade toll wenn man z.B. Stringfelder in der CSV hat welche z.B. auch Semikolons oder ähnliches als Text enthalten können.

    Das ganze also sicher automatisch zu ermitteln wird fast nicht möglich sein.
    Ganz ohne irgendwelche Vorinformationen wird es nicht ganz gehen.