AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Progressbar einbinden

Ein Thema von razer91 · begonnen am 17. Aug 2009 · letzter Beitrag vom 28. Okt 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

Re: Progressbar einbinden

  Alt 28. Okt 2009, 16:17
Zitat von isilive:
Die unterschiedlichen Rechnergeschwindigkeiten sind gar kein so grosses Problem. Wenn meine Progressbar ca. 5 mal pro Sekunde aktualisiert wird, dann ist das schon voll in Ordnung.
Das meine ich ja, aber sowas bekommst du realistisch gesehn nicht hin, wenn man z.B. nur sowas mach
Delphi-Quellcode:
for i := 1 to 2000000000 do
begin

  ... mach was

  if i and $ffff = 0 then
    Application.ProcessMessages;
end;
Denn wer sagt dir, daß ein Rechner für diese 65536 Durchgänge nicht 'ne Stunde braucht
und ein anderer Rechner das nicht schon nach ein paar Millisekunden durch hat.
Ergo kannst du schlecht sagen "noar, das sind grob so um die 5 Mal pro Sekunde".



Zitat:
//machwas
verarbeitet immer nur ein Byte?
wenn nicht,
- dann würde ich lieber < statt <> verwenden
- und bei dem =0 könnte es vorkommen, daß einiges übersprungen wird.



PS:
hier du hast 'ne ProgressBar mit 100 Schritten
if (MStream.Position and $ff) = 0 then
und bei einer 1 MB-Datei (sozusagen 6-stellig) wird diese ProgressBar über 4000 Mal aktualisiert,
das sind 40 Mal mehr, als sie überhaupt anzeigen kann.

if (MStream.Position and $2000) = 0 then
das ist für mich nicht überraschend ... immerhin ist das fast so schlimm wie
if (MStream.Position and $1) = 0 then
nur daß bei Letzterem jeden 2. Durchlauf etwas gemacht wird und bei Ersterem 8192 Mal hintereinander und dann 8192 Mal garnicht und so weiter ... also im Durchschnitt bei jedem 2. Durchlauf.
versuch es mal so
if (MStream.Position and $1fff) = 0 then
$2B or not $2B
  Mit Zitat antworten Zitat
Bebe

Registriert seit: 3. Apr 2005
Ort: Berlin
104 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

Re: Progressbar einbinden

  Alt 28. Okt 2009, 16:53
Hallo,

wenn es nur um die Aktualisierung der ProgressBar geht, dann wäre auch ein Refresh der Progressbar vorzuziehen als ein Application.ProcessMessages. Ausschließlich würde ich aber das nicht machen, da sonst die Application mehr oder weniger schläft. Ich habe es mal so gelöst, dass ich öfters die Progressbar aktualisiert habe als die Application selber. Das bringt spürbare Verbesserung.

Vielleicht hilft dir das?

Gruß
Matze
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#13

Re: Progressbar einbinden

  Alt 28. Okt 2009, 21:44
Zitat von himitsu:
if (MStream.Position and $2000) = 0 then
das ist für mich nicht überraschend ... immerhin ist das fast so schlimm wie
if (MStream.Position and $1) = 0 then
nur daß bei Letzterem jeden 2. Durchlauf etwas gemacht wird und bei Ersterem 8192 Mal hintereinander und dann 8192 Mal garnicht und so weiter ... also im Durchschnitt bei jedem 2. Durchlauf.
versuch es mal so
if (MStream.Position and $1fff) = 0 then
Und hier war der Denkfehler Na klar kann $2000 nicht funktionieren. Es war aber auch schon spät, als ich das probiert habe.

$2000 = Bin 0010 0000 0000 0000 = 8192
$1FFF = Bin 0001 1111 1111 1111 = 8191

i AND $1FFF ist erst im 8192'sten Durchlauf gleich Null -> wie gewünscht.

$1FFF oder auch $FFFF funktionieren perfekt.

Das mit dem Aktualisieren werde ich mir anschauen, Matze.

Danke für eure Hilfe.
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz