Seite 5 von 6

Re: Textfile *.txt Bearbeiten

Verfasst: 19.11.2010 10:53
von Velindos
Hallo,

habe wie von Kiffi angeführt die Fehler bereinigt und nun fuzzzzzzzzzzzzt´s die Sache.

Code: Alles auswählen

; German Forum: DateiLesenZeile 3.1.x
; Author: Velindos + Kiffi + CodeCommander + c4s + Andesdaf
; Date: 19.November 2010
; OS: Windows7 64-Bit
; Demo: Yes
; Created: Daten Beispiel für *.txt Datei
; Weiteres über Daten laden und speichern


;Variablen definieren
Global Dim text$(999):Global anzahl
Global Dateiname$:
Global DateinameLaden$ ="C:\Install.txt"
Global Dim Software$(999)
Global Dim Hersteller$(999)
Global Dim Datum$(999)
Global Dim Umfang$(999)
Global Dim Version$(999)  




;Fenster und Gadget-Liste
If OpenWindow(0,100,100,400,520,"Daten laden/speichern",#PB_Window_SystemMenu)
  If CreateGadgetList(WindowID(0))
    ButtonGadget(1,10,10,120,20,"Laden C:\Install.txt")
    ButtonGadget(11,10,30,120,20,"Laden C:\InstallRev1.txt")
    ButtonGadget(2,140,10,150,20,"Speichern C:\InstallRev1.txt")
    ButtonGadget(7,140,30,150,20,"Speichern C:\InstallRev2.txt")
    ButtonGadget(3,300,10,100,20,"Löschen")
    ButtonGadget(8,300,30,100,20,"Exit")
    ListViewGadget(4,20,60,360,380)
    ButtonGadget(5,20,460,150,20,"Ein Element hinzufügen")
    ButtonGadget(6,240,460,140,20,"Letztes Element löschen")
    TextGadget(9, 280, 480, 105, 20, "Created by Velindos")
    TextGadget(10, 15, 445, 365, 20, "Deinstallierbare Software über CCleaner Datei erstellen und bearbeiten")
  EndIf
Else
  MessageRequester("","Fenster konnte nicht geöffnet werden!",0)
EndIf

;StatusBar öffnen
If CreateStatusBar(0,WindowID(0))
  AddStatusBarField(500)
EndIf

;Laden
Procedure Laden()
  ; Datei UTF-16LE mit Signatur (BOM) gespeichert.
  Define Zeile.s  
  Define Usage
  Define Quit
  Define VVE
  Dim Ausgabe.s(999)
  
  Usage = ReadFile(#PB_Any, DateinameLaden$)                            ; Pfad anpassen!
  ;Usage = ReadFile(#PB_Any, "c:\Datei0.txt")                            ; Pfad anpassen!
  
  a=0
   
  If Usage
    
    ReadStringFormat(Usage)
    
    While Not Eof(Usage)                              ; Wir öffnen die Datei pbtutorial.txt zum Lesen
      
      ;[1] Zeile=Str(a):Zeile = Zeile+"   "
      
      text$(a) = ReadString(Usage, #PB_Unicode); Wir lesen die Zeichen auf Zeile 
      
      Software$(a)= StringField(text$(a), 1, #TAB$)  ;Software
      Hersteller$(a)= StringField(text$(a), 2, #TAB$)  ;Hersteller
      Datum$(a)= StringField(text$(a), 3, #TAB$)  ;Datum
      Umfang$(a)= StringField(text$(a), 4, #TAB$)  ;Umfang
      Version$(a)= StringField(text$(a), 5, #TAB$)  ;Version
      
      ;[2] text$(a)  = ReplaceString(text$(a), #TAB$, #LF$) ; Vorkommen des 'SuchString$'zu finden
      
      
      ;[*] Debug StringField(text$(a), 1, " ") ;Zeigen uns Debuger an
      ;[1]Ausgabe(1) = AddGadgetItem(#myListIconGadget, 0, Text$ [, ImageID [, Flags]])
      ;[1]AddGadgetItem(4,-1,text$(a))
      
      AddGadgetItem(4,-1,Software$(a))
      anzahl = a 
      a=a+1;zähler erhöhen
      
    Wend
    ;[*] MessageRequester("Text","Text: "+Ausgabe(1),0)                    ; Nun zeigen wir die Zeichen an 
    CloseFile(Usage)   
    StatusBarText(0,0,"Daten erfolgreich eingelesen"+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
    ; Wir schließen die Datei. Was jedoch nicht unbedingt
  Else                                                                ; Wenn die Datei nicht gefunden wurde
    
    MessageRequester("Fehler","Konnte die Datei nicht öffnen.",0)   ; Fehlermeldung
    
  EndIf          
  
  
  
  
EndProcedure

;Speichern
Procedure Speichern()
  ;UTF-16LE mit Signatur (BOM) gespeichert.
  
  If CreateFile(1,Dateiname$)                  ;[1]OpenFile(#PB_Any,"Daten.txt")
    
    WriteStringFormat(1, #PB_Unicode)
    ;WriteStringN(1 ,Str(anzahl), #PB_Unicode) 		;[1]WriteStringN(1,Str(anzahl))
    
    For a=0 To anzahl
      ;Debug Software$(a)
      ;speicher$=Software$(a)+#TAB$+Hersteller$(a)+#TAB$+Datum$(a)+#TAB$+Umfang$(a)+#TAB$+Version$+#TAB$+#LF$
      ;speicher$ = text$(a)
      speicher$=Software$(a)+#TAB$+Hersteller$(a)+#TAB$+Datum$(a)+#TAB$+Umfang$(a)+#TAB$+Version$
      
      ;text$(a)=ReplaceString(speicher$,#LF$,#TAB$,#PB_String_NoCase)
      ;Debug speicher$
      
      WriteStringN(1,speicher$, #PB_Unicode)
      ;Debug WriteStringN
      ;WriteStringFormat(1, #PB_Unicode)
      
    Next
    
    CloseFile(1)
    
    StatusBarText(0,0,"Daten erfolgreich gespeichert "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
    
  EndIf
  
EndProcedure

;Zum eigentlichen Programmstart: Laden aufrufen  *******************************
Laden()

;Das erste Element der Liste aktivieren
SetGadgetState(4,0)


Repeat
  EventID.l = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    
    ;Schalter LADEN
    If EventGadget()=1
      DateinameLaden$="C:\Install.txt"
      ClearGadgetItemList(4):Laden()
    EndIf
    
    ;Schalter LADEN
    If EventGadget()=11
      DateinameLaden$="C:\InstallRevision1.txt"
      ClearGadgetItemList(4):Laden()
    EndIf
    
    ;Schalter SPEICHERN .txt
    If EventGadget()=2
      Dateiname$= "C:\InstallRevision1.txt"
      Speichern()
    EndIf      
    
    ;Schalter SPEICHERN InstallRev2.txt
    If EventGadget()=7
      Dateiname$= "C:\InstallRevision2.txt"
      Speichern()
    EndIf      
    
    ;Schalter LISTE LÖSCHEN
    If EventGadget()=3
      ClearGadgetItemList(4)
      StatusBarText(0,0,"Liste gelöscht "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
    EndIf
    
    ;Schalter EXIT
    If EventGadget()=8
      End
    EndIf
    
    ;Schalter NEUER EINTRAG
    If EventGadget()=5
      anzahl=anzahl+1
      Software$(anzahl)="Neuer Eintrag "+FormatDate("%hh:%ii:%ss", Date())
      AddGadgetItem(4,anzahl,Software$(anzahl))
      ;text$(anzahl)="Neuer Eintrag "+FormatDate("%hh:%ii:%ss", Date())
      ;AddGadgetItem(4,anzahl,text$(anzahl))
    EndIf
    
    ;Schalter LETZTEN EINTRAG LÖSCHEN
    If EventGadget()=6
      If anzahl>=0
        RemoveGadgetItem(4,anzahl)
        anzahl=anzahl-1
      EndIf
    EndIf
    
  EndIf
  
Until EventID = #PB_Event_CloseWindow   

End 

; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; EnableXP
; DisableDebugger
Hier der aktuelle und korrigierte Stand der Übung.

Nochmals besten Dank für die Hilfe an CodeCommander + c4s + Andesdaf, ins besondere an Kiffi(nicht an Kifi).

Gruss ...................... Velindos

Tip: Icon auf Hompage anzeigen: Icon in Verzeichniss von Index legen und in Index Datei eintragen: <link rel="shortcut icon" href="favicon.ico" >
Praktisch für die Lesezeichenleiste und dirketen Aufruf darüber unter Firefox

Re: Textfile *.txt Bearbeiten

Verfasst: 19.11.2010 11:40
von Kiffi
Velindos hat geschrieben:und nun fuzzzzzzzzzzzzt´s die Sache.
Gratulation! :-) Dann können wir ja jetzt langsam anfangen Deinen
Code ein wenig optimieren (denn der ist -- mit Verlaub -- noch immer
ziemlich gruselig).

Erster Vorschlag: Deine Eventschleife kann ein wenig gestrafft werden.

Du testest jeweils mit If ... EndIf den Wert von EventGadget(). Das ist
überflüssig, weil EventGadget() in einem Durchlauf jeweils immer nur einen
Wert annehmen kann. Hier böte sich eine Select ... Case ... EndSelect-
Struktur an:

Code: Alles auswählen

Define EventID
Define GadgetID

Repeat
  
  EventID = WaitWindowEvent()
  
  If EventID = #PB_Event_Gadget
    
    GadgetID = EventGadget()
    
    Select GadgetID
        
      Case 1 ; Schalter LADEN
        DateinameLaden$="C:\Install.txt"
        ClearGadgetItemList(4):Laden()
        
      Case 11 ; Schalter LADEN
        DateinameLaden$="C:\InstallRevision1.txt"
        ClearGadgetItemList(4):Laden()
        
      Case 2 ; Schalter SPEICHERN .txt
        Dateiname$= "C:\InstallRevision1.txt"
        Speichern()
        
      Case 7 ; Schalter SPEICHERN InstallRev2.txt
        Dateiname$= "C:\InstallRevision2.txt"
        Speichern()
        
      Case 3 ; Schalter LISTE LÖSCHEN
        ClearGadgetItemList(4)
        StatusBarText(0,0,"Liste gelöscht "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
        
      Case 8 ; Schalter EXIT
        End
        
      Case 5 ; Schalter NEUER EINTRAG
        anzahl=anzahl+1
        Software$(anzahl)="Neuer Eintrag "+FormatDate("%hh:%ii:%ss", Date())
        AddGadgetItem(4,anzahl,Software$(anzahl))
        
      Case 6 ; Schalter LETZTEN EINTRAG LÖSCHEN
        If anzahl>=0
          RemoveGadgetItem(4,anzahl)
          anzahl=anzahl-1
        EndIf
        
    EndSelect
    
  EndIf
  
Until EventID = #PB_Event_CloseWindow
Weitere Vorschläge (insbesondere in Bezug auf die Arrays, Verwendung
von Konstanten und Variablen, etc, etc) folgen, wenn Du magst.

Grüße ... Kiffi

Re: Textfile *.txt Bearbeiten

Verfasst: 19.11.2010 13:43
von Velindos
Hallo,
natürlich, vielleicht werde ich noch. Also dein Vorschlag besten Dank, denn hab ich gleich eingearbeitet. Läßt dich nicht bluffen aber jetzt möchte ich Zeile für Zeile bearbeiten und mit einen freien Icon versehen! Hier mal der Code

Code: Alles auswählen

; German Forum: DateiLesenSpeicherBearbeiten 1.0.5
; Author: Velindos
; Date: 19.November 2010
; OS: Windows7 64-Bit
; Demo: Yes
; Created: Daten Beispiel für *.txt Datei
; Weiteres über Daten laden und speichern

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Button_7
  #String_0
  #String_1
  #String_2
  #String_3
  #String_4
  #Text_8
  #Image_0
  #String_6
  #Text_10
  #Button_8
  #Button_9
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
  #Button_17
  #Button_19
  #Text_12
  #Bild0
EndEnumeration

;- StatusBar Constants
;
Enumeration
  #StatusBar_0
EndEnumeration

;- Image Plugins

;- Image Globals
Global Image0

;- Catch Images
;CatchImage(#Bild0,?pinguin)
Image0 = CatchImage(#Bild0, ?Image0)


;- Images
DataSection
  Image0:
  IncludeBinary "C:\Versuch.bmp":
EndDataSection          

;Variablen definieren
Global Dim text$(999):Global anzahl
Global Dateiname$:
Global DateinameLaden$ ="C:\Install.txt"
Global Dim Software$(999)
Global Dim Hersteller$(999)
Global Dim Datum$(999)
Global Dim Umfang$(999)
Global Dim Version$(999)  


;Fenster und Gadget-Liste
If OpenWindow(#Window_0, 303, 54, 392, 510, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateStatusBar(#StatusBar_0, WindowID(#Window_0))
  EndIf
  
  If CreateGadgetList(WindowID(#Window_0))
    ButtonGadget(#Button_0, 120, 10, 125, 25, "Speichern installRev.txt")
    ButtonGadget(#Button_1, 5, 10, 110, 25, "Laden install.txt")
    ButtonGadget(#Button_2, 330, 10, 55, 25, "Exit")
    TextGadget(#Text_0, 40, 145, 70, 20, "Software")
    TextGadget(#Text_1, 40, 175, 70, 20, "Hersteller")
    TextGadget(#Text_2, 40, 205, 70, 20, "Datum")
    TextGadget(#Text_3, 40, 235, 70, 20, "Umfang")
    TextGadget(#Text_4, 40, 265, 70, 20, "Version")
    ButtonGadget(#Button_7, 5, 85, 25, 205, ">||")
    StringGadget(#String_0, 110, 235, 265, 25, "Umfang")
    StringGadget(#String_1, 110, 175, 265, 25, "Hersteller")
    StringGadget(#String_2, 110, 205, 265, 25, "Datum")
    StringGadget(#String_3, 110, 145, 265, 25, "Software")
    StringGadget(#String_4, 110, 265, 265, 25, "Version")
    TextGadget(#Text_8, 275, 85, 30, 20, "Icon")
    ImageGadget(#Bild0, 315, 85, 60, 55, Image0)
    ResizeImage(#Bild0, 60,55)
    SetGadgetState(#Bild0, ImageID(#Bild0))  
    StringGadget(#String_6, 115, 85, 45, 25, "ID")
    TextGadget(#Text_10, 85, 85, 20, 15, "ID")
    ButtonGadget(#Button_8, 5, 425, 165, 25, "Ein ZEILE hinzufügen")
    ButtonGadget(#Button_9, 210, 425, 165, 25, "Letzte ZEILE löschen")
    ButtonGadget(#Button_11, 75, 460, 35, 25, "|<")
    ButtonGadget(#Button_12, 115, 460, 35, 25, "<")
    ButtonGadget(#Button_13, 195, 460, 35, 25, ">")
    ButtonGadget(#Button_14, 235, 460, 35, 25, ">|")
    ButtonGadget(#Button_15, 340, 460, 35, 25, "Neu")
    TextGadget(#Text_12, 10, 465, 60, 20, "Zeile nach ")
    ButtonGadget(#Button_17, 280, 460, 55, 25, "Löschen")
    ButtonGadget(#Button_19, 110, 115, 110, 25, "Zeile Aktualisieren")
  EndIf
Else
  MessageRequester("","Fenster konnte nicht geöffnet werden!",0)
EndIf

;StatusBar öffnen
If CreateStatusBar(0,WindowID(0))
  AddStatusBarField(500)
EndIf

;Laden
Procedure Laden()
  ; Datei UTF-16LE mit Signatur (BOM) gespeichert.
  Define Zeile.s  
  Define Usage
  Define Quit
  Define VVE
  Dim Ausgabe.s(999)
  
  Usage = ReadFile(#PB_Any, DateinameLaden$)                            ; Pfad anpassen!
  ;Usage = ReadFile(#PB_Any, "c:\Datei0.txt")                            ; Pfad anpassen!
  
  a=0
  
  If Usage
    
    ReadStringFormat(Usage)
    
    While Not Eof(Usage)                              ; Wir öffnen die Datei pbtutorial.txt zum Lesen
      
      ;[1] Zeile=Str(a):Zeile = Zeile+"   "
      
      text$(a) = ReadString(Usage, #PB_Unicode); Wir lesen die Zeichen auf Zeile 
      
      Software$(a)= StringField(text$(a), 1, #TAB$)  ;Software
      Hersteller$(a)= StringField(text$(a), 2, #TAB$)  ;Hersteller
      Datum$(a)= StringField(text$(a), 3, #TAB$)  ;Datum
      Umfang$(a)= StringField(text$(a), 4, #TAB$)  ;Umfang
      Version$(a)= StringField(text$(a), 5, #TAB$)  ;Version
      
      ;[2] text$(a)  = ReplaceString(text$(a), #TAB$, #LF$) ; Vorkommen des 'SuchString$'zu finden
      
      
      ;[*] Debug StringField(text$(a), 1, " ") ;Zeigen uns Debuger an
      ;[1]Ausgabe(1) = AddGadgetItem(#myListIconGadget, 0, Text$ [, ImageID [, Flags]])
      ;[1]AddGadgetItem(4,-1,text$(a))
      
      AddGadgetItem(4,-1,Software$(a))
      anzahl = a 
      a=a+1;zähler erhöhen
      
    Wend
    ;[*] MessageRequester("Text","Text: "+Ausgabe(1),0)                    ; Nun zeigen wir die Zeichen an 
    CloseFile(Usage)   
    StatusBarText(0,0,"Daten erfolgreich eingelesen"+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
    ; Wir schließen die Datei. Was jedoch nicht unbedingt
  Else                                                                ; Wenn die Datei nicht gefunden wurde
    
    MessageRequester("Fehler","Konnte die Datei nicht öffnen.",0)   ; Fehlermeldung
    
  EndIf          
  
  
  
  
EndProcedure

;Speichern
Procedure Speichern()
  ;UTF-16LE mit Signatur (BOM) gespeichert.
  
  If CreateFile(1,Dateiname$)                  ;[1]OpenFile(#PB_Any,"Daten.txt")
    
    WriteStringFormat(1, #PB_Unicode)
    ;WriteStringN(1 ,Str(anzahl), #PB_Unicode) 		;[1]WriteStringN(1,Str(anzahl))
    
    For a=0 To anzahl
      ;Debug Software$(a)
      ;speicher$=Software$(a)+#TAB$+Hersteller$(a)+#TAB$+Datum$(a)+#TAB$+Umfang$(a)+#TAB$+Version$+#TAB$+#LF$
      ;speicher$ = text$(a)
      speicher$=Software$(a)+#TAB$+Hersteller$(a)+#TAB$+Datum$(a)+#TAB$+Umfang$(a)+#TAB$+Version$
      
      ;text$(a)=ReplaceString(speicher$,#LF$,#TAB$,#PB_String_NoCase)
      ;Debug speicher$
      
      WriteStringN(1,speicher$, #PB_Unicode)
      ;Debug WriteStringN
      ;WriteStringFormat(1, #PB_Unicode)
      
    Next
    
    CloseFile(1)
    
    StatusBarText(0,0,"Daten erfolgreich gespeichert "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
    
  EndIf
  
EndProcedure

;Zum eigentlichen Programmstart: Laden aufrufen  *******************************
Laden()

;Das erste Element der Liste aktivieren
SetGadgetState(4,0)

Define EventID
Define GadgetID

Repeat
  
  EventID = WaitWindowEvent()
  
  If EventID = #PB_Event_Gadget
    
    GadgetID = EventGadget()
    
    Select GadgetID
        
      Case #Button_1 ; Schalter LADEN
        Debug "Schalter LADEN"
        DateinameLaden$="C:\Install.txt"
        ClearGadgetItemList(4):Laden()
        
      Case #Button_0 ; Schalter SPEICHERN .txt
        Debug "Schalter SPEICHERN"
        Dateiname$= "C:\InstallRevision1.txt"
        Speichern()
        
      Case #Button_2 ; Schalter EXIT
        End
        
      Case #Button_7 ; Schalter ZEILE MARKIEREN
        Debug "ZEILE MARKIEREN"
        
        
        
      Case #Button_19 ; Schalter ZEILEN AKTUALISIEREN
        Debug "ZEILEN AKTUALISIEREN"
        
        
      Case #Button_7 ; Schalter LISTE LÖSCHEN
        Debug "ZEILE MARKIEREN"
        ClearGadgetItemList(4)
        StatusBarText(0,0,"Liste gelöscht "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
        
      Case #Button_8 ; Schalter NEUE ZEILE HINZUFÜGEN 1
        Debug "NEUE ZEILE HINZUFÜGEN 1"
        anzahl=anzahl+1
        Software$(anzahl)="Neuer Eintrag "+FormatDate("%hh:%ii:%ss", Date())
        AddGadgetItem(4,anzahl,Software$(anzahl))
        
      Case #Button_11 ; Schalter GO ERSTE ZEILE
        Debug "GO ERSTE ZEILE"
        
        
      Case #Button_12 ; Schalter GO -1 ZEILE
        Debug "GO -1 ZEILE"
            
        
      Case #Button_13 ; Schalter GO +1 ZEILE
        Debug "GO +1 ZEILE"
        
        
      Case #Button_14 ; Schalter GO LETZE ZEILE
        Debug "GO LETZE ZEILE"
        
        
      Case #Button_17 ; Schalter LÖSCHE ANZEIGE
        Debug "LÖSCHE ANZEIGE"
            
        
      Case #Button_15 ; Schalter NEUE ZEILE HINZUFÜGEN 2
        Debug "NEUE ZEILE HINZUFÜGEN 2"
        anzahl=anzahl+1
        Software$(anzahl)="Neuer Eintrag "+FormatDate("%hh:%ii:%ss", Date())
        AddGadgetItem(4,anzahl,Software$(anzahl))
        
      Case #Button_9 ; Schalter LETZTEN EINTRAG LÖSCHEN
        Debug "LETZTEN EINTRAG LÖSCHEN"
        If anzahl>=0
          RemoveGadgetItem(4,anzahl)
          anzahl=anzahl-1
        EndIf
        
    EndSelect
    
  EndIf
  
Until EventID = #PB_Event_CloseWindow




; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; EnableXP
; DisableDebugger
Düftle gerade wie ich die Zeilen nach (a) ansteuern werde ........................

Gruss >_< ................ Velindos

Re: Textfile *.txt Bearbeiten

Verfasst: 22.11.2010 11:37
von Velindos
Hallo Kifi,
hoffe Wochend war ok! Habe getüfftelt übers Wochend wie ich pro Zeile ein Icon dazu geben kann und dieses Speichern.
Habe aber nur Fliegen im Kopf, gibt es dazu ein Beispiel?????


Gruss ........ Velindos

Re: Textfile *.txt Bearbeiten

Verfasst: 22.11.2010 14:49
von Velindos
Hallo,
habe Drag&Drop eingebunden und einige Probleme mit dem Handling.
1. Wollte noch ein Iconfeld initialisieren aber dann geht das Image1 nicht mehr.
2. Wenn ich den Text ins Notizfeld ziehe hat er keinen Zeilenumbruch.
3. Kann ich jetz das Image an meine Datei anhängen?? Gibt es ein Beispiel
Hier mal der Code

Code: Alles auswählen

; German Forum: DateiLesenSpeicherBearbeiten 1.0.6
; Author: Velindos
; Date: 19.November 2010
; OS: Windows7 64-Bit
; Demo: Yes
; Created: Daten Beispiel für *.txt Datei
; Weiteres über Daten laden und speichern

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_7
  #Button_8
  #Button_9
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
  #Button_17
  #Button_19
  #Button_21
  #Button_23
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_8
  #Text_10
  #Text_12
  #Text_14
  #Text_16
  #String_0
  #String_1
  #String_2
  #String_3
  #String_4
  #String_6
  #String_8
  #String_10
  #Image_0
  #Image_1
  #Bild0
  #Bild1
  #TargetImage 
  #TargetIcon
  #TargetPfad
  #TargetText
  
EndEnumeration

;- Image Enumeration
;
Enumeration    ; Images
  ;#ImageSource
  #ImageTarget
  #ImageIcon
EndEnumeration



;- Image Globals
Global Image0
Global Image1

;- Catch Images
;CatchImage(#Bild0,?pinguin)
Image0 = CatchImage(#Bild0, ?Image0)
Image1 = CatchImage(#Bild1, ?Image1)

;- Images
DataSection
  Image0:
  IncludeBinary "C:\Versuch.bmp":
  Image1:
  IncludeBinary "C:\Versuch.bmp":
EndDataSection       



;- StatusBar Constants
;
Enumeration
  #StatusBar_0
EndEnumeration



;Variablen definieren
Global Dim text$(999):Global anzahl
Global Dateiname$:
Global DateinameLaden$ ="C:\Install.txt"
Global MarkiertSoftware$:
Global MarkiertHersteller$:
Global MarkiertDatum$:
Global MarkiertUmfang$:
Global MarkiertVersion$
Global Dim Software$(999)
Global Dim Hersteller$(999)
Global Dim Datum$(999)
Global Dim Umfang$(999)
Global Dim Version$(999)  


;Fenster und Gadget-Liste
If OpenWindow(#Window_0, 303, 54, 392, 510, "Drag & Drop  ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateStatusBar(#StatusBar_0, WindowID(#Window_0))
    
    CreateImage(#ImageTarget, 160, 160)
    If StartDrawing(ImageOutput(#ImageTarget))
      Box(0, 0, 136, 136, $FFFFFF)
      DrawText(5, 5, "Drop images here", $000000, $FFFFFF)
      StopDrawing()
    EndIf  
    
    ;CreateImage(#ImageIcon, 50, 50)
    ;If StartDrawing(ImageOutput(#ImageIcon))
     ; Box(0, 0, 136, 136, $FFFFFF)
      ;DrawText(5, 5, "DropIcon", $000000, $FFFFFF)
      ;StopDrawing()
    ;EndIf  
    
    
  EndIf
  
  If CreateGadgetList(WindowID(#Window_0))
    ButtonGadget(#Button_0, 120, 5, 125, 25, "Speichern installRev.txt")
    ButtonGadget(#Button_1, 5, 5, 110, 25, "Laden install.txt")
    ButtonGadget(#Button_2, 330, 5, 55, 25, "Exit")
    TextGadget(#Text_0, 40, 90, 70, 20, "Software")
    TextGadget(#Text_1, 40, 120, 70, 20, "Hersteller")
    TextGadget(#Text_2, 40, 150, 70, 20, "Datum")
    TextGadget(#Text_3, 40, 180, 70, 20, "Umfang")
    TextGadget(#Text_4, 40, 210, 70, 20, "Version")
    ButtonGadget(#Button_7, 5, 35, 25, 195, ">||")
    StringGadget(#String_0, 115, 180, 265, 25, "Umfang")
    StringGadget(#String_1, 115, 120, 265, 25, "Hersteller")
    StringGadget(#String_2, 115, 150, 265, 25, "Datum")
    StringGadget(#String_3, 115, 90, 265, 25, "Software")
    StringGadget(#String_4, 115, 210, 265, 25, "Version")
    TextGadget(#Text_8, 285, 35, 30, 20, "Icon")
    ImageGadget(#Bild0, 38, 32, 50, 50, Image0)
    ResizeImage(#Bild0, 60,55)
    SetGadgetState(#Bild0, ImageID(#Bild0))  
    ; TargetIcon Test1
    ImageGadget(#Bild1, 330, 35, 50, 50, Image1)
    ResizeImage(#Bild1, 50,50)
    SetGadgetState(#Bild1, ImageID(#Bild1))  
    
    ;ImageGadget(#TargetIcon,220, 270, 160, 160, ImageID(#ImageIcon), #PB_Image_Border)  
    
    ImageGadget(#TargetImage,220, 270, 160, 160, ImageID(#ImageTarget), #PB_Image_Border) 
    
    StringGadget(#String_6, 115, 35, 45, 20, "ID")
    TextGadget(#Text_10, 100, 32, 20, 15, "ID")
    ButtonGadget(#Button_8, 5, 435, 165, 25, "Ein Element hinzufügen")
    ButtonGadget(#Button_9, 215, 435, 165, 25, "Letztes Element löschen")
    ButtonGadget(#Button_11, 60, 460, 35, 25, "|<")
    ButtonGadget(#Button_12, 95, 460, 35, 25, "<")
    ButtonGadget(#Button_13, 140, 460, 35, 25, ">")
    ButtonGadget(#Button_14, 180, 460, 35, 25, ">|")
    ButtonGadget(#Button_15, 220, 460, 35, 25, "Neu")
    TextGadget(#Text_12, 5, 465, 55, 20, "Zeile nach ")
    ButtonGadget(#Button_17, 325, 460, 55, 25, "Löschen")
    ButtonGadget(#Button_19, 115, 60, 110, 25, "Zeile Aktualisieren")
    ButtonGadget(#Button_21, 265, 460, 55, 25, "Einfügen")
    ButtonGadget(#Button_23, 260, 5, 55, 25, "Clear")
    StringGadget(#TargetPfad, 45, 240, 335, 25, "Pfad")
    TextGadget(#Text_14, 5, 235, 35, 15, "Pfad")
    TextGadget(#Text_16, 5, 250, 35, 15, "Notiz")
    StringGadget(#TargetText, 5, 270, 210, 160, "Notiz", #PB_String_BorderLess)
  EndIf
Else
  MessageRequester("","Fenster konnte nicht geöffnet werden!",0)
EndIf

;StatusBar öffnen
If CreateStatusBar(0,WindowID(0))
  AddStatusBarField(500)
EndIf

; Now enable the dropping on the target gadgets
;
EnableGadgetDrop(#TargetPfad,#PB_Drop_Text,#PB_Drag_Copy)
EnableGadgetDrop(#TargetText,#PB_Drop_Text,#PB_Drag_Copy)
;EnableGadgetDrop(#TargetIcon,#PB_Drop_Image,#PB_Drag_Copy)
EnableGadgetDrop(#TargetImage,#PB_Drop_Image,#PB_Drag_Copy)




;Laden
Procedure Laden()
  ; Datei UTF-16LE mit Signatur (BOM) gespeichert.
  Define Zeile.s  
  Define Usage
  Define Quit
  Define VVE
  Dim Ausgabe.s(999)
  
  Usage = ReadFile(#PB_Any, DateinameLaden$)                            ; Pfad anpassen!
  ;Usage = ReadFile(#PB_Any, "c:\Datei0.txt")                            ; Pfad anpassen!
  
  a=0
  
  If Usage
    
    ReadStringFormat(Usage)
    
    While Not Eof(Usage)                              ; Wir öffnen die Datei pbtutorial.txt zum Lesen
      
      ;[1] Zeile=Str(a):Zeile = Zeile+"   "
      
      text$(a) = ReadString(Usage, #PB_Unicode); Wir lesen die Zeichen auf Zeile 
      
      Software$(a)= StringField(text$(a), 1, #TAB$)  ;Software
      Hersteller$(a)= StringField(text$(a), 2, #TAB$)  ;Hersteller
      Datum$(a)= StringField(text$(a), 3, #TAB$)  ;Datum
      Umfang$(a)= StringField(text$(a), 4, #TAB$)  ;Umfang
      Version$(a)= StringField(text$(a), 5, #TAB$)  ;Version
      
      ;[2] text$(a)  = ReplaceString(text$(a), #TAB$, #LF$) ; Vorkommen des 'SuchString$'zu finden
      
      
      ;[*] Debug StringField(text$(a), 1, " ") ;Zeigen uns Debuger an
      ;[1]Ausgabe(1) = AddGadgetItem(#myListIconGadget, 0, Text$ [, ImageID [, Flags]])
      ;[1]AddGadgetItem(4,-1,text$(a))
      
      AddGadgetItem(4,-1,Software$(a))
      anzahl = a 
      a=a+1;zähler erhöhen
      
    Wend
    ;[*] MessageRequester("Text","Text: "+Ausgabe(1),0)                    ; Nun zeigen wir die Zeichen an 
    CloseFile(Usage)   
    StatusBarText(0,0,"Daten erfolgreich eingelesen"+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
    ; Wir schließen die Datei. Was jedoch nicht unbedingt
  Else                                                                ; Wenn die Datei nicht gefunden wurde
    
    MessageRequester("Fehler","Konnte die Datei nicht öffnen.",0)   ; Fehlermeldung
    
  EndIf          
  
  
  
  
EndProcedure

;Speichern
Procedure Speichern()
  ;UTF-16LE mit Signatur (BOM) gespeichert.
  
  If CreateFile(1,Dateiname$)                  ;[1]OpenFile(#PB_Any,"Daten.txt")
    
    WriteStringFormat(1, #PB_Unicode)
    ;WriteStringN(1 ,Str(anzahl), #PB_Unicode) 		;[1]WriteStringN(1,Str(anzahl))
    
    For a=0 To anzahl
      ;Debug Software$(a)
      ;speicher$=Software$(a)+#TAB$+Hersteller$(a)+#TAB$+Datum$(a)+#TAB$+Umfang$(a)+#TAB$+Version$+#TAB$+#LF$
      ;speicher$ = text$(a)
      speicher$=Software$(a)+#TAB$+Hersteller$(a)+#TAB$+Datum$(a)+#TAB$+Umfang$(a)+#TAB$+Version$
      
      ;text$(a)=ReplaceString(speicher$,#LF$,#TAB$,#PB_String_NoCase)
      ;Debug speicher$
      
      WriteStringN(1,speicher$, #PB_Unicode)
      ;Debug WriteStringN
      ;WriteStringFormat(1, #PB_Unicode)
      
    Next
    
    CloseFile(1)
    
    StatusBarText(0,0,"Daten erfolgreich gespeichert "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
    
  EndIf
  
EndProcedure


Procedure AktuellerDatensatz(a)
  StringGadget(#String_0, 115, 180, 265, 25, Umfang$(a))
  StringGadget(#String_1, 115, 120, 265, 25, Hersteller$(a))
  StringGadget(#String_2, 115, 150, 265, 25, Datum$(a))
  StringGadget(#String_3, 115, 90, 265, 25, Software$(a))
  StringGadget(#String_4, 115, 210, 265, 25, Version$(a))
  StringGadget(#String_6, 115, 35, 45, 20, Str(a))
  
EndProcedure

;Zum eigentlichen Programmstart: Laden aufrufen  *******************************
Laden()

;Das erste Element der Liste aktivieren
;SetGadgetState(4,0)
AktuellerDatensatz (a)


Define EventID
Define GadgetID

Repeat
  
  EventID = WaitWindowEvent()
  
  If EventID = #PB_Event_Gadget
    
    GadgetID = EventGadget()
    
    Select GadgetID
        
      Case #Button_1 ; Schalter LADEN
        Debug "Schalter LADEN"
        DateinameLaden$="C:\Install.txt"
        ClearGadgetItemList(4):Laden()
        
      Case #Button_0 ; Schalter SPEICHERN .txt
        Debug "Schalter SPEICHERN"
        Dateiname$= "C:\InstallRevision1.txt"
        Speichern()
        
        
      Case #Button_23 ; Schalter LISTE Clear
        Debug "LISTE Clear"
        ;ClearGadgetItemList(4)
        
        StringGadget(#String_0, 115, 180, 265, 25, "")
        StringGadget(#String_1, 115, 120, 265, 25, "")
        StringGadget(#String_2, 115, 150, 265, 25, "")
        StringGadget(#String_3, 115, 90, 265, 25, "")
        StringGadget(#String_4, 115, 210, 265, 25, "")
        
        StatusBarText(0,0,"Liste gelöscht "+FormatDate("%dd.%mm.%yyyy    %hh:%ii:%ss",Date()),#PB_StatusBar_Center )
        
        
      Case #Button_2 ; Schalter EXIT
        End
        
      Case #Button_7 ; Schalter ZEILE MARKIEREN
        Debug "ZEILE MARKIEREN"
        MarkiertSoftware$ =Software$(a)
        MarkiertHersteller$ =Hersteller$(a)
        MarkiertDatum$ =Datum$(a)
        MarkiertUmfang$ =Umfang$(a)
        MarkiertVersion$ =Version$(a)
        StatusBarText(0,0,"Zeile markiert "+FormatDate("%dd.%mm.%yyyy    %hh:%ii:%ss",Date()),#PB_StatusBar_Center )
        
      Case #Button_19 ; Schalter ZEILEN AKTUALISIEREN
        Debug "ZEILEN AKTUALISIEREN"
        AktuellerDatensatz (a)
        
        
      Case #Button_8 ; Schalter Markiertes Element einfügen
        Debug "Markiertes Element einfügen"
        ;anzahl=anzahl+1
        ;Software$(anzahl)="Neuer Eintrag "+FormatDate("%hh:%ii:%ss", Date())
        ;AddGadgetItem(4,anzahl,Software$(anzahl))
        Software$(a)=MarkiertSoftware$
        Hersteller$(a)=MarkiertHersteller$ 
        Datum$(a) =MarkiertDatum$ 
        Umfang$(a)=MarkiertUmfang$ 
        Version$(a) =MarkiertVersion$
        AktuellerDatensatz (a)
        StatusBarText(0,0,"Markierte Zeile eingefügt "+FormatDate("%dd.%mm.%yyyy    %hh:%ii:%ss",Date()),#PB_StatusBar_Center )
        
      Case #Button_9 ; Schalter LETZTEN EINTRAG LÖSCHEN
        Debug "LETZTEN EINTRAG LÖSCHEN"
        If anzahl>=0
          RemoveGadgetItem(4,anzahl)
          anzahl=anzahl-1
        EndIf
        
        
      Case #Button_11 ; Schalter GO ERSTE ZEILE
        Debug "GO ERSTE ZEILE"
        a=0
        AktuellerDatensatz (a)
        
        
      Case #Button_12 ; Schalter GO -1 ZEILE
        Debug "GO -1 ZEILE"
        If a=0 
          a=1
        EndIf
        a=a-1
        AktuellerDatensatz (a)
        
      Case #Button_13 ; Schalter GO +1 ZEILE
        Debug "GO +1 ZEILE"
        If a=anzahl 
          a=a-1
        EndIf
        a=a+1
        AktuellerDatensatz (a)
        
      Case #Button_14 ; Schalter GO LETZE ZEILE
        Debug "GO LETZE ZEILE"
        a= anzahl
        AktuellerDatensatz (a)
        
      Case #Button_15 ; Schalter NEUE ZEILE HINZUFÜGEN 2
        Debug "NEUE ZEILE HINZUFÜGEN 2"
        anzahl=anzahl+1
        Software$(anzahl)="Neuer Eintrag "+FormatDate("%hh:%ii:%ss", Date())
        a=anzahl
        AktuellerDatensatz (a)
        ;AddGadgetItem(4,anzahl,Software$(anzahl))
        
      Case #Button_21 ; Schalter EINFÜGEN ANZEIGE
        Debug "EINFÜGEN ANZEIGE"
        Umfang$(a) =GetGadgetText(#String_0)
        Hersteller$(a)=GetGadgetText(#String_1)
        Datum$(a)=GetGadgetText(#String_2)
        Software$(a)=GetGadgetText(#String_3)
        Version$(a)=GetGadgetText(#String_4)
        AktuellerDatensatz (a)
        
        
      Case #Button_17 ; Schalter LÖSCHE ANZEIGE
        Debug "LÖSCHE ANZEIGE"
        Umfang$(a) =" "
        Hersteller$(a)=""
        Datum$(a)=""
        Software$(a)=""
        Version$(a)=""
        AktuellerDatensatz (a)
        
        
        
        
    EndSelect   
    
    ; Drop event on the target gadgets, receive the dropped data
    ;
  ElseIf EventID = #PB_Event_GadgetDrop
    Select EventGadget()
        
      Case #TargetPfad
        ;AddGadgetItem(#TargetText, -1, EventDropText())
        StringGadget(#TargetPfad, 45, 240, 335, 25, EventDropText())
        
        
      Case #TargetText
        ;AddGadgetItem(#TargetText, -1, EventDropText())
        StringGadget(#TargetText, 5, 270, 210, 160, EventDropText())
        
      ;Case #TargetIcon
        ;If EventDropImage(#ImageIcon)
          ;SetGadgetState(#TargetIcon, ImageID(#ImageIcon))
          
          Case #TargetImage
          If EventDropImage(#ImageTarget)
           SetGadgetState(#TargetImage, ImageID(#ImageTarget))
          
          
          
        EndIf
    EndSelect    
  EndIf
  
Until EventID = #PB_Event_CloseWindow




; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; EnableXP
; DisableDebugger
Gruss ......... Velindos

Re: Textfile *.txt Bearbeiten

Verfasst: 22.11.2010 15:58
von Kiffi
Velindos hat geschrieben:2. Wenn ich den Text ins Notizfeld ziehe hat er keinen Zeilenumbruch.
StringGadgets sind für einzeilige Eingaben gedacht und unterstützen von Haus aus
keinen Zeilenumbruch. EditorGadgets eignen sich hierfür besser. Positiver Nebeneffekt:
Das EditorGadget beherrscht Drag & Drop von ganz allein.
Velindos hat geschrieben:3. Kann ich jetz das Image an meine Datei anhängen?? Gibt es ein Beispiel
Wenn Du ein Bild (=Binärdatei) in eine Textdatei speichern willst, musst Du die Binärdaten
vorher in Base64 wandeln (Stich-/Suchwörter für Dich Base64Decoder() / Base64Encoder()).

Grüße ... Kiffi

Re: Textfile *.txt Bearbeiten

Verfasst: 22.11.2010 17:23
von Velindos
Hallo Kiffi,
vorab besten Dank für deine Vorschläge, auch den mit der Punktution.

Abgesehen bin ich gerade beim überlegen wie ich die Sache weiter betreibe. Habe mir die Sache durch den Kopf gehen lassen, und denke das ich mal einen Blick in SQLite werfe. Habe mir das Beispiel von "PBOSL430_ExDataBase" geladen und reingeguckt. Frage: Gibt es bereits Beispiel ähnlich meinem?? Liege ich richtig das ich in SQLite auch meine Icon und Bilder speichern könnte? Habe gelesen dazu brauche ich die SQLite3.dll. Wo bekomme ich diese bzw.muss die dann immer dabei sein.

Gruss ... Velindos (geht doch!)

Re: Textfile *.txt Bearbeiten

Verfasst: 22.11.2010 17:26
von Kiffi
Velindos hat geschrieben:Liege ich richtig das ich in SQLite auch meine Icon und Bilder speichern könnte?
ja, da liegst Du richtig :-)
Velindos hat geschrieben:Habe gelesen dazu brauche ich die SQLite3.dll.
die brauchst Du nicht. Ist alles in PB eingebaut. <) Schau Dir hierzu mal
das Database-Kapitel in der Hilfe an.

Grüße ... Kiffi

Re: Textfile *.txt Bearbeiten

Verfasst: 23.11.2010 10:24
von Velindos
Hallo,
habe das mit Base64Encoder angegangen. Werde nicht schlau wie ich mehre Bilder (Image0: IncludeBinary "C:\Versuch.bmp") als Variable anlege um Sie in den test.s zu bekommen, könnt Ihr mir da helfen:

Code: Alles auswählen

test.s = "This is a test string!" 
  dec.s = Space(1024) 
  enc.s = Space(1024) 
    
  Debug Base64Encoder(@test, StringByteLength(test), @enc, 1024)
  Debug enc 
    
  Debug Base64Decoder(@enc, StringByteLength(enc), @dec, 1024)
  Debug dec
Gruss ….. Velindos

Re: Textfile *.txt Bearbeiten

Verfasst: 23.11.2010 11:07
von Kiffi
dürfte so funktionieren:

Code: Alles auswählen

EnableExplicit

Define BildDatei.s
Define Dateikanal
Define SpeicherPufferGroesse
Define SpeicherPuffer
Define BildString.s

BildDatei = #PB_Compiler_Home + "Examples\Sources\Data\File.bmp"

Dateikanal = ReadFile(#PB_Any, BildDatei)

If Dateikanal
  
  SpeicherPufferGroesse = Lof(Dateikanal)
  
  SpeicherPuffer = AllocateMemory(SpeicherPufferGroesse)
  
  If SpeicherPuffer
    
    ReadData(Dateikanal, SpeicherPuffer, SpeicherPufferGroesse)
    
    BildString = Space(SpeicherPufferGroesse * 2)
    
    Base64Encoder(SpeicherPuffer, SpeicherPufferGroesse, @BildString, StringByteLength(BildString))
    
    MessageRequester("Die ersten 1000 Zeichen:", Left(BildString, 1000))
    
    FreeMemory(SpeicherPuffer)
    
  Else
    
    Debug "!SpeicherPuffer"
    
  EndIf
  
  CloseFile(Dateikanal)
  
Else
  
  Debug "!ReadFile"
  
EndIf
(dürfte eigentlich selbsterklärend sein)

Grüße ... Kiffi