Also gut, jetzt noch einmal. Sign steht in der
Unit Math. Die einbinden. Das dürfte auch bei Delphi 4 oder was du hast drinsein.
Und außerdem habe ich dir schon einen Code geschrieben, der mit EINER If-Abfrage auskommt.
abs(value)/value ist ineffizient, wenn dann schon abs(value) div value, was bei einer 0 versagt, weil man nunmal nicht durch 0 teilen kann. Außerdem ist so ein div im Vergleich zu meinem Code wirklich langsam.
Zitat von
3_of_8:
Ich hätt das jetzt so gelöst:
Delphi-Quellcode:
function Sign(
const AValue: Integer): Integer;
asm
cmp eax, 0
ja @positive
cdq
mov eax, edx
ret
@positive:
mov eax, 1
end;