Zeile auslesen

  • Hallo zusammen,
    habe da mal eine Frage bzgl. wegen dem Auslesen von Zeilen.
    Ich lese aus einer Datei Zeile für Zeile aus um bestimmte Infos von den Zeilen auszuluesen umd diese weiter zu verarbeiten bzw. zu prüfen.
    Das klappt auch alles bisher perfekt.

    Nun habe ich aber einen Bestimmten bereich der von der Länge her immer unterschiedlich lang ist.

    Beispiel:

    xxxxxx;xxxxx ;yyyyyy yyy ; xxxxx ;yyyyyy; xxxxxx
    xxxxxx; xxxx ;yyyyyyyyyyyy ;xxxxx ;yyyyy; xxxxxx

    Die y Werte können jeweils unterschiedliche Länge haben, nun wollte ich mal fragen ob jemand die Formel kennt um bei den zweiten ";" anzufangen und soweit ausliest bis zum nächsten ";".

    Also es geht mir darum das das Script innerhalb bestimmter Zeichen die Werte auslesen soll.

    Ist das möglich ???

    Ich habe schon lange gesucht und nichts gefunden oder nur zu blind gewesen.

    Danke schonmal im Vorraus für Antworten oder anregungen wie man das ganze falls diese Art des auslesen nicht gehen sollte möglich macht.

  • Klar ist das möglich :)
    Mit den String-Schlüsselwörtern...

    Also, da dein Format anscheinend immer gleich ist:

    [autoit]

    $String1 = 'xxxxxx;xxxxx ;yyyyyy yyy ; xxxxx ;yyyyyy; xxxxxx'
    $String2 = 'xxxxxx; xxxx ;yyyyyyyyyyyy ;xxxxx ;yyyyy; xxxxxx'

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

    $split = StringSplit($String1, ';')
    MsgBox(0, '', $split[3] & ' | ' & $split[5])
    $split = StringSplit($String2, ';')
    MsgBox(0, '', $split[3] & ' | ' & $split[5])

    [/autoit]

    Das ist zwar jetzt einfach, aber es sollte gehen...

    Einmal editiert, zuletzt von Yjuq (14. Oktober 2012 um 18:45)

  • außdem würde ich die datei zeile für zeile auslesen sonder komplett auslesen und dann splitten ;) geht schneller ;)

    so in entwa

    [autoit]

    Func _ReadFile($s_file)
    If Not FileExists($s_file) Then Return SetError(1)
    Local $h_open = FileOpen($s_file)
    Local $s_context = FileRead($h_open)
    FileClose($h_open)

    Return StringSplit($s_context, @LF)
    EndFunc

    [/autoit]

    ist natürlich jetzt ungetestet ;)

  • Also erstmal danke für die schnelle Antwort.
    werde den Hinweis von Make-Grafik morgen auf der Arbeit mal einbauen.

    Das mit der kompletten Datei einlesen von RedHead ist ein guter Vorschlag, mal sehen ob ich das hinbekomme.
    Da ich bei AutoIt noch in den Kinderschuhen stecke und immer am Tüfteln bin.
    Hatte auch mal was von Array gelesen aber ist für mich ein Buch mit 7 Siegeln.

    Wenn ich morgen dran denke lade ich das Script mal hier rein, um das sich das mal die Profis ansehen können.
    Ich bin fest der Meinung da ich noch genug Verbesserungspotenzial drin, gerade was die schnelligkeit und Übersicht betrifft, da alles bisher übers Netz geht.

    Aber nicht das ihr jetzt denkt ich stelle es rein damit ihr es verbessern könnt, sondern auf der Basis, wer lust hat kann sich das Script ansehen und wenn er meint da kann man was verbesern oder schlanker machern, dann einfach posten.

    "Schau die mal den Bereich von bis an dort kann man etwas verbessern wenn man sachen zusammenfasst oder an hand eines beispieles wie man es verbessern kann."

    Ich werde natürlich euch auf den Laufenden halten solange ich an dem Projekt arbeite, was bestimmt noch 1-2 Monate dauern kann.

  • Ich bin jetzt noch kein Superuser mit AutoIt, aber ich denke ich würde den String beim Semikolon jedes mal 'splitten' und die einzelnden Wörter in ein Array schreiben. Wenn du dann immer den zweiten Teil oder so brauchst kannst du diesen ja einfach aus dem Array holen ;)

    Grüße

    Grüße Yaerox

    Grüne Hölle

  • Ich bin jetzt noch kein Superuser mit AutoIt, aber ich denke ich würde den String beim Semikolon jedes mal 'splitten' und die einzelnden Wörter in ein Array schreiben. Wenn du dann immer den zweiten Teil oder so brauchst kannst du diesen ja einfach aus dem Array holen ;)

    hat sowas nicht schon @Make-Grafik vorgeschlagen??!! 8|