Deutsch
C ++ Forum

Fortschrittsbalken verschwindet

 

Michael
Dell
Hallo,

folgender Code erzeugt im ersten Schritt eine 100Mb große Datei (erster Fortschrittsbalken), danach wird die Datei 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 übergeben (Endwert entspricht der Originalgröße der Datei).

In Profan läuft das sehr gut, doch über Profan2Cpp (v1.49d) verschwindet zweite Fortschrittsbalken um kurz darauf wieder am Anfang zu erscheinen, je größer die Datei 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()
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
Hallo,

[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  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.566 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

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


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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