_FileReadToArray ???Fehler???

    • Offizieller Beitrag

    _FileReadToArray ist nich dazu gedacht andere Dateien als Texte zu lesen. Wie soll das auch gehen?
    Es ist spezialisiert die Texte bei @CRLF oder @LF in ein Array aufzusplitten.

  • Zitat

    wenn eine Funktion File Read ToArray heist dann sollte sie schon das machen was sie Verspricht

    _Filereadtoarray macht genau das was es verspricht!
    Allerdings sollte man schon verstehen, was man da macht.....

    Du VERSUCHST eine EXE-Datei einzulesen, was passiert?
    _filereadtoarray öffnet die Datei, liest bis zum ersten Nullbyte die Daten (wieso auch mehr, eingestellt ist Lesemodus 0 ) und schreibt dieses Ergebnis in ein Array, soweit völlig richtig!
    Die ersten beiden Bytes einer EXE-Datei sind M und Z dann folgen einige Nullbytes...

    Schreib einfach die Funktion so um, so wie du sie brauchst, wo ist das Problem?

    Spoiler anzeigen
    [autoit]

    Func _FileReadToArray($sFilePath, ByRef $aArray)

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

    Local $hFile = FileOpen($sFilePath, $FO_READ) ;**********hier würde ich im binärmodus öffnen*********

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

    If $hFile = -1 Then Return SetError(1, 0, 0);; unable to open the file
    ;; Read the file and remove any trailing white spaces
    Local $aFile = FileRead($hFile, FileGetSize($sFilePath))
    ;~ $aFile = StringStripWS($aFile, 2)
    ; remove last line separator if any at the end of the file
    If StringRight($aFile, 1) = @LF Then $aFile = StringTrimRight($aFile, 1)
    If StringRight($aFile, 1) = @CR Then $aFile = StringTrimRight($aFile, 1)
    FileClose($hFile)
    If StringInStr($aFile, @LF) Then
    $aArray = StringSplit(StringStripCR($aFile), @LF)
    ElseIf StringInStr($aFile, @CR) Then ;; @LF does not exist so split on the @CR
    $aArray = StringSplit($aFile, @CR)
    Else ;; unable to split the file
    If StringLen($aFile) Then
    Dim $aArray[2] = [1, $aFile]
    Else
    Return SetError(2, 0, 0)
    EndIf
    EndIf
    Return 1
    EndFunc ;==>_FileReadToArray

    [/autoit]

    Übrigens, wenn man den Cursor auf den Funktionsnamen stellt und dann Strg+J drückt, öffnet Scite die UDF an der Position der Funktion

  • Hi!


    Leute ist mir kla, das ist mir halt aufgefallen

    Durch machne Optimierungen der UDF-Funktionen bin ich heute an _FileReadToArray hängen geblieben .


    Edit:/ Ich schlisse das Thema, auch wenn diese Funktion daruf ausgelegt ist hat sie bei der Einfachen Datei ein Fehler die manchen User nicht bewust ist.

    Lg Kleiner

    Einmal editiert, zuletzt von Kleiner (25. Dezember 2010 um 23:11)