Text Datei schreiben

  • Hi Leute,

    Ich möchte aus einem Quelltext ein paar Zahlen auslesen aber ich komm einfach nicht weiter...

    Spoiler anzeigen

    Aus diesem Quelltext will ich aber nur die Zahlen haben die zwischen den () stehen und diese dann in eine andere Datei schreiben.
    So soll diese diese dann aussehen.

    Wäre echt Klasse wenn ihr mir da weiterhelfen würdet!

    LG
    Olli

  • Ich weiss das hört sich noobig an aber könntest du mir eventuell ein bsp. schreiben?
    Ich steh total auf dem Schlauch!

    mfg

    Olli

  • Einen tipp hätt ich noch. damit nicht dopplet Koordinaten vorkommen
    (von hier: http://www.autoitscript.com/forum/lofivers…php?t12714.html)

    [autoit]

    Func _ArrayUnique($a1,$i_base = 1)
    _ArraySort($a1)
    for $i = ubound($a1) - 1 to $i_base + 1 step - 1
    $sResult = $a1[$i]
    if $sResult = $a1[$i-1] Then
    _ArrayDelete($a1, $i)
    EndIf
    Next
    ;$a1[0] = ubound($a1) - 1
    return $a1
    EndFunc ;==>_ArrayUnique

    [/autoit]

    Einmal editiert, zuletzt von progandy (15. Oktober 2007 um 19:35)

  • Hab noch eine kleine Frage zu diesem Thema

    Ich hab es jetzt so gelöst

    [autoit]

    Dim $aRecords
    If Not _FileReadToArray("Source", $aRecords) Then
    MsgBox(4096, "Error", " Fehler beim Einlesen der Datei Fehler:" & @error)
    Exit
    EndIf
    For $i = 1 To $aRecords[0]
    $sStart = "("
    $sEnd = ")"
    $gesucht = _StringBetween($aRecords[$i], $sStart, $sEnd)
    $gesucht = $gesucht[0]
    FileOpen("Source2", 1)
    FileWriteLine("Source2", $gesucht)
    Next

    [/autoit]

    Das klappt auch wunderbar, aber ich bekomme trotzdem die Fehlermeldung

    Zitat

    Line -1:
    Error: Subscript used with non-Array variable.

    Was ist noch Falsch an dem Code?

  • Du hast mit großer Wahrscheinlichkeit am Ende der Datei noch eine Leerzeile.

    Wenn du dort versuchst mit StringBetween() zuzugreifen, findet er kein Ergebnis und die nächste Zeile $gesucht = $gesucht[0] beschert dir den Fehler.

    Probies es so:

    Grüße,
    Buffo

  • Schön das es geklappt hat :)

    Als ich dein Script gerade noch Mal gesehen habe:

    Ich würde die Datei nur einmal direkt vor der Schleife öffnen und dann zum Schluß schliessen, so kann man einige Zugriffe sparen ;)

    Also:

    [autoit]

    Dim $aRecords
    If Not _FileReadToArray("Source", $aRecords) Then
    MsgBox(4096, "Error", " Fehler beim Einlesen der Datei Fehler:" & @error)
    Exit
    EndIf
    $file = FileOpen("Source2", 1)
    For $i = 1 To $aRecords[0]
    $sStart = "("
    $sEnd = ")"
    $gesucht = _StringBetween($aRecords[$i], $sStart, $sEnd)
    If Not @error Then
    $gesucht = $gesucht[0]
    FileWriteLine($file, $gesucht)
    EndIf
    Next
    FileClose($file)

    [/autoit]

    Grüße,
    Buffo

    Einmal editiert, zuletzt von Buffo (7. November 2007 um 22:16)

  • Vielen Dank für den Tipp so funktioniert es echt besser!
    Ich komme meinen kleinen Tool immer näher^^

    LG