Zitat:
Trotzdem sehe ich den Fortschritt .. ist das bei dir nicht der Fall?
Nein beim Analysieren der Daten wird kein Paintevent ausgelößt.
Bei meiner Delphi Version schon. Als Workaround könntest du das Refreshen immer nur dann ausführen, wenn sich wirklich der Progress geändert hat im Vergleich zum vorherigen Durchgang des Loops. Das wären dann maximal 100 Aufrufe im ganzen Loop.
Jup.
Wäre eine Möglichkeit.
Das bringt dir schonmal ne ganze Menge Performance:
Delphi-Quellcode:
Progress := trunc(100 * (BASS_ChannelGetPosition(Channel, BASS_POS_BYTE) / BASS_ChannelGetLength(Channel, BASS_POS_BYTE)));
if (Form2.ProgressBar1.position <> Progress) then
begin
Form2.ProgressBar1.position := Progress;
PB.Refresh;
Application.ProcessMessages;
end;
Ist deine Funktion jetzt schneller oder gibt es keine Unterschiede?
Auskommentieren des SetPixel / Canvas.Pixel Codes beschleunigt die Analyse nochmal deutlich spürbar. Meine Funktion würde den selben Effekt haben, allerdings habe ich das noch nicht getestet.