Einzelnen Beitrag anzeigen

kalmi01
(Gast)

n/a Beiträge
 
#1

Form verhält sich mit ABS() anders als ohne

  Alt 30. Aug 2006, 08:18
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 ?
  Mit Zitat antworten Zitat