Главная страница
    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.47 MB
Время: 0.01 c
14-20741
vidiv
2003-07-20 10:46
2003.08.07
На какие браузеры надо ориентироваться.


1-20607
GrBob
2003-07-24 17:04
2003.08.07
Out of memory while expanding memory stream


1-20527
dm37
2003-07-25 10:51
2003.08.07
WinExec


14-20749
Ahmad K
2003-07-15 23:18
2003.08.07
Можноли


1-20524
tytus
2003-07-26 10:00
2003.08.07
Как в StatusBar-е писать по-русски?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский