Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение параметров программы одним числом [D7, WinXP]


Страницы:   1 2

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]
>
> Классно, спасибо, изучаю...
>

Ой врешь.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо