Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Сократить код   Найти похожие ветки 

 
Bojo ©   (2012-05-24 12:25) [0]

Подскажите пожалуйста как сократить вот такой код

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;

или другие варианты


 
ProgRAMmer Dimonych ©   (2012-05-24 12:39) [1]

Так лучше?

Var
  Des  : HWND;
  a, b : PChar;
begin
  if checkBox1.Checked then
  begin
    a := nil;
    Edit1.Text := "Nil";
  end
  else
    a := PChar(Edit1.Text);

  if checkBox2.Checked then
  begin
    b := nil;
    Edit2.Text := "Nil";
  end
  else
    b := PChar(Edit2.Text);

  Des := FindWindow(a, b);
  Label1.Caption := IntToStr(Des);
end;


 
oldman ©   (2012-05-24 12:40) [2]

if checkBox1.Checked then begin
 a:= 0 ;
 Edit1.Text:=("Nil");
 if checkBox2.Checked then begin
   b:= 0;
   Edit2.Text:=("Nil");
   Des:=FindWindow(a,b);  end;
 else Des:=FindWindow(a,Pchar(Edit2.Text));
 end
else
 if checkBox2.Checked then begin
   b:= 0 ;
   Edit2.Text:=("Nil");
   Des:=FindWindow(Pchar(Edit1.Text),b);
 end;
 else   Des:=FindWindow(Pchar(Edit1.Text),Pchar(Edit2.Text));
end;


 
Leonid Troyanovsky ©   (2012-05-24 13:29) [3]


> Bojo ©   (24.05.12 12:25)  


 Des:=FindWindow(Pointer(Edit1.Text),Pointer(Edit2.Text));

--
Regards, LVT.


 
Bojo ©   (2012-05-24 14:19) [4]

Требуется задание параметров FindWindow c помощью edit.
Des:=FindWindow(Pchar(Edit1.Text),Pchar(Edit2.Text));
Если 1-й параметр Pchar(Edit1.Text) вводить через edit ;
а 2-й требуется задать nil , то запись Pchar(Edit2.Text) не подойдет.По этому поставил CheckBox если Checked то Pchar(Edit1.Text) = 0


 
Bojo ©   (2012-05-24 14:27) [5]

А если расписывать FinwindowEx ... то код будет порядком больше ...


 
ProgRAMmer Dimonych ©   (2012-05-24 14:35) [6]

> [4] Bojo ©   (24.05.12 14:19)
> Требуется задание параметров FindWindow c помощью edit.
> Des:=FindWindow(Pchar(Edit1.Text),Pchar(Edit2.Text));
> Если 1-й параметр Pchar(Edit1.Text) вводить через edit ;
>
> а 2-й требуется задать nil , то запись Pchar(Edit2.Text)
> не подойдет.По этому поставил CheckBox если Checked то
> Pchar(Edit1.Text) = 0

Все три варианта попробовал?


 
Bojo ©   (2012-05-24 14:39) [7]

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


 
Bojo ©   (2012-05-24 14:42) [8]

может есть варианты задания Edit.Text = 0 без CheckBox?


 
robt   (2012-05-24 14:43) [9]


> а 2-й требуется задать nil , то запись Pchar(Edit2.Text)
> не подойдет

все подойдет, просто нефиг в эдиты писать нил


 
ProgRAMmer Dimonych ©   (2012-05-24 14:43) [10]

Давай тогда целиком задачу обрисуй. Явно ведь на FindWindow() всё не заканчивается.


 
ProgRAMmer Dimonych ©   (2012-05-24 14:44) [11]

> [7] Bojo ©   (24.05.12 14:39)
> да, все равно много получается.

Если получение значения по тексту edit"а и состоянию checkbox"а вынести в отдельную функцию - всего ничего, кстати, кода будет.


 
robt   (2012-05-24 14:48) [12]


> ProgRAMmer Dimonych ©   (24.05.12 14:44) [11]

"гениально"


 
Bojo ©   (2012-05-24 14:49) [13]

отправление окнам и эл-там на  них различные сообщения;
предусмотреть задание имён ., классов и т.д в ручную


 
ProgRAMmer Dimonych ©   (2012-05-24 14:50) [14]

> [12] robt   (24.05.12 14:48)
>
> > ProgRAMmer Dimonych ©   (24.05.12 14:44) [11]
>
> "гениально"

Что-то не так?


 
Bojo ©   (2012-05-24 14:54) [15]


> Если получение значения по тексту edit"а и состоянию checkbox"а
> вынести в отдельную функцию

может примерчик для размышления...


 
ProgRAMmer Dimonych ©   (2012-05-24 14:56) [16]

> [15] Bojo ©   (24.05.12 14:54)
> > Если получение значения по тексту edit"а и состоянию checkbox"а
> > вынести в отдельную функцию
> может примерчик для размышления...

В моей версии сокращённого кода есть повторяющийся if. Его - туда.

Но если послушать [9], то даже и этого на самом деле не требуется.


 
Bojo ©   (2012-05-24 15:00) [17]


> > а 2-й требуется задать nil , то запись Pchar(Edit2.Text)
>
> > не подойдет
>
> все подойдет, просто нефиг в эдиты писать нил

Если написать 0 тоже не подойдет


 
Bojo ©   (2012-05-24 15:01) [18]


> Bojo ©   (24.05.12 14:42) [8]
> может есть варианты задания Edit.Text = 0 без CheckBox?
>
>

????????????


 
ProgRAMmer Dimonych ©   (2012-05-24 15:12) [19]

> [18] Bojo ©   (24.05.12 15:01)
>
> > Bojo ©   (24.05.12 14:42) [8]
> > может есть варианты задания Edit.Text = 0 без CheckBox?
>
> >
> >
>
> ????????????

Например? Как это должно выглядеть, если Edit.Text - строка, а PChar - указатель?

Если нужна визуализация, придётся обрабатывать. От одного if"а ещё никто не умирал. Если необязательно, - можно сказать пользователю, что пустое поле - это nil.


 
sniknik ©   (2012-05-24 15:18) [20]

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;


 
Bojo ©   (2012-05-24 15:22) [21]

а если требуется задать параметры FinWindowEx то одним if-ом не отделаешься , а если FinWindowEx несколько???


 
ProgRAMmer Dimonych ©   (2012-05-24 15:26) [22]

> [21] Bojo ©   (24.05.12 15:22)
> а если требуется задать параметры FinWindowEx то одним if-
> ом не отделаешься , а если FinWindowEx несколько???

Так всё-таки обязательно, чтобы отображался "Nil"?

И до какой степени нужно уменьшить код?


 
Bojo ©   (2012-05-24 15:29) [23]


>
> Так всё-таки обязательно, чтобы отображался "Nil"?
>


что бы отображался nil - без разницы ,вопрос в том как присвоить параметру FindWindow ( 0,0) через edit


 
ProgRAMmer Dimonych ©   (2012-05-24 15:35) [24]

> [23] Bojo ©   (24.05.12 15:29)
> что бы отображался nil - без разницы ,вопрос в том как присвоить
> параметру FindWindow ( 0,0) через edit

Тогда выше есть по крайней мере 2 решения, предполагающие, что пустая строка в edit"е - это 0 параметром FindWindow().


 
Bojo ©   (2012-05-24 15:45) [25]

Отлично Все ОК такая дискуссия,из-за того что нужно было просто очистить Edit, ни CheckBox`ов ни чего, одна строчка и всё !!!.
3-и часа доходил :(((((, даже Google вспотел).
Спасибо!!!


 
robt   (2012-05-24 18:53) [26]

пажалста



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.062 c
2-1340633585
webpauk
2012-06-25 18:13
2013.03.22
Изменение TabSheet.Caption


15-1329343946
Иксик
2012-02-16 02:12
2013.03.22
А можно ли раскрыть эту неопределенность БЕЗ правила Лопиталя?


15-1333612123
Хаус
2012-04-05 11:48
2013.03.22
Нарисовать кнопку в XP-стиле


15-1345778325
Думкин
2012-08-24 07:18
2013.03.22
Теперь то Микрософт всех покорит


2-1332071987
Pcrepair
2012-03-18 15:59
2013.03.22
компонент TIdHTTP, разница в синтаксисе для ИНДИ7 и ИНДИ10





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский