Wie Kopierdauer berechnen und anzeigen
Wie Kopierdauer berechnen und anzeigen
Hi ihr alle, ich habe eine Frage. Ich möchte so nen Kopierprogramm programmieren und möchte so machen, wenn ich eine Datei (z.B. 10 MB) mit diesem Programm kopiere, dass ich weis, wie lange das noch braucht um. So wie "Geschätze Dauer des Kopiervorgangs". Mein Problem ist, ich weis nicht, wie ich anfangen soll, habt ihr eine Lösung?
Edit by NicTheQuick: auf aussagekräftigen Threadtitel geändert
Edit by NicTheQuick: auf aussagekräftigen Threadtitel geändert
Du könntest natürlich CopyFile() benutzen. Problem: Du weißt nicht, wie lange der befehl braucht, man kann auch kein Callback einbauen.
Umweg: Die Datei in einen *Speicherbuffer (mit AllocateMemory()) einlesen und stückchenweise aus diesem Buffer wieder auf die festplatte schreiben. Daraus kannst du schon mal eine Fortschrittsanzeige machen, wie viel % schon kopiert wurden.
Die Geschwindigkeit zu errechnen ist ein bisschen schwieriger. Musst mal gucken.
Wenn dir allerdings die ungefähre Restdauer reicht, schau einfach auf die Fortschrittsanzeige, wie viel Prozent er pro Sekunde kopiert und errechne daraus die Restdauer.
Umweg: Die Datei in einen *Speicherbuffer (mit AllocateMemory()) einlesen und stückchenweise aus diesem Buffer wieder auf die festplatte schreiben. Daraus kannst du schon mal eine Fortschrittsanzeige machen, wie viel % schon kopiert wurden.
Die Geschwindigkeit zu errechnen ist ein bisschen schwieriger. Musst mal gucken.
Wenn dir allerdings die ungefähre Restdauer reicht, schau einfach auf die Fortschrittsanzeige, wie viel Prozent er pro Sekunde kopiert und errechne daraus die Restdauer.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Eine möglichkeit ist auch, direkt von einer offenen in eine andere offene Datei zu kopieren, das lohnt sich aber nur richtig wenn die Datei von einem Datenträger auf den anderen kopiert wird.
Eine Möglichkeit zur Zeitermittelung wäre zu messen wie viele Byte er pro Sekunde kopiert, das kannst du dann hochrechnen auf den rest der noch zu kopierenden Bytes (die du natürlich vorher ermitteln musst)
Dieses System funktioniert dann aber genau so wenig/schlecht wie das welches Windows benutzt.
Copyfile ist in der regel auch schneller als das "Per Hand kopieren" man hat allerdings, wie schon gesagt, keinen einfluss auf das was während dem kopieren passiert...
Eine Möglichkeit zur Zeitermittelung wäre zu messen wie viele Byte er pro Sekunde kopiert, das kannst du dann hochrechnen auf den rest der noch zu kopierenden Bytes (die du natürlich vorher ermitteln musst)
Dieses System funktioniert dann aber genau so wenig/schlecht wie das welches Windows benutzt.
Copyfile ist in der regel auch schneller als das "Per Hand kopieren" man hat allerdings, wie schon gesagt, keinen einfluss auf das was während dem kopieren passiert...
(\/) (°,,,°) (\/)
- 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
Vielleicht hilft das hier: http://www.purebasic.fr/german/viewtopi ... t=kopieren
Für PB3.3 sind aber kleinere Anpassungen erforderlich!
Für PB3.3 sind aber kleinere Anpassungen erforderlich!
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.

- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Du hast die Frage zwar noch nicht in diesem Thread gestellt aber ich Antworte trotzdem hier:
Wenn du die aktuelle übertragungsrate messen willst, musst du einfach während dem kopieren in festen Zeitintervallen guggen, wie viel kopiert wurde, dann kannst du die Übertragungsrate errechnen, und evtl. auch die restlicher kopierdauer...
Wenn du die aktuelle übertragungsrate messen willst, musst du einfach während dem kopieren in festen Zeitintervallen guggen, wie viel kopiert wurde, dann kannst du die Übertragungsrate errechnen, und evtl. auch die restlicher kopierdauer...
(\/) (°,,,°) (\/)