![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
list
леха © (2004-10-29 18:59:00)Имеется listview в котором выводится информация о разделах жесткого диска.
В первой колонке (точнее Listview.Colums[0]) расположен checkboxed, а за ним имя диска
(например С:\). Нужно отследить какие checkboxed находятся в cbChecked и поместить название
выделенного диска в LISTBOX.
GuAV (2004-10-30 21:13:00) [1]
> Сдается мне, что это внешняя функция не совсем
> корректно описана или себя ведет :)
Именно. Некоррекно описана. Надо не Boolean а BOOL.
Одной ветки думаю нам хватит, пишите сюда http://www.delphimaster.ru/cgi-bin/forum.pl?id=1099137400&n=5
Игорь Шевченко (2004-10-30 19:40:00) [2]GuAV © (30.10.04 14:12) [12]
> Я например сталкивался с объявлением внешней функции с boolean
> заместо BOOL... это грабли.
Сдается мне, что это внешняя функция не совсем корректно описана или себя ведет :)
GuAV (2004-10-30 17:13:00) [3]alena.svt © (30.10.04 16:52) [13]
А все зависит от конкретной ситуации.
Никакой зависимости, всегда лучше без " = true"
Кроме возможно вкуса. Но следует вырабатывать правильный вкус.
alena.svt (2004-10-30 16:52:00) [4]Я так поняла , что зависит ни от читабельности и ни от вкуса
А все зависит от конкретной ситуации.
?
GuAV (2004-10-30 14:12:00) [5]VMcL © (30.10.04 12:59) [11]
В смысле WordBool, LongBool и т. п?
Да в этом случае возможно либо true <> true либо true = true.
Я например сталкивался с объявлением внешней функции с boolean заместо BOOL... это грабли.
VMcL (2004-10-30 12:59:00) [6]>> Anatoly Podgoretsky © (30.10.04 11:20) [10]
В смысле WordBool, LongBool и т. п?
Anatoly Podgoretsky (2004-10-30 11:20:00) [7]Учитывая, что имеет 4 разных варианта логических типов, то можно серьезно пострадать с такими конструкциями и уже многие пострадали
VMcL (2004-10-30 10:31:00) [8]>> alena.svt © (30.10.04 07:49) [8]
Конструкции
if Button1.Enabled then
if not Button1.Enabled then
более понятны с точки зрения естественно языка
"если кнопка видима, то"
"если кнопка невидима, то"
if Button1.Enabled = false then
"если 'кнопка видима' является ложью, то"
alena.svt (2004-10-30 07:49:00) [9]VMcL © (29.10.04 23:48) [7]
if a then
if not a then
Не учитывая потерю производительности, а только читабильность
if a = false then мне кажется более читабельной
Так все - же дело вкуса?
VMcL (2004-10-29 23:48:00) [10]>> GuAV © (29.10.04 22:17) [6]
>> небольшая потеря производительности.
По большому счету, это даже не самое важное, поскольку потеря быстродействия в общем-то незначительна, особенно для бизнес-приложений. Более важно - это читабельность кода.
Я считаю сравнения типа
if a = True then
if a = False then
if a <> True then
if a <> False then
т. е. сравнения булевых выражений с булевой константой извращениями людей, которые не очень хорошо знают язык, и мешают его нормально понимать другим.
Можно писать и так
if a < True then
if a > False then
но зачем гланды удалять через задний проход?
GuAV (2004-10-29 22:17:00) [11]alena.svt © (29.10.04 22:00) [5]
asm - это то чего я побаиваюсь даже начать понимать
ИМХО зря.
alena.svt © (29.10.04 22:00) [5]
Если не трудно объясни и каковы последствия = True?
небольшая потеря производительности.
плюс нестандартные значения true, например boolean(5), могут не считаться true (конечно их надо избегать или описывать не как boolean, но такие ошибки встречаются).
alena.svt (2004-10-29 22:00:00) [12]VMcL © (29.10.04 21:32) [4]
asm - это то чего я побаиваюсь даже начать понимать
Если не трудно объясни и каковы последствия = True?
VMcL (2004-10-29 21:32:00) [13]>> alena.svt © (29.10.04 19:45) [3]
Плохой вкус, потому что вместо
test al, al
jz +$xy
как в случаеif Items[i].Checked then
будет
cmp al, 1
jnz +$xy
Причем даже при включенной оптимизации (D6).
alena.svt (2004-10-29 19:45:00) [14]Нет дело вкуса
VMcL (2004-10-29 19:43:00) [15]> Items[i].Checked = True
Это для пущей надежности?
alena.svt (2004-10-29 19:28:00) [16]procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
S: string;
begin
with ListView1 do
for I:= 0 to Items.Count -1 do
if Items[i].Checked = True then
begin
ListBox1.Items.Add(ListView1.Items[I].Caption);
................................
end;
end;