Einlesen, checken, schreiben!

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einlesen, checken, schreiben!

    Hallo,

    ich habe eine Frage, die in 4 Teile aufgeteilt werden muss:

    1.
    Eine Textdatei muss zeilenweise Eingelesen werden (wohl am besten mit Array), aber wie?

    2.
    Bei einer bestimmten Zeile, welche ein Trennzeichen wie z. B. ----------- enthält, muss die Datei in 2 Teile gesplittet werden und aus diesen 2 Teilen sollen im Temp-Directory des Games 2 Dateien werden. Siehe unten das Muster wie die Datei aufgebaut ist.

    3.
    Beide neu erstellten Dateien sollen, wieder zeilenweise, auf ein Muster überprüft werden. Beide enthalten nämlich programmiercode, und dieser soll überprüft werden. z. B. enthält die Datei 1 folgenden Code:

    Spoiler anzeigen
    if ("dasunddies">output_text) { tu dies und dies }
    if ("hallo">output_text) { tu jenes }


    Es ist innerhalb einer Datei vom Muster her immer das gleiche, mit jeweils winzigen Änderungen. Nun soll der oben fettgedruckte Teil überprüft werden, die nicht fettgedruckten Stellen variieren von Zeile zu Zeile.


    4.
    Ist das Muster der beiden Dateien korrekt, soll die 1. Datei in eine bestehende Datei geschrieben werden und die 2. Datei in eine andere bestehende Datei geschrieben werden.


    Die Datei am Anfang ist z. B. so aufgebaut:

    Brainfuck-Quellcode

    1. if ("dasunddies">output_text) { tu dies und dies }
    2. if ("dasunddies">output_text) { tu jenes }
    3. -------------------------------------
    4. spk_add_word("word") spk_similar("nord")
    5. spk_add_word("wordtwo") spk_similar("nordtwo")


    Dann soll ja die Datei an der Stelle --------------- in 2 Dateien verwandelt werden:

    1.:

    Spoiler anzeigen

    Quellcode

    1. if ("dasunddies">output_text) { tu dies und dies }
    2. if ("dasunddies">output_text) { tu jenes }


    und 2. Datei:

    Spoiler anzeigen

    Quellcode

    1. spk_add_word("word") spk_similar("nord")
    2. spk_add_word("wordtwo") spk_similar("nordtwo")


    jetzt soll die neue 1. Datei auf ein Muster überprüft werden, und die 2. auch. Siehe beispiel oben.
    Stimmen bei beiden das Muster überein, aber nicht untereinander, sondern jeweils mit einem vorprogrammierten muster, so wird Datei 1 an die Datei C:\Users\User\Documents\old.txt angehängt, nicht überschrieben, und die 2. Datei ebenfalls an eine andere bestehende Datei! (C:\Users\User\Documents\new.txt).

    Ich hoffe Ihr wisst was ich meine!

    Vielen, vielen Dank!
    :thumbsup:
  • 1. Wie Dateien ausgelesen und geschrieben werden kannst du hier nachschauen: gm-d.de/help/hh_start.htm?410_01_files.html (Ich hoffe, dass es für die aktuelle Version auch noch so funktioniert). Allerdings wirst du das wissen, wenn du GML-Fortgeschrittener bist.
    Du muss einfach eine for-Schleife schreiben, in der erst überprüft wird, ob die Datei noch Text enthält, der noch nicht ausgelesen wurde, dann einen String/eine Zeile ausliest und diesen dann in das Array schreibt. Das solltest du himbekommen.

    2. Du muss einfach nur die Zeilen solang in das Array schreiben, bis das Trennzeichen auftaucht (das muss dann halt in der For-Schleife überprüft werden), ab da schreibst du dann in ein zweites Array.
    Dann muss du die Array nur noch in die 2. Datein schreiben

    3. Willst du überprüfen, ob der Programmiercode korrekt ist? Das ist nicht so ohne weiteres zu machen. Oder willst du nur überprüfen, ob "ouput_text" vorkommt?

    4. Das musst du nochmal näher erläutern.

    Was willst du denn machen?
    Ich denke wir können dir einfach helfen, wenn wir das wissen.

    maxda

    Edit: Wo ist jetzt die Frage?
  • Danke, ich konnte mir das so halb denken mit Punkt 1-2!

    Nun zu drei:

    NEIN! Ich habe mir das so vorgestellt:

    GML-Quellcode

    1. vergleich1 = "if ("">output_text) { }"
    2. if (vergleich1 == array_datei1[])
    3. {
    4. // In neue Datei schreiben
    5. }
    6. vergleich2 = "spk_add_word('') spk_similar('')"
    7. if (vergleich2 == array_datei2)
    8. {
    9. // Datei 2 schreiben ins Temp-Directory!
    10. }


    Wobei die Variablen vergleich1 und vergleich2 jeweils das Muster enthalten, wie es sein sollte für die jeweilige Datei (ALso, dank splitt 2 Dateien ;) ).
    Die array_datei1 und array_datei2 enthalten hier jeweils zum 1. den oberen Teil der Datei und zum 2. den unteren Teil, getrennt durch -----------!

    Jetzt ist das Problem nur, das ja nicht immer übereinstimmen kann! Innerhalb der Gänsefüsschen (" und ") sowie innerhalb der geschwungenen Klammern ({ und })
    kann der inhalt von Zeile zu Zeile abweichen. Das heisst, es soll nur überprüfen, von if bis zum ersten Gänsefüsschen ( if (" ), danach eine Pause machen, da ja nun der Inhalt immer anders ist, dann wieder überprüfen ab 2tem Gänsefüsschen bis zur ersten Geschwungenen klammer, wieder pause machen und dann noch überprüfen ob die 2te geschwungene Klammer da ist. Und das in jeder Zeile.

    Da es nun aber 2 Teile sind, der obere und der untere, müssen beide Teile überprüft werden, wobei der obere Teil ein anderes Muster benötigt als der untere.

    Nun zu Punkt 4:

    Ist in beiden Teilen die überprüfung erfolgreich, also, stimmen die Muster überein, so soll der obere Teil dieser Datei, in eine bestehende TXT Datei geschrieben werden, welche z. B. unter C:\Users\User\Documents\bestehende datei 1.txt. Das gleiche mit dem unteren Teil, einfach in eine andere bestehende Datei.

    Die bestehenden Dateien sollen aber mit file_text_open_append() geöffnet werden, da der Inhalt sonst überschrieben wird.

    Ich hoffe ihr versteht mich.

    jlsnews
    :thumbsup: