bin neu hier. Nur ganz kurz zu mir: bin Hobbyprogrammierer und nicht mehr ganz der Jüngste (meine ersten Erfahrungen mit Basic machte ich als Schüler auf dem Sinclair ZX81). Macht Spaß mal wieder ohne OOP-Overhead zu programmieren
Ich versuche mich in PureBasic einzufummeln und kämpfe gerade damit, Daten zu sichern und wieder hervorzuholen. Habe mir dazu folgenden Code gebastelt. Das erste Programm speichert Daten ab:
Code: Alles auswählen
Structure Goodie
Menge.s
Bezeichnung.s{30}
MussGekuehltWerden.b
EndStructure
Structure MaidImWald
Name.s
List Korb.Goodie()
EndStructure
BraveEnkelin.MaidImWald
BraveEnkelin\Name = "Rotkäppchen"
AddElement(BraveEnkelin\Korb())
BraveEnkelin\Korb()\Bezeichnung = "Wein"
BraveEnkelin\Korb()\Menge = "Eine Flasche"
BraveEnkelin\Korb()\MussGekuehltWerden = #False
AddElement(BraveEnkelin\Korb())
BraveEnkelin\Korb()\Bezeichnung = "Käse"
BraveEnkelin\Korb()\Menge = "Eine gutes Stück"
BraveEnkelin\Korb()\MussGekuehltWerden = #True
AddElement(BraveEnkelin\Korb())
BraveEnkelin\Korb()\Bezeichnung = "Apfel"
BraveEnkelin\Korb()\Menge = "Einen"
BraveEnkelin\Korb()\MussGekuehltWerden = #False
Debug BraveEnkelin\Name + " geht durch den dunklen Wald"
Debug "Sie hat etwas Feines für die Großmutter dabei:"
Kuehlung.b = #False
ForEach BraveEnkelin\Korb()
Debug BraveEnkelin\Korb()\Menge + " " +BraveEnkelin\Korb()\Bezeichnung
If BraveEnkelin\Korb()\MussGekuehltWerden
Kuehlung = #True
EndIf
Next
If Kuehlung
Debug "Statt des Körbchens nimmt sie heute die Kühlbox"
EndIf
;Rotkäppchen sichern... falls ihr der böse Wolf begegnet
#ROTKAEPPCHENS_DATEI = 1
If CreateFile(#ROTKAEPPCHENS_DATEI,"Rotkäppchens_Haus.Dat")
AnzahlGoodies.i = ListSize(BraveEnkelin\Korb())
WriteString(#ROTKAEPPCHENS_DATEI,BraveEnkelin\Name)
WriteInteger(#ROTKAEPPCHENS_DATEI, AnzahlGoodies)
ForEach BraveEnkelin\Korb()
WriteString(#ROTKAEPPCHENS_DATEI, BraveEnkelin\Korb()\Bezeichnung)
WriteString(#ROTKAEPPCHENS_DATEI, BraveEnkelin\Korb()\Menge)
WriteByte(#ROTKAEPPCHENS_DATEI, BraveEnkelin\Korb()\MussGekuehltWerden)
Next
CloseFile(#ROTKAEPPCHENS_DATEI)
EndIf
Code: Alles auswählen
Structure Goodie
Menge.s
Bezeichnung.s{30}
MussGekuehltWerden.b
EndStructure
Structure MaidImWald
Name.s
List Korb.Goodie()
EndStructure
BraveEnkelin.MaidImWald
;Nun die Maid aus dem Wald zurückholen!
#ROTKAEPPCHENS_DATEI = 1
AnzahlGoodies.i
i.i = 1
If ReadFile(#ROTKAEPPCHENS_DATEI, "Rotkäppchens_Haus.Dat")
BraveEnkelin\Name = ReadString(#ROTKAEPPCHENS_DATEI)
AnzahlGoodies = ReadInteger(#ROTKAEPPCHENS_DATEI)
For i = 1 To AnzahlGoodies
AddElement(BraveEnkelin\Korb())
With BraveEnkelin\Korb()
\Bezeichnung = ReadString(#ROTKAEPPCHENS_DATEI)
\Menge = ReadString(#ROTKAEPPCHENS_DATEI)
\MussGekuehltWerden = ReadByte(#ROTKAEPPCHENS_DATEI)
EndWith
Next
EndIf
Debug "Name: " + BraveEnkelin\Name
ForEach BraveEnkelin\Korb()
Debug "Goodie: " + BraveEnkelin\Korb()\Menge + " " + BraveEnkelin\Korb()\Bezeichnung
If BraveEnkelin\Korb()\MussGekuehltWerden
Debug "...muss gekühlt werden"
EndIf
Next
Das klappt nicht wie gewünscht. Der Integer AnzahlGoodies enthält laut Variablenüberwachung irgend einen wirren Riesenwert. Könntet Ihr euch den Code mal ansehen und mir sagen, was ich falsch gemacht habe. Bin auch dankbar und überhaupt nicht böse für Hinweise, wo ich hässlich, umständlich oder sonstwie unglücklich gecodet habe.
Liebe Grüße aus Berlin
Qnode
__________________________________________________
Quote Tags>Code Tags
22.07.2018
RSBasic