für mich schon, im moment nochmk-soft hat geschrieben:Das ist doch nicht viel Code![]()
Lof(...) funktioniert doch richtig. Habe mal den Code überarbeitet

für das das man daten speichert und ausliest mit datensatznummern.
nochmals danke
gruss mik
sicherlich obliegt die Entscheidung, welchen Weg zu gehen möchtest ganz beimikstart hat geschrieben:@Kiffi und Kaeru Gaman
lasst mich erst mal laufen lernen und die ganzen grund begriffe von pure basic verstehen, in ein paar monaten können wir mal über sql reden.
Momentan sehe ich das aber eher so, dass Du unbedingt ein totes Pferd
reiten willst, weil Du der Ansicht bist, durch Deine Kenntnisse in QBasic mit
den Dir vertrauten Befehlen (Konsole, Put & Get) besser voranzukommen.
Put & Get muss nachprogrammiert werden. Diese Arbeit wird Dir ja bereits
freundlicherweise von Michael abgenommen. Zusätzlich bekommst Du von
den Kollegen Hintergrundinformationen.
All dieser Aufwand, damit Du QBasic vertraute Funktionalitäten verwenden
kannst, die Du dann sowieso in absehbarer Zeit gegen PB-Funktionen
ersetzen wirst?
Grüße ... Kiffi
wie gesagt: das sei Dir voll und ganz überlassen, aber noch eine kleinemikstart hat geschrieben:aber bevor ich sql lerne möchte ich purebasic lernen.
... oder CSV, oder Preference-Dateien (sofern nicht die max. GrößeLittle John hat geschrieben:z.B. als XML-Dateien
Ich finde XML einfacher, weils logischer ist, SQL ist zu abstrakt, das lag mirKiffi hat geschrieben: Allerdings halte ich persönlich XML für einen QBasic-Umsteiger für eine Ecke
zu kompliziert. Da ist man schnell mal in der falschen Struktur und
liest oder beschreibt den falschen Node.
Grüße ... Kiffi
hier mal die Preference-Variante:Kiffi hat geschrieben:... oder CSV, oder Preference-Dateien (sofern nicht die max. GrößeLittle John hat geschrieben:z.B. als XML-Dateien
überschritten wird), oder, oder. Der Möglichkeiten sind viele.
Code: Alles auswählen
EnableExplicit
Structure sItem
Bezeichnung.s
Anzahl.s
Preis.s
EndStructure
Global Datenbankname.s = "items.db"
Procedure GetX(Datensatznummer, *myItem.sItem)
OpenPreferences(Datenbankname)
*myItem\Bezeichnung = ReadPreferenceString("Bezeichnung" + Str(Datensatznummer), "[leer]")
*myItem\Anzahl = ReadPreferenceString("Anzahl" + Str(Datensatznummer), "[leer]")
*myItem\Preis = ReadPreferenceString("Preis" + Str(Datensatznummer), "[leer]")
ClosePreferences()
EndProcedure
Procedure PutX(Datensatznummer, *myItem.sItem)
Protected ReturnValue
If FileSize(Datenbankname) = -1
ReturnValue = CreatePreferences(Datenbankname)
Else
ReturnValue = OpenPreferences(Datenbankname)
EndIf
If ReturnValue
WritePreferenceString("Bezeichnung" + Str(Datensatznummer), *myItem\Bezeichnung)
WritePreferenceString("Anzahl" + Str(Datensatznummer), *myItem\Anzahl)
WritePreferenceString("Preis" + Str(Datensatznummer), *myItem\Preis)
ClosePreferences()
EndIf
EndProcedure
Define Datensatznummer
Define NewItem.sItem
; ein paar Items anlegen...
For Datensatznummer = 800 To 900
NewItem\Bezeichnung = "Bezeichnung" + Str(Datensatznummer)
NewItem\Anzahl = "Anzahl" + Str(Datensatznummer)
NewItem\Preis = "Preis" + Str(Datensatznummer)
PutX(Datensatznummer, @NewItem)
Next
; ... und wieder auslesen
For Datensatznummer = 800 To 900
GetX(Datensatznummer, @NewItem)
Debug "Datensatz Nr. " + Str(Datensatznummer) + ":"
Debug "----------------------"
Debug "Bezeichnung: " + NewItem\Bezeichnung
Debug "Anzahl: " + NewItem\Anzahl
Debug "Preis: " + NewItem\Preis
Debug ""
If Datensatznummer > 810 ; Zu testzwecken reicht es, nur ein paar Datensätze auszugeben
Break
EndIf
Next