Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
3-20422
RomanRom2
2003-07-15 16:26
2003.08.07
Скопировать таблицу


14-20797
Cliff
2003-07-22 03:04
2003.08.07
Алгоритм функции Arctan


8-20639
mazepa
2003-04-15 16:28
2003.08.07
дуга


3-20384
azdesign
2003-07-15 00:25
2003.08.07
Чем открыть файлы .dta,.frm,.idx


1-20467
deadcdrom
2003-07-25 07:14
2003.08.07
DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский