Hi,
Noch eine kleine Aufklärung warum deine function nicht funktioniert:
Result:=high shl 32;
der Ausdruck wird von rechts nach links ausgewertet. high ist ein Cardinal. Wenn du einen 32-Bit Integer 32 Stellen nach links (oder rechts) verschiebst, dann bleibt 0 übrig..
00000000000000000000000000000000 11111111111111111111111111111111
shl 32
11111111111111111111111111111111 00000000000000000000000000000000
Der Linke Teil, also der Cardinal wird dann in einen Int64 konvertiert (implizit):
00000000000000000000000000000000 00000000000000000000000000000000
Und das mit low "verodert" ergibt eben low
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."