Daten Speichern

Anfängerfragen zum Programmieren mit PureBasic.
Samson
Beiträge: 2
Registriert: 10.08.2006 21:16

Daten Speichern

Beitrag 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:
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag 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.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

[und CloseFile() !!!]
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Aber CreateFile() löscht doch die Datei komplett, um dann eine neue zu erstellen.

Mit OpenFile() kann...

Okay hast gewonnen.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

Man käm' schon drumherum,
jedoch
dies nur
tät' Not
aus schwachsinn's grund.
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Daten Speichern

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag 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

PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Antworten