Put# und Get# in Pure Basic

Anfängerfragen zum Programmieren mit PureBasic.
mikstart
Beiträge: 25
Registriert: 23.07.2009 23:12

Beitrag von mikstart »

mk-soft hat geschrieben:Das ist doch nicht viel Code :roll:

Lof(...) funktioniert doch richtig. Habe mal den Code überarbeitet
für mich schon, im moment noch :-)
für das das man daten speichert und ausliest mit datensatznummern.

nochmals danke


gruss mik
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

mikstart 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.
sicherlich obliegt die Entscheidung, welchen Weg zu gehen möchtest ganz bei
Dir.

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
a²+b²=mc²
mikstart
Beiträge: 25
Registriert: 23.07.2009 23:12

Beitrag von mikstart »

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

zwar wurde der befehl put und get nachprogrammiert aber dieser eben in pure basic, also lerne ich aus dem code von michael wieder etwas dazu. :wink:

natürlich werde ich irgendwann auf sql umsteigen, aber bevor ich sql lerne möchte ich purebasic lernen.

gruss mik[/quote]
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

mikstart hat geschrieben:aber bevor ich sql lerne möchte ich purebasic lernen.
wie gesagt: das sei Dir voll und ganz überlassen, aber noch eine kleine
Anmerkung an dieser Stelle:

OpenDatabase(), DatabaseQuery(), DatabaseUpdate() und CloseDatabase()
sind ebenfalls PureBasic-Befehle ;-)

Grüße ... Kiffi
a²+b²=mc²
Little John

Beitrag von Little John »

Oder man kann kleinere Datenbanken (um die es hier ja wohl geht) auch z.B. als XML-Dateien realisieren ... ohne SQL. ;-)
XML kann PureBasic von Hause aus.

Gruß, Little John
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Little John hat geschrieben:z.B. als XML-Dateien
... oder CSV, oder Preference-Dateien (sofern nicht die max. Größe
überschritten wird), oder, oder. Der Möglichkeiten sind viele. ;-)

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
a²+b²=mc²
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 »

Kiffi 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
Ich finde XML einfacher, weils logischer ist, SQL ist zu abstrakt, das lag mir
noch nie.

SQL ist als wenn ich mit der Datenbank reden möchte :mrgreen:
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
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

ts-soft hat geschrieben:SQL ist als wenn ich mit der Datenbank reden möchte :mrgreen:
dann musste Dir aber ooch ne Datenbank aussuchen, die SQL mit Berliner
Dialekt versteht. Dann klappt's ooch mitten Abfragen ;-)

Jrüße ... Kiffi (kann nur Ruhrpott-Deutsch, sorry)
a²+b²=mc²
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 »

> Jrüße ... Kiffi (kann nur Ruhrpott-Deutsch, sorry)
Ich kann höchstens ein bißchen Platt-Snacken (Hamburger), Berliner am
liebsten mit Erdbeerfüllung :lol:

Gruß .. Thomas
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
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Kiffi hat geschrieben:
Little John hat geschrieben:z.B. als XML-Dateien
... oder CSV, oder Preference-Dateien (sofern nicht die max. Größe
überschritten wird), oder, oder. Der Möglichkeiten sind viele. ;-)
hier mal die Preference-Variante:

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
Grüße ... Kiffi

// Edit: Aus kompetenter Wissensquelle (Danke an Thomas!) habe ich
erfahren, dass die oben erwähnte Größenbegrenzung für Preference-
Befehle nicht zutrifft.
a²+b²=mc²
Antworten