Seite 1 von 2

Speichern von Daten aus 2 ListViewgadgets???

Verfasst: 18.11.2006 17:49
von sebsch80
Hallo,

habe ein Problem mit dem speichern von Daten die in 2 verschiedenen ListViewGadgets sind.

Das heist:
Ich gebe etwas in das 1.ListViewGadget ein und etwas in das 2.ListViewGadget.
Ich speichere es unter einer Text Datei ab.
Leere die Gadgets wieder.
Dann öffne ich die Text Datei die ich zuvor abgespeichert habe.
Leider schreibt er mir den Text aus dem 2.ListViewGadget in beide ListViewGadget rein.

Jetzt weiß ich nicht wo mein Fehler liegt. ist er beim Speichern oder beim Öffnen???

Wäre nett wenn mir da mal jemand auf die Sprünge helfen könnte.

Danke

Code: Alles auswählen

If OpenWindow (0,0,0,340,300,"TEST",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) And CreateToolBar(0, WindowID(0))
   ToolBarStandardButton(10, #PB_ToolBarIcon_New)
   ToolBarStandardButton(11, #PB_ToolBarIcon_Open)
   ToolBarStandardButton(12, #PB_ToolBarIcon_Save)
ListViewGadget(1,10,30,150,150)
ListViewGadget(2,180,30,150,150)
StringGadget(3,10,200,150,22,"")
StringGadget(4,180,200,150,22,"")
ButtonGadget(5,20,240,130,22,"Hinzufügen")
ButtonGadget(6,190,240,130,22,"Hinzufügen")
EndIf

Repeat
EventID = WaitWindowEvent()
;-Quit
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
;ToolBar
If EventID = #PB_Event_Menu
;-Neu
    If EventMenu()=10
      SetGadgetText(3,"")
      SetGadgetText(4,"")
      ClearGadgetItemList(1)
      ClearGadgetItemList(2)
    EndIf
;-Öffnen 
    If EventMenu()=11
       StandardFile$ = "C:\test.txt"
       Pattern$ = "Text (*.txt)|*.txt|Alle Dateien (*.*)|*.*"
       Pattern = 1
       File$ = OpenFileRequester("Öffnen...", StandardFile$, Pattern$, Pattern)
      If ReadFile(0,File$)
        While Eof(0) = 0 
          Text$ = ReadString(0)
          AddGadgetItem(1,-1,Text$)
        Wend
      Else
        MessageRequester("Information","Öffnen nicht möglich!",0)
      EndIf
        CloseFile(0)
      If ReadFile(1,File$)
        While Eof(1) = 0 
          Text$ = ReadString(1)
          AddGadgetItem(2,-1,Text$)
        Wend
      Else
        MessageRequester("Information","Öffnen nicht möglich!",0)
      EndIf
        CloseFile(1)
    EndIf
;-  Speichern
    If EventMenu()=12
       StandardFile$ = "C:\Geldschein.txt"
       Pattern$ = "Text (*.txt)|*.txt|Alle Dateien (*.*)|*.*"
       Pattern = 0    
       File$ = SaveFileRequester("Speichern unter...", StandardFile$, Pattern$, Pattern)
      If CreateFile (0,File$)
        For Z = 0 To CountGadgetItems(1) - 1
          WriteStringN(0,GetGadgetItemText(1,Z,0))
        Next 
        For Z = 0 To CountGadgetItems(2) - 1
          WriteStringN(0,GetGadgetItemText(2,Z,0))
        Next 
      Else
        MessageRequester("Information","Speichern nicht möglich!",0)
      EndIf 
        CloseFile(0)
      If CreateFile (1,File$)
        For Z = 0 To CountGadgetItems(2) - 1
          WriteStringN(1,GetGadgetItemText(2,Z,0))
        Next 
      Else
        MessageRequester("Information","Speichern nicht möglich!",0)
      EndIf 
        CloseFile(1)
    EndIf
   EndIf
If EventID = #PB_Event_Gadget
;-1.Hinzufügen
 If EventGadget() = 5
   a$=GetGadgetText(3) 
       If a$ = "" 
         MessageRequester("Fehler","Ich vermisse die Eingabe",0) 
       Else 
         AddGadgetItem(1,-1,""+a$) 
         SetGadgetText(3,"") 
         SetActiveGadget(3) 
       EndIf
 EndIf
;-2.Hinzufügen
 If EventGadget() = 6
   a$=GetGadgetText(4) 
       If a$ = "" 
         MessageRequester("Fehler","Ich vermisse die Eingabe",0) 
       Else 
         AddGadgetItem(2,-1,""+a$) 
         SetGadgetText(4,"") 
         SetActiveGadget(4) 
       EndIf
 EndIf
EndIf
Until Quit = 1

Verfasst: 18.11.2006 18:05
von edel
Schau dir mal 'Preference', in der Hilfe an.

Verfasst: 18.11.2006 18:42
von sebsch80
@edel

Also ich hab mir das Thema Preference mal angesehen.

Aber ich weiß nicht wie mir das weiter helfen soll.

Sorry ich bin blutiger Anfänger, könntest Du mir das vielleicht etwas genauer erklären?

Gruß Sebastian

Verfasst: 18.11.2006 19:38
von edel

Code: Alles auswählen

If OpenWindow (0,0,0,340,300,"TEST",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) And CreateToolBar(0, WindowID(0))
  ToolBarStandardButton(10, #PB_ToolBarIcon_New)
  ToolBarStandardButton(11, #PB_ToolBarIcon_Open)
  ToolBarStandardButton(12, #PB_ToolBarIcon_Save)
  ListViewGadget(1,10,30,150,150)
  ListViewGadget(2,180,30,150,150)
  StringGadget(3,10,200,150,22,"")
  StringGadget(4,180,200,150,22,"")
  ButtonGadget(5,20,240,130,22,"Hinzufügen")
  ButtonGadget(6,190,240,130,22,"Hinzufügen")
EndIf

Repeat
  EventID = WaitWindowEvent() 
  
  If EventID = #PB_Event_Menu
    
    If EventMenu() = 12
      
      If CreatePreferences("daten.ini")
        
        PreferenceGroup("List_1")
        
        For i = 0 To CountGadgetItems(1) - 1
          WritePreferenceString(Str(i),GetGadgetItemText(1,i,0))
        Next
        
        PreferenceGroup("List_2")
        
        For i = 0 To CountGadgetItems(2) - 1
          WritePreferenceString(Str(i),GetGadgetItemText(2,i,0))
        Next
        
      EndIf
      
      
      ClosePreferences()
      
    EndIf
    
    If EventMenu() = 11
      
      If OpenPreferences("daten.ini")
        
        PreferenceGroup("List_1")
        
        ExaminePreferenceKeys()
        
        While NextPreferenceKey()
          text.s = PreferenceKeyValue()
          AddGadgetItem(1,-1,text)
        Wend
        
        PreferenceGroup("List_2")
        
        ExaminePreferenceKeys()
        
        While NextPreferenceKey()
          text.s = PreferenceKeyValue()
          AddGadgetItem(2,-1,text)
        Wend
        
        ClosePreferences()
      EndIf
      
      
    EndIf
    
  EndIf
  
  If EventID = #PB_Event_Gadget
    
    If EventGadget() = 5
      text.s = GetGadgetText(3)
      AddGadgetItem(1,-1,text)
    EndIf
    
    If EventGadget() = 6
      text.s = GetGadgetText(4)
      AddGadgetItem(2,-1,text) 
    EndIf
    
    
  EndIf
  
  
Until EventID = 16
daten.ini hat geschrieben: [List_1]
0 = test
1 = test2
2 = test4
[List_2]
0 = blub 3
1 = 111
2 = hallo

Verfasst: 18.11.2006 19:54
von sebsch80
Erst mal vielen vielen dank für die schnelle Hilfe.

Ich werd mich jetzt mal hinsetzen und versuchen da dahinter zu steigen.

Schon mal die erste frage. Wo speichert er den die .ini Datei ab???

Verfasst: 18.11.2006 20:11
von edel

Code: Alles auswählen

If EventMenu() = 12
     
      If CreatePreferences("daten.ini")
       
        PreferenceGroup("List_1") ; <-------- [List_1] erstellen
       
        For i = 0 To CountGadgetItems(1) - 1
          WritePreferenceString(Str(i),GetGadgetItemText(1,i,0)) ; <--------
        Next
       
        PreferenceGroup("List_2") ; <-------- [List_2] erstellen
       
        For i = 0 To CountGadgetItems(2) - 1
          WritePreferenceString(Str(i),GetGadgetItemText(2,i,0)) ; <--------
        Next
       
      EndIf
     
     
      ClosePreferences()
     
    EndIf

Verfasst: 19.11.2006 13:39
von dysti
Hallo sebsch80,
hier ist deine Lösung so wie du es haben wolltest:

Code: Alles auswählen

If OpenWindow (0,0,0,340,300,"TEST",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) And CreateToolBar(0, WindowID(0))
  ToolBarStandardButton(10, #PB_ToolBarIcon_New)
  ToolBarStandardButton(11, #PB_ToolBarIcon_Open)
  ToolBarStandardButton(12, #PB_ToolBarIcon_Save)
  ListViewGadget(1,10,30,150,150)
  ListViewGadget(2,180,30,150,150)
  StringGadget(3,10,200,150,22,"")
  StringGadget(4,180,200,150,22,"")
  ButtonGadget(5,20,240,130,22,"Hinzufügen")
  ButtonGadget(6,190,240,130,22,"Hinzufügen")
EndIf

Repeat
  EventID = WaitWindowEvent()
  ;-Quit
  If EventID = #PB_Event_CloseWindow
    Quit = 1
  EndIf
  ;ToolBar
  If EventID = #PB_Event_Menu
    ;-Neu
    If EventMenu()=10
      SetGadgetText(3,"")
      SetGadgetText(4,"")
      ClearGadgetItemList(1)
      ClearGadgetItemList(2)
    EndIf
    ;-Öffnen
    If EventMenu()=11
      StandardFile$ = "C:\Geldschein.txt"
      Pattern$ = "Text (*.txt)|*.txt|Alle Dateien (*.*)|*.*"
      Pattern = 1
      Filebak$="GSBAK.DAT"
      File$ = OpenFileRequester("Öffnen...", StandardFile$, Pattern$, Pattern)
      If ReadFile(0,File$)
        While Eof(0) = 0
          Text$ = ReadString(0)
          AddGadgetItem(1,-1,Text$)
        Wend
      Else
        MessageRequester("Information","Öffnen nicht möglich!",0)
      EndIf
      CloseFile(0)
      If ReadFile(1,Filebak$)
        While Eof(1) = 0
          Text$ = ReadString(1)
          AddGadgetItem(2,-1,Text$)
        Wend
      Else
        MessageRequester("Information","Öffnen nicht möglich!",0)
      EndIf
      CloseFile(1)
    EndIf
    ;-  Speichern
    If EventMenu()=12
      StandardFile$ = "C:\Geldschein.txt"
      Pattern$ = "Text (*.txt)|*.txt|Alle Dateien (*.*)|*.*"
      Pattern = 0 
      Filebak$="GSBAK.DAT"
      File$ = SaveFileRequester("Speichern unter...", StandardFile$, Pattern$, Pattern)
      If CreateFile (0,File$)
        For z = 0 To CountGadgetItems(1) - 1
          WriteStringN(0,GetGadgetItemText(1,z,0))
        Next
        ;For z = 0 To CountGadgetItems(2) - 1
        ;  WriteStringN(0,GetGadgetItemText(2,z,0))
        ;Next
      Else
        MessageRequester("Information","Speichern nicht möglich!",0)
      EndIf
      CloseFile(0)
      If CreateFile (1,Filebak$)
        For z = 0 To CountGadgetItems(2) - 1
          WriteStringN(1,GetGadgetItemText(2,z,0))
        Next
      Else
        MessageRequester("Information","Speichern nicht möglich!",0)
      EndIf
      CloseFile(1)
    EndIf
  EndIf
  If EventID = #PB_Event_Gadget
    ;-1.Hinzufügen
    If EventGadget() = 5
      a$=GetGadgetText(3)
      If a$ = ""
        MessageRequester("Fehler","Ich vermisse die Eingabe",0)
      Else
        AddGadgetItem(1,-1,""+a$)
        SetGadgetText(3,"")
        SetActiveGadget(3)
      EndIf
    EndIf
    ;-2.Hinzufügen
    If EventGadget() = 6
      a$=GetGadgetText(4)
      If a$ = ""
        MessageRequester("Fehler","Ich vermisse die Eingabe",0)
      Else
        AddGadgetItem(2,-1,""+a$)
        SetGadgetText(4,"")
        SetActiveGadget(4)
      EndIf
    EndIf
  EndIf
Until Quit = 1

Verfasst: 19.11.2006 14:47
von a14xerus
sebsch80 hat geschrieben: Schon mal die erste frage. Wo speichert er den die .ini Datei ab???
im gleichen im arbeitsverzeichniss der exe (bei relativem pfad)

Verfasst: 19.11.2006 18:01
von sebsch80
@dysti

Vielen Dank für die Lösung. Funktioniert einwandfrei. :allright:


@a14xerus

Hab über die Suchfunktion nach der Datei gesucht und sie gefunden.
Ist ja auch irgenwo logisch das sie dort gespeichert wird.
Trotzdem vielen dank für den Tip. :wink:

Verfasst: 19.11.2006 18:15
von sebsch80
@dysti

Hab mir den Code jetzt mal angeschaut und bin mir nicht sicher ob ich das richtig verstanden hab.

Also ich denke er speichert die Daten des 1. ViewGadgets in der ".txt" Datei die ich wähle.
Und die Daten des 2. ViewGadgets in einer Unterdatei "GSBAK.DAT". Stimmt das?
An diese Unterdatei komme ich aber nicht ran, oder?
Die wird irgenwo im Hintergrund gespeichert nehme ich an?

Wo liegt den jetzt eigentlich der Unterschied zwischen dem speichern der Daten
über die Funktion "CreateFile" und dem Speichern über "CreatePreferences"?

Gibts da irgendwelche Vorteile!!!