CopyDirectory ein Bug (PB 4.0)

Für allgemeine Fragen zur Programmierung mit PureBasic.
alphabeth1970
Beiträge: 9
Registriert: 24.06.2006 21:15

CopyDirectory ein Bug (PB 4.0)

Beitrag 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????
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 »

Kopiere mit dem Dateimanager Deiner Wahl, lösche Deinen PB-Ordner und Installiere Erneut :twisted:
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
mardanny71
Beiträge: 266
Registriert: 05.03.2005 01:15
Wohnort: Thüringen

Beitrag 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
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
alphabeth1970
Beiträge: 9
Registriert: 24.06.2006 21:15

Beitrag 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 .... /:->
Benutzeravatar
PBZecke
Beiträge: 394
Registriert: 02.09.2004 17:34

Beitrag 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.
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Benutzeravatar
mardanny71
Beiträge: 266
Registriert: 05.03.2005 01:15
Wohnort: Thüringen

Beitrag 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
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
alphabeth1970
Beiträge: 9
Registriert: 24.06.2006 21:15

Beitrag 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
Benutzeravatar
PBZecke
Beiträge: 394
Registriert: 02.09.2004 17:34

Beitrag 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!
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
alphabeth1970
Beiträge: 9
Registriert: 24.06.2006 21:15

Beitrag von alphabeth1970 »

Danke.

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

Vielen Dank! :allright:
Antworten