Leerzeile aus .txt entfernen

  • Hallo liebe AutoIt Community! :)
    Hoffe jemand kann mir beim folgenden Problem helfen:

    Ich habe eine Textdatei die so aufgebaut ist:

    Code
    Name1
    Name2
    Name3

    Dort möchte ich einen Namen entfernen, ohne eine Leerzeile zu hinterlassen. Folgendes habe ich bereits ausprobiert:

    Methode1:

    [autoit]


    _FileReadToArray("C:\Clan-Manager\Clan_Members.txt", $Memberfile)
    $value = _ArraySearch($Memberfile, $Name2)
    _ArrayDelete($Memberfile, $value)
    FileDelete("C:\Clan-Manager\Clan_Members.txt")
    FileCopy("C:\Clan-Manager\empty.txt", "C:\Clan-Manager\Clan_Members.txt", 1)
    $Filehandle2 = FileOpen("C:\Clan-Manager\Clan_Members.txt",33)
    _FileWriteFromArray($Filehandle2, $Memberfile, 1)

    [/autoit]

    Methode 2:

    [autoit]


    _ReplaceStringInFile("C:\Clan-Manager\Clan_Members.txt", $Name2, "")

    [/autoit]

    Methode 3:

    [autoit]


    _ReplaceStringInFile("C:\Clan-Manager\Clan_Members.txt", $Name2& @crlf,"")

    [/autoit]

    Wäre für jede Hilfe dankbar ;)

    Einmal editiert, zuletzt von chrisbyRRC (5. März 2012 um 22:39)

  • [autoit]


    #include <Array.au3>
    #include <File.au3>
    Dim $Memberfile, $Name2="whatever"
    _FileReadToArray("<kompletterPfad>", $Memberfile)
    $value = _ArraySearch($Memberfile, $Name2)
    _ArrayDelete($Memberfile, $value)
    _ArrayDisplay($Memberfile)
    _FileWriteFromArray("<kompletterPfad>", $Memberfile, 1)

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Wow! Ich bedanke mich jetzt schonmal herzlich an die gesammte Community und allen die mitgeholfen haben! :D
    Ihr seid echt die beste Community die ich kenne! ;)

    Mit euren Ideen bin ich sicher früher oder später zu einer Lösung zu kommen. Noch hapert es bei mir am FileOpen(), sobald diese aufgerufen wird, wird komischerweise die komplette .txt geleert. Aber da finde ich denk ich noch eine Lösung.
    Das FileOpen() brauch ich deshalb, weil die .txt in Unicode gespeichert werden muss, sonnst werden einige Sonderzeichen der Namen in ? umgeändert und somit nicht mehr vom Programm erkannt...

  • Wenn du FileOpen mit dem normalen Schreibmodus (2) öffnest, wird die Datei überschrieben, bei 1 wird an die Datei angehangen.
    Aber du willst die Datei doch leeren, oder? (Also beim Schreiben dann)
    Ich würde es so machen: FileOpen mit Modus 32 oder so (also Lesen+Unicode), dann alles einlesen, dann FileClose, dann FileOpen mit 34 zum ersetzen und am Ende wieder FileClose.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Puh... endlich geschafft :rolleyes:
    Dummerweise hab ich mir umsonst den Kopf zerbrochen. :pinch: Eine Leerzeile am Ende wird IMMER erstellt, jedoch nicht von AutoIt eingelesen.
    Alles funktioniert bestens und auch beim mehreren Löschen bleibt es bei einer Leerzeile am Ende des Files.

    Nun kann ich endlich weiterproggen... ^^