Wenn in Value steht, wieviel Byte komprimiert wurden und MaxValue wieviel insgesamt zu komprimieren sind, sich aber beide Werte auf die Gesamtmenge und nicht die einzelne Datei beziehen, dann geht das einfach nicht.
Wenn Du weißt, in welcher Reihenfolge die Dateien komprimiert werden und Du die Größe der einzelnen Dateien weißt, dann kannst Du jeweils ausrechnen, welche Datei gerade "In Mache ist".
Sinngemäß sowas in der Art:
Delphi-Quellcode:
Summe := 0;
for i := 0 to Dateiliste.Count - 1 do begin
Summe := Summe + Dateiliste[i].Dateigroesse;
if Summe > Value then begin
Label1.Caption := Format('zuletzt komprimierte Datei: %s (%d Byte)',[Dateiliste[i - 1].Dateiname,Dateiliste[i - 1].Dateigroesse]);
Label2.Caption := Format('aktuell wird die Datei %s (%d Byte) komprimiert ...',[Dateiliste[i].Dateiname,Dateiliste[i].Dateigroesse]);
break;
end;
end;
Ob das performant und sinnvoll ist, sei erstmal dahingestellt.