Zitat von
3_of_8:
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.
Math ist eingebunden, er kennt Sign trotzdem nicht.
Zitat von
3_of_8:
abs(value)/value ist ineffizient, wenn dann schon abs(value) div value
Seit wann läuft div auch mit Reals?
Zitat von
3_of_8:
, was bei einer 0 versagt, weil man nunmal nicht durch 0 teilen kann.
wie gesagt, dazu wird es nie kommen.
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;
Der Code ist sicherlich nicht schlecht, aber (das kannst du nicht wissen) ich kann kein Assembler und ich möchte keinen Code schreiben, den ich nicht verstehe.
Ich hab mir nach euren Tipps jetzt doch ne Function gebastelt:
Delphi-Quellcode:
function Sign(Value: Real): Integer;
begin
If Value < 0 then
result := -1
else
result := 1;
end;