FileOpen (Datei Probem)

  • Hallo,

    ich möchte eine Datei auswerten.

    [autoit]


    $sSource = FileOpen(@ScriptDir & "\test.txt", 0)

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

    $aLink = StringRegExp($sSource,'(.*?)</a',3) ;(?i)\"\w+\"\shref="((?:http:\/\/).*?)">'
    _ArrayDisplay($aLink, "Array Auswertung")

    [/autoit]

    Wie kann ich generell per RegEx auf diese Datei zugreifen.
    Ich meine daß ich die Datei im Scriptverzeichnis durchsuchen kann?
    Also, daß $sSource eine Datei ist (test.txt)

    Liebe Grüße
    Ilse ;)

    2 Mal editiert, zuletzt von Ilse (29. Juni 2011 um 10:51)

  • Du mußt nach dem Öffnen der Datei natürlich noch den Inhalt derselben auslesen:

    [autoit]


    $sFile = FileOpen(@ScriptDir & "\test.txt", 0)
    $sSource = FileRead($sFile)
    FileClose($sFile)

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

    $aLink = StringRegExp($sSource,'(.*?)</a',3) ;(?i)\"\w+\"\shref="((?:http:\/\/).*?)">'
    _ArrayDisplay($aLink, "Array Auswertung")

    [/autoit]

    Edit: Vergesse zu gern das FileClose (Thx an misterspeed)

    UNPLEASANT SPOILER

    You just lost the game!

  • FileOpen = Gibt das Handle der Datei zurück (öffnet die Datei)
    FileRead = Liest den Inhalt der Datei in die Variable (kann ausgewertet werden)
    FileClose = Schließt die Datei wieder

    Mit dem Inhalt der Variablen, welcher bei FileRead gesetzt wird kannst du danach machen was du möchtest.

    UNPLEASANT SPOILER

    You just lost the game!

  • Guten Morgen shadow667,

    hab da noch ein kleines Problem mit der Datei:

    [autoit]


    $sSource = FileOpen(@ScriptDir & "\test.txt", 0)
    $sSource = FileRead($sSource)
    FileClose($sSource)
    $ersetze = StringRegExpReplace($sSource," ","NeuerText")

    [/autoit]

    Also die test.txt enthält diese Zeichen  
    und diese möchte ich mit StringRegExpReplace ersetzen
    und in die Datei schreiben.

    Was mache ich hier falsch?

    Liebe Grüße
    Ilse ;)

  • Also die test.txt enthält diese Zeichen  
    und diese möchte ich mit StringRegExpReplace ersetzen
    und in die Datei schreiben.

    Was mache ich hier falsch?

    Liebe Grüße
    Ilse ;)

    Welche Zeichen?

    UNPLEASANT SPOILER

    You just lost the game!

  • uuppss,

    das Posting war nicht korrekt!

    [autoit]


    $sSource = FileOpen(@ScriptDir & "\test.txt", 0)
    $sSource = FileRead($sSource)
    FileClose($sSource)
    $ersetze = StringRegExpReplace($sSource," ","test")

    [/autoit]

    das klappt leider nicht!

    EDIT
    oh... das ist ein Anzeigeproblem!
    Wenn ich diese Zeichen oben im Code einsetze & # 1 6 0 ;
    dann werden die ignoriert!


    Grüße
    Ilse

    Einmal editiert, zuletzt von Ilse (29. Juni 2011 um 11:18)

  • Öhm du schreibst nix in eine Datei? Du veränderst hier ja im bestenfall die Variable, nicht die Datei. Wenn du sehen willst ob es geklappt hat musst du dir den String eben ausgeben lassen (msgbox, consolewrite oder eben filewrite...).
    Ausserdem verwendest du die selbe Variable für fileopen und fileread, d.h. du überschreibst dir das Handle und kannst dieses dann auch nicht mehr mit fileclose schliessen. Also nochmal:

    [autoit]


    $handle = FileOpen(@ScriptDir & "\test.txt", 0)
    $Inhalt = FileRead($handle)
    FileClose($handle)
    $ersetze = StringRegExpReplace($Inhalt," ","NeuerText")
    consolewrite($ersetze)

    [/autoit]
  • Hallo Ilse,

    das soll jetzt wirklich kein anmuffen sein, trotzdem empfehle ich dir mal ein Grundlagentutorial zum Programmieren durchzuarbeiten.
    Das ist der zweite Thread in kürzester Zeit, bei dem zu erkennen ist, dass du massive defizite bei den Grundlagen hast.
    Merke dir für Dateizugriffe schonmal dieses Schema.

    1. Datei Öffnen [$fp = FileOpen('Dateiname',0) ; (mode 0 zum lesen öffnen)]
    2. Datei Lesen [FileRead($fp)]
    3. Datei Datei Schließen [FileClose($fp)]
    4. Dateiinhalt verarbeiten [Wichtig, dies geschieht immer nur in deinem Programm und nicht in der Datei, desshalb
    5. Datei Öffnen [FileOpen('Dateiname',2); (mode 1 (an Dateiinhalt anhängen) oder 2 (Datei leeren und in leere Datei schreiben)]
    6. Datei Schreiben [FileWrite($fp,'Daten')

    Zu deiner Verwendung von Filepointern die misterspeed anspricht habe ich dir in deinem anderen Thread noch ausführliche Kommentare an deinen Quelltext geschrieben.

    Gruß
    stro