Italia
C ++ Foro

Fortschrittsbalken verschwindet

 

Michael
Dell
Ciao,

folgender Code erzeugt im ersten Schritt eine 100Mb grande File (erster Fortschrittsbalken), danach wird die File mittels einer kleinen DLL (auf zlib Basis) gezippt (zweiter Fortschrittsbalken).

Über eine CallBack- Funktion wird der zweite Fortschrittsbalken angesteuert, es wird der in den Speicher eingelesene Wert an die CallBack- Funktion trasferimento (Endwert entspricht der Originalgröße der File).

In Profan corre das sehr gut, doch circa Profan2Cpp (v1.49d) verschwindet zweite Fortschrittsbalken um kurz darauf wieder am Anfang zu erscheinen, je größer die File desto häufiger wiederholt sich das.
KompilierenMarkierenSeparieren
Def 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/'>End
Hier gibst die benötigte DLL: [...] 

Keine Ahnung was da abläuft, vielleicht is das auch nur bei mir so (128Mb RAM)
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
29.08.2005  
 



Das riecht nach einem Überlauf - vielleicht hat Roland irgendwo was als unsigned deklariert wo Sebastian von signed ausgeht. Mal sehen was Sebastian dazu sagt...
 
29.08.2005  
 




Sebastian
König
Ciao,

[quote:21a53668e4]Das riecht nach einem Überlauf - vielleicht hat Roland irgendwo was als unsigned deklariert wo Sebastian von signed ausgeht. Mal sehen was Sebastian dazu sagt...[/quote:21a53668e4]
sowas in der Art vermute ich auch... allerdings ist sowohl mit XProfan, als auch mit Profan2Cpp alles signed. Es kann also nur sein, dass C++ den Ausdruck etwas anders auswertet als XProfan...

Ich kann aber einen einfachen Workaround anbieten Einfach zuerst durch Kfs& teilen und dann mal 100 nehmen:

Sendmessage(Csid_progre&,$0402,Int((Ps_quelle& / Kfs&) * 100),0)

Damit funktionierts bei mir auch mit Profan2Cpp korrekt.

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
29.08.2005  
 




Sebastian
König
Noch was seltsames: Wenn man den Slash durch einen Backslash, also Integer-Division, ersetzt, funktioniert es auch mit XProfan nicht mehr korrekt (gleicher Fehler...). Wahrscheinlich ist es am sichersten, die API-Funktion MulDiv() zu verwenden:

[quote:63db746ded]The MulDiv function multiplies two 32-bit values and then divides the 64-bit result by a third 32-bit value. The return value is rounded up or down to the nearest integer.[/quote:63db746ded]
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
29.08.2005  
 




Michael
Dell
Prima, so läufts! Danke!!!
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
29.08.2005  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

2.478 Views

Untitledvor 0 min.

Themeninformationen

Dieses Thema hat 3 subscriber:

Michael Dell (2x)
Sebastian König (2x)
iF (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie