Ich würde gerne sehen, wie deine Procedure reagiert, wenn CopyFile eine 500MB Datei kopiert...
*TS-Soft freundlich knufft*
(das Bild war übrigens sehr witzig ^^ hab mich gefragt was auf der anderen Seite wohl gewesen ist - könnte ja auch die Schweiz gewesen sein)
Das einzige saubere fände ich CopxFileEx mit Callback - ein Beispiel, nicht grad ausführbar, aber das Prinzip müsste ersichtlich sein:
Code: Alles auswählen
Procedure.l _CopyFileExCallback(TotalFileSize, totalbytetransfertalk, StreamSize, StreamBytesTransferred, dwStreamNumber.l, dwCallbackReason.l, hSourceFile.l, hDestinationFile.l, lpData.l, dummy1.l, dummy2.l, dummy3.l, dummy4.l)
Shared KopierenAbbruch.l
TotalFileSize_ = (TotalFileSize>>16) &$FFFFFFFF
StreamSize_ = 100 * (StreamSize>>16) &$FFFFFFFF
If TotalFileSize_ > 0 And StreamSize_ > 0
percent = 100 * (StreamSize>>16) &$FFFFFFFF/(TotalFileSize>>16) &$FFFFFFFF
Else
percent = 100
EndIf
SetGadgetState(#Gadget_Main_ProgressBar, percent)
ev=1
While ev
ev=WindowEvent()
If ev=#PB_Event_Gadget
If EventGadget()=#Gadget_Main_ButtonAbbruch
KopierenAbbruch=1
ProcedureReturn 1 ;1=PROGRESS_CANCEL
EndIf
EndIf
Wend
ProcedureReturn 0 ;0=PROGRESS_CONTINUE
EndProcedure
Procedure.l _CopyFileEx(pSource.s,pTarget.s)
ProcedureReturn CopyFileEx_(@pSource.s, @pTarget.s, @_CopyFileExCallback(), 0, 0, 0)
EndProcedure
Edit: mom,mom, bin am recoden - hab mir ja wieder was eingebrockt...
