StringGadget-Text mit GetGadgetText() ermitteln

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Noch ne Frage:
Wenn ich zb. bei einer Installation oder beim Kopieren von etwas ein ExplorerTreeGadget mach und danach das Verzeichnis mittels

Code: Alles auswählen

result.s = GetGadgetText(0) 
ermittelt habe,
Wie mache ich dann, dass das ZielVerzeichnis$ bei

Code: Alles auswählen

CopyDirectory(AusgangsVerzeichnis$, ZielVerzeichnis$, Pattern$ [, Modus])
Auf das ermittelte umgestellt wird???
Benutzeravatar
BlueHoschi
Beiträge: 97
Registriert: 02.10.2007 07:19

Beitrag von BlueHoschi »

Code: Alles auswählen

ZielVerzeichnis$ = result.s
oder was meinst Du?
Wer Dir Steine in den Weg legt, pflastert den vielleicht.

PB 5.21, Win 7 64 bit
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Im Prinzip schon ja aber klappt i wie nicht... (ich bin haltn n00b in pb)

Hier mal der GadgetEvent wo das Ganze sich eigl. abspielen soll:

Code: Alles auswählen

If Event = #PB_Event_Gadget
       If EventGadget() = 0
           result.s = GetGadgetText(7)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(5, 25)
           CopyDirectory(AusgangsVerzeichnis$, "C:\backup\", "", #PB_FileSystem_Recursive)
           SetGadgetState(5, 100)
           MessageRequester("Info", "Die komplette Installation wurde erfolgreich gesichert!")
           End
     EndIf
       EndIf
In dem Backupprogramm sucht man halt mit ExploreTreeGadget das Verzeichnis der bestimmten Anwendung raus und das Programm kopiert dann ein Backup in C:\backup
...
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Du solltest übrigens

Code: Alles auswählen

If CopyDirectory(AusgangsVerzeichnis$, "C:\backup\", "", #PB_FileSystem_Recursive)
  MessageRequester("Info", "Die komplette Installation wurde erfolgreich gesichert!")
Else
  MessageRequester("Fehler", "Die komplette Installation wurde nicht erfolgreich gesichert!")
EndIf
schreiben um sicherzugehen das es überhaupt geklappt hat...
(\/) (°,,,°) (\/)
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

ok danke hab grad ne lektion gelernt des in zukunft nicht zu vergessen. :allright:
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Sry dass ich ich nochmal melden muss, aber ich brauch schnell ne Hilfe zu meinem Script. Nach deinem Tipp hat alles wieder geklappt, dann hab ich weitergemacht und war nach 232 Zeilen fertig. Ein einfacher, n00bischer und schlampiger Script, sollte aber eigl. funktionieren. Tut er aber nicht!
Er kann nämlich auf einmal die/das Verzeichnis(e) nichtmehr kopieren.
Eigl. wollte ich es vermeiden den kompletten Quellcode hochzuladen, aber es muss wohl sein, denn ich häng hier wirklich :| . Vllt. könntet ihr euch kurz den Script durchsehn und mir sagen warum er beim Sichern (kopieren) aufeinmal immer scheitert.

Das ganze ist ganz einfach:
bei den Slot-sicherungen kopiert er die einzelnen Slots nach C:\backup\
und beim wiederherstellen einfach wieder zurück. Am anfang überprüft er ob das Verzeichnis und die einzelnen Slots überhaupt exististieren und deaktiviert ggfls. die Wiederherstellungsbuttons, wenn nicht vorhanden.

Danke

Code: Alles auswählen

If OpenWindow(0, 0, 0, 270, 550, "Gecko v0.9 [BETA]", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)

   If CreateGadgetList(WindowID(0))
      ButtonGadget(0, 30, 50, 200, 20, "Slot 1")
      ButtonGadget(1, 30, 70, 200, 20, "Slot 2")
      ButtonGadget(2, 30, 90, 200, 20, "Slot 3")
      ButtonGadget(3, 30, 110, 200, 20, "Slot4")
      ButtonGadget(4, 30, 160, 200, 20, "Slot 1")
      ButtonGadget(5, 30, 180, 200, 20, "Slot 2")
      ButtonGadget(6, 30, 200, 200, 20, "Slot 3")
      ButtonGadget(7, 30, 220, 200, 20, "Slot4")
      ExplorerTreeGadget(8, 10, 330, 250, 150, Verzeichnis$)
      ProgressBarGadget(9,  5, 490, 260,  30, 0, 100)
      SetGadgetState   (9, 0)
      TextGadget(10, 50, 10, 250, 20, "Installationen:")
      TextGadget(11, 105, 35, 250, 20, "Sichern:")
      TextGadget(12, 85, 145, 250, 20, "Wiederherstellen:")
      TextGadget(13, 40, 315, 250, 20, "Bitte Verzeichnis wählen:")
      ButtonGadget(14, 30, 260, 200, 40, "Alle Sicherungen löschen")
        
   EndIf

     

   If CreateMenu(0, WindowID(0))
     MenuTitle("Menü")
     MenuItem(1, "Hilfe")
     MenuItem(2, "Über...")
     MenuItem(3, "Beenden")
   EndIf
   
   If SetCurrentDirectory("C:\backup\Slot 1")
      DisableGadget(4, 0)
      DisableGadget(0, 1)
   Else
      DisableGadget(4, 1)
   EndIf
   
   If SetCurrentDirectory("C:\backup\Slot 2")
      DisableGadget(5, 0)
      DisableGadget(1, 1)
   Else
      DisableGadget(5, 1)
   EndIf
   
   If SetCurrentDirectory("C:\backup\Slot 3")
      DisableGadget(6, 0)
      DisableGadget(2, 1)
   Else
      DisableGadget(6, 1)
   EndIf
   
   If SetCurrentDirectory("C:\backup\Slot 4")
      DisableGadget(7, 0)
      DisableGadget(3, 1)
   Else
      DisableGadget(7, 1)
   EndIf
   
   If SetCurrentDirectory("C:\backup\")
      DisableGadget(14, 0)
   Else
      DisableGadget(14, 1)
   EndIf


   Repeat
     Event = WaitWindowEvent()

     If Event = #PB_Event_Gadget
       If EventGadget() = 14
           SetGadgetState(9, 25)
        If DeleteDirectory("C:\backup\", "", #PB_FileSystem_Recursive | #PB_FileSystem_Force)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Alle Sicherungen wurden erfolgreich gelöscht.")
           End
        Else
           MessageRequester("Fehler", "Die Sicherungen konnten nicht gelöscht werden.")
           End
        EndIf
           
     EndIf
       EndIf
     
     If Event = #PB_Event_Gadget
       If EventGadget() = 0
           result.s = GetGadgetText(8)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(9, 25)
        If CopyDirectory(AusgangsVerzeichnis$, "C:\backup\Slot 1\", "", #PB_FileSystem_Recursive)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Die komplette  Installation wurde erfolgreich gesichert!")
           End
        Else
           MessageRequester("Fehler", "Die Sicherung konnte nicht erstellt werden.")
           End
        EndIf
           
     EndIf
       EndIf
       
    If Event = #PB_Event_Gadget
       If EventGadget() = 1
           result.s = GetGadgetText(8)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(9, 25)
        If CopyDirectory(AusgangsVerzeichnis$, "C:\backup\Slot 2\", "", #PB_FileSystem_Recursive)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Die komplette Installation wurde erfolgreich gesichert!")
           End
        Else
           MessageRequester("Fehler", "Die Sicherung konnte nicht erstellt werden.")
           End
        EndIf
           
     EndIf
       EndIf
       
    If Event = #PB_Event_Gadget
       If EventGadget() = 2
           result.s = GetGadgetText(8)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(9, 25)
        If CopyDirectory(AusgangsVerzeichnis$, "C:\backup\Slot 3\", "", #PB_FileSystem_Recursive)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Die komplette Installation wurde erfolgreich gesichert!")
           End
        Else
           MessageRequester("Fehler", "Die Sicherung konnte nicht erstellt werden.")
           End
        EndIf
           
     EndIf
       EndIf
       
    If Event = #PB_Event_Gadget
       If EventGadget() = 3
           result.s = GetGadgetText(8)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(9, 25)
        If CopyDirectory(AusgangsVerzeichnis$, "C:\backup\Slot 4\", "", #PB_FileSystem_Recursive)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Die komplette  Installation wurde erfolgreich gesichert!")
           End
        Else
           MessageRequester("Fehler", "Die Sicherung konnte nicht erstellt werden.")
           End
        EndIf
           
     EndIf
       EndIf
       
    If Event = #PB_Event_Gadget
       If EventGadget() = 4
           result.s = GetGadgetText(8)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(9, 25)
        If CopyDirectory("C:\backup\Slot 1\", AusgangsVerzeichnis$, "", #PB_FileSystem_Recursive)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Die komplette Installation wurde wiederhergestellt.")
           End
        Else
           MessageRequester("Fehler", "Die Sicherung konnte nicht wiederhergestellt werden.")
           End
        EndIf
           
     EndIf
       EndIf
       
    If Event = #PB_Event_Gadget
       If EventGadget() = 5
           result.s = GetGadgetText(8)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(9, 25)
        If CopyDirectory("C:\backup\Slot 2\", AusgangsVerzeichnis$, "", #PB_FileSystem_Recursive)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Die komplette Installation wurde wiederhergestellt.")
           End
        Else
           MessageRequester("Fehler", "Die Sicherung konnte nicht wiederhergestellt werden.")
           End
        EndIf
           
     EndIf
       EndIf
       
    If Event = #PB_Event_Gadget
       If EventGadget() = 6
           result.s = GetGadgetText(8)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(9, 25)
        If CopyDirectory("C:\backup\Slot 3\", AusgangsVerzeichnis$, "", #PB_FileSystem_Recursive)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Die komplette Installation wurde wiederhergestellt.")
           End
        Else
           MessageRequester("Fehler", "Die Sicherung konnte nicht wiederhergestellt werden.")
           End
        EndIf
        
    If Event = #PB_Event_Gadget
       If EventGadget() = 7
           result.s = GetGadgetText(8)
           AusgangsVerzeichnis$ = result.s
           SetGadgetState(9, 25)
        If CopyDirectory("C:\backup\Slot 4\", AusgangsVerzeichnis$, "", #PB_FileSystem_Recursive)
           SetGadgetState(9, 100)
           MessageRequester("Info", "Die komplette Installation wurde wiederhergestellt.")
           End
        Else
           MessageRequester("Fehler", "Die Sicherung konnte nicht wiederhergestellt werden.")
           End
        EndIf
           
     EndIf
       EndIf
           
     EndIf
       EndIf
     
     Select Event
       
       Case #PB_Event_Menu
         Select EventMenu()
           Case 1 : MessageRequester("Hilfe", "Hier entsteht eine Hilfe.")
           Case 2 : MessageRequester("Credits", "Über...")
           Case 3 : End
         EndSelect
     
     EndSelect
   Until Event = #PB_Event_CloseWindow
 EndIf
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Vermutlich existiert bei dir der Ordner "C:\backup\" nicht, den musst du erstellen bevor du die einzelnen Slot-Ordner erstellen kannst!
Stell einfach folgenden Code vor dein Progamm:

Code: Alles auswählen

If FileSize("C:\backup\") <> -2 ;wenn bei "C:\backup\" kein Ordner ist...
  If CreateDirectory("C:\backup\") = 0 ;... dann Ordner erstellen!
    MessageRequester("Fehler","Konnte Ordner nicht erstellen!",#MB_ICONERROR) ;Konnte nicht erstellt werden!
    End ;Abbruch
  EndIf
EndIf
So hats dann bei mir geklappt...
(nettes übersichtliches Programm übrigens)
(\/) (°,,,°) (\/)
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Ne s00ry klappt immernoch nicht. Beim Sichern kommt imernoch die meldung dass er nicht speichern konnte.

Code: Alles auswählen

#MB_ICONERROR
gibts bei mir übrigens nicht. Welche Version benutzt du? - Ich 4.10
Woran könnte es sonst liegen? Ich hab immerhin mehrere Stunden (als anfänger) an dem script verbracht. :|

[EDIT] Den Ordner hat er beim sichern damals automatisch erstellt, wenn er nicht da war.
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

Beitrag von ts-soft »

DrNo hat geschrieben:

Code: Alles auswählen

#MB_ICONERROR
gibts bei mir übrigens nicht. Welche Version benutzt du? - Ich 4.10
Die Konstante sollte in allen Windows-Vollversionen zur Verfügung stehen.
Entweder Deine Installation ist fehlerhaft oder Du nutzt die Demo, wo die
API Konstanten usw. fehlen.
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
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

ja ich benutze die demo (habs empfohlen bekommen)
Aber das ganze wird doch sicherlich auch mit der demo gehn oder?
Den Ordner hat er ja früher selber erstellt.
Wär ja schade wenn alles umsonst wär...ich hab den ganzen Nachmittag daran verbacht. :cry:

es gibt ja bestimmt noch eine andere möglichkeit das Problem zu lösen.
Antworten