![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
???
ZV © (2006-06-04 23:44:00)Не пойму что в результате присвоиться d.
d := true;
d := d and (b = (b and Lpt.ReadPort(GetCurrentPort,2))) ;
Объясните что здесь к чему. Интересует вторая строка, что то я не пойму что здесь происходит. Код взят из исходника.
Loginov Dmitry (2006-06-05 10:21:00) [1]Loginov Dmitry © (05.06.06 0:21) [2]
Да уж... Чушь написал. Сорри!. В такое время уже спать нужно :)
ZV (2006-06-05 08:58:00) [2]Очень благодарен тебе Юрий. Вот это я и хотел узнать. Спасибо
Юрий Зотов (2006-06-05 05:45:00) [3]d := true;
d := d and (...)
Да уж...
Однажды, после нескольких дней работы в одной конторе (причем, как это ни странно, конторе серьезной и широко известной) я показал кусок чужого кода соседу и попросил: "Слушай, Дим, посмотри, пожалуйста, что-то я сомневаюсь. Конечно, я работаю здесь совсем недавно и в проект еще не въехал, поэтому могу и ошибаться, но вот здесь, кажется, написана чушь".
Димка посмотрел и высказался так: "Ну Юрий Сергеевич, ну Вы что, не видите? Это писал ПРОГРАММИСТ , это надо переписывать".
Увы, эту его горькую шутку потом приходилось вспоминать не раз. Вот и сейчас вспомнилась.
> ZV © (04.06.06 23:44)
В переводе на "русский" язык это звучит так: "если в значении, которое вернула функция ReadPort, выставлены в 1 все биты, которые выставлены в 1 в значении переменной b, то d:=True, иначе d:=False".
Если верить комментарию "установка бита", то в переменной b должен быть выставлен в 1 только один бит (т.е., в ComboBox5.Text должно содержаться число, являющееся степенью двойки: 1, 2, 4, 8 и т. д.). Таким образом, речь идет о проверке того, выставлен ли тот же самый бит на порту. Причем часть этого кода можно безболезненно выкинуть и оставить только:
b := StrToInt(ComboBox5.Text);
d := b = b and Lpt.ReadPort(GetCurrentPort,2) ;
ZV (2006-06-05 00:43:00) [4]Вот это и непонятно.Если можеш опиши что происходит в этой строке(логику)что к чему и что с чем и если так то как. Я непойму логики
Loginov Dmitry (2006-06-05 00:21:00) [5]А что непонятно?
'and' и '=' - это операции, которые возвращают результат True и False.
Теперь все понятно?
ZV (2006-06-04 23:56:00) [6]function TForm1.CLK : boolean ;
Var
d : boolean;
b : integer;
begin
b := StrToInt(ComboBox5.Text); //-- установка бита
d := true;
d := d and (b = (b and Lpt.ReadPort(GetCurrentPort,2))) ; // ??????