![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение параметров программы одним числом [D7, WinXP]
kyn66 © (2009-11-05 12:16:00)Уважаемые мастера. Подскажите алгоритм сохранения параметров программы и последующее их извлечение. К примеру ситуация такая. Программа должна выполнять определенные действия в зависимости от дня недели. Т.е. в параметрах программы есть семь CheckBox
Понедельник
Вторник
Среда
... и т.д
каждый из которых соответственно может принимать значение True или False. Я могу назначить каждому дню(CheckBox) свои персональные условные номера 1 -:- 7. По какому алгоритму мне сохранить данные по этим параметрам одним числом(слыхал можно так) и потом считать его и решить, какой из CheckBox помечен, а соответственно и выполнить программу по тому или иному пути. Слыхал(но оооочень далеко) про такую науку комбинаторику. Это не из этой области?
kyn66 (2009-11-05 20:46:00) [1]
> {RASkov} © (05.11.09 20:43) [39]
Как всегда своевременная подсказка. Спасибо!
{RASkov} (2009-11-05 20:43:00) [2]> [38] kyn66 © (05.11.09 20:35)
http://www.podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.doc
kyn66 (2009-11-05 20:35:00) [3]
> кроме того есть bits.doc там вообще правильно
И где он есть? Откуда качнуть можно?
Anatoly Podgoretsky (2009-11-05 20:06:00) [4]> kyn66 (05.11.2009 17:06:35) [35]
Эта опечатка неважная, дальше по тексту правильно и понятно, кроме того есть bits.doc там вообще правильно. Трудно будет получить неверные знания, если сможет получить, то ему нечего делать в наукоемких технологиях.
Anatoly Podgoretsky (2009-11-05 19:38:00) [5]
> RWolf © (05.11.09 15:45) [32]
>
> > Anatoly Podgoretsky
>
> там в абзаце про SHR два раза встречается «влево» вместо
> «вправо».
Ну глазастый, действительно есть ошибка, но только в aspx. Я исправил.
kyn66 (2009-11-05 17:06:00) [6]
Anatoly Podgoretsky © (05.11.09 15:51) [33]
> А это мелкая ошибка, глаз исправляет не читая.
Но тем не менее, неопытный начнет азы постигать, а там такая очепятка... Вот и получит знания неверные. А статья класс, мне понравилась.
Anatoly Podgoretsky © (05.11.09 15:32) [30]
> Правильно расставь операторные скобки или не глядя в справку
> скажи, что будет в твоем случае для WeekDaysMask and (1
> shl i) = 1(WeekDaysMask and (1 shl i)) = 1 или WeekDaysMask
> and ((1 shl i) = 1)
Хек.. подуать нужно. А сперва статью переварить.
Anatoly Podgoretsky (2009-11-05 15:51:00) [7]> RWolf (05.11.2009 15:45:32) [32]
Я даже знаю кто виноват - китайцы
Anatoly Podgoretsky (2009-11-05 15:51:00) [8]> RWolf (05.11.2009 15:45:32) [32]
А это мелкая ошибка, глаз исправляет не читая.
RWolf (2009-11-05 15:45:00) [9]
> Anatoly Podgoretsky
там в абзаце про SHR два раза встречается «влево» вместо «вправо».
Anatoly Podgoretsky (2009-11-05 15:36:00) [10]> kyn66 (05.11.2009 14:59:28) [28]
Ничего, а где указал то и на что?
Anatoly Podgoretsky (2009-11-05 15:32:00) [11]> kyn66 (05.11.2009 14:26:17) [17]
Правильно расставь операторные скобки или не глядя в справку скажи, что будет в твоем случае для WeekDaysMask and (1 shl i) = 1
(WeekDaysMask and (1 shl i)) = 1 или WeekDaysMask and ((1 shl i) = 1)
kyn66 (2009-11-05 15:02:00) [12]Все, решение найдено, тема закрыта.
Всем мастерам большое спасибо!!!
Как говорил дедушка Ленин : "..Учиться, учиться и еще раз учиться".
kyn66 (2009-11-05 14:59:00) [13]2Anatoly Podgoretsky
Большое спасибо за статью http://www.podgoretsky.com/ddp/bits.aspx.Очень поучительная. Однако при описании SHR – логический сдвиг вправо,...в тексте допущены ошибки. Ничего что я на них указал? ;)
Сергей М. (2009-11-05 14:56:00) [14]
> значит я неверно выполнил "домашнее задание"
Прямо-таки картина Решетникова - "Опять двойка")
kyn66 (2009-11-05 14:55:00) [15]
> 2Сергей М. ©
Сергей, эврика, я исправил! Все работает как надо. Да...
for i := 0 to 6 do
TCheckBox(FindComponent('CheckBox' + IntToSTr(i))).Checked := Boolean(WeekDaysMask and (1 shl i));
Да.. иногда стоит немного поднапряч серое вещество...
kyn66 (2009-11-05 14:52:00) [16]
> Сергей М. © (05.11.09 14:39) [20]
> > WeekDaysMask and (1 shl i) = 1;Потому что это выражение
> истинно как раз только для Пн.Для Вт. = 2Для Ср. = 4Для
> Чт. = 8Выводы сделаешь сам или как ?)
Ага, точно, значит я неверно выполнил "домашнее задание". Не так исправил ошибку. Кстати действительно в калькуляторе клянул число 21 в двоичном виде имеет значение 10101, т.е. то что мне и нужно (Понедельник, Среда, Пятница) 8(
Сергей М. (2009-11-05 14:49:00) [17]
> Отладчиком отлавливаю конечное значение WeekDaysMask
Он у тебя что, инвалид ? Он не в состоянии показать в любоймомент времени значение произвольного интересующего выражения ?)
RWolf (2009-11-05 14:47:00) [18]не отличается.
kyn66 (2009-11-05 14:45:00) [19]
> А отладчик на что ?)
Отладчиком отлавливаю конечное значение WeekDaysMask. В обоих случаях(сохранение после установки и загрузка) одинаковое число. В своей статье статье Anatoly Podgoretsky описывает работу с битами. Вот мы рассчитываем позицию бита для установки (1 shl Bit)А вот процедура установки значения
function SetBit(Src: Integer; bit: Integer): Integer;
begin
Result := Src or (1 shl Bit);
end;
отличается от той, что в моем варианте
WeekDaysMask := WeekDaysMask or Byte(TCheckBox(FindComponent('CheckBox' + IntToStr(i))).Checked) shl i
или в данном случае мы через Byte(TCheckBox(FindComponent('CheckBox' + IntToStr(i))).Checked)приводим значение к 0 или 1? Я так это вижу.
Германн (2009-11-05 14:41:00) [20]
> kyn66 © (05.11.09 13:07) [6]
> > 2{RASkov} © (05.11.09 12:56) [4]
>
> Классно, спасибо, изучаю...
>
Ой врешь.