Dateipfade auf Handles umbauen

  • Hallo zusammen,

    wer kann mir helfen, die absoluten Pfad-Verweise auf Handles umzubauen? Das Skript funktioniert so zwar einwandfrei, aber ich meine, mit Handles ist es etwas schonender und schneller? Danke !!

    [autoit]

    #include<File.au3>
    #include <Array.au3>
    #include <ie.au3>

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

    Local $DVISEDatei = "\\mainsrv02\david\import\test.nmr"
    Local $sText

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

    $sBaseURL = "http://mainwebsrv01/pw/Query01.php"
    $oIE = _IECreate ($sBaseURL,0,0)

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

    $oTable = _IETableGetCollection($oIE, 0)

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

    $aTableData = _IETableWriteToArray($oTable, True)
    _ArrayDelete($aTableData,0)
    _ArrayDelete($aTableData,0)
    _ArrayDelete($aTableData,1)
    _ArrayDelete($aTableData,0)
    _ArrayDelete($aTableData,UBound($aTableData))

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

    _IEQuit($oIE)

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

    For $j = 0 To UBound($aTableData, 1) - 1
    For $i = 0 To UBound($aTableData, 2) - 1
    $sText &= $aTableData[$j][$i] & ";"
    Next
    $sText = StringTrimRight($sText, 1) & @CRLF
    Next
    $File = FileOpen($DVISEDatei, 2)
    FileWrite($File, $sText)
    FileClose($File)

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

    _FileWriteToLine($DVISEDatei,1, "[DEFAULT=2]",0)
    _FileWriteToLine($DVISEDatei,1, "[DEL ]",0)
    _FileWriteToLine($DVISEDatei,1, "[ADR_NACHNAME,ADR_VORNAME,ADR_EMAIL,ADR_KOMMENTAR,ADR_ANREDE,ADR_TEL_PRIVAT,ADR_TEL_MOBIL,ADR_ANGEZEIGTER_NAME]",0)
    _FileWriteToLine($DVISEDatei,1, "[\\mainsrv02\david\archive\user\1001c000\in\c]",0)
    _FileWriteToLine($DVISEDatei,1, "[ANSI]",0)

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

    $content = FileRead($DVISEDatei) ; lesen
    $content = StringReplace($content, "NULL", "") ; ersetzen
    $handle = FileOpen($DVISEDatei, 2) ; Datei zum überschreiben öffnen
    FileWrite($DVISEDatei,$content) ; neuen Inhalt schreiben
    FileClose($handle) ; Datei schließen
    FileClose($content) ; Datei schließen

    [/autoit]
  • Du hast da glaub etwas falsch verstanden: Es reicht vollkommen, wenn du die Datei zu Beginn des Scripts im Modus Lesen+Schreiben öffnest und sie ganz am Ende wieder schließt. Dann kannst du in allen Funktionen die mit der Datei arbeiten, das Handle das du von FileOpen() zurück bekommst, statt dem Pfad eintragen... ;)

    LG
    Christoph :)

  • Warum nicht einfach so?

    Spoiler anzeigen
    [autoit]

    #include<File.au3>
    #include <Array.au3>
    #include <ie.au3>
    Local $sText, $DVISEDatei = "\\mainsrv02\david\import\test.nmr"
    Local $sBaseURL = "http://mainwebsrv01/pw/Query01.php"

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

    $oIE = _IECreate($sBaseURL, 0, 0)
    $oTable = _IETableGetCollection($oIE, 0)
    $aTableData = _IETableWriteToArray($oTable, True)
    _IEQuit($oIE)

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

    _ArrayDelete($aTableData, 0)
    _ArrayDelete($aTableData, 0)
    _ArrayDelete($aTableData, 1)
    _ArrayDelete($aTableData, 0)
    _ArrayDelete($aTableData, UBound($aTableData))

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

    For $j = 0 To UBound($aTableData, 1) - 1
    For $i = 0 To UBound($aTableData, 2) - 1
    $sText &= $aTableData[$j][$i] & ";"
    Next
    $sText = StringTrimRight($sText, 1) & @CRLF
    Next

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

    $sText = "[DEFAULT=2]" & @LF & "[DEL ]" & @LF & "[ADR_NACHNAME,ADR_VORNAME,ADR_EMAIL,ADR_KOMMENTAR,ADR_ANREDE,ADR_TEL_PRIVAT,ADR_TEL_MOBIL,ADR_ANGEZEIGTER_NAME]" & @LF & "[\\mainsrv02\david\archive\user\1001c000\in\c]" & @LF & "[ANSI]" & @LF & $sText
    $sText = StringReplace($sText, "NULL", "")

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

    FileDelete($DVISEDatei)
    FileWrite($DVISEDatei, $sText)

    [/autoit]

    Außerdem erschließt sich mir der Sinn des Scripts nicht wirklich und ich habe da so eine Vorahnung, dass sich das mit RegExp viieel kürzer realisieren lassen würde... ;)

    LG
    Christoph :)