Seite 1 von 1

Variablen lesen und verarbeiten

Verfasst: 17.12.2013 22:56
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

Re: Variablen lesen und verarbeiten

Verfasst: 17.12.2013 23:18
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

Re: Variablen lesen und verarbeiten

Verfasst: 21.12.2013 00:41
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())

Re: Variablen lesen und verarbeiten

Verfasst: 22.12.2013 20:52
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

Re: Variablen lesen und verarbeiten

Verfasst: 22.12.2013 21:03
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