alle variablen speichern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Nein das klappt nicht, merkst du spaetestens wenn du

a\playerPosx = "PosX"
a\playerPosy = "PosY"
a\playerpunkte = "Punkte"

save(@a)

ausklammerst, und nur den Datenblock laedst, PB speichert nur die
Adresse des Strings, wenn "a\playerPosx = "PosX"" im code steht
ist auch die Adresse vorhanden.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

Structure player
  playerPosx.s
  playerPosy.s
  playerpunkte.s
EndStructure

Procedure load(*daten)
  ReadFile(0,"SaveGame.dat")
  ReadData(*daten,SizeOf(player))
  CloseFile(0)
EndProcedure

Procedure save(*daten)
  CreateFile(0,"SaveGame.dat")
  WriteData(*daten,SizeOf(player))
  CloseFile(0)
EndProcedure



a.player
b.player

; a\playerPosx    = "PosX"
; a\playerPosy    = "PosY"
; a\playerpunkte  = "Punkte"
; 
; save(@a)
load(@b)

Debug b\playerPosx   
Debug b\playerPosy   
Debug b\playerpunkte
Die strings werden nicht gespeichert, da in der Strukture nur ein Pointer zu dem Speicher, in dem sich der String befindet, befindet.
Deine gespeicherte Datei enthält lediglich 12 Bytes, kann also nicht komplett sein

//Nachtrag: hallodri, wir müssen uns absprechen :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Jetzt mit strings und 4 Spielern ;-)

Code: Alles auswählen

Structure player
  playerPosx.l
  playerPosy.l
  Playername.b[30] 
  playerpunkte.l 
EndStructure

Structure allplayer
  player1.player
  player2.player
  player3.player
  player4.player
EndStructure

Procedure load(*daten)
  ReadFile(0,"SaveGame.dat")
  ReadData(*daten,SizeOf(allplayer))
  CloseFile(0)
EndProcedure

Procedure save(*daten)
  CreateFile(0,"SaveGame.dat")
  WriteData(*daten,SizeOf(allplayer))
  CloseFile(0)
EndProcedure

a.allplayer
b.allplayer

a\player1\playerPosx    = 100
a\player1\playerPosy    = 150
a\player1\playerpunkte  = 5000
PokeS(@a\player1\Playername,"Bubi0")

a\player2\playerPosx    = 101
a\player2\playerPosy    = 151
a\player2\playerpunkte  = 5001
PokeS(@a\player2\Playername,"Bubi1")

a\player3\playerPosx    = 102
a\player3\playerPosy    = 152
a\player3\playerpunkte  = 5003
PokeS(@a\player3\Playername,"Bubi2")

a\player4\playerPosx    = 103
a\player4\playerPosy    = 153
a\player4\playerpunkte  = 5003
PokeS(@a\player4\Playername,"Bubi3")


save(@a)
load(@b)

Debug b\player1\playerPosx   
Debug b\player1\playerPosy   
Debug b\player1\playerpunkte
Debug PeekS(@b\player1\Playername)

Debug "-----------------------------"

Debug b\player2\playerPosx   
Debug b\player2\playerPosy   
Debug b\player2\playerpunkte
Debug PeekS(@b\player2\Playername)

Debug "-----------------------------"

Debug b\player3\playerPosx   
Debug b\player3\playerPosy   
Debug b\player3\playerpunkte
Debug PeekS(@b\player3\Playername)

Debug "-----------------------------"

Debug b\player4\playerPosx   
Debug b\player4\playerPosy   
Debug b\player4\playerpunkte
Debug PeekS(@b\player4\Playername)
Debug "-----------------------------"
@ts ich war schon immer der schnellste , zumindest sagt das meine Frau immer
Bild
Antworten