Seite 1 von 1

Mit Readfile() arbeiten

Verfasst: 28.09.2010 17:29
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

Re: Mit Readfile() arbeiten

Verfasst: 28.09.2010 17:37
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.

Re: Mit Readfile() arbeiten

Verfasst: 28.09.2010 17:45
von PB42
Klasse, vielen Dank!!!

Re: Mit Readfile() arbeiten

Verfasst: 29.09.2010 08:16
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

Re: Mit Readfile() arbeiten

Verfasst: 29.09.2010 13:55
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