_FileCountLines gibt 0 aus

  • Hallo,

    ich möchte gerne einfach die Zeilenanzahl einer Textdatei ausgeben lassen. Dieses Textdatei wurde mit dem ganz normalen Texteditor erstellt. Insgesamt schätze ich die Zeilenanzahl auf über 3000.
    Wenn ich jedoch jetzt mein Script verwende, gibt er mir aus das sich 0 Zeilen in der Textdatei befinden.

    Mein Code:

    Code
    #Include <File.au3>
    $vorname_textfile = FileOpen("mvorname.txt", 0)
    
    
    If $vorname_textfile = -1 Then    MsgBox(0, "", "Textdatei konnte nich geöffnet werden")    ExitEndIf
    $vorname_max = _FileCountLines($vorname_textfile)
    
    
    MsgBox(0, "", $vorname_max)

    Weiß jemand was ich hier falsch mache?

  • Hallo J1nZ

    Das du die Hilfe benutzt sieht man. Schon mal gut.
    Ich hatte das auch das Problem.
    Du muss auf jeden Fall _FileCountLine in eine Schleife einbauen.
    Am besten eine ForNext - Schleife. Damit ist es einfach.
    Weil es muss ja gezählt werden, nicht gelesen
    Gutes Gelingen ;)

  • Wenn es dennoch unbedingt mit einer geöffneten Datei funktionieren soll dann kann man sich dafür auch eine eigene Funktion schreiben (ist auch bisschen schneller als die _FileCountLines()):

    Spoiler anzeigen
    [autoit]

    $hVorname_Textfile = FileOpen("mvorname.txt", 0)
    If $hVorname_Textfile = -1 Then Exit MsgBox(0, "", "Textdatei konnte nich geöffnet werden")

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

    $iVorname_Max = _FileOpenedCountLines($hVorname_Textfile)
    FileClose($hVorname_Textfile)

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

    MsgBox(0, "", $iVorname_Max)

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

    ; $hFH = Handle einer geöffneten Datei
    ; Return: Erfolg: Anzahl an Zeilen
    ; Fehler: Setzt @error und gibt -1 zurück
    Func _FileOpenedCountLines($hFH)
    ; by AspirinJunkie
    $hOldPos = FileGetPos($hFH)
    If @error Then Return SetError(1, @error, -1)
    FileSetPos($hFH, 0, 0)
    Local $iC = -1
    Do
    $iC += 1
    FileReadLine($hFH)
    If @error = 1 Then Return SetError(2, @error, -1)
    Until @error = -1
    FileSetPos($hFH, $hOldPos, 0)
    Return $iC
    EndFunc ;==>_FileOpenedCountLine

    [/autoit]


    Edit: geändert wegen dem da unter mir ;)

    Einmal editiert, zuletzt von AspirinJunkie (8. Januar 2011 um 11:50)

  • AspirinJunkie:

    Zeile 23 Deiner Funktion muss aber so lauten:

    [autoit]

    FileSetPos($hFH, $hOldPos, 0)

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Gute Func 8)
    Doch leider "mag" diese Funktion nicht jedes Textfile :\
    Und ich find den Fehler nicht.
    hm, mal das txt File reduzieren bis es klappt

  • Hi
    Dies im Text File und das löst Error (erste MsgBox ) aus. Ka warum

    Spoiler anzeigen

    ResponseResult
    ResultCode=0
    Install Progress
    Confirm Realtek Driver
    Check Operation System Version
    OS Information [WINMAJOR Number] = 6
    OS Information [WINMAJOR String] = 6.1
    OS Information [SYSINFO.nWinMajor] = 6
    OS Information [SYSINFO.nWinMinor] = 1
    OS Information [IsWin2000] = 0
    OS Information [IsWinXP] = 0
    OS Information [IsWin2003] = 0
    OS Information [IsVista] = 0
    OS Information [IsWin2008] = 0
    OS Information [IsWin7] = 1
    OS Information [IsMCE] = 1
    RHDSetupOS Information [IsServer] = 0
    OS Information [Service Pack] = 0
    OS Information [x64] = 1
    Operation System was Windows x64
    Rtlupd [GetRtlupdForPackage] = 1
    Rtlupd version [C:.0.0
    Rtkupd version [\] =
    Current use Rtlupd v.8.0.0
    Default Path [RtkAudio
    Default Path [RtkAuddio
    Default Path [RtlTemprivers
    Default Path [RtkHDADta64
    Default Path [RtkHDMP2K
    Default Path [RtlPFHro\HDA
    Default Registry aller
    Current driver version = R2.29
    Realtek HD Audio Driver Vista64 Directory Exist .
    delete C:\Program Files (x86)\Realvers\Vista64
    Copy Realtek HD Audio Driver from Vista64 Directory
    Run RtlUpd64.exe : C:\Prg2709 (TRUE)
    Install Realtek HD Audio Audio Driver
    Run RtlUpd64.exe : C:\Prograg2709 (TRUE)
    Realtek HD Audio - SetupAPI result LAAW_PARAMETERS.nLaunchResult = -4
    Register C:\Windows\systPO64.dll in Vista system .

    Andere Txt Files werden erkannt

  • Dies im Text File und das löst Error (erste MsgBox ) aus.

    Also ist es ein Fehler bei FileOpen().
    Hat also nichts mit der Funktion zu tun da diese da ja noch nicht aufgerufen wurde.
    Dies lässt unter anderem darauf schließen das die Datei woanders schon geöffnet ist, die Datei nicht existiert bzw. du keine Zugriffsrechte zum lesen der Datei hast.
    Ergo funktioniert ein Test bei mir mit einer Datei, gefüllt mit deinen eben geposteten Inhalt, problemlos.
    Die Funktion _FileCountLines() sollte mit dieser Datei ebenfalls @error = 1 setzen und 0 zurückgeben.