txt Datei einlesen und verarbeiten

  • Hallo Leute,
    ich brauche wirklich mal etwas Hilfe von Euch.
    Ich bin ein Neueinsteiger in Auto-It und versuche mich grade.

    Mein Problem:
    Ich möchte eine txt Datei einlesen und verarbeiten
    Die Textdatei sieht so aus:

    (ID,Kategorie,Soundfile1,Titel,Soundfile2,Zusatztext,Schalter(An/Aus))
    0001;Musik;Sound10.mp3;Die Blechtrommel;Sound11.mp3;Text;1
    0002;Kultur;Sound20.mp3;Das Haus;Sound21.mp3;Text;0
    0003;Kampf;Sound30.mp3;Der Ritter;Sound31.mp3;Text;1
    0004;Weltall;Sound40.mp3;Die Sonne;Sound41.mp3;Text;0
    0005;Technik;Sound50.mp3;Der Motor;Sound51.mp3;Text;0

    Ich möchte die Textdatei in eine Liste einlesen und einen Eintrag bearbeiten können.
    Ich möchte auch einen neuen Eintrag hinzufügen können.
    Das ganze muss man natürlich alles speichern können.

    Ich habe mir hier schon einiges angeguckt, aber leider nichts gefunden womit ich arbeiten könnte.

    Ich würde mich freuen, wenn mir hier einer helfen könnte.

    Mein kleiner Anfang ist hier zu sehen, so würde ich es gerne machen:

  • Hallo Ram3000!

    Mein Tipp für das Projekt: Erstelle Dir mit Hilfe des Koda die GUI. Das hast zwei Vorteile: 1.) Du kann zumindest einen groben Entwurf von Deiner GUI machen inkl. aller Button/Menues (laden, speichern,...) und 2.) Es spart viel Zeit :)

    Danach schreibe eine Funktion nach der anderen: für das Laden der Daten, für Anzeige, Bearbeiten,.... So kannst Du sehr modular die Sache angehen und bei späteren Änderungen leicht darauf reagieren.

    Durch die modularen Aufbau lernst Du auch gleich viele Befehle besser einzusetzten. Beispiel: FileReadLine oder doch besser fileopen ?
    Lese ich jetzt Zeile einzelen ein oder doch das gesammte Textfile in einem rutsch und bearbeite es dann nur mehr im Speicher??

    Und vergiss nicht alles mit Bemerkungen zu versehen, hilft in 6 Monaten ungemein.......

    lg
    Racer

  • Sieh dir mal die Hilfe an, dort unter User defined Functions guck mal nach GuiCtrlListview (_GuiCtrlListview_...), damit kann man Zeilen hinzufügen, löschen, auslesen und auch die Spaltenbreite festlegen (schöner als mit Messagecodes (_GuiCtrlListview_setColumnWidth) )
    Dann findest du dort auch die Funktion _FileReadToArray, welche für dich recht nützlich sein dürfte:

    Code
    $arFile=_FileReadToArray($sFile)
    For $i = 1 To UBound($arFile)-1
    	$tmp = StringReplace($arFile[$i], ";", "|")
    	GUICtrlCreateListViewItem($tmp, $ListView1)
    Next


    Zum Editieren hab ich mal eine UDF geschreiben, die kannst du dir dazu mal näher ansehen. Mit der UDF kannst du Spalten,Zeilen Editierbar machen: Listview edit subitems UDF


    Koda empfehle ich eher nicht. Koda ist nur sinnvoll wenn man absolut keine Ahnung hat, der Thread ersteller hat es aber ja schon hinbekommen, das Grundgerüst aufzustellen. Von daher Rate ich von Koda ab. Es verleitet einfach dazu sinnlose Variablenamen zu benutzen, und wenn man die Pixel sebst angibt ist es meist auch schöner. Die details muss man eh von Hand machen. Gerade die Verwendung von Arrays für Controls ist sehr schön, und viele kommen durch Koda garnicht darauf, so Controls zu erstellen. Also, sofern man es hinbekommt sollte man kein Koda verwenden.
    Gerade wenn man später die Gui-Größe ändern will ist das mit Koda schlecht.
    Wenn mans selbst macht, würde ich immer relative positionen und größen nehmen (also mit ner GuiWidth,GuiHeight arbeiten und die Controls damit positionieren. Später kann man dann auch eine Resizefunktion so leicht erstellen.
    Beispiel (Bin nicht auf Windows, deshalb können noch kleine Syntaxfehler,... drin sein):

    Spoiler anzeigen


    Am Ende kannst du die Listview ja durchgehen und in ner Datei speichern:
    _GuiCtrlListview_getItemCount for-schleife von 0 bis itemcount
    _GuiCtrlListview_getItemTextString mit replace von | zu ;
    fileopen mal ansehen, dort gibt es parameter zum überschreiben,...
    filewrite mit der rückgabe von fileopen
    fileclose nicht vergessen
    Kannst dir überlegen, das filewrite in die schleife zu packen, oder alles ans ende (und die items in ner variable zusammenzusetzen)

    Ich hoffe du hast jetzt ein paar anregungen :)

    MfG Kanashius

  • Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.