In einem Prog befindet sich diese Funktion:
Delphi-Quellcode:
procedure Progress(Size, CurrentPos: Int64);
var
OPos, NPos : integer;
begin
OPos := MainForm.StatusMeter.Percent;
NPos := Round(CurrentPos * 100 / Size);
if (NPos <> OPos)
then begin
MainForm.StatusMeter.Percent := NPos - 1;
Application.ProcessMessages;
end;
end;
Damit funktioniert auch alles.
Wenn ich die Funktion aber so abändere:
Delphi-Quellcode:
procedure Progress(Size, CurrentPos: Int64);
var
OPos, NPos : integer;
begin
OPos := MainForm.StatusMeter.Percent;
NPos := Round(Abs(CurrentPos * 100 / Size) - 1); << hier
if (NPos <> OPos)
then begin
MainForm.StatusMeter.Percent := NPos; << und hier
Application.ProcessMessages;
end;
end;
wird zwar die Progressbar weiterhin aktualisiert, wie im ersten Beisspiel.
Im Edit-Fenster wird aber nach der ersten Zeile nichts mehr angezeigt, bis alles geladen ist.
Nicht, das mich das stört, solange es eine Ausweichmöglichkeit gibt.
Aber es würde mich schon mal interessieren, warum das Verhalten so ist ?
Hab ich einen Denkfehler ?