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

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

Сократить код


Страницы:   1 2

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]

да, все равно много получается.


Страницы:   1 2

Наверх

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