Seite 1 von 1

Daten Speichern

Verfasst: 10.08.2006 21:26
von Samson
Hi @all,
hm...
wie fange ich jetzt am besten an...?
Also, ich habe ein Fenster mit ner ToolBar und nem StringButton und möchte es jetzt auf die reihe bekommen das alles was ich in den StringButton schreibe gespeichert wird wenn ich auf das Speicher-Knopf-Dingens drücke.
Jetzt die Frage.
Wie sieht denn der Programmcode aus um Dateien mittels des Speichertools zu speichern.

Sorry, ich weiß, is ne blöde Frage aber ich im Handbuch nichts darüber gefunden. :cry:

Verfasst: 11.08.2006 09:30
von Alves
Also du hast einen Knopf, wo man raufdrückt, dass es gespeichert werden soll, oder?

Also dann schau mal in der Hilfe nach GetGadgetText(), OpenFile(), WriteString(), mal unter das Filesystem.

Verfasst: 11.08.2006 09:35
von #NULL
[und CloseFile() !!!]

Verfasst: 11.08.2006 09:40
von Kiffi
Alves hat geschrieben:OpenFile()
lieber CreateFile() und ReadFile(). OpenFile() sorgt (nicht nur bei Einsteigern)
des öfteren mal für Verwirrungen.

Grüße ... Kiffi

Verfasst: 11.08.2006 09:59
von Alves
Aber CreateFile() löscht doch die Datei komplett, um dann eine neue zu erstellen.

Mit OpenFile() kann...

Okay hast gewonnen.

Verfasst: 11.08.2006 10:38
von Kiffi
Alves hat geschrieben:Okay hast gewonnen.
nein, Dein Einwand ist ja durchaus berechtigt. Wenn man beispielsweise eine
'Append'-Funktionalität benötigt (etwa für eine Logfile), dann kommt man um
OpenFile() nicht herum.

Allerdings denke ich, dass Samson sowas momentan noch nicht braucht.

Grüße ... Kiffi

Verfasst: 11.08.2006 10:42
von #NULL
Man käm' schon drumherum,
jedoch
dies nur
tät' Not
aus schwachsinn's grund.

Re: Daten Speichern

Verfasst: 11.08.2006 12:56
von Kaeru Gaman
Samson hat geschrieben:ich habe ein Fenster mit ... nem StringButton
:?
was ist dieses geheimnisvolle etwas?
ist es ein Vogel? ist es ein Flugzeug?

sei doch bitte so lieb, und halte dich an die übliche nomenklatur.

ich kann mir zwar denken, dass du ein StringGadget meinst,
aber zum raten sind wir eigentlich nicht hier.

und wo wir grad dabei sind, schreib doch bitte deine PB-Version in deine Signatur.

Verfasst: 11.08.2006 18:16
von HemSA
Hallo Samson,
ich habe mal vor kurzem was programmiert was die Speicherung von Daten angeht.
In meinem Beispiel habe ich als Beispiel 3 Stringelder mit bestimmter Länge, die dann zusammengefasst in eine Zeile von einer Textdatei gespeichert werden. Und zwar immer anhängend an die letzte Zeile. Das Auslesen ist ja dann nicht mehr schwierig, da du die Feldlängen ja kennst mit:

-Ergebnis$ = Left(String$, Laenge)
-Ergebnis$ = Mid(String$, StartPosition, Laenge)
-Ergebnis$ = Right(String$, Laenge


Der Code ist in PB 4, wenn du ihn in PB 3.94 haben willst, dann schau mal in PureBasic Lounge rein.

Code: Alles auswählen


If OpenWindow(0,216,0,500,300,"Testfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(0))
      TextGadget(1, 20, 20, 150, 20, "Dateneingabefenster")
      TextGadget(2, 20, 60, 40, 20, "Text1")                       
      StringGadget(3, 60, 60, 60, 20, "")                           ;Eingabefeld
      TextGadget(4, 20, 100, 40, 20, "Text2")
      StringGadget(5, 60, 100, 100, 20, "")
      TextGadget(6, 20, 140, 40, 20, "Text3")
      StringGadget(7, 60, 140, 150, 20, "")      
      ButtonGadget(8, 60, 200, 100, 30, "Daten hinzufügen")
      ButtonGadget(9, 200, 200, 100, 30, "Beenden")
      TextGadget(10, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen")
      TextGadget(11, 180, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen")
      TextGadget(12, 230, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen")
  
  
  EndIf

  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow 
      Quit = 1
    EndIf
    If EventID = #PB_Event_Gadget
      
      
      
        If EventGadget()=8
      
             text1s.s = GetGadgetText(3)                             ;auslesen vom Stringgadget 
             ergebnis1s.s = LSet(text1s.s, 10)                       ;auffüllen/begrenzen des Stringgadget auf 10 Zeichen
             text2s.s = GetGadgetText(5)
             ergebnis2s.s = LSet(text2s.s, 15)
             text3s.s = GetGadgetText(7)
             ergebnis3s.s = LSet(text3s.s, 25)
             textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s  ;zusammenlegen von den Feldern ( Gesamttext )
      
          If OpenFile(1,"C:\versuch.txt")
              laengew.w= Lof(1)                                      ; ermitteln der Dateilaenge              
              FileSeek(1,laengew.w)                                        ; setzt den Zeiger ans Dateiende           
      
              WriteStringN(1,textgesamts.s)                          ;schreibt den Gesamttext an das Ende von der Datei
      
              CloseFile(1)                                           ;schließt die Datei
          EndIf
        
        SetGadgetText(3, "")                                         ;Eingabefelder werden gelöscht nachdem der 
        SetGadgetText(5, "")                                         ;"Daten hinzufügen" BUTTON gedrückt wurde
        SetGadgetText(7, "")
        
        EndIf
      
    
        If EventGadget()=9
         Quit = 1
        EndIf
           
    EndIf
 Until Quit=1
  
EndIf
End