In ein Array eine neue Variable reinschreiben

Anfängerfragen zum Programmieren mit PureBasic.
Pandorra
Beiträge: 124
Registriert: 10.02.2007 12:15

Beitrag von Pandorra »

wenn man mit Dim ein Array macht wie speichert man dies dann und liest es einzelnd aus?
Benutze PB v 4.40 Beta 3
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

auf platte speichern? mit ner schleife durchgehen und den entsprechenden Write-befehl nutzen.

einzeln auslesen? test = Array(50)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Pandorra
Beiträge: 124
Registriert: 10.02.2007 12:15

Beitrag 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.
Zuletzt geändert von Pandorra am 27.04.2007 16:15, insgesamt 1-mal geändert.
Benutze PB v 4.40 Beta 3
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Pandorra
Beiträge: 124
Registriert: 10.02.2007 12:15

Beitrag 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.
Benutze PB v 4.40 Beta 3
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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. /:->
Zuletzt geändert von Kiffi am 27.04.2007 16:16, insgesamt 1-mal geändert.
a²+b²=mc²
Pandorra
Beiträge: 124
Registriert: 10.02.2007 12:15

Beitrag 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
Benutze PB v 4.40 Beta 3
Antworten