Seite 2 von 2

Verfasst: 26.04.2007 21:23
von Pandorra
wenn man mit Dim ein Array macht wie speichert man dies dann und liest es einzelnd aus?

Verfasst: 26.04.2007 21:45
von Kaeru Gaman
auf platte speichern? mit ner schleife durchgehen und den entsprechenden Write-befehl nutzen.

einzeln auslesen? test = Array(50)

Verfasst: 27.04.2007 15:58
von Pandorra
könnte mir jemand sagen was ich falsch mache?

Code: Alles auswählen

Global Neues_Profil.s, Neues_Passwort.s
Global Profil.s, Passwort.s
Global Profil2.s, Passwort2.s
Global Number_of_Players
Global Neue_Profile.s
Global Neue_Passwoerter.s





Number_of_Players = 3

Global Dim Profile.s(Number_of_Players)
Global Dim Passwoerter.s(Number_of_Players)

Profile(0) = "H"
Passwoerter(0) = "H"

Profile(1 )= "J"
Passwoerter(1) = "J"

Profile(2) = "K"
Passwoerter(2) = "K"

If ReadFile(0, "Spieler\Profildaten.sav")
      For i = 0 To 3
      Profile(i)          = ReadString(0)
      Passwoerter(i)      = ReadString(0)
      Next
    CloseFile(0)
EndIf

For i = 3 To Number_of_Players
ReDim Profile.s(Number_of_Players)
ReDim Passwoerter.s(Number_of_Players)
Profile(i) = Neue_Profile
Passwoerter(i) = Neue_Passwoerter
Next i

If InitSprite() = 0
  MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
  End
EndIf


Procedure Anmelden()

  If OpenWindow(0, 0, 0, 396, 135, "Start", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    
    If CreateGadgetList(WindowID(0))
      
      Top = 6
      
      Frame3DGadget(0, 6, Top, 384, 80, "", 0) : Top + 20
      
      OptionGadget(1, 20, Top, 100, 20, "Anmelden") : Top + 25
      OptionGadget(2, 20, Top, 100, 20, "Login")   : Top - 25
     
      StringGadget (3, 230, Top, 150, 20, "") : Top + 25
      StringGadget (4, 230, Top, 150, 20, "", #PB_String_Password) : Top - 21
     
      TextGadget(5, 170, Top, 150, 20, "Name:") :Top + 25
      TextGadget(6, 170, Top, 150, 20, "Passwort:") :Top + 40
     
      ButtonGadget (7,   6, Top, 180, 25, "Launch", #PB_Button_Default)
      ButtonGadget (8, 200, Top, 190, 25, "Cancel")
      
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        Select EventGadget()
            Case 1
            Anmelden = 1
            Login = 0
              Case 2
              Login = 1
              Anmelden = 0
                Case 7
                Launch = 1
                  Case 8
                  End
        EndSelect
    EndSelect
   
   If Login = 1 And Launch = 1
   Break
   EndIf
   
   If Anmelden = 1 And Launch = 1 And "" = GetGadgetText(4) And "" = GetGadgetText(3)
   MessageRequester("Fehler", "Keine Eingabe")
   End
   EndIf
   
   If Anmelden = 1 And Launch = 1
   Neues_Profil = GetGadgetText(3)
   Neues_Passwort = GetGadgetText(4)
   Number_of_Players + 1
   New_Player + 1
   ReDim Profile.s(Number_of_Players)
   ReDim Passwoerter.s(Number_of_Players)
   Profile(Number_of_Players) = Neues_Profil
   Passwoerter(Number_of_Players) = Neues_Passwort
   Break
   EndIf
   
   If Launch = 1
   Launch = 0
   EndIf
   
  ForEver
EndIf
EndIf

EndProcedure

Procedure Login1()


If OpenWindow(0, 0, 0, 402, 120, "Spieler 1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  TextGadget(0, 10,  12, 100, 20, "Benutzername:")
  TextGadget(1, 10,  52, 100, 20, "Passwort:")
  StringGadget(2, 88,  10, 306, 20, Profil)
  StringGadget(3, 88, 50, 306, 20, Passwort, #PB_String_Password)
  ButtonGadget(4, 156, 80, 90, 30, "OK")
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 4
            Profil = GetGadgetText(2)
            Passwort = GetGadgetText(3)
            Break
        EndSelect
    EndSelect
  ForEver
EndIf

User_erkannt = 0

For i = 0 To Number_of_Players

  If Profil = Profile(i) And Passwort = Passwoerter(i)
    MessageRequester("Willkommen", "Hallo " + Profil)
    User_erkannt = 1
  EndIf
 
Next i


If User_erkannt = 0
  MessageRequester("Fehler", "Benutzername oder Passwort falsch")
  Delay(1000)
  End
EndIf

EndProcedure

Procedure Login2()

If OpenWindow(0, 0, 0, 402, 120, "Spieler 2", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  TextGadget(0, 10,  12, 100, 20, "Benutzername:")
  TextGadget(1, 10,  52, 100, 20, "Passwort:")
  StringGadget(2, 88,  10, 306, 20, Profil2)
  StringGadget(3, 88, 50, 306, 20, Passwort2, #PB_String_Password)
  ButtonGadget(4, 156, 80, 90, 30, "OK")
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 4
            Profil2 = GetGadgetText(2)
            Passwort2 = GetGadgetText(3)
            Break
        EndSelect
    EndSelect
  ForEver
EndIf


User_erkannt = 0

For i = 0 To Number_of_Players

  If Profil2 = Profile(i) And Passwort2 = Passwoerter(i)
    MessageRequester("Willkommen", "Hallo " + Profil2)
    User_erkannt = 1
  EndIf
 
Next i


If User_erkannt = 0
  MessageRequester("Fehler", "Benutzername oder Passwort falsch")
  Delay(1000)
  End
EndIf
 

EndProcedure

;Edit:
Procedure Speichern()
     If CreateFile(0, "Spieler\Profildaten.sav")
       For i = 0 To 3
       WriteStringN(0, Profile(i))
       WriteStringN(0, Passwoerter(i))
       Next
     EndIf
EndProcedure

;EndEdit.

Anmelden()
Login1()
Login2()
Speichern()
;Natürlich auch noch geeditet.
End

Hoffe ihr könnt mir helfen.

Verfasst: 27.04.2007 16:06
von Kiffi
Pandorra hat geschrieben:könnte mir jemand sagen was ich falsch mache?
Gern! :-)

* Tritt in dem Code ein Fehler auf? Wenn ja: Wie lautet die Fehlermeldung?

* Du beschreibst nicht, was Du vom Code erwartest und was er stattdessen macht.

* Du hast den Code nur unzureichend korrekt eingerückt. Das macht das Lesen desselben ein wenig schwierig.

Grüße ... Kiffi

Verfasst: 27.04.2007 16:10
von Fluid Byte
Und abgesehen davon:

- Keine externen Resourcen in einem Beispiel verwenden ("Spieler\Profildaten.sav")
- Niemals den gesamten Code posten sondern reduziert auf das eigentliche Problem.

Code der nicht Copy/Paste/Compile-fähig ist guckt ich mir gar nicht erst an. Bild

Verfasst: 27.04.2007 16:10
von Pandorra
nein, in meinen Code tritt keine Fehlermeldung auf.
Ich möchte die Profile und Passwoerter (wenn ich ein neues anlege beim nächsten mal geladen bekommen.
Das ich nicht immer bei Anmelden einen neuen Benutzer anlegen muss sondern der letzte gespeichert wird( eine Art Anmelde Funktion )

Edit: Der Code läuft auch ohne andere Ressourcen hab es extra getestet ist nur damit der weiß woher er die Spieldatei laden soll.
(Erstellt normalerweise nachdem man ihn geladen hat den besagten Ordner Spiele. Der Rest sind nur Spielstände.
Mir fällt auf ich habe die Speicher Funktion nicht mit rein gemacht( hab den Code aus einen größeren Gebastelt. )
Ich füg das mal ebend ein.

Verfasst: 27.04.2007 16:15
von Kiffi
Pandorra hat geschrieben:Ich möchte die Profile und Passwoerter (wenn ich ein neues anlege beim nächsten mal geladen bekommen.
achso! Ja das ist einfach. Dann kann ich Dir sagen, was Du falsch gemacht
hast: Du vergisst, die Passwörter zu speichern.

Grüße ... Kiffi

// grmpf, auch Edit:
Pandorra hat geschrieben:Edit: [...] Mir fällt auf ich habe die Speicher Funktion nicht mit rein gemacht( hab den Code aus einen größeren Gebastelt. )
Ich füg das mal ebend ein.
nee, ist schon sehr sinnvoll, eine Frage zum Laden/Speichern von Daten zu
haben und die Speicher-Routine beim Posting zu vergessen. /:->

Verfasst: 27.04.2007 16:16
von Pandorra
(hab den Code aus einen größeren herausgeschnitten ist die Problem Stelle.
Kiffi hab ich ergänzt klappt trotzdem nicht.(Hate ich vergessen auszuschneiden)

hab das 25 Sekunden nach deinen Post editiert