Вниз
Скачать: 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 вся ветка

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



Память: 0.48 MB
Время: 0.012 c
3-20409
DBDev
2003-07-16 12:42
2003.08.07
Помогите! OLE Excel!


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


14-20682
McSimm
2003-07-22 14:53
2003.08.07
Длинные ветки. Ваше мнение?


1-20621
chs2r
2003-07-24 17:46
2003.08.07
Как сделать редактор с подсветкой синтаксиса


7-20816
Sectey
2003-05-26 10:19
2003.08.07
Виртуальный файл.




   Наверх