Seite 1 von 2

UseFile in Highscore will nicht (PB 3.94)

Verfasst: 15.05.2006 12:39
von Svking
Hallo

Ich habe eine Highscore in mein Spiel eingebaut, sie sieht so aus:

Code: Alles auswählen

Procedure HighScore(Datei$, Punkte, Name$) 
 OpenFile(1, Datei$) 
 CreateFile(2, "_"+Datei$) 
  Repeat 
   UseFile(1) 
    String$ = ReadString() 
    HS_Punkte = Val(Trim(Mid(String$, 1, 10))) 
   UseFile(2) 
    If HS_Punkte < Punkte And Eingetragen = 0: 
     WriteStringN(Str(Punkte)+Space(10-Len(Str(Punkte)))+Name$) 
     Eingetragen = 1 
    EndIf 
    WriteStringN(String$) 
  Until String$ = "" 
 CloseFile(2) 
 CloseFile(1) 
 CopyFile("_"+Datei$, Datei$) 
 DeleteFile("_"+Datei$) 
EndProcedure 

...

OpenWindow(0,100,100,500,400,#PB_Window_SystemMenu,"Highscore Eintrag")
 If CreateGadgetList(WindowID())
 StringGadget(4,20,120,360,20,"")
    ButtonGadget(5,400,120,80,20,"Übernehmen")
  EndIf
  Repeat
    EventID = WaitWindowEvent()
    If EventGadgetID()=5
          name1$=GetGadgetText(4)
          Datei$="highscore.txt"
          Quit = 1
        EndIf
        Until Quit=1

If Quit = 1
HighScore("highscore.txt", Punkte, name1$) 
End
EndIf
allerdings sagt er mir beim compilen, bei

Code: Alles auswählen

   UseFile(1) 
file object not initalized

kann mir jemand erklären warum?


---
Sv

Verfasst: 15.05.2006 12:42
von winduff
Hi,

welche PB Version benutzt du? In PB4 ist UseFile() nicht mehr vorhanden bzw nötig! Ansonsten in Zukunft bitte im Titel deine Frage kurz formulieren, nicht einfach "habe problem" oder ähnlich... :allright:

Liebe Grüße

Verfasst: 15.05.2006 12:46
von Svking
Ja ok ich werde mich bessern bezüglich meiner Titel ^^ :)

also ich benutze PB version 3.94



---
Sv

Verfasst: 15.05.2006 12:55
von DrShrek
Svking hat geschrieben:Ja ok ich werde mich bessern bezüglich meiner Titel Sv
Na dann ändere den Titel bitte! Sonst bleibt es ja bei einem Vorsatz.

Verfasst: 15.05.2006 12:59
von Svking
^^ lol wusste garnich, dass man Titel noch nachträglich ändern kann ...
ok neuer Titel...

Verfasst: 15.05.2006 12:59
von mk-soft
bei mir Funktioniert es. Datei vielleicht schon mit ein anderen Programm geöffnet?

FF :roll:

Verfasst: 15.05.2006 13:06
von Svking
ne eigendlich is die ganz unberührt die Datei

der Fehler kommt aber erst seid dem ich diese Zeile

Code: Alles auswählen

HighScore("highscore.txt", Punkte, "Punkte") 
in

Code: Alles auswählen

HighScore("highscore.txt", Punkte, name$)
geändert habe
:(

aber das name$ liest er ja normalerweise aus dem StringGadget

Verfasst: 15.05.2006 13:09
von winduff
komisch.

Mach mal den string global, was aber keinen unterschied machen sollte... ich probiere es nachher mal, wenn ich daheim bin.

Verfasst: 15.05.2006 13:14
von Kaeru Gaman
> aber das name$ liest er ja normalerweise aus dem StringGadget

nur wenn dus ihm auch sagst per GetGadgetText()

aber das sollte eigentlich keinen unterschied machen,
weils ja nur im eintrag selber benutzt wird,
notfalls würde er nen leeren string nehmen.

überprüf mal deine pfadangaben.
hast du irgendwas verschoben zwischendrin, verzeichnisse geändert, sonstwas?
mach mal ne sicherheitsabfrage mit If Openfile() und msg-req. rein,
dann sagt er dir schon beim open wenns klemmt...

Verfasst: 15.05.2006 13:35
von Svking
in den verzeichnisen hab ich nichts geändert

aber vieleicht ist auch irgendwo anders der Fehler

ich poste mal meinen GANZEN Code aber ich kann da nichts falsches finden... :(

/edit nur das wichtigste vom code

Code: Alles auswählen


...
ReadFile(0,"highscore.txt")
hs1$  =   ReadString()
hs2$  =   ReadString()
hs3$  =   ReadString()
hs4$  =   ReadString()
hs5$  =   ReadString()
hs6$  =   ReadString()
...
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen() 
If punkte < 1000
PlayMovie(9,0)
EndIf
If punkte > 1000
PlayMovie(10,0)
EndIf
MessageRequester("game by Sven Schober","Punkte: "+Str(punkte)) 


OpenWindow(0,100,100,500,400,#PB_Window_SystemMenu,"Highscore Eintrag")
 If CreateGadgetList(WindowID())
 StringGadget(4,20,120,360,20,"")
    ButtonGadget(5,400,120,80,20,"Übernehmen")
  EndIf
  Repeat
    EventID = WaitWindowEvent()
    If EventGadgetID()=5
          name$=GetGadgetText(4)
          Quit = 1
        EndIf
        Until Quit=1

If Quit = 1
HighScore("highscore.txt", Punkte, name$) 
End
EndIf
puh ganz schön lang ^^