Mit Readfile() arbeiten

Anfängerfragen zum Programmieren mit PureBasic.
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Mit Readfile() arbeiten

Beitrag von PB42 »

Hallo, ich weiß nicht, wie man mit Readfile() arbeitet und da hilft auch die Anleitung nicht, denn die kommt ja nur mit einem Debugger-Spielzeug-Beispiel daher. Mein Problem: Ich möchte Daten in StringGadgets schreiben und diese Daten sollen nach Beendigung und Neustart des Programms gleich wieder in den StringGadgets erscheinen, damit ich die nicht immerwieder neu eintragen muß. Wie muß dann der folgende Code ergänzt werden? Danke für die Info.

Code: Alles auswählen

OpenWindow(0,0,0,500,200,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
CreateGadgetList(WindowID(0))

StringGadget(0, 180, 48, 28, 28,"",#PB_Text_Center)
StringGadget(1, 218, 48, 28, 28,"",#PB_Text_Center)
StringGadget(2, 256, 48, 56, 28,"",#PB_Text_Center)

StringGadget(3, 180+165, 48, 28, 28,"",#PB_Text_Center) 
StringGadget(4, 218+165, 48, 28, 28,"",#PB_Text_Center)
StringGadget(5, 256+165, 48, 56, 28,"",#PB_Text_Center)

ButtonGadget(6, 22, 83, 136, 30,"Enter")

Repeat 
event = WindowEvent()
 
  Select event      
  Case #PB_Event_Gadget    
    Select EventGadget() 
    
    Case 6;Enter
    
    t1 = Val(GetGadgetText(0))
    m1 = Val(GetGadgetText(1))
    j1 = Val(GetGadgetText(2))
    
    t2 = Val(GetGadgetText(3))
    m2 = Val(GetGadgetText(4))
    j2 = Val(GetGadgetText(5))
      
    CreateFile(0,"Test.txt")    
      WriteStringN(0,Str(t1))
      WriteStringN(0,Str(m1))  
      WriteStringN(0,Str(j1))
      WriteStringN(0,Str(t2)) 
      WriteStringN(0,Str(m2))
      WriteStringN(0,Str(j2))      
    CloseFile(0)
               
    EndSelect
  EndSelect

Until event = #PB_Event_CloseWindow
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Mit Readfile() arbeiten

Beitrag von STARGÅTE »

Erst mal kannst du dir das Val() und das Str() später ersparen und direkt schreiben.
Da du Gadget 0,1,2,3,4,5 hast kannst du dabei noch n Schleife nutzen:

Code: Alles auswählen

OpenWindow(0,0,0,500,200,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
CreateGadgetList(WindowID(0))

StringGadget(0, 180, 48, 28, 28,"",#PB_Text_Center)
StringGadget(1, 218, 48, 28, 28,"",#PB_Text_Center)
StringGadget(2, 256, 48, 56, 28,"",#PB_Text_Center)

StringGadget(3, 180+165, 48, 28, 28,"",#PB_Text_Center) 
StringGadget(4, 218+165, 48, 28, 28,"",#PB_Text_Center)
StringGadget(5, 256+165, 48, 56, 28,"",#PB_Text_Center)

ButtonGadget(6, 22, 83, 136, 30,"Enter")

If ReadFile(0,"Test.txt")    
  For Gadget = 0 To 5
    SetGadgetText(Gadget, ReadString(0))
  Next 
  CloseFile(0)
EndIf

Repeat 
event = WindowEvent()

  Select event      
  Case #PB_Event_Gadget    
    Select EventGadget() 
    
    Case 6;Enter
    
    If CreateFile(0,"Test.txt")    
      For Gadget = 0 To 5
        WriteStringN(0,GetGadgetText(Gadget))
      Next 
      CloseFile(0)
    EndIf
               
    EndSelect
  EndSelect

Until event = #PB_Event_CloseWindow
Und bitte immer prüfen ob die Datei wikrlich geöffnet/erstellt wurde und erst dnan lesen/schreiben.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Mit Readfile() arbeiten

Beitrag von PB42 »

Klasse, vielen Dank!!!
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: Mit Readfile() arbeiten

Beitrag von Kukulkan »

Hallo,

Bei Stargate's Lösung muss man aber beachten, dass aus leeren Eingabefeldern jetzt leere Felder entstehen. In der Ursprungsversion wurden leere Felder mit "0" gefüllt. Weiterhin machte die Ursprungsversion sozusagen eine "Validierung auf numerischer Werte" beim Speichern. Das fällt ebenfalls bei Stargate's Lösung weg.

Nur so als Hinweis für PB42. Könnte ja sein das etwas davon gewollt war...

Grüße,

Volker
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Mit Readfile() arbeiten

Beitrag von bobobo »

mit

Code: Alles auswählen

CreateFile(0,"Test.txt")
    For i=0 To 5
      WriteStringN(0,Str(Val(GetGadgetText(i))))
    Next i
wäre das dann ja wohl auch gegeben
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten