Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mark7788

Anmeldungsdatum: 21.01.2006 Beiträge: 77 Wohnort: Frankfurt Freebasic
|
Verfasst am: 19.12.2006, 18:14 Titel: Ich versteh die welt nicht mehr ... |
|
|
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..
gruß
markus _________________ www.DasMillionenQuiz.de.vu ; www.Mkse.de.vu |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 19.12.2006, 18:23 Titel: |
|
|
In deinem Code fehlt bei der Schreiboperation erstensmal das + zum Verbinden der Strings.
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 ), aber sobald das Programm ein zweites mal ausgeführt wird, gibt es einen Programmfehler, weil
definitiv kein Integer, sondern ein String (wegen den ") ist.
Also am Besten PRINT verwenden.
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.
Das LET kannste übrigens auch weglassen, das brauchste schon seit QuickBASIC nicht mehr (Überbleibsel aus GW-BASIC).
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?!
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 ). Oder uploade ihn in freeBASICnopaste und poste hier dann einen Link.
Glaub mir, lässt sich wirklich einfacher lesen.
Trotzdem noch viel Spaß hier,
Mao  _________________ Eine handvoll Glück reicht nie für zwei.
--

Zuletzt bearbeitet von Mao am 19.12.2006, 18:28, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Key

Anmeldungsdatum: 03.10.2006 Beiträge: 95
|
Verfasst am: 19.12.2006, 18:26 Titel: |
|
|
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
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  |
|
Nach oben |
|
 |
Mark7788

Anmeldungsdatum: 21.01.2006 Beiträge: 77 Wohnort: Frankfurt Freebasic
|
Verfasst am: 19.12.2006, 18:29 Titel: |
|
|
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 ..
gruß
Markus _________________ www.DasMillionenQuiz.de.vu ; www.Mkse.de.vu |
|
Nach oben |
|
 |
Key

Anmeldungsdatum: 03.10.2006 Beiträge: 95
|
Verfasst am: 19.12.2006, 18:30 Titel: |
|
|
dann liegts vllt ja doch am fehlenden CLOSE
€ hab mein code grad getestet. zähler steigt brav nach oben  |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 19.12.2006, 18:42 Titel: |
|
|
Eben, hab des Close auch erst 'ne Minute später realisiert, dass das gefählt hat.
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_.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Mark7788

Anmeldungsdatum: 21.01.2006 Beiträge: 77 Wohnort: Frankfurt Freebasic
|
|
Nach oben |
|
 |
|