Вниз
Скачать: CL | DM;

Напомните...   Найти похожие ветки 

← →
ПЛОВ ©   (2005-09-20 13:59) [0]

...функцию для определения знака числа в Делфи. Не могу никак вспомнить :)


← →
TUser ©   (2005-09-20 14:04) [1]

if abs (I) = I then ShowMessage ("i>=0");


← →
Джо ©   (2005-09-20 14:06) [2]

Sign (uses Math)


← →
Reindeer Moss Eater ©   (2005-09-20 14:07) [3]

math.pas
sign()


← →
Johnmen ©   (2005-09-20 14:07) [4]

if -I < I then {+}
else if -I > I then {-}
else {0}


← →
ПЛОВ ©   (2005-09-20 14:38) [5]

У меня в math.pas такого нету!!! Но все-равно спасибо :)


← →
Джо ©   (2005-09-20 14:50) [6]


>  [5] ПЛОВ ©   (20.09.05 14:38)
> У меня в math.pas такого нету!!! Но все-равно спасибо :)

Делфи 5, наверное?
--
В math.pas такое, простое, как топор :)

function Sign(const AValue: Integer): TValueSign;
begin
 Result := ZeroValue;
 if AValue < 0 then
   Result := NegativeValue
 else if AValue > 0 then
   Result := PositiveValue;
end;

function Sign(const AValue: Int64): TValueSign;
begin
 Result := ZeroValue;
 if AValue < 0 then
   Result := NegativeValue
 else if AValue > 0 then
   Result := PositiveValue;
end;

function Sign(const AValue: Double): TValueSign;
begin
 if ((PInt64(@AValue)^ and $7FFFFFFFFFFFFFFF) = $0000000000000000) then
   Result := ZeroValue
 else if ((PInt64(@AValue)^ and $8000000000000000) = $8000000000000000) then
   Result := NegativeValue
 else
   Result := PositiveValue;
end;


← →
Anatoly Podgoretsky ©   (2005-09-20 14:51) [7]

Это элементарная функция, если в библиотеке нет, то напиши сам секунд за 30
X < 0 -> -1
X = 0 -> 0
X > 0 -> 1


← →
ПЛОВ ©   (2005-09-20 17:51) [8]


> Делфи 5, наверное?

ага :)

> Anatoly Podgoretsky ©

Написать самому - то не проблема конечно, думал, может кто что интересное подскажет...
А на асме, чтоб возвр. значение или 1 или -1?


← →
alpet ©   (2005-09-20 18:07) [9]

Примерно так:

function Sing (value: Integer): Integer;
assembler
mov eax, value
sar  eax, 31
or    eax, 1
end;


← →
alpet ©   (2005-09-20 18:19) [10]

function Sign (value: Integer): Integer;
asm
 mov eax, value
 test eax, eax
 jnz  _zerro  
 sar  eax, 31  
 or  eax, 1
_zerro:  
end;


← →
MBo ©   (2005-09-20 20:24) [11]

>alpet ©   (20.09.05 18:19) [10]
move eax,value  - лишнее, если используется соглашение по умолчанию (register)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.024 c
6-1118606328
Руслан Бахтияров
2005-06-12 23:58
2005.10.09
Безопасное подключение к серверу...


3-1124877572
Catik
2005-08-24 13:59
2005.10.09
IBQuery в Fields Editor


9-1117707275
WondeRu
2005-06-02 14:14
2005.10.09
OpenGL портит виндовские хинты! Как бороться?


14-1126869057
Kerk
2005-09-16 15:10
2005.10.09
Спам создает общественное мнение


14-1126453651
Fin
2005-09-11 19:47
2005.10.09
Литература про Mac OS X.




   Наверх