![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сократить код
Bojo © (2012-05-24 12:25:00)Подскажите пожалуйста как сократить вот такой код
Var
Des:HWND;
a,b:PChar;
begin
if (checkBox1.Checked = true) and (checkBox2.Checked = true) then begin
a:= 0 ;
b:= 0;
Edit1.Text:=('Nil');
Edit2.Text:=('Nil');
Des:=FindWindow(a,b);
end;
if (checkBox1.Checked = False) and (checkBox2.Checked = False) then begin
Des:=FindWindow(Pchar(Edit1.Text),Pchar(Edit2.Text));
end;
if (checkBox1.Checked = true) and (checkBox2.Checked = False) then begin
a:= 0 ;
Edit1.Text:=('Nil');
Des:=FindWindow(a,Pchar(Edit2.Text));
end;
if (checkBox1.Checked = False) and (checkBox2.Checked = true) then begin
b:= 0 ;
Edit2.Text:=('Nil');
Des:=FindWindow(Pchar(Edit1.Text),b);
end;
Label1.Caption :=IntToStr(Des);
end;
или другие варианты
robt (2012-05-24 18:53:00) [1]пажалста
Bojo (2012-05-24 15:45:00) [2]Отлично Все ОК такая дискуссия,из-за того что нужно было просто очистить Edit, ни CheckBox`ов ни чего, одна строчка и всё !!!.
3-и часа доходил :(((((, даже Google вспотел).
Спасибо!!!
ProgRAMmer Dimonych (2012-05-24 15:35:00) [3]> [23] Bojo © (24.05.12 15:29)
> что бы отображался nil - без разницы ,вопрос в том как присвоить
> параметру FindWindow ( 0,0) через edit
Тогда выше есть по крайней мере 2 решения, предполагающие, что пустая строка в edit'е - это 0 параметром FindWindow().
Bojo (2012-05-24 15:29:00) [4]
>
> Так всё-таки обязательно, чтобы отображался 'Nil'?
>
что бы отображался nil - без разницы ,вопрос в том как присвоить параметру FindWindow ( 0,0) через edit
ProgRAMmer Dimonych (2012-05-24 15:26:00) [5]> [21] Bojo © (24.05.12 15:22)
> а если требуется задать параметры FinWindowEx то одним if-
> ом не отделаешься , а если FinWindowEx несколько???
Так всё-таки обязательно, чтобы отображался 'Nil'?
И до какой степени нужно уменьшить код?
Bojo (2012-05-24 15:22:00) [6]а если требуется задать параметры FinWindowEx то одним if-ом не отделаешься , а если FinWindowEx несколько???
sniknik (2012-05-24 15:18:00) [7]
var
Des: HWND;
function StrToPChar(const value: string): PChar;
begin
if value = '' then result:= nil
else result:= PChar(value);
end;
begin
Des:= FindWindow(StrToPChar(Trim(Edit1.Text)),StrToPChar(Trim(Edit2.Text)));
end;
ProgRAMmer Dimonych (2012-05-24 15:12:00) [8]> [18] Bojo © (24.05.12 15:01)
>
> > Bojo © (24.05.12 14:42) [8]
> > может есть варианты задания Edit.Text = 0 без CheckBox?
>
> >
> >
>
> ????????????
Например? Как это должно выглядеть, если Edit.Text - строка, а PChar - указатель?
Если нужна визуализация, придётся обрабатывать. От одного if'а ещё никто не умирал. Если необязательно, - можно сказать пользователю, что пустое поле - это nil.
Bojo (2012-05-24 15:01:00) [9]
> Bojo © (24.05.12 14:42) [8]
> может есть варианты задания Edit.Text = 0 без CheckBox?
>
>
????????????
Bojo (2012-05-24 15:00:00) [10]
> > а 2-й требуется задать nil , то запись Pchar(Edit2.Text)
>
> > не подойдет
>
> все подойдет, просто нефиг в эдиты писать нил
Если написать 0 тоже не подойдет
ProgRAMmer Dimonych (2012-05-24 14:56:00) [11]> [15] Bojo © (24.05.12 14:54)
> > Если получение значения по тексту edit'а и состоянию checkbox'а
> > вынести в отдельную функцию
> может примерчик для размышления...
В моей версии сокращённого кода есть повторяющийся if. Его - туда.
Но если послушать [9], то даже и этого на самом деле не требуется.
Bojo (2012-05-24 14:54:00) [12]
> Если получение значения по тексту edit'а и состоянию checkbox'а
> вынести в отдельную функцию
может примерчик для размышления...
ProgRAMmer Dimonych (2012-05-24 14:50:00) [13]> [12] robt (24.05.12 14:48)
>
> > ProgRAMmer Dimonych © (24.05.12 14:44) [11]
>
> "гениально"
Что-то не так?
Bojo (2012-05-24 14:49:00) [14]отправление окнам и эл-там на них различные сообщения;
предусмотреть задание имён ., классов и т.д в ручную
robt (2012-05-24 14:48:00) [15]
> ProgRAMmer Dimonych © (24.05.12 14:44) [11]
"гениально"
ProgRAMmer Dimonych (2012-05-24 14:44:00) [16]> [7] Bojo © (24.05.12 14:39)
> да, все равно много получается.
Если получение значения по тексту edit'а и состоянию checkbox'а вынести в отдельную функцию - всего ничего, кстати, кода будет.
ProgRAMmer Dimonych (2012-05-24 14:43:00) [17]Давай тогда целиком задачу обрисуй. Явно ведь на FindWindow() всё не заканчивается.
robt (2012-05-24 14:43:00) [18]
> а 2-й требуется задать nil , то запись Pchar(Edit2.Text)
> не подойдет
все подойдет, просто нефиг в эдиты писать нил
Bojo (2012-05-24 14:42:00) [19]может есть варианты задания Edit.Text = 0 без CheckBox?
Bojo (2012-05-24 14:39:00) [20]да, все равно много получается.