Variablen lesen und verarbeiten

Anfängerfragen zum Programmieren mit PureBasic.
Carl
Beiträge: 15
Registriert: 28.10.2013 20:45
Computerausstattung: Windows 7 Professional / Windows 10

AMD FX(tm)-8320 Eight-Core Processor 3,5 Ghz
8 GB Speicher
PureBasic 5.62 (Windows - x64)

Variablen lesen und verarbeiten

Beitrag von Carl »

Hallo,
ich komme einfach nicht weiter finde keinen Weg um Variablen aus einer gespeicherten Datei zu verarbeiten. Ich kann zwar meine Daten eingeben und diese werden auch gespeichert leider werden diese aber nicht einlesen und verarbeiten. Die mit Input eingegebenen Variablen-Werte sollen in einer Textdatei gespeichert werden und bei Bedarf gelesen werden

Wie kann ich aus einer Variabele zB. AX=300 bzw. den Wert 300 einlesen um diese zu verarbeiten?


Code: Alles auswählen

ax.i
NM.i
 OpenConsole()
    Print("Geben Sie ax ein und druecken Sie Return: ")
 ax = ValF(Input())
    Print("Geben Sie NM ein und druecken Sie Return: ")
 NM = ValF(Input())
   If CreateFile(0,"c:/PB/test.txt")       
   
   
  WriteStringN(0,"ax="+StrF(ax))
  WriteStringN(0,"NM="+StrF(nm))

    CloseFile(0)                      
  Else
    MessageRequester("Information","Konnte Datei nicht erstellen!")
  EndIf
  
 Debug"lese jetzt"
  nm=1000;habe ich eingefügt, um zu prüfen ob der gelesene Wert verarbeitet wird
  
 If ReadFile(0,"c:\PB\test.txt")
        While Eof(0) = 0          
          Debug ReadString(0)     
        
    Wend


Debug ax
Debug nm
  If ax=100 ;habe ich eingefügt um zu prüfen ob Variablen -Werte verarbeitet werden
    Debug "ax=100";
  Else
    Debug "ax<>100";habe ich eingefügt um zu prüfen ob Variablen -Werte verarbeitet werden
  EndIf  
 
  CloseFile(0)
    Else
    MessageRequester("Information","Konnte Datei nicht öffnen!")
  EndIf
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

Re: Variablen lesen und verarbeiten

Beitrag von ts-soft »

1. Warum nimmst Du nicht die Preferences Lib?
2. Warum versuchst Du Float in Integer zu Speichern? (ax.i - ValF, StrF usw.)

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
_sivizius
Beiträge: 98
Registriert: 23.10.2013 15:21

Re: Variablen lesen und verarbeiten

Beitrag von _sivizius »

Schau dir mal in der Hilfe alle String-Funktionen an und les das zu Maps/Lists durch. Und ich empfehle XML oder andere Dateiformate zum speichern.
Für kleine Projekte gehts aber auch so.

Code: Alles auswählen

Procedure Laden(FileName$, Map Flux.d())
  file = ReadFile(-1, FileName$)
  if IsFile(file)
    While EoF(file) = 0
      line$ = ReadString(file) ; ZEile für Zeile
      Flux(Trim(StringField(line$, 1, "="))) = ValD(Trim(StringField(line$, 1, "="))) ;:
      ; StringField unterteilt einen String in Teile, welche im Ausgangsstring durch ein Trennzeichen getrennt sind und gibt das N-te Stück aus.
      ; StringField("hallo welt !", 3, " ") ist z.B. "!"
      ; Trim entfernt noch paar Leerzeichen am Anfang und Ende, braucht man bei ValD eig auch nicht.
    Wend
    CloseFile(file)
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
EndProcedure
Procedure Speichern(FileName$, Map Flux.d())
  file = CreateFile(-1, FileName$)
  If IsFile(file)
    ForEach Flux()
      WriteStringN(file,MapKey(Flux()) +" = "+StrD(Flux()))
    Next
    CloseFile(file)
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
EndProcedure
Procedure GetVar(Name$, Map Flux.d())
  ProcedureReturn Flux(Name$)
EndProcedure
Procedure SetVar(Name$, Val.d, Map Flux.d())
  Flux(Name$) = Val
  ProcedureReturn #True
EndProcedure

NewMap Float.d()
Laden( "c:/PB/test.txt", Float())

Print("Geben Sie ax ein und druecken Sie Return: ")
SetVar("ax", ValD(Input()), Float())

Print("Geben Sie NM ein und druecken Sie Return: ")
SetVar("NM", ValD(Input()) Float())

Speichern("c:/PB/test.txt", Float())
Carl
Beiträge: 15
Registriert: 28.10.2013 20:45
Computerausstattung: Windows 7 Professional / Windows 10

AMD FX(tm)-8320 Eight-Core Processor 3,5 Ghz
8 GB Speicher
PureBasic 5.62 (Windows - x64)

Re: Variablen lesen und verarbeiten

Beitrag von Carl »

Hallo, erstmal vielen Dank für die Hilfe die ich hier erhalten habe. verstanden habe ich leider noch nicht alles, aber kann sicher darauf aufbauen und nur dazu lernen

Noch mal Danke
Carl
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

Re: Variablen lesen und verarbeiten

Beitrag von ts-soft »

Da Du ganzzahlen speichern möchtest, solltest Du auch Val() und Str() statt ValF() und StrF() nutzen,
ansonsten erhältst Du falsche Ergebnisse (normalle Ungenauigkeiten bei Fließkommazahlen).

Ansonsten findest Du in der Hilfe der Preferences Lib eine einfache Möglichkeit, solche Werte zu speichern.

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
Antworten