Datei überschreiben?
Übersicht

PousupBetreff: Datei überschreiben? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Moin.
Ich stehe vor dem Problem, dass ich verschiedene Types in einer Datei speichern will, nachdem ich einen Eintrag in einer Listbox (EscapeGUI) erstellt habe. Wenn ich einen Eintrag erstelle kein Problem - schreibe ich danach einen zweiten, wird der erste allerdings zweimal in die Datei geschrieben. Wieso ist das so? Ich rufe nach der Bestätigung (Button-Klick) eine Funktion auf, die beschreibt, wie die Types gespeichert werden: Code: [AUSKLAPPEN] char.character_list = New character_list char\name = name_txtfield\caption$ char\rasse = rasse_txtfield\caption$ char\klasse = klasse_txtfield\caption$ char_counter = char_counter + 1 datei = WriteFile("data/char_list.txt") WriteLine datei, char_counter For char.character_list = Each character_list WriteLine datei, char\name$ WriteLine datei, char\rasse$ WriteLine datei, char\klasse$ Next CloseFile datei |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann keinen Fehler erkennen.
Hast du die Funktion mal isoliert ausgetestet? Wenn du den Eintrag nicht duplizierst oder zweimal an verschiedenen Stellen einträgst, sollte es so funktionieren. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
prüfe mal, ob die neu dazukommenden daten überhaupt verschieden sind:
BlitzBasic: [AUSKLAPPEN] char.character_list = New character_list und noch ne Frage: schaust Du dir die Datei anschließend mit einem Editor an, oder wieder im Programm selbst später? |
||
Pousup |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also. Das Debuglog sieht so aus:
Neu dazu: Char1 und nun mal alle: In der Liste: Char1 Neu dazu: Char2 und nun mal alle: In der Liste: Char1 In der Liste: Char1 In der Liste: Char2 Die Datei schau ich mir im Editor an (wo dann Char1 auch wirklich zweimal vorhanden ist) und ebenfalls seh ich ja in der Listbox, wie viele Einträge da sind (wo ebenfalls Char1 zweimal vorhanden ist) Die Einträge werden im gesamten Programm nur einmal geschrieben. |
||
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Interesant wäre noch wie genau due diese Ausgabe erzeugst und wie du neue Einträge GENAU erstellst.
Ich denke, das der Fehler in der Debuglog-Ausgabe liegt, oder beim einfügen der Type-Einträge, da deine Speicher-Methode korrekt ist. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da sind plötzlich wirklich 3 Einträge in der Liste, obwohl du erst den zweiten mit NEW erzeugst.
Das Problem entsteht also nicht erst beim Speichern! Irgendwann muss noch eine Eintrag in die Liste gelangt sein. Mach doch mal folgendes: Zeigt mal den ganzen Funktionsaufruf und mach die Char LOCAL. Und noch ne Frage: Ist da irgenwo im Programm noch ein New character_list? Egal, was davorsteht... mir geht es um das NEW!!! |
||
Pousup |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tatsächlich, Midimaster es kommt noch ein New vor, und zwar dort, wo die Einträge für die Listbox
aus der Datei in ein Type geladen werden! Wie ich den Fehler allerdings beheben kann, will mir gerade nicht einleuchten... |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne Code ist es immer schwer da weiter zu helfen.
Wenn du ohnehin alle Types aus der Datei lädst, kannst du vorher ja sicher gehen und die bestehenden Löschen: BlitzBasic: [AUSKLAPPEN] Delete Each character_list |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
du darfst neue Elemente nur 1x in diese Liste eintragen. Warum benötigst Du denn 2 Stellen, wo du NEW machst?
Normalerweise würden die Daten ja aus einer Datei eingelesen. Da ist NEW richtig. Später änderst du sie vielleicht, dann heißt es FOR/EACH/NEXT und dort nach dem richtigen suchen. Beim Speichern z.b. wird diese Liste gar nicht erweitert, sondern höchstens aktualisiert und dann die Daten gespeichert. |
||
Pousup |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stimmt - jetzt wo man weiß, wie's geht ist es ganz einfach ![]() Danke für die Hilfe - nach dem Speichern in der Datei hat ein simples "Delete char" in der For-Each Schleife gereicht um das Problem zu lösen! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group