_FileWriteFromArray

  • Hi,

    Was ist denn hierdran schon wieder falsch ??? :irre:

    Wenn ich bei der Funktion _FileWriteFromArray den direkten Pfad angebe funzt es, wenn ich das Filehandle nehme bleibt "Test.usd" leer

    Spoiler anzeigen
    [autoit]

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

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

    Dim $ArFile, $Dest = FileOpen(@MyDocumentsDir & "\Test.usd", 2)

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

    If _FileReadToArray(@MyDocumentsDir & "\Tut.usd", $ArFile)= -1 Then
    MsgBox(0, "Error", "Datei konnte nicht eingelesen werden !")
    EndIf

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

    For $i=1 To UBound($ArFile)-1
    $tmp = $ArFile[$i]
    If StringInStr($tmp, "/url") Then
    $ArFile[$i] = StringRegExpReplace($tmp, "[][]"& "(/url)" & "[][]", "")
    EndIf
    Next

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

    _FileWriteFromArray($Dest, $ArFile,1)
    ;FileClose($Dest)
    Exit

    [/autoit]

    Gruß


  • GtaSpider

    Vielen Dank, aber ich habe vor ein paar Wochen ein Script geschrieben in dem die Variable funzt...

    Spoiler anzeigen
    [autoit]


    Dim $RegScript = FileOpen($regdest, 2)

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

    ; Funktion Pfade im Script ändern
    Func PathReplace()
    Dim $arFile

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

    If _FileReadToArray($RegScript, $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf
    $Replace = '@WorkingDir & "'
    $Path = "[A-Z]" & ":" & "\\" & "Programme"
    For $i = 1 To UBound($arFile) - 1
    $Line = $arFile[$i]
    $vRes = StringRegExp($Line, $Path, 1)
    If @extended Then $arFile[$i] = StringRegExpReplace($Line, '"' & $Path, $Replace)
    Next
    _FileWriteFromArray($RegScript, $arFile,1)
    EndFunc ;==>PathReplace

    [/autoit]

    Gruß


    • Offizieller Beitrag

    Hallo!

    Ähm? hä^^ bei mir funktioniert deine funktion nicht! Du musst bei allen funktionnen von file.au3 den pfad eingeben! Alleine schon wenn du dir mal die Funktion anguckst:

    Spoiler anzeigen
    [autoit]

    Func _FileWriteFromArray($sFilePath, $a_Array, $i_Base = 0, $i_UBound = 0)
    ;==============================================
    ; Local Constant/Variable Declaration Section
    ;==============================================
    Local $hFile
    ; Check if we have a valid array as input
    If Not IsArray($a_Array) Then
    SetError(2)
    Return 0
    EndIf
    ; determine last entry
    Local $last = UBound($a_Array) - 1
    If $i_UBound < 1 Or $i_UBound > $last Then $i_UBound = $last
    If $i_Base < 0 Or $i_Base > $last Then $i_Base = 0
    ; Open output file <<<<<<<<<<<< HIER WIRD SIE JA GEÖFFNET
    $hFile = FileOpen($sFilePath, 2)

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

    If $hFile = -1 Then
    SetError(1)
    Return 0
    EndIf
    ;
    FileWrite($hFile, $a_Array[$i_Base])
    For $x = $i_Base + 1 To $i_UBound
    FileWrite($hFile, @CRLF & $a_Array[$x])
    Next

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

    FileClose($hFile)
    Return 1
    EndFunc ;==>_FileWriteFromArray

    [/autoit]

    Da wird sie erst "geöffnet" also mit FileOpen.. In der Hilfe steht auch
    $sFilePath | Path and filename of the file to write to.

    Also normaler weise sollte es nur mit dem Pfad gehen ;) Normalerweise.. :hammer:

    MFg Spider