Datensicherung / Backupprogramm

Anfängerfragen zum Programmieren mit PureBasic.
SC
Beiträge: 18
Registriert: 12.02.2005 01:44

Datensicherung / Backupprogramm

Beitrag von SC »

Hallo Zusammen,

ich möchte ein BackUp-Programm erstellen und habe da auch schon etwas sehr simples gebastelt.

Code: Alles auswählen

If CreateDirectory("D:\MeinProgramm\")
Debug "OK Hauptverzeichniss"
EndIf
If CreateDirectory("D:\Backup\")
Debug "OK Unterverzeichniss"
EndIf
CopyFile("D:\MeinProgramm\test1.dat", "D:\Suat\Backup\test1.dat" )
CopyFile("D:\MeinProgrammtest2.dat", "D:\Suat\Backup\test2.dat" ) 
CopyFile("D:\MeinProgramm\test3.dat", "D:\Suat\Backup\test3.dat" ) 
CopyFile("D:\MeinProgramm\test4.dat", "D:\Suat\Backup\test4.dat" ) 
MessageRequester("Die Daten wurden kopiert",#PB_MessageRequester_Ok)
Ich möchte den obigen Code um folgende Funktionen ergänzen:
1. Es soll herausfinden wo "MeinProgramm" gespeichert ist und sollte von dort die Daten (test1.dat, test2.dat usw.) kopieren.
2. Der Anwender sollte die Möglichkeit haben selbst ein Zielverzeichnis auszuwählen.
3. Als Unterverzeichnis sollte es den aktuellen Datum als Bezeichnung haben.

Hat jeman eine Idee, oder kann mir jemabd hierbei weiterhelfen?
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ideen:

1. Du musst die Festplatte rekursiv durchsuchen. Such mal in diesem Forum nach "rekursiv", dann findest du genügend Codes, die Ordner für Ordner (und auch Unterordner) durchsuchen. Ändere diese n Code leicht ab, um deine gewünschten Dateien zu finden. (rekursiv = Prozedur, die sich selbst aufruft)

2. Sieh dir mal PathRequester() oder ExplorerTreeGadget() an.

3. Das Datum bekommst du mit Date(). Setze das Datum in FormatDate() ein, und du erhälst ein Datum als String, den du in CreateDirectory() einsetzen kannst.

Diese 3 Vorhaben (besonders die letzten beiden) sind sehr leicht umzusetzen. Versxuch's erst mal selbst, wenn es dann immer noch nicht klappt, stellst du deinen Code hier rein und dir kann immer noch geholfen werden.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
SC
Beiträge: 18
Registriert: 12.02.2005 01:44

Nochmals die Bitte um qulifizierte Antwort

Beitrag von SC »

Hallo AND51,

danke für die rasche Antwort, jedoch bringen mich Deine Verweise nicht wirklich weiter. Ich hoffe das es nicht unverschämt ist, aber am liebsten wäre mir eine Ergänzung meines obigen Codes oder etwas ähnliches in der Art. Es dürfte eigentlich nicht mehr viel fehlen um mein Vorhaben zu vervollständigen. Daher nochmals meine Bitte an die Gemeinschaft um qualifizierte Hilfe in der Angelegenheit.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Nochmals die Bitte um qulifizierte Antwort

Beitrag von Kiffi »

Hallo SC,

normalerweise praktizieren wir hier Hilfe zur Selbsthilfe. Hier gibt es
genügend Leute, die den vollständigen Code aus dem Ärmel schütteln
könnten, aber dabei hättest Du (bis auf ein Programm, von dem Du nicht
die geringste Ahnung hast, wie es genau funktioniert) nicht viel gewonnen.

AND51 hat genau die richtigen Stichworte genannt, mit denen Du hier eine
Menge Code findest. Diesen musst Du lediglich geschickt miteinander
kombinieren und Du bist am Ziel. Nebenbei hat das auch den Vorteil, dass
Du danach genau weißt, wie Dein Programm tickt.
SC hat geschrieben:Es dürfte eigentlich nicht mehr viel fehlen um mein Vorhaben zu vervollständigen.
doch, es fehlt noch eine ganze Menge! Der Schnipsel, den Du gepostet hat,
ist noch sehr weit davon entfernt in irgendeiner Form mit dem Begriff
'Backup' in Verbindung gebracht zu werden.

Vorschlag zur Güte: Setz Dich mal hin und versuche die hier vorhandenen
Informationen umzusetzen. Wenn Du auf Schwierigkeiten stößt, die nicht
durch die hier bereits geposteten Beiträge oder die PB-Hilfe gelöst werden
können, werden wir Dir sicherlich sehr gerne Hilfestellungen zu konkreten
Problemen leisten.

Grüße ... kiffi
a²+b²=mc²
SC
Beiträge: 18
Registriert: 12.02.2005 01:44

Beitrag von SC »

Hallo Kiffi,

Du hast im Prinzip schon recht, jedoch komme ich leider kein bischen voran.
Ich habe PB auch schon ewig nicht mehr benutzt und brauche es jetzt eigentlich auch nur für diesen Zweck.

Das was ich im Forum gefunden habe, konnte ich leider nicht zusammenfügen, so das es zu dem von mir gewünschten Ergebnis kommt.

Und so sieht es bisher aus:

Code: Alles auswählen

Enumeration
  #window_0
 
  #explorer_tree
EndEnumeration

If OpenWindow(#window_0, 0, 0, 300, 300, "ExplorerTreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(#window_0))
    ExplorerTreeGadget(#explorer_tree, 10, 10, 280, 280, "")
  EndIf
EndIf

Repeat   
  Event = WaitWindowEvent()
  GadgetID = EventGadget()
 
 
  If Event = #PB_Event_CloseWindow
    quit = #True
  ElseIf Event = #PB_Event_Gadget
    If GadgetID = #explorer_tree
      If EventType() = #PB_EventType_LeftDoubleClick
        explorer$ = GetGadgetText(#explorer_tree)
        quit = #True
      EndIf
    EndIf
  EndIf
 
Until quit = #True
CloseWindow(#window_0)
MessageRequester("Datei",explorer$)

;Datum$ = FormatDate("%yyyy%mm%dd", Date())

CopyFile("D:\test\test1.dat", "D:\explorer$ test1.dat" )
CopyFile("D:\test\test2.dat", "D:\explorer$ test2.dat" )
CopyFile("D:\test\test3.dat", "D:\explorer$ test3.dat" )
CopyFile("D:\test\test4.dat", "D:\explorer$ test4.dat" )
;MessageRequester("Die Daten wurden kopiert",#PB_MessageRequester_Ok)

End
Liebe Grüße: SC
Friedhelm
Beiträge: 43
Registriert: 29.08.2004 08:50

Beitrag von Friedhelm »

zu 1.
such mal nach GetExePath() von TS-Soft
mfg
Friedhelm
SC
Beiträge: 18
Registriert: 12.02.2005 01:44

Beitrag von SC »

für alle die unbedingt meinen etwas beitragen zu müssen, habe ich auch einen Verweis.

siehe mal im Lexikon nach unter:
qulifizierte Antwort? :oops:
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Hi SC,

um ein vollständiges Programm zu erstellen gehört etwas mehr dazu als nur ein paar Zeilen.

Da hat Kiffi recht und man muss sich langsam in allen Befehlen und Funktionen einarbeiten. Dadurch entsteht langsam ein Verständnis für programmierung und es baut sich auf sicht eine Sammlung von Codebausteinen auf.

Für den Anfang sollte man auch erst ohne Extern Userlib arbeiten.

Zum Beispiel benötigt meine Backupprogramm (
http://www.purebasic.fr/german/viewtopic.php?t=14188
etwa 96+141+1212+97+292+32+95 Programmzeilen inklusive Kommentare.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

@SC
vielleicht versteh ich dich ja falsch, aber dein letztes posting klingt etwas 'roh', und scheint mir bis jetzt der einzig unqualifizierte beitrag im thread zu sein.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@SC:

* Du benötigst u.a. eine Funktion, die Dir alle Dateien eines Ordners
ermittelt. Beispielsweise die hier von Lebostein:
http://www.purebasic.fr/german/viewtopi ... 0742#80742

Anstelle von

Code: Alles auswählen

Debug "File: " + EntryPath + EntryName
kannst Du dort Dein CopyFile() einsetzen.

Hilft Dir das erst mal weiter?

Grüße ... Kiffi
a²+b²=mc²
Antworten