Wie Kopierdauer berechnen und anzeigen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Wie Kopierdauer berechnen und anzeigen

Beitrag von RSBasic »

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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
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:

Beitrag von KeyKon »

Es wäre auf jedenfall Ratsam einen Aussagekräftigen Titel für den Thread zu nehmen, sowas wie: "Kopierdauer anzeigen" oder so ähnlich...
(\/) (°,,,°) (\/)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
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:

Beitrag von KeyKon »

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...
(\/) (°,,,°) (\/)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Vielen Dank, ich muss mal gucken welche Variante ich benutzen soll, aber trotzdem vielen Dank :D
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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 »

Vielleicht hilft das hier: http://www.purebasic.fr/german/viewtopi ... t=kopieren
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.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@ ts-soft
danke sehr, aber nach sowas habe ich schon gesucht, aber trotzdem danke :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
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:

Beitrag von KeyKon »

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...
(\/) (°,,,°) (\/)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@ KeyKon
Vielen Dank ,ich veruschs Mal :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

dazu müßte er aber vermutlich die datei in paketen, bzw mit einer eigenen kopier-routine kopieren. jedenfalls geht das nicht mit CopyFile(), oder?
..aber solche routinen (sogar mit progressbar) findet man hier im board, wenn nicht sogar gleich einer eine hier an den thread anstöpselt.
my pb stuff..
Bild..jedenfalls war das mal so.
Antworten