Ich finde das Thema gerade schwierig.
Wenn ein Stream verarbeitet wird, steht die Länge nicht fest.
Ich meine man kann auch nicht berechnen, wieviel arbeit zu tun ist.
von, bis und pos zu haben wäre nett, ist das dann aber nicht eher das Problem von dem Streamersteller?
Ist dort nicht der Callback festgelegt und müsste dann nicht im Callback ggf. das ausgerechnet werden, wo der Prozentbalken steht oder ggf. ein Animation gespielt wird?
Kann also die
DEC nur ein "STEP" signalisieren und kein genaue Position der Verarbeitung?
Wenn die
DEC die Gesamtmenge, welche die
DEC verarbeitet ausrechnen kann, dann müsste an den Callback [min,] max und pos übergeben werden, dass hat aber dann nichts mit der Streamsize und POS zu tun.
Versteht mich jemand, was ich meine?
PS:
Code:
alt
procedure TFormMain.OnProgress(const Min, Max, Pos: Int64);
neu
procedure TFormMain.OnProgress(const Progress: TDECProgressParams);
alt
ProgressBar1.Min := Min;
ProgressBar1.Max := Max;
ProgressBar1.Position := Pos;
neu
ProgressBar1.Min := 0;
ProgressBar1.Max := Progress.Max;
ProgressBar1.Position := Progress.Pos;
alt habe ich besser gefunden, weil die Implementierung vom Progress nicht vom Typ TDECProgressParams abhängt und somit bei anderen Programmteilen wiederverwendet werden könnte.
Ich persönlich bevorzuge auch immer weniger Punkte zu nutzen als mehr.
Also
vor
Code:
ProgressBar1.Max := Progress.Max;
Spätenstens bei dem zweiten Punkt würde es hässlich werden, weil man dann abhängig von der internen Umsetzung wird.
Also
- nicht relevant hier . nur Beispiel.