Seite 2 von 4
Verfasst: 11.11.2006 20:34
von Gast
wie soll ich das denn faken weil ich weiß ja nicht wie lange der braucht um einen byte zu kopieren ?
Verfasst: 11.11.2006 20:38
von Kaeru Gaman
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...
Verfasst: 11.11.2006 20:51
von Gast
ja für filme und spiele und auch normale dateien soll das sein, aber das mit der animation ist gut das nehmen ich, thx

Verfasst: 11.11.2006 20:56
von Kaeru Gaman
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.
Verfasst: 11.11.2006 21:47
von ts-soft
Hier mal eine alternative Lösung. Hab gerade langeweile gehabt
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
Nicht mit Progressbar getestet!
kleinen Fehler korrigiert.
Verfasst: 11.11.2006 22:09
von Gast
wie kann denn meine gif animation da rein bringen ?
wenn ich es mit playmove mache dann offnet der ein extra fenster das ist ja nicht der sinn der sache
Verfasst: 11.11.2006 22:10
von Kiffi
> wie kann denn meine gif animation da rein bringen ?
die brauchst Du nicht mehr, wenn Du den Code von ts-soft nutzt.
Grüße ... Kiffi
Verfasst: 11.11.2006 22:11
von Maikel
hm das stimmt,
aber ich würd das trozdem mal gerne wissen
Verfasst: 11.11.2006 22:16
von Gast
Protected FileSource.l, FileDest.l, Mem.l, Size.q Bloecke.q, Rest.q, i.l, Prozent.f
da zeigt er mir syntax error an.
Verfasst: 11.11.2006 22:17
von Kaeru Gaman
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:
Maikel hat geschrieben:...da zeigt er mir syntax error an.
ja, da fehlt ein komma, schau mal genau hin..
