Seite 1 von 1

CopyDirectory ein Bug (PB 4.0)

Verfasst: 25.06.2006 10:12
von alphabeth1970
Ich habe in meinem kleinen Programm den Befehl CopyDirectory benutzt. Dieser macht aber nicht das, was er soll ... der Befehl macht nämlich gar nichts.
Dann habe ich ein Update über SmartUpdate gemacht. Nun funktioniert der Compiler nicht mehr. :evil:

Was kann ich nun tun????

Verfasst: 25.06.2006 10:22
von ts-soft
Kopiere mit dem Dateimanager Deiner Wahl, lösche Deinen PB-Ordner und Installiere Erneut :twisted:

Verfasst: 25.06.2006 11:04
von mardanny71
Mit Smart - Update bekommst Du zur Zeit höchstens das letzte Update von 3.94 aufgespielt.

Ja, lösche wirklich alles und spiele Dir PB4 nochmal frisch auf.

grüsse an alle
mardanny71

Verfasst: 25.06.2006 11:09
von alphabeth1970
Hab ich nun so gemacht. Jetzt funktioniert der Compiler wenigsten wieder. :allright:

Weiß denn jemand, ob in dem Befehl CopyDirectory wirklich ein Fehler ist? Wenn ich über einen PathRequester den Ordner aussuche, in den ein Ordner und der gesamte Inhalt kopiert werden soll, dann passiert nämlich nüscht .... /:->

Verfasst: 25.06.2006 12:07
von PBZecke
Grundsätzlich funktioniert copydirectory schon, nur nicht ganz so wie in der
Hilfe beschrieben. Entegegen der Beschreibung in der Hilfe wird nicht das
Ausgangsverzeichnis in das Zielverzeichnis kopiert, sondern nur der Inhalt
des Ausgangsverzeichnisses.

Um zu wissen warum das bei Dir nicht funktioniert braüchte man ein wenig
code von Dir.

Verfasst: 25.06.2006 12:09
von mardanny71

Code: Alles auswählen

Debug ergebnis = CopyDirectory("C:\Beispiel","C:\Beispiel1","",#PB_FileSystem_Recursive) 
Geht, wenn Ordner Beispiel existiert.

Sende mal ein Codebeispiel.
Dann wird Dir sicher jemand helfen. :wink:

grüsse an alle
mardanny71

Verfasst: 25.06.2006 12:10
von Kiffi
> Weiß denn jemand, ob in dem Befehl CopyDirectory wirklich ein
> Fehler ist?

nicht, wenn man folgende Regeln beachtet:

* Das Target-Directory muss existieren

* Das Target-Directory darf nicht mit einem Backslash enden

* (Das Source-Directory kann (muss aber nicht) mit einem Backslash enden)

Code: Alles auswählen

CopyDirectory("D:\source", "D:\target", "", #PB_FileSystem_Recursive)
... funktioniert bei mir

Grüße ... Kiffi

Verfasst: 25.06.2006 12:20
von alphabeth1970
Also, hier mal der Code. Auch ohne Backslash und mit existierendem Verzeichnis wird das Verzeichnis inkl. Dateien nicht kopiert.

In die Variable Verzeichnis$ wird der Wert aber hineingeschrieben (mit MessageRequester habe ich mir das anzeigen lassen). Allerdings wir hier automatisch ein Backslash angefügt.

Aber, auch wenn ich ohne die Variable arbeite und ein existierendes Verzeichnis angebe (mit und ohne Backslash), wird nix kopiert. :?

-------------------------

OpenWindow(0, 217, 3, 189, 150, "E-M-B", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar )

CreateGadgetList(WindowID(0))
ButtonGadget(1, 30, 10, 130, 30, "Verzeichnis ...")
ButtonGadget(2, 30, 50, 130, 30, "S T A R T")
ButtonGadget(3, 30, 90, 130, 30, "E N D E")

Repeat
EventID=WaitWindowEvent(0)
If EventID = #PB_Event_Gadget
If EventGadget() = 1
Verzeichnis$ = PathRequester("Verzeichnis auswählen ...","C:\Dokumente und Einstellungen\Markus\Eigene Dateien\")
ElseIf EventGadget() = 2
CopyDirectory("C:\Programme\Purebasic\Projekte\",Verzeichnis$,"*.pb")
ElseIf EventGadget() = 3
EventID = #PB_Event_CloseWindow
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow

-------------------------

Wäre nett, wenn da jemand meinen Fehler herausfände ...

Vielen Dank

Verfasst: 25.06.2006 12:38
von PBZecke

Code: Alles auswählen

OpenWindow(0, 217, 3, 189, 150, "E-M-B", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar )

CreateGadgetList(WindowID(0))
ButtonGadget(1, 30, 10, 130, 30, "Verzeichnis ...")
ButtonGadget(2, 30, 50, 130, 30, "S T A R T")
ButtonGadget(3, 30, 90, 130, 30, "E N D E")

Repeat
EventID=WaitWindowEvent(0)
If EventID = #PB_Event_Gadget
If EventGadget() = 1
Verzeichnis$ = PathRequester("Verzeichnis auswählen ...","C:\Dokumente und Einstellungen\Markus\Eigene Dateien\")
ElseIf EventGadget() = 2

CopyDirectory("C:\Programme\Purebasic\Projekte",Left(verzeichnis$,Len(verzeichnis$)-1),"",#PB_FileSystem_Recursive)
ElseIf EventGadget() = 3
EventID = #PB_Event_CloseWindow
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow
Das Zielverzeichnis darf auch keinen backslash enthalten wie es
aussieht! Du solltest allerdings immer vorher prüfen ob backslash
vorhanden oder nicht, bevor Du so wie ich einfach kürzt.

Ich glaube copydirectory müsste noch einmal überarbeitet werden.

EDIT/
Sorry, hatte Kiffis Post nicht richtig gelesen, da hat er das ja schon erläutert!

Verfasst: 25.06.2006 12:50
von alphabeth1970
Danke.

Ich werd mich jetzt mal auf den Balkon haun und das alles mal durcharbeiten.

Vielen Dank! :allright: