Daten speichern und lesen?

Anfängerfragen zum Programmieren mit PureBasic.
Eberhard61
Beiträge: 2
Registriert: 28.06.2010 20:26

Daten speichern und lesen?

Beitrag von Eberhard61 »

Hallo,

ich möchte ein Liga-Programm Programmieren.

Dafür ist es notwendig Daten zu speichern und zu laden.

Ich habe mal so ein Programm für ZX-Spectrum gehabt. Das war in einem Heft, wo Programme für den ZX-Spectrum drin waren. Leider habe ich das Heft nicht mehr.
Da wurde die Daten per Sequentieller Datei gespeichert und Geladen. Das auf einem Tonband. Das waren noch Zeiten.

Wie kann man das am einfachsten bei Purebasic machen?

Die Daten wären: Name, PL (Platz), PP (Punkteplus), PM (Punkteminus), TP (Toreplus), TM (Toreminus).

Gruß

Eberhard
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Daten speichern und lesen?

Beitrag von ts-soft »

Das simpelste wäre es als CSV-Datei, also String in dem alle Werte durch einen Trenner z.B. semikolon getrennt,
als String gespeichert wird. Eine Zeile je Datensatz. Damit wäre auch ein importieren in eine Tabellenkalkulation oder
Datenbank gegeben.
Oder gleich eine Datenbank nutzen, wenn doch viele Daten anfallen.

Aufs Tonband mit PB piepen ist nicht mehr so der Hit :mrgreen:

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Re: Daten speichern und lesen?

Beitrag von HemSA »

Hallo Eberhard,
ich habe mir mal ein Programm geschrieben wo man Daten eingeben / löschen / aendern / ausgeben / nach Terminen ausgeben lassen kann.

Es ist schon etwas aelter mit alten Funktionen ( CreateGadgetList() ) was aber nicht stört.

Vielleicht hilft es dir was.

Code: Alles auswählen

Enumeration ; Windows  
  #Hauptfenster 
  #Termineingabefenster
  #Datenausgabe
  #Datenloeschungauswahl
  #Datenloeschungbestaetigung
  #Datenaenderungauswahl
  #Datenaenderungbestaetigung
  #Terminausgabe
EndEnumeration 

Enumeration ; Gadgets 
  
  ; Hauptfenster 
  #Hauptfenster_lblInfo 
  #Hauptfenster_cmdTermineingabe 
  #Hauptfenster_cmdDatenausgabe 
  #Hauptfenster_cmdDatenloeschung 
  #Hauptfenster_cmdDatenaenderung 
  #Hauptfenster_cmdTerminausgabe 
  #Hauptfenster_cmdBeenden 
  
  ; Termineingabefenster 
  #Termineingabefenster_lblInfo 
  #Termineingabefenster_lblDatum 
  #Termineingabefenster_txtDatum 
  #Termineingabefenster_lblTerminart 
  #Termineingabefenster_txtTerminart 
  #Termineingabefenster_lblName 
  #Termineingabefenster_txtName 
  #Termineingabefenster_cmdHinzufuegen 
  #Termineingabefenster_cmdBeenden 
  #Termineingabefenster_lblDatum2 
  #Termineingabefenster_lblTerminart2 
  #Termineingabefenster_lblName2 
  
  ;Datenausgabe
  #Datenausgabe_lig
  
  ;Datenloeschungauswahl
  #Datenloeschungauswahl_lig
  #Datenloeschungauswahl_lblDatensatz_markieren
  #Datenloeschungauswahl_cmdWeiter
  
  ;Datenloeschungbestaetigung
  #Datenloeschungbestaetigung_lblDatenloeschungsfenster
  #Datenloeschungbestaetigung_lblDatum
  #Datenloeschungbestaetigung_txtDatum
  #Datenloeschungbestaetigung_lblTerminart
  #Datenloeschungbestaetigung_txtTerminart
  #Datenloeschungbestaetigung_lblName
  #Datenloeschungbestaetigung_txtName
  #Datenloeschungbestaetigung_cmdDaten_loeschen
  #Datenloeschungbestaetigung_cmdAbbrechen
  
  ;Datenaenderungauswahl
  #Datenaenderungauswahl_lig
  #Datenaenderungauswahl_lblDatensatz_markieren
  #Datenaenderungauswahl_cmdWeiter
  
  ;Datenaenderungbestaetigung
  #Datenaenderungbestaetigung_lblDatenaenderungsfenster
  #Datenaenderungbestaetigung_lblDatum
  #Datenaenderungbestaetigung_txtDatum
  #Datenaenderungbestaetigung_lblTerminart
  #Datenaenderungbestaetigung_txtTerminart
  #Datenaenderungbestaetigung_lblName
  #Datenaenderungbestaetigung_txtName
  #Datenaenderungbestaetigung_cmdDaten_abspeichern
  #Datenaenderungbestaetigung_cmdAbrechen
  #Datenaenderungbestaetigung_lbl10_Zeichen
  #Datenaenderungbestaetigung_lbl15_Zeichen
  #Datenaenderungbestaetigung_lbl25_Zeichen
  
  ;Terminausgabe
  #Terminausgabe_lig
  
EndEnumeration 



Procedure Open_Hauptfenster() 
  If OpenWindow(#Hauptfenster,216,0,320,250,"Terminprogramm HemSA - 10/2006",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar ) 
    If CreateGadgetList(WindowID(#Hauptfenster)) 
      TextGadget  (#Hauptfenster_lblInfo, 70, 20, 200, 30, "Wählen Sie bitte Ihre Anwendung aus") 
      ButtonGadget(#Hauptfenster_cmdTermineingabe, 30, 50, 100, 30, "Termineingabe") 
      ButtonGadget(#Hauptfenster_cmdDatenausgabe, 180, 50, 100, 30, "Datenausgabe") 
      ButtonGadget(#Hauptfenster_cmdDatenloeschung, 30, 100, 100, 30, "Datenlöschung") 
      ButtonGadget(#Hauptfenster_cmdDatenaenderung, 180, 100, 100, 30, "Datenänderung") 
      ButtonGadget(#Hauptfenster_cmdTerminausgabe, 30, 150, 100, 30, "Terminausgabe") 
      ButtonGadget(#Hauptfenster_cmdBeenden, 30, 200, 250, 30, "Beenden") 
    EndIf 
  EndIf 
EndProcedure  

Procedure Open_Termineingabefenster() 
  If OpenWindow(#Termineingabefenster,216,0,500,300,"Termineingabefenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar ) 
    If CreateGadgetList(WindowID(#Termineingabefenster)) 
      TextGadget  (#Termineingabefenster_lblInfo, 20, 20, 150, 20, "Dateneingabefenster") 
      TextGadget  (#Termineingabefenster_lblDatum, 20, 60, 40, 20, "Datum")                        
      StringGadget(#Termineingabefenster_txtDatum, 80, 60, 60, 20, "")                          
      TextGadget  (#Termineingabefenster_lblTerminart, 20, 100, 50, 20, "Terminart") 
      StringGadget(#Termineingabefenster_txtTerminart, 80, 100, 100, 20, "") 
      TextGadget  (#Termineingabefenster_lblName, 20, 140, 60, 20, "Name") 
      StringGadget(#Termineingabefenster_txtName, 80, 140, 150, 20, "")      
      ButtonGadget(#Termineingabefenster_cmdHinzufuegen, 60, 200, 100, 30, "Daten hinzufügen") 
      ButtonGadget(#Termineingabefenster_cmdBeenden, 200, 200, 100, 30, "Beenden") 
      TextGadget  (#Termineingabefenster_lblDatum2, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen") 
      TextGadget  (#Termineingabefenster_lblTerminart2, 190, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen") 
      TextGadget  (#Termineingabefenster_lblName2, 240, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen") 
    EndIf 
  EndIf 
EndProcedure 
 
Procedure lig_Fuellen(lig.l)           ;lig=#Datenausgabe_lig??
  If ReadFile(1,"termin.dat")           ;Prozedur für das Füllen des ListIconGadget
    laengel.l= Lof(1)                   ;von Datenausgabe, Löschungs-und Änderungsauswahl,
    zeilenanzahlw.w=laengel.l/52 
    For iw.w=0 To zeilenanzahlw.w 
      FileSeek(1,iw.w*52)                                        
      wert2s.s=ReadString(1) 
      datums.s=Left(wert2s.s,10) 
      terminarts.s=Mid(wert2s.s,11, 15) 
      names.s=Mid(wert2s.s,26, 25) 
      AddGadgetItem(lig.l, -1,datums.s+Chr(10)+terminarts.s+Chr(10)+names.s);lig=#Datenausgabe_lig??
    Next iw.w 
    CloseFile(1) 
  EndIf  
EndProcedure 
 
Procedure Open_Datenausgabe() 
  If OpenWindow(#Datenausgabe, 100, 100, 355, 200, "Datenausgabe", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered) 
    If CreateGadgetList(WindowID(#Datenausgabe)) 
      ListIconGadget(#Datenausgabe_lig, 5, 5, 345, 190, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection) 
      AddGadgetColumn(#Datenausgabe_lig, 1, "Terminart", 90) 
      AddGadgetColumn(#Datenausgabe_lig, 2, "Name", 150) 
    EndIf 
    lig_Fuellen(#Datenausgabe_lig) 
  EndIf 
EndProcedure  

Procedure Open_Datenloeschungauswahl() 
  If OpenWindow(#Datenloeschungauswahl, 100, 100, 355, 275, "Datenlöschung", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered) 
    If CreateGadgetList(WindowID(#Datenloeschungauswahl)) 
      ListIconGadget(#Datenloeschungauswahl_lig, 5, 35, 345, 200, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection) 
      AddGadgetColumn(#Datenloeschungauswahl_lig, 1, "Terminart", 90) 
      AddGadgetColumn(#Datenloeschungauswahl_lig, 2, "Name", 150) 
      TextGadget(#Datenloeschungauswahl_lblDatensatz_markieren, 5,  10, 250, 20, "Bitte den Datensatz markieren") 
      ButtonGadget(#Datenloeschungauswahl_cmdWeiter, 5, 245, 70, 20, "Weiter") 
    EndIf 
    lig_Fuellen(#Datenloeschungauswahl_lig) 
  EndIf 
EndProcedure 
 
Procedure Open_Datenloeschungbestaetigung(wertw.w) 
  If OpenWindow(#Datenloeschungbestaetigung,216,0,380,250,"Datenlöschungsfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered ) 
    If CreateGadgetList(WindowID(#Datenloeschungbestaetigung)) 
      TextGadget(#Datenloeschungbestaetigung_lblDatenloeschungsfenster, 20, 20, 150, 20, "Datenlöschungsfenster") 
      TextGadget(#Datenloeschungbestaetigung_lblDatum, 20, 60, 40, 20, "Datum")                        
      StringGadget(#Datenloeschungbestaetigung_txtDatum, 80, 60, 60, 20, "")                            
      TextGadget(#Datenloeschungbestaetigung_lblTerminart, 20, 100, 50, 20, "Terminart") 
      StringGadget(#Datenloeschungbestaetigung_txtTerminart, 80, 100, 100, 20, "") 
      TextGadget(#Datenloeschungbestaetigung_lblName, 20, 140, 60, 20, "Name") 
      StringGadget(#Datenloeschungbestaetigung_txtName, 80, 140, 150, 20, "")      
      ButtonGadget(#Datenloeschungbestaetigung_cmdDaten_loeschen, 20, 180, 230, 30, "Daten löschen ( sind sie sich wirklich sicher?)") 
      ButtonGadget(#Datenloeschungbestaetigung_cmdAbbrechen, 270, 180, 100, 30, "Abbrechen") 
    EndIf 
    If ReadFile(1,"termin.dat") 
       FileSeek(1,wertw.w*52)                                        
       wert2s.s=ReadString(1) 
       datums.s=Left(wert2s.s,10)    
       terminarts.s=Mid(wert2s.s,11, 15) 
       names.s=Mid(wert2s.s,26, 25) 
       SetGadgetText(#Datenloeschungbestaetigung_txtDatum, datums.s) 
       SetGadgetText(#Datenloeschungbestaetigung_txtTerminart, terminarts.s) 
       SetGadgetText(#Datenloeschungbestaetigung_txtName, names.s) 
       CloseFile(1) 
    EndIf 
  EndIf 
EndProcedure

Procedure Open_Datenaenderungauswahl()
  If OpenWindow(#Datenaenderungauswahl, 100, 100, 355, 275, "Datenänderung", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Datenaenderungauswahl))
      ListIconGadget(#Datenaenderungauswahl_lig, 5, 35, 345, 200, "Datum", 80,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
      AddGadgetColumn(#Datenaenderungauswahl_lig, 1, "Terminart", 90)
      AddGadgetColumn(#Datenaenderungauswahl_lig, 2, "Name", 150)
      TextGadget(#Datenaenderungauswahl_lblDatensatz_markieren, 5,  10, 250, 20, "Bitte den Datensatz markieren")
      ButtonGadget(#Datenaenderungauswahl_cmdWeiter, 5, 245, 70, 20, "Weiter")
    EndIf
    lig_Fuellen(#Datenaenderungauswahl_lig) 
  EndIf
EndProcedure

Procedure Open_Datenaenderungbestaetigung(wertw.w)  
  If OpenWindow(#Datenaenderungbestaetigung,216,0,500,300,"Datenänderungsfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar| #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Datenaenderungbestaetigung))
      TextGadget(#Datenaenderungbestaetigung_lblDatenaenderungsfenster, 20, 20, 150, 20, "Datenänderungsfenster")
      TextGadget(#Datenaenderungbestaetigung_lblDatum, 20, 60, 40, 20, "Datum")                       
      StringGadget(#Datenaenderungbestaetigung_txtDatum, 80, 60, 60, 20, "")                           
      TextGadget(#Datenaenderungbestaetigung_lblTerminart, 20, 100, 50, 20, "Terminart")
      StringGadget(#Datenaenderungbestaetigung_txtTerminart, 80, 100, 100, 20, "")
      TextGadget(#Datenaenderungbestaetigung_lblName, 20, 140, 60, 20, "Name")
      StringGadget(#Datenaenderungbestaetigung_txtName, 80, 140, 150, 20, "")      
      ButtonGadget(#Datenaenderungbestaetigung_cmdDaten_abspeichern, 20, 200, 160, 30, "Geänderte Daten abspeichern")
      ButtonGadget(#Datenaenderungbestaetigung_cmdAbrechen, 200, 200, 100, 30, "Abrechen")
      TextGadget(#Datenaenderungbestaetigung_lbl10_Zeichen, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen")
      TextGadget(#Datenaenderungbestaetigung_lbl15_Zeichen, 190, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen")
      TextGadget(#Datenaenderungbestaetigung_lbl25_Zeichen, 240, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen")
    EndIf
    If ReadFile(1,"termin.dat") 
       FileSeek(1,wertw.w*52)                                        
       wert2s.s=ReadString(1) 
       datums.s=Left(wert2s.s,10) 
       terminarts.s=Mid(wert2s.s,11, 15) 
       names.s=Mid(wert2s.s,26, 25)
       SetGadgetText(#Datenaenderungbestaetigung_txtDatum, datums.s)
       SetGadgetText(#Datenaenderungbestaetigung_txtTerminart, terminarts.s)
       SetGadgetText(#Datenaenderungbestaetigung_txtName, names.s)
       CloseFile(1) 
    EndIf
  EndIf
EndProcedure 

Procedure Terminausgabe_lig_Fuellen(lig.l) ;lig=#Terminausgabe_lig??
  If ReadFile(1,"termin.dat") 
    laengel.l= Lof(1) 
    zeilenanzahlw.w=laengel.l/52 
        
    tags.s=FormatDate("%dd",Date()) 
    monats.s=FormatDate("%mm",Date())
    jahrs.s=FormatDate("%yyyy",Date()) 
          
    tagl.l= Val(tags.s)
               
     For iw.w=0 To zeilenanzahlw.w
     FileSeek(1,iw.w*52)                                        
     wert2s.s=ReadString(1) 
     datums.s=Left(wert2s.s,10) 
     terminarts.s=Mid(wert2s.s,11, 15) 
     names.s=Mid(wert2s.s,26, 25)
     tagdateis.s=Left(datums.s,2)
     monatdateis.s=Mid(datums.s,4,2)
     tagdateil.l= Val(tagdateis.s)
        
        If monatdateis.s=monats.s
          If tagdateil.l+1=tagl.l Or tagdateil.l=tagl.l Or tagdateil.l-1=tagl.l Or tagdateil.l-2=tagl.l
             AddGadgetItem(lig.l, -1,datums.s+Chr(10)+terminarts.s+Chr(10)+names.s)
          EndIf
        EndIf
            
     Next iw.w
     CloseFile(1) 
   EndIf
EndProcedure      
            
Procedure Open_Terminausgabe()

  datumheutes.s=FormatDate("%dd.%mm.%yyyy", Date())

  If OpenWindow(#Terminausgabe, 100, 100, 550, 200, "Termine - für gestern, heute ("+datumheutes.s+"), morgen und übermorgen", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget |#PB_Window_TitleBar| #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Terminausgabe))
      ListIconGadget(#Terminausgabe_lig, 5, 5, 540, 190, "Datum", 70,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
      AddGadgetColumn(#Terminausgabe_lig, 1, "Terminart", 140)
      AddGadgetColumn(#Terminausgabe_lig, 2, "Name", 320)
    EndIf
    Terminausgabe_lig_Fuellen(#Terminausgabe_lig)
  EndIf      
EndProcedure 
 



Procedure MainLoop() 
  
  Protected Quit.l 
  Protected EventID.l 
  Protected EventGadget.l 
  Protected EventWindow.l 
  
  Open_Hauptfenster() 
  
  Repeat 
    
    EventID     = WaitWindowEvent() 
    EventGadget = EventGadget() 
    EventWindow = EventWindow() 
    
    Select EventID 
      
      Case #PB_Event_CloseWindow 
        
        Select EventWindow 
          
          Case #Hauptfenster                :  Quit = 1 
          Case #Termineingabefenster        :  CloseWindow(#Termineingabefenster):HideWindow(#Hauptfenster, 0) 
          Case #Datenausgabe                :  CloseWindow(#Datenausgabe):HideWindow(#Hauptfenster, 0)
          Case #Datenloeschungauswahl       :  CloseWindow(#Datenloeschungauswahl):HideWindow(#Hauptfenster, 0)
          Case #Datenloeschungbestaetigung  :  CloseWindow(#Datenloeschungbestaetigung):HideWindow(#Hauptfenster, 0)
          Case #Datenaenderungauswahl       :  CloseWindow(#Datenaenderungauswahl):HideWindow(#Hauptfenster, 0)
          Case #Datenaenderungbestaetigung  :  CloseWindow(#Datenaenderungbestaetigung):HideWindow(#Hauptfenster, 0)
          Case #Terminausgabe               :  CloseWindow(#Terminausgabe):HideWindow(#Hauptfenster, 0)
     
        EndSelect 
        
       
      Case #PB_Event_Gadget 
        
        Select EventWindow 
          
          Case #Hauptfenster 
            
            Select EventGadget 
              
              Case #Hauptfenster_cmdTermineingabe  : Open_Termineingabefenster():HideWindow(#Hauptfenster, 1) 
              Case #Hauptfenster_cmdDatenausgabe   : Open_Datenausgabe():HideWindow(#Hauptfenster, 1)
              Case #Hauptfenster_cmdDatenloeschung : Open_Datenloeschungauswahl():HideWindow(#Hauptfenster, 1) 
              Case #Hauptfenster_cmdDatenaenderung : Open_Datenaenderungauswahl():HideWindow(#Hauptfenster, 1) 
              Case #Hauptfenster_cmdTerminausgabe  : Open_Terminausgabe():HideWindow(#Hauptfenster, 1) 
              Case #Hauptfenster_cmdBeenden        : Quit = 1 
                
            EndSelect 
            
          Case #Termineingabefenster 
            
            Select EventGadget 
              
              Case #Termineingabefenster_cmdHinzufuegen 
                
                text1s.s = GetGadgetText(#Termineingabefenster_txtDatum)  
                ergebnis1s.s = LSet(text1s.s, 10)                         
                text2s.s = GetGadgetText(#Termineingabefenster_txtTerminart) 
                ergebnis2s.s = LSet(text2s.s, 15) 
                text3s.s = GetGadgetText(#Termineingabefenster_txtName) 
                ergebnis3s.s = LSet(text3s.s, 25) 
                
                textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s   
                
                If OpenFile(1,"termin.dat") 
                  laengel.l= Lof(1)                                                   
                  FileSeek(1,laengel.l)                                             
                  WriteStringN(1,textgesamts.s)                          
                  CloseFile(1)                                           
                EndIf 
                
                SetGadgetText(#Termineingabefenster_txtDatum, "")     
                SetGadgetText(#Termineingabefenster_txtTerminart, "") 
                SetGadgetText(#Termineingabefenster_txtName, "") 
                
              Case #Termineingabefenster_cmdBeenden 
                
                CloseWindow(#Termineingabefenster) 
                HideWindow(#Hauptfenster, 0)
            EndSelect 
           
            
          Case #Datenloeschungauswahl 
             
            Select EventGadget
            
              Case #Datenloeschungauswahl_cmdWeiter
                  
                   wertw.w = GetGadgetState(#Datenloeschungauswahl_lig)
                   ergebniss.s = Str(wertw.w)

                   CloseWindow(#Datenloeschungauswahl)
                   Open_Datenloeschungbestaetigung(wertw.w)
            EndSelect
            
          
          Case #Datenloeschungbestaetigung 
              
            Select EventGadget 
            
              Case #Datenloeschungbestaetigung_cmdDaten_loeschen
                   
                    loeschs.s = LSet("-", 50,"-")                       
             
                    If OpenFile(1,"termin.dat")
                       FileSeek(1,wertw.w*52)                                            
                       WriteStringN(1,loeschs.s)                          
                       CloseFile(1)                                       
                    EndIf
        
           
                    If OpenFile(2,"terminkopie.dat")
                            
                    EndIf
          
          
                    If ReadFile(1,"termin.dat") 
                        laengefile1l.l= Lof(1) 
                        zeilenanzahlfile1w.w=laengefile1l.l/52 
        
                        For iw.w=0 To zeilenanzahlfile1w.w-1      ;wegen Löschzeile = 1 Zeile weniger
                         FileSeek(1,iw.w*52)                                        
                         textgesamtfile1s.s=ReadString(1) 
          
                            If textgesamtfile1s.s<>loeschs.s
                               laengefile2l.l= Lof(2)                                                    
                               FileSeek(1,laengefile2l.l)                                            
                               WriteStringN(2,textgesamtfile1s.s)                  
                            EndIf
                        Next iw.w
                        CloseFile(1) 
                        CloseFile(2)  
                     EndIf     
            
                  DeleteFile("termin.dat")
                  RenameFile("terminkopie.dat", "termin.dat")  
                  DeleteFile("terminkopie.dat")  
            
                  CloseWindow(#Datenloeschungbestaetigung)
                  HideWindow(#Hauptfenster, 0)
                  
              Case #Datenloeschungbestaetigung_cmdAbbrechen
                    CloseWindow(#Datenloeschungbestaetigung)
                    HideWindow(#Hauptfenster, 0)
                    
            EndSelect 
            
            
          Case #Datenaenderungauswahl 
                    
            Select EventGadget
            
              Case #Datenaenderungauswahl_cmdWeiter
                  
                   wertw.w = GetGadgetState(#Datenaenderungauswahl_lig)
                   ergebniss.s = Str(wertw.w)

                   CloseWindow(#Datenaenderungauswahl)
                   Open_Datenaenderungbestaetigung(wertw.w)
            EndSelect
     
           
          Case #Datenaenderungbestaetigung 
             
            Select EventGadget  
           
              Case #Datenaenderungbestaetigung_cmdDaten_abspeichern
                    
                    text1s.s = GetGadgetText(#Datenaenderungbestaetigung_txtDatum)                            
                    ergebnis1s.s = LSet(text1s.s, 10)                       
                    text2s.s = GetGadgetText(#Datenaenderungbestaetigung_txtTerminart)
                    ergebnis2s.s = LSet(text2s.s, 15)
                    text3s.s = GetGadgetText(#Datenaenderungbestaetigung_txtName)
                    ergebnis3s.s = LSet(text3s.s, 25)
                    textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s  
      
                   If OpenFile(1,"termin.dat")
                      FileSeek(1,wertw.w*52)                               
                      WriteStringN(1,textgesamts.s)                          
                      CloseFile(1)                                          
                   EndIf
                   CloseWindow(#Datenaenderungbestaetigung)
                   HideWindow(#Hauptfenster, 0)
        
              Case #Datenaenderungbestaetigung_cmdAbrechen
                    CloseWindow(#Datenaenderungbestaetigung)
                    HideWindow(#Hauptfenster, 0)
              
            EndSelect
            
        EndSelect 
        
    EndSelect 
  
  Until Quit=1 
  
EndProcedure 

MainLoop() 

End 
Tschüssle
Michael
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Daten speichern und lesen?

Beitrag von ts-soft »

Das Beispiel von HemSA ist doch etwas komplex :wink:
Hier mal etwas einfacheres zum ausbauen:

Code: Alles auswählen

EnableExplicit

Structure Thor
  Name.s
  PL.s
  PP.i
  PM.i
  TP.i
  TM.i
EndStructure

Global NewList TorListe.Thor()

Procedure ReadCSV(File.s)
  Protected Datensatz.s, FF = ReadFile(#PB_Any, File)
  If FF
    ClearList(TorListe())
    ReadString(FF) ; Spaltenbezeichner ignorieren
    While Not Eof(FF)
      Datensatz = ReadString(FF)
      If Datensatz
        AddElement(TorListe())
        TorListe()\Name = StringField(Datensatz, 1, ";")
        TorListe()\PL = StringField(Datensatz, 2, ";")
        TorListe()\PP = Val(StringField(Datensatz, 3, ";")
        ; usw.
        ; ...
      EndIf
    Wend
    CloseFile(FF)
  EndIf
EndProcedure

Procedure WriteCSV(File.s)
  Protected Datensatz.s, FF = CreateFile(#PB_Any, File)
  
  If File
    WriteStringN(FF, "Name;Platz;Punkteplus;Punkteminus;Toreplus;Toreminus") ; Spaltenbezeichner, immer erste Zeile
    ForEach TorListe()
      Datensatz = TorListe()\Name + ";"
      Datensatz + TorListe()\PL + ";"
      Datensatz + Str(TorListe()\PP) + ";"
      Datensatz + Str(TorListe()\PM) + ";"
      Datensatz + Str(TorListe()\TP) + ";"
      Datensatz + Str(TorListe()\TM)
      WriteStringN(FF, Datensatz)
    Next
    CloseFile(FF)
  EndIf
EndProcedure

; demo-daten
AddElement(TorListe())
TorListe()\Name = "Borussia Schiessmich"
TorListe()\PL = "Parkstadion"
TorListe()\PP = 2
TorListe()\PM = 0
TorListe()\TP = 3
TorListe()\TM = 2

AddElement(TorListe())
TorListe()\Name = "Borussia Kannnichtschiessen"
TorListe()\PL = "Skistadion"
TorListe()\PP = 0
TorListe()\PM = 4
TorListe()\TP = 0
TorListe()\TM = 5

WriteCSV(GetTemporaryDirectory() + "torliste.csv")

ReadCSV(GetTemporaryDirectory() + "torliste.csv")
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Eberhard61
Beiträge: 2
Registriert: 28.06.2010 20:26

Re: Daten speichern und lesen?

Beitrag von Eberhard61 »

Hallo,

vielen Dank für Eure Tips.

Die haben mir weitergeholfen.

Gruß

Eberhard
Antworten