Seite 1 von 2

Datensicherung / Backupprogramm

Verfasst: 02.11.2007 03:57
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?

Verfasst: 02.11.2007 04:51
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.

Nochmals die Bitte um qulifizierte Antwort

Verfasst: 02.11.2007 16:51
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.

Re: Nochmals die Bitte um qulifizierte Antwort

Verfasst: 02.11.2007 17:13
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

Verfasst: 02.11.2007 18:50
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

Verfasst: 02.11.2007 21:29
von Friedhelm
zu 1.
such mal nach GetExePath() von TS-Soft

Verfasst: 02.11.2007 22:42
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:

Verfasst: 02.11.2007 22:50
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:

Verfasst: 02.11.2007 23:02
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.

Verfasst: 03.11.2007 01:15
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