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

Вниз

Сделать в один WHILE.   Найти похожие ветки 

 
О-Сознание   (2013-05-16 17:21) [0]

Код железно скрывает курсор:


procedure SetShowCursor(Value: boolean);
begin
 If Value
 then while (ShowCursor(True)  <= 0) do
 else while (ShowCursor(False) >= 0) do;
end;



Как его переделать в один While?


procedure SetShowCursor(Value: boolean);
begin
  while (ShowCursor(Value) ... do;
end;



 
картман ©   (2013-05-16 17:26) [1]

что не нравится?


 
Ega23 ©   (2013-05-16 17:32) [2]

procedure SetShowCursor(Value: boolean);
const
 cVal: array[Boolean] of integer = (-1, 1);
begin
 while (ShowCursor(Value) * cVal[Value]) <= 0 do;
end;


так что-ли?


 
"Добрый Сок"   (2013-05-16 17:35) [3]

Сыграть на том, что integer(boolean) = [1,0]


 
Ega23 ©   (2013-05-16 17:37) [4]


> Сыграть на том, что integer(boolean) = [1,0]

Так нельзя. Во-первых, [0,1]. Во-вторых не Integer, а Ord


 
Игорь Шевченко ©   (2013-05-16 17:38) [5]

Феерично


 
О-Сознание   (2013-05-16 17:59) [6]


> картман ©   (16.05.13 17:26) [1]
>
> что не нравится?


Зачем 2, если можно 1?
Глаза режет.


> Игорь Шевченко ©   (16.05.13 17:38) [5]
>
> Феерично


Объясните.


 
картман ©   (2013-05-16 18:02) [7]


> Глаза режет.

бывает. Я бы не смотрел


 
О-Сознание   (2013-05-16 18:03) [8]


>  картман ©   (16.05.13 18:02) [7]
>
>
> > Глаза режет.
>
> бывает. Я бы не смотрел


Дык для меня же.


 
Медвежонок Пятачок ©   (2013-05-16 18:14) [9]

If Value
then while (ShowCursor(True)  <= 0) do
else while (ShowCursor(False) >= 0) do;


while (ShowCursor(Value) <= 0) = Value do

плюс обработать ноль для второго случая


 
Игорь Шевченко ©   (2013-05-16 18:19) [10]


> Объясните.


что именно объяснить ? Что код никуда не годится ? И без объяснений вроде очевидно, что бесконечный цикл тут ни к селу ни к городу.


 
Игорь Шевченко ©   (2013-05-16 18:19) [11]

пустой цикл, виноват


 
clickmaker ©   (2013-05-16 18:21) [12]

не смог О-Сознать для чего сей код? для 1-апр шуток вроде поздновато...


 
О-Сознание   (2013-05-16 18:27) [13]


> Игорь Шевченко ©   (16.05.13 18:19) [10]
>
>
> > Объясните.
>
>
> что именно объяснить ? Что код никуда не годится ? И без
> объяснений вроде очевидно, что бесконечный цикл тут ни к
> селу ни к городу.


Почему бесконечный цикл?


procedure SetShowCursor(Value: boolean);
begin
If Value
then while (ShowCursor(True)  <= 0) do
else while (ShowCursor(False) >= 0) do;
end;


Устанавливаем счётчик пока не будет положительным, если
наоборот то пока не будет отрицательным.

Что не так?

Зачем этот счётчик там вообще?


 
"Добрый Сок"   (2013-05-16 22:24) [14]


> не Integer, а Ord

ShowMessageFmt("%d ",[Integer(Random(100)>50)]);


 
clickmaker ©   (2013-05-16 22:32) [15]

> Зачем этот счётчик там вообще?

это как раз понятно. Непонятно, зачем такая гламурная обертка


 
"Добрый Сок"   (2013-05-16 22:50) [16]

then while (ShowCursor(True)  <= 0) do
else while (ShowCursor(False) >= 0) do;

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648396%28v=vs.85%29.aspx
This function sets an internal display counter that determines whether the cursor should be displayed. The cursor is displayed only if the display count is greater than or equal to 0. If a mouse is installed, the initial display count is 0. If no mouse is installed, the display count is –1.

then while (ShowCursor(True)  < 0) do
else while (ShowCursor(False) >= 0) do;


 
Ega23 ©   (2013-05-16 23:01) [17]


> ShowMessageFmt("%d ",[Integer(Random(100)>50)]);

Нет гарантии. False - ноль. True - не ноль. Ord - с гарантией.


 
Дмитрий С ©   (2013-05-16 23:09) [18]


> Ord - с гарантией.

Классика :)
var
 A: Boolean;
begin
 A := Boolean(2);


 
TUser ©   (2013-05-16 23:42) [19]

Приведение типа boolean к integer есть зло. И обратно тоже. Всегда можно написать проще, цена - максимум три строчки кода. И при это становится понятнее (читатель не должен помнить языковые соглашения о соотношении этих типов), а также переносимее, так как кто его знает, что будет в слудующей версии компилятора.


 
брат Птибурдукова   (2013-05-17 00:03) [20]


> кто его знает, что будет в слудующей версии компилятора
та, "следующая версия"… вот помню, долго мучился, как это у меня A = true, B=true, A<>B. А в итоге выяснилось, что соответствующее поле в записи не инициализировалось и содержало случайный байт, который обычно интерпретировался как true. и это в довольно известном фреймворке… %-)


 
"Добрый Сок"   (2013-05-17 08:28) [21]

В курсе, но:
А тут и надо 0 и не ноль
Даже именно не 0,
что-то вроде 1 - 2*(intger(boolean)) - т.е. или >0, или 0 и ниже
но думать надо :), а у меня 32 градуса уже в кабинете, и это уже с утра :(


 
Inovet ©   (2013-05-17 08:38) [22]

Циклы зачем? Где прятал, там и показывай. Или чужие счётчики сгоняешь?


 
"Добрый Сок"   (2013-05-17 08:53) [23]

а зачем вообще прятать/ показывать?


 
"Добрый Сок"   (2013-05-17 09:11) [24]

кстати, D7|w7, после прятания курсора, программа замерзает.
свернуть все окна - не сворачивается
После вызова с панели задач - появилась вторая копия (две кнопки на панельке стало) Одна копия нормальная, вторая замороженная.

> зачем вообще прятать/ показывать?


 
Ega23 ©   (2013-05-17 10:19) [25]


> что-то вроде 1 - 2*(intger(boolean)) - т.е. или >0, или
> 0 и ниже


см [2]


 
"Добрый Сок"   (2013-05-17 10:26) [26]

>> см [2]
см [3]
:)

many thousands of years ago in a galaxy far far away
>> см [X1]
см [X2]


 
О-Сознание   (2013-05-17 10:34) [27]


>  Inovet ©   (17.05.13 08:38) [22]
>
> Циклы зачем? Где прятал, там и показывай. Или чужие счётчики
> сгоняешь?


Чужие счётчики?
Кто этим кроме меня ещё заведует?


> "Добрый Сок"   (17.05.13 08:53) [23]
>
> а зачем вообще прятать/ показывать?


Для создания интерактивных приложений.


> TUser ©   (16.05.13 23:42) [19]
>
> Приведение типа boolean к integer есть зло.


Тогда уж делать через IfThen и не париться.


 
О-Сознание   (2013-05-17 10:36) [28]


> Inovet ©   (17.05.13 08:38) [22]
>
> Циклы зачем? Где прятал, там и показывай. Или чужие счётчики
> сгоняешь?


Тогда как мне убрать курсор не сбивая чужих счётчиков?


 
clickmaker ©   (2013-05-17 10:40) [29]

> Для создания интерактивных приложений.

вообще без курсора?


 
О-Сознание   (2013-05-17 10:52) [30]


> clickmaker ©   (17.05.13 10:40) [29]
>
> > Для создания интерактивных приложений.
>
> вообще без курсора?


Там свой курсор рисуется, какой хочешь.


 
О-Сознание   (2013-05-17 10:53) [31]

Очевидно же.


 
clickmaker ©   (2013-05-17 10:55) [32]

> Там свой курсор рисуется, какой хочешь

а SetCursor() не?


 
О-Сознание   (2013-05-17 10:57) [33]

Получаем положение курсора.
Туда и рисуем спрайт.


 
О-Сознание   (2013-05-17 10:57) [34]


> clickmaker ©   (17.05.13 10:55) [32]
>
> > Там свой курсор рисуется, какой хочешь
>
> а SetCursor() не?


Не всегда подходит.


 
Inovet ©   (2013-05-17 11:08) [35]

> [27] О-Сознание   (17.05.13 10:34)
> Кто этим кроме меня ещё заведует?

Тогда пункт 1.

> [28] О-Сознание   (17.05.13 10:36)
> Тогда как мне убрать курсор не сбивая чужих счётчиков?

Попросить автора исходников исправить ошибку, или найти и исправить самому.


 
О-Сознание   (2013-05-17 11:47) [36]


> Inovet ©   (17.05.13 11:08) [35]
>
> > [27] О-Сознание   (17.05.13 10:34)
> > Кто этим кроме меня ещё заведует?
>
> Тогда пункт 1.

Тогда пункт 6.

>
> > [28] О-Сознание   (17.05.13 10:36)
> > Тогда как мне убрать курсор не сбивая чужих счётчиков?
>
>
> Попросить автора исходников исправить ошибку, или найти
> и исправить самому.


Это мои исходники.


 
Inovet ©   (2013-05-17 11:51) [37]

> [36] О-Сознание   (17.05.13 11:47)
> Это мои исходники.

Пункт 1

> [22] Inovet ©   (17.05.13 08:38)
> Где прятал, там и показывай.

Или объясни, что запрещает так делать, а то я не понимаю.


 
Anatoly Podgoretsky ©   (2013-05-17 13:12) [38]

Boolean ByteBool, WordBool, LongBool
False < True False <> True
Ord(False) = 0 Ord(False) = 0
Ord(True) = 1 Ord(True) <> 0



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

Форум: "Прочее";
Текущий архив: 2013.10.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.003 c
15-1368785148
Дмитрий С
2013-05-17 14:05
2013.10.27
Продление SSL сертификата веб-сервера.


2-1360060314
Чайник
2013-02-05 14:31
2013.10.27
Как поместить картинки в ComboBoxEx


1-1316775192
denkop
2011-09-23 14:53
2013.10.27
Помогите с отрисовкой текста на TImage


2-1359822748
alexdn
2013-02-02 20:32
2013.10.27
Параллельные процессы?


2-1359654647
berrimor
2013-01-31 21:50
2013.10.27
координаты второго монитора





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