Главная страница
    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.008 c
14-20760
Beglec
2003-07-20 23:37
2003.08.07
Интересен компонет, который прост как TMediaPlayr, но...


1-20540
Vintik
2003-07-26 15:33
2003.08.07
Как сделать горячие клавиши?


4-20856
mike.dld
2003-06-03 21:29
2003.08.07
DrawText ???


14-20668
berezuev
2003-07-22 19:19
2003.08.07
Как уменьшить размер DELPHI exe-шника? 500Kb - многовато!


14-20786
Vana_sibe_viribus_ira_est
2003-07-22 06:54
2003.08.07
DOS2WIn





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