Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

Процедура изменения состояния.   Найти похожие ветки 

 
AlexG ©   (2003-07-21 14:20) [0]

Кто нить знает стандартную процедуру или функцию изменения состояния типа boolean. Предлагать только стандартые если они кончено есть, а написать я и сам могу, но интересно есть такая или нет.


 
ЮЮ ©   (2003-07-21 14:22) [1]

Чьего состояния?


 
AlexG ©   (2003-07-21 14:24) [2]

Изменение true на false и наоборот. Вот чего.


 
icWasya ©   (2003-07-21 14:24) [3]

A:=not A


 
ЮЮ ©   (2003-07-21 14:26) [4]

Такое он и сам написать может, ему бы стандартную функцию, лучше API :-)


 
VMcL ©   (2003-07-21 14:27) [5]

Как всегда - высшее.


 
AlexG ©   (2003-07-21 14:30) [6]

icWasya © (21.07.03 14:24)
A:=not A

спасибо, а я думал что это делается как то сложнее!!!



 
pasha_golub ©   (2003-07-21 16:17) [7]

Можно и посложнее A:= (A xor A) or not A;

:-)


 
Sandman25 ©   (2003-07-21 16:49) [8]

A := Boolean(1-Ord(A));
:-)


 
pasha_golub ©   (2003-07-21 18:41) [9]

A:= boolean(1 xor (byte(A) mod 2)))


 
Sandman25 ©   (2003-07-21 18:44) [10]

A := A = False;


 
Sandman25 ©   (2003-07-21 18:51) [11]

Только что проверил в CPU Window.

A := A = False транслируется в 2 команды
cmp byte ptr[a],$00
setz byte ptr[a];

A := Not A транслируется в 3 команды
mov dl, [a]
xor dl,$01
mov [a],dl

Получается, что лучше писать "извращенный" вариант???






 
HolACost   (2003-07-21 18:52) [12]


if A then
A := false
else
if not A then
A := true;


 
VMcL ©   (2003-07-21 18:58) [13]

>Sandman25 © (21.07.03 18:51)

Включи оптимизацию и будет ещё интереснее. Если немного всякого "хлама", то A попадает в регистр AL и выглядит всё как-то так:

//A := not A;
xor al, $01

//A := A = False;
test al, al
setz al

:)


 
default ©   (2003-07-21 21:27) [14]

а так
xor al, al
shld al, a, 1


 
Sandman25 ©   (2003-07-22 10:41) [15]

VMcL © (21.07.03 18:58)

У меня оптимизация БЫЛА включена. Я поэтому и удивился.
Правда, я после присвоения A его использовал (if A then Caption := "1"; причем это была модульная переменная), чтобы оптимизатор его совсем не выкинул.


 
Юрий Зотов ©   (2003-07-22 11:50) [16]

> HolACost (21.07.03 18:52)

Крутой код! Главное - структурирован грамотно.
Но вот так было бы еще круче:

if A = True then
A := False
else
if not (A = True) then
A := True;

:о)


 
Sandman25 ©   (2003-07-22 12:10) [17]

Юрий Зотов © (22.07.03 11:50)

Тогда уже так:

if A = True then
A := False
else
if not (A = True) then
A := not (False);

:)



 
Переяслов Григорий ©   (2003-07-22 18:01) [18]

Это орех )


 
SergP ©   (2003-07-22 19:15) [19]


> if A = True then
> A := False
> else
> if not (A = True) then
> A := not (False);


Интерестно, а еще длиннее кто-нить напишет? А то что-то ничего в голову не приходит.



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

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
14-20782
Карлсон
2003-07-22 00:51
2003.08.07
Война и Мир - вольные каменщики.


14-20710
PPP
2003-07-23 14:46
2003.08.07
Оцените идею. Интересно ваше мнение.


3-20381
abc
2003-07-15 21:57
2003.08.07
почему такая странная реакция сервера...


6-20643
неРуль
2003-05-26 09:38
2003.08.07
перенаправление портов


8-20633
Boriss
2003-04-14 15:31
2003.08.07
32 bits -> 24 bits