Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Geänderte Arrays abspeichern

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Nullchecker



Anmeldungsdatum: 03.08.2013
Beiträge: 34

BeitragVerfasst am: 27.06.2014, 12:46    Titel: Geänderte Arrays abspeichern Antworten mit Zitat

Das Abspeichern von geänderten Arrays will nicht klappen. Innerhalb meines Programmes kann ich Daten (Einträge) ändern (was auch innerhalb des Programmes funktioniert). Nun sollen diese Änderungen natürlich bei Beendigung des Programmes übernommen werden. Das allerdings klappt nicht. (Hinweis: Die Datei "bonsai1.txt" existiert schon bei Programmaufruf, alle Felder sind mit einem "*" versehen.)

So beginne ich das Programm:

Code:
REM Daten einlesen
 OPEN dateiname FOR INPUT AS #nr
FOR x = 0 TO 250
INPUT #nr, bon(x, 1), bon(x, 2), bon(x, 3), bon(x, 4), bon(x, 5), bon(x, 6), bon(x, 7), bon(x, 8), bon(x, 9)
NEXT x


So endet es:

Code:
Case 7
CLS
LOCATE 1, 0
Print"Programm beenden"
LOCATE 3, 0
PRINT"DATEN WERDEN ABGESPEICHERT"

REM Daten in Datei schreiben
OPEN dateiname FOR Output AS #nr
FOR x = 0 TO 250
WRITE #nr, bon(x, 1), bon(x, 2), bon(x, 3), bon(x, 4), bon(x, 5), bon(x, 6), bon(x, 7), bon(x, 8), bon(x, 9)
NEXT x
CLOSE #nr

END


Allerdings werden die Änderungen nicht übernommen, d.h. beim nächsten Programmaufruf sind wieder alle Felder mit dem "*" belegt. Was mache ich falsch?
_________________
Mein Brett vor`m Kopf bringt mich heute wieder um
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.06.2014, 13:52    Titel: Antworten mit Zitat

Da deine Datei zumindest in diesen beiden Codefragmenten nie vor dem Speichervorang geschlossen wird, wäre das eine mögliche Fehlerquelle.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nullchecker



Anmeldungsdatum: 03.08.2013
Beiträge: 34

BeitragVerfasst am: 27.06.2014, 14:18    Titel: Antworten mit Zitat

Ich habe jetzt noch ein zusätzliches "CLOSE" hinzugefügt, es ändert nichts.(Zumal in der Referenz auch geschrieben wird, dass das "CLOSE" automatisch erfolgt und lediglich gutem Programmierstil entspricht).
_________________
Mein Brett vor`m Kopf bringt mich heute wieder um
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.06.2014, 14:30    Titel: Antworten mit Zitat

Beim Programmende werden alle offenen Dateien geschlossen, aber nicht, wenn du versuchst, dieselbe Datei zweimal zu öffnen. Die Datei muss erst geschlossen werden, bevor du sie neu öffnest. Guten Programmierstil sollte man übrigens auch bei kleinen Programmen befolgen, sonst kommen schnell so kleine Fehler zustande, wo es länger dauert, den Fehler zu finden, als die ganze Sache sauber aufzuschreiben.

Prüfe doch mal den Rückgabewert des zweiten OPEN-Aufrufs, um den Fehlercode zu erhalten.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nullchecker



Anmeldungsdatum: 03.08.2013
Beiträge: 34

BeitragVerfasst am: 27.06.2014, 14:37    Titel: Antworten mit Zitat

ZITAT:

Code:
Prüfe doch mal den Rückgabewert des zweiten OPEN-Aufrufs, um den Fehlercode zu erhalten.


Wie mache ich das?
_________________
Mein Brett vor`m Kopf bringt mich heute wieder um
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 27.06.2014, 14:42    Titel: Antworten mit Zitat

Die Referenz eilt zur Rettung: http://www.freebasic-portal.de/befehlsreferenz/open-funktion-234.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nullchecker



Anmeldungsdatum: 03.08.2013
Beiträge: 34

BeitragVerfasst am: 27.06.2014, 14:47    Titel: Antworten mit Zitat

Lieb gemeint, aber ich verstehe die Referenz nicht.
_________________
Mein Brett vor`m Kopf bringt mich heute wieder um
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.06.2014, 14:59    Titel: Antworten mit Zitat

Also hier hast du noch verstanden, was das heißt. Nur dass du diesmal nicht den Rückgabewert mit IF auf 0 prüfen sollst, sondern ihn z.B. einfach mal mit PRINT ausgeben, um zu schauen, welcher Fehlercode zurückgegeben wird.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nullchecker



Anmeldungsdatum: 03.08.2013
Beiträge: 34

BeitragVerfasst am: 27.06.2014, 19:32    Titel: Antworten mit Zitat

Ich weiss nicht weshalb, habe das Progamm nochmals getestet, jetzt klappt es ohne das ich etwas geändert habe.

Eine Frage noch: Ich arbeite mit Win 7. Ab und zu kommt es vor das ich die bas-Datei compilieren und ausführen möchte, es erscheint aber nur ein schwarzer Bildschirm und ich muss mit der Windows-Taste abbrechen. Kann es da vielleicht einen Zusammenhang geben, das es zu Fehlfunktionen kommt?
_________________
Mein Brett vor`m Kopf bringt mich heute wieder um
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz