Hallo,
diese Zeile sind mir schon irgendwie verdächtig aus:
Hash := TDCP_Hash(TDCP_SHA512);
In Delphi erstellt man neue Klassen eigentlich immer so:
Hash := TDCP_SHA512.Create(nil); // TDCP_SHA512 erbt von TDCP_Hash und das von TComponent
Tipp_ schreib die Variablennamen im einheitlichen Format
Grüße