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:

Ich versteh die welt nicht mehr ...

 
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
Mark7788



Anmeldungsdatum: 21.01.2006
Beiträge: 77
Wohnort: Frankfurt Freebasic

BeitragVerfasst am: 19.12.2006, 18:14    Titel: Ich versteh die welt nicht mehr ... Antworten mit Zitat

Wieso will das nicht funktionieren???

dim anzahl as integer

open exepath+"\Data\Pak.txt" for input as #1
input #1, anzahl

let anzahl2 = anzahl + 1

open exepath"\Data\Pak.txt" for output as #1
write #1, anzahl2


es exestiert eine Pak.txt datei im ordner Data.. dort steht eine bestimmte zahl drin (in meinem fall 0).. er soll sie öffnen... +1 mit der darin stehenden zahl rechnen .. und dann wieder ausgeben (die alte datei ersetzen) sozusagen hochzählen.. leider funktioniert es aus irgend einem für mich im moment unerklärlichen grund nicht..

mit dem Kopf durch die Mauer wollen

gruß
markus
_________________
www.DasMillionenQuiz.de.vu ; www.Mkse.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 19.12.2006, 18:23    Titel: Antworten mit Zitat

In deinem Code fehlt bei der Schreiboperation erstensmal das + zum Verbinden der Strings. zwinkern
Zudem schreibst du mit WRITE in die Datei. Das erzeugt zwar die Ausgabe, jedoch wird anzahl in " gesetzt. Das mag zwar für den ersten Programmablauf nicht schlimm sein (ist es auch nicht grinsen), aber sobald das Programm ein zweites mal ausgeführt wird, gibt es einen Programmfehler, weil
Code:

"1"

definitiv kein Integer, sondern ein String (wegen den ") ist. zwinkern
Also am Besten PRINT verwenden. lächeln
Und dann hast du die Datei beim ersten Mal nicht wieder geschlossen (Folge: es wird 2mal versucht, unter dem Slot #1 zu öffnen -> Fehler).

Code:

dim anzahl as integer

open exepath+"\Data\Pak.txt" for input as #1
input #1, anzahl
close #1

anzahl2 = anzahl + 1

open exepath+"\Data\Pak.txt" for output as #1
print #1, anzahl2
close #1

So isses korrekt. lächeln
Das LET kannste übrigens auch weglassen, das brauchste schon seit QuickBASIC nicht mehr (Überbleibsel aus GW-BASIC). zwinkern

Und dann noch 'ne Sache, die mir persönlich am Herzen liegt:
In letzter Zeit scheint es irgendwie Sitte gewurden zu sein, immer völlig aussaglose Thread-Titel zu verwenden. Warum in aller Welt ist es denn so schwer, einen vernünftigen Titel zu formulieren?! Kopf schütteln

Und dann noch was, was die Lesbarkeit deines Codes ungemein erhöht:
fasse ihn in [ code ]-Tags (ohne Leerzeichen, die sind nur da, damit phpBB das Beispiel jetzt nicht als Tag interpretiert zwinkern). Oder uploade ihn in freeBASICnopaste und poste hier dann einen Link.
Glaub mir, lässt sich wirklich einfacher lesen. zwinkern

Trotzdem noch viel Spaß hier,
Mao lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--


Zuletzt bearbeitet von Mao am 19.12.2006, 18:28, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Key



Anmeldungsdatum: 03.10.2006
Beiträge: 95

BeitragVerfasst am: 19.12.2006, 18:26    Titel: Antworten mit Zitat

Der Fehler liegt wohl darin, dass du die Datei zweimal mit der selben Dateinummer #1 geöffnet hast. Darum musst du sie vorm zweiten mal öffnen mit CLOSE #1 schließen.
Außerdem kannst du die anzahl mit += 1 einfach um eins erhöhen ohne eine zweite variable zu benutzen lächeln

Code:
DIM AS INTEGER anzahl

OPEN EXEPATH+"\Data\Pak.txt" FOR INPUT AS #1
INPUT #1, anzahl
CLOSE #1

anzahl += 1

OPEN EXEPATH+"\Data\Pak.txt" FOR OUTPUT AS #1
PRINT #1, anzahl
CLOSE #1


EDIT: Mao wirds wohl richtiger ham also vergess mein gesabbel happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mark7788



Anmeldungsdatum: 21.01.2006
Beiträge: 77
Wohnort: Frankfurt Freebasic

BeitragVerfasst am: 19.12.2006, 18:29    Titel: Antworten mit Zitat

Hey mao=) danke für die schnelle nette hilfe!
habs ausprobiert.. hab erstmal meinen code abgeändert.. kein effekt.. in der datei steht immernoch 0..

jetzt hab ich deinen code copy und gepastet.. immernoch kein effekt.. die datei befindet sich im verzeichnis "data" ist also alles vorhanden und richtig.. was läuft hier falsch?

Ps: ich hab mit den eingeben ausgeben kram eigetnlcih schon des öffteren zu tun gehabt.. und es klappte immer.. jetzt klappts nich mehr .. irgendwie .. verwundert

gruß
Markus
_________________
www.DasMillionenQuiz.de.vu ; www.Mkse.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Key



Anmeldungsdatum: 03.10.2006
Beiträge: 95

BeitragVerfasst am: 19.12.2006, 18:30    Titel: Antworten mit Zitat

dann liegts vllt ja doch am fehlenden CLOSE happy

€ hab mein code grad getestet. zähler steigt brav nach oben lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 19.12.2006, 18:42    Titel: Antworten mit Zitat

Eben, hab des Close auch erst 'ne Minute später realisiert, dass das gefählt hat. happy grinsen
Außerdem habsch deinen Code nur die nötigen Anweisungen reingefrickelt, Key's Code kommt dem "FB-Stil" sowieso am Nähesten und sein Code funktioniert _auch_. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mark7788



Anmeldungsdatum: 21.01.2006
Beiträge: 77
Wohnort: Frankfurt Freebasic

BeitragVerfasst am: 19.12.2006, 18:47    Titel: Antworten mit Zitat

ok .. es lag an der close #1 anweißung *kopf gegen wand hau*

Vielen dank!

lächeln
_________________
www.DasMillionenQuiz.de.vu ; www.Mkse.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
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