Man könnte das so lösen:
TFileStream -> TIntercepterStream -> DEC_MD5
Ich nehme mal an
DEC kann einen MD5 über alle Daten eine Streams berechnen.
Würdest du ein TFileStream bereithalten und an
DEC übergeben, wäre alles wie bisher.
Jetzt kommt die Klasse TInterceptorStream ins Spiel.
Die Klasse wird von TStream abgeleitet und macht eigentlich nichts anderes als die Aufrufe .Read() und .Write() an ein anderes Stream-Objekt durchzureichen.
Zusätzlich hat es aber die Events OnBeforeRead, OnAfterRead, OnBeforeWrite und OnAfterWrite.
Für diese Event kann dein Prog. einen EventHandler bereitstellen und Application.ProcessMessages aufrufen.
TInterceptorStream gibt es noch nicht; man müsste sie erst noch programmieren.
siehe auch: http://de.wikipedia.org/wiki/Stellvertreter_(Entwurfsmuster)