Status beim kopieren anzeigen!
Status beim kopieren anzeigen!
Hi Leute
Ich möchte in meinem PB Programm ein Daten von einem
Ordner zum anderen kopieren. Das mache ich mit CopyDirectory
und das klappt auch wunderbar! Nur möchte ich jetzt noch einen
Fortschritsbalken oder eine Statusanzeige miteinbauen, damit
man sieht was passiert und weis das, das Progy noch kopiert!
Kann mir jemand sagen wie ich das am einfachsten anstelle ?
Gruß Jon
Ich möchte in meinem PB Programm ein Daten von einem
Ordner zum anderen kopieren. Das mache ich mit CopyDirectory
und das klappt auch wunderbar! Nur möchte ich jetzt noch einen
Fortschritsbalken oder eine Statusanzeige miteinbauen, damit
man sieht was passiert und weis das, das Progy noch kopiert!
Kann mir jemand sagen wie ich das am einfachsten anstelle ?
Gruß Jon
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
- 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
Per API:

Code: Alles auswählen
Procedure ForceDirectories(Directory.s)
If Len(Directory) > 0
If (Right(Directory, 1) = "\")
Directory = Left(Directory, Len(Directory) -1)
EndIf
If (Len(Directory) < 3) Or FileSize(Directory) = -2 Or GetPathPart(Directory) = Directory
ProcedureReturn #False
EndIf
ForceDirectories(GetPathPart(Directory))
CreateDirectory(Directory)
ProcedureReturn #True
EndIf
EndProcedure
Procedure TS_CopyFile(SourceFile.s, DestinationPath.s, Flag.l)
flags.l = #FOF_MULTIDESTFILES
If FileSize(SourceFile) = -2
If Right(SourceFile, 1) <> "\" : SourceFile + "\" : EndIf
SourceFile + "*.*"
ForceDirectories(DestinationPath)
Else
If GetExtensionPart(SourceFile) = ""
ForceDirectories(DestinationPath)
If FileSize(DestinationPath) = -2 : DestinationPath + GetFilePart(SourceFile) : EndIf
Else
flags = flags | #FOF_FILESONLY
EndIf
EndIf
If Flag
flags = flags | #FOF_NOCONFIRMATION
ForceDirectories(DestinationPath)
EndIf
SHFileOp.SHFILEOPSTRUCT
SHFileOp\hwnd = WindowID()
SHFileOp\wFunc = #FO_COPY
SHFileOp\pFrom = @SourceFile
SHFileOp\pTo = @DestinationPath
SHFileOp\fFlags = flags
Result.l = SHFileOperation_(SHFileOp)
If Result <> 0
ProcedureReturn 0
Else
ProcedureReturn 1
EndIf
EndProcedure
TS_CopyFile("E:\TS-Temp\Download\*.zip", "E:\Hallo\", 0)
Ist leider nicht immer fehlerfrei, keine Lust mehr gehabtKopiert den SourceFile.s nach DestinationPath.s. Für SourceFile.s sind Jokerzeichen (z. B. *.htm) erlaubt. Wird als Jokerzeichen *.* angegeben, werden alle Dateien, aber keine Verzeichnisse kopiert. Wird bei SourceFile.s hingegen ein Ordner angegeben, so wird dessen Inhalt mit allen Unterverzeichnissen kopiert.
Wenn der optionale Parameter Flag.l nicht gesetzt ist, wird vor dem überschreiben von Dateien nachgefragt.
Result gleich 0, konnte/n die Datei/en nicht kopiert werden.

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Unter Windows : In der windows API gibt es ein befehl der heisst: CopyProgressRoutine.
Der macht das.
Schau mal hier:
http://forums.purebasic.com/german/view ... essroutine
Ob das allerdings auch bei CopyDirectory geht, weiss ich nicht.
Sonst musst du alle Dateien und Unterverzeichnisse einzel Kopieren lassen.
Der macht das.
Schau mal hier:
http://forums.purebasic.com/german/view ... essroutine
Ob das allerdings auch bei CopyDirectory geht, weiss ich nicht.
Sonst musst du alle Dateien und Unterverzeichnisse einzel Kopieren lassen.
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
- 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
Der verwendete API Befehl heisst aber "CopyFileEx_", nur als HinweisPAMKKKKK hat geschrieben:Unter Windows : In der windows API gibt es ein befehl der heisst: CopyProgressRoutine.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Code: Alles auswählen
Procedure ForceDirectories(Directory.s)
If Len(Directory) > 0
If (Right(Directory, 1) = "\")
Directory = Left(Directory, Len(Directory) -1)
EndIf
If (Len(Directory) < 3) Or FileSize(Directory) = -2 Or GetPathPart(Directory) = Directory
ProcedureReturn #False
EndIf
ForceDirectories(GetPathPart(Directory))
CreateDirectory(Directory)
ProcedureReturn #True
EndIf
EndProcedure
Code: Alles auswählen
MakeSureDirectoryPathExists_(Directory.s)
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
- 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
Ja, aber erst ab Windows 2000gnozal hat geschrieben: Mit Windows geht es auch so :Code: Alles auswählen
MakeSureDirectoryPathExists_(Directory.s)

MSDN hat geschrieben:Requirements
Client Requires Windows XP or Windows 2000 Professional.
Server Requires Windows Server 2003 or Windows 2000 Server.
Redistributable Requires DbgHelp.dll on Windows NT 4.0 and Windows Me/98/95.
Header Declared in Dbghelp.h.
Library Link to Dbghelp.lib.
DLL Requires Dbghelp.dll.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ich hab Win98 und es funktioniert primats-soft hat geschrieben:Ja, aber erst ab Windows 2000gnozal hat geschrieben: Mit Windows geht es auch so :Code: Alles auswählen
MakeSureDirectoryPathExists_(Directory.s)
, deshalb verwende ich das nicht

MakeSureDirectoryPathExists() ist in IMAGEHLP.DLL (PB Windows lib : PureLibraries\Windows\IMAGEHLP)
Aus Win32.hlp :
The IMAGEHLP function set is an API for the Windows NT and Windows 95 operating systems.
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
- 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
>> Ich hab Win98 und es funktioniert prima
Glaube ich Dir gerne, hab aber festgestellt, das es nicht immer funzt, weiß aber nicht mehr wovon es abhängt. Kann sein, das es WinME wahr?
Vorsicht ist die Mutter der Porzellankiste

Glaube ich Dir gerne, hab aber festgestellt, das es nicht immer funzt, weiß aber nicht mehr wovon es abhängt. Kann sein, das es WinME wahr?
Vorsicht ist die Mutter der Porzellankiste

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
