Форум: "Начинающим";
Текущий архив: 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.065 c