Datei kopieren
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
das einfachste ist irgend ne animation, die sich dreht.
bissel anspruchsvoller ist ne berechnung über dateigröße und aktuelle durchsatzrate,
so ist das bei den win-internen zeitangaben oft gemacht.
wofür soll es denn eigentlich sein, willst du wirklich gigantische datenmengen verschieben?
ich mein, meistens geht der wirklich dateizugriff wesentlich schneller, als man braucht,
um überhaupt ne grafik aufn screen zu bringen...
bissel anspruchsvoller ist ne berechnung über dateigröße und aktuelle durchsatzrate,
so ist das bei den win-internen zeitangaben oft gemacht.
wofür soll es denn eigentlich sein, willst du wirklich gigantische datenmengen verschieben?
ich mein, meistens geht der wirklich dateizugriff wesentlich schneller, als man braucht,
um überhaupt ne grafik aufn screen zu bringen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
der vorteil ist halt, dass du ne einfache zyklische anim laufen lassen kannst,
und es völlig egal ist, wie lange es insgesamt dauert,
und außerdem du den kopiervorgang nicht stören oder beschränken musst.
wenn du so eine schrittweise lösung wählst wie schon vorgeschlagen,
auch wenn du in 4KB-stücken kopierst statt einzelne bytes,
du würdest trotzdem wesentlich länger brauchen als mit dem eingebauten copy-befehl.
und es völlig egal ist, wie lange es insgesamt dauert,
und außerdem du den kopiervorgang nicht stören oder beschränken musst.
wenn du so eine schrittweise lösung wählst wie schon vorgeschlagen,
auch wenn du in 4KB-stücken kopierst statt einzelne bytes,
du würdest trotzdem wesentlich länger brauchen als mit dem eingebauten copy-befehl.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- 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
Hier mal eine alternative Lösung. Hab gerade langeweile gehabt
Nicht mit Progressbar getestet!
kleinen Fehler korrigiert.

Code: Alles auswählen
#BlockSize = 4096
Procedure CopyFileEx(Source.s, Dest.s, Progressbar.l = 0)
Protected FileSource.l, FileDest.l, Mem.l, Size.q, Bloecke.q, Rest.q, i.l, Prozent.f
FileSource = ReadFile(#PB_Any, Source)
FileDest = CreateFile(#PB_Any, Dest)
Mem = AllocateMemory(#BlockSize)
If FileSource And FileDest And Mem
Size = Lof(FileSource)
Bloecke = Size / #BlockSize
Rest = Size % #BlockSize
For i = 1 To Bloecke
ReadData(FileSource, Mem, #BlockSize)
WriteData(FileDest, Mem, #BlockSize)
Prozent = ((#BlockSize * i) / Size) * 100
If Progressbar
SetGadgetState(Progressbar, Prozent)
EndIf
Next
ReadData(FileSource, Mem, Rest)
WriteData(FileDest, Mem, Rest)
If Progressbar
SetGadgetState(Progressbar, 100)
EndIf
FreeMemory(Mem)
CloseFile(FileSource)
CloseFile(FileDest)
EndIf
EndProcedure
kleinen Fehler korrigiert.
Zuletzt geändert von ts-soft am 11.11.2006 22:18, insgesamt 1-mal geändert.
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.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
mit gif-animation garnicht.
im grunde mit zeichnen auf ein image das du dementsprechend regelmäßig aktualisierst.
das was ts vorgeschlagen hat, ist eine alternative,
aber auch nur, wenn es dir noch schnell genug ist.
PS:
im grunde mit zeichnen auf ein image das du dementsprechend regelmäßig aktualisierst.
das was ts vorgeschlagen hat, ist eine alternative,
aber auch nur, wenn es dir noch schnell genug ist.
PS:
ja, da fehlt ein komma, schau mal genau hin..Maikel hat geschrieben:...da zeigt er mir syntax error an.

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.