| |
|
|
Michael Dell | Salut,
suivant Code erzeugt im ersten Schritt une 100Mb grand Dossier (erster Fortschrittsbalken), après wird qui Dossier mittels einer kleinen DLL (sur zlib la base) gezippt (zweiter Fortschrittsbalken).
Über une CallBack- Funktion wird qui zweite Fortschrittsbalken angesteuert, es wird qui dans den grenier eingelesene Wert à qui CallBack- Funktion transfert (Endwert entspricht qui Originalgröße qui Dossier).
dans Profan fonctionne cela très bien, doch sur Profan2Cpp (v1.49d) verschwindet zweite Fortschrittsbalken um kurz puis wieder am Anfang trop erscheinen, je größer qui Dossier desto häufiger wiederholt sich cela. KompilierenMarqueSéparationDef PackRes(3) External("UP.DLL","ComprFile",&(1),&(2),&(3))
Def UnPackRes(2) External("UP.DLL","DecomprFile",&(1),&(2))
Def GSC(1) !"KERNEL32.DLL","GetSysColor"
Declare DATA#,CSID_Progre&,CDRFID_Progre&,Kfs&,DatNam1$,DatNam2$,xc&,Wert&
Proc cDRFStat
Parameters Anz&
SendMessage(CDRFID_Progre&,$0402,Anz&,0)
EndProc
Proc PackStat
Parameters PS_Quelle&
SendMessage(CSID_Progre&,$0402,Int((PS_Quelle& * 100) / Kfs&),0)
Return 0
EndProc
Proc CreateStatusInfoDlg
WindowStyle 528
Window ((%MaxX - 200) / 2),((%MaxY - 114) / 2)-200,114
CDRFID_Progre& = Control("msctls_progress32","",$50000001,20,18,160,24,%HWnd,9000,%hinstance,$010000)
CSID_Progre& = Control("msctls_progress32","",$50000001,20,52,160,24,%HWnd,9001,%hinstance,$010000)
SendMessage(CDRFID_Progre&,$0402,0,0)
EndProc
Proc KillInfoDlg
SetWindowPos %HWnd = (%MaxX + 10),0-200,114;-1
EndProc
CreateStatusInfoDlg()
DatNam1$ = "TEST.UDR"
DatNam2$ = "TEST.ZDR"
Wert& = (1024000 * 100)
Dim DATA#,((Wert&/100)+1)
Clear DATA#
String DATA#,0 = MkStr$("Z",(Wert&/100))
Assign #99,DatNam1$
OpenRW #99
WhileLoop 1,100,1
BlockWrite #99,DATA#,0,(Wert&/100)
cDRFStat(&Loop)
EndWhile
CloseRW #99
Dispose DATA#
Kfs& = FileSize(DatNam1$)
PackRes(Addr(DatNam1$),Addr(DatNam2$),ProcAddr("PackStat", 1))
Sleep 2000
KillInfoDlg()
ef='./../../function-references/XProfan/end/'>Fin
ici gibst qui benötigte DLL: [...]
je n'en sais rien quoi là abläuft, peut-être is cela aussi seulement chez mir so (128Mb RAM) |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 29.08.2005 ▲ |
|
|
|
|
| cela riecht pour einem Überlauf - peut-être hat Roland irgendwo quoi comme unsigned deklariert wohin Sebastian de signed ausgeht. la fois voyons quoi Sebastian en supplément sagt... |
|
|
| |
|
|
|
Sebastian König | Salut,
[quote-part:21a53668e4]cela riecht pour einem Überlauf - peut-être hat Roland irgendwo quoi comme unsigned deklariert wohin Sebastian de signed ausgeht. la fois voyons quoi Sebastian en supplément sagt...[/quote-part:21a53668e4] quelque chose comme dans qui Art vermute je aussi... allerdings ist sowohl avec XProfan, comme aussi avec Profan2Cpp alles signed. Es peux alors seulement son, dass C++ den Ausdruck quelque chose anders auswertet comme XProfan...
je peux mais une einfachen Workaround anbieten simple d'abord par Kfs& partager et ensuite la fois 100 prendre:
SendMessage(Csid_progre&,$0402,Int((Ps_quelle& / Kfs&) * 100),0)
avec cela funktionierts chez mir aussi avec Profan2Cpp korrekt.
MfG
Sebastian |
|
|
| |
|
|
|
Sebastian König | encore quoi seltsames: si on den Slash par une Backslash, alors Integer-Division, ersetzt, funktioniert es aussi avec XProfan pas plus korrekt (gleicher faute...). Wahrscheinlich ist es am sichersten, qui API-Funktion MulDiv() trop verwenden:
[quote-part:63db746ded]The MulDiv function multiplies two 32-bit values and then divides le 64-bit result by a third 32-bit value. The return value is rounded up or down to le nearest integer.[/quote-part:63db746ded] |
|
|
| |
|
|
|
Michael Dell | Prima, so läufts! merci!!! |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 29.08.2005 ▲ |
|
|
|