Текущий архив: 2008.10.05;
Скачать: CL | DM;
Вниз
return value of function might be undefined Найти похожие ветки
← →
Drone © (2008-08-26 14:42) [0]
function exitt(b:TWinControl):Boolean;
var i:integer;
begin
for i:=0 to b.ControlCount-1 do
if (b.controls[i] is TEdit)and((b.Controls[i] as TEdit).Text="exit")
then exitt:=true end;
procedure TForm1.Button1Click(Sender:TObject);
begin if exitt(self)=true then form1.Close end;
как избавиться от этой ошибки?
Ведь функция возвращает значение ...
← →
stas © (2008-08-26 14:45) [1]
then Result:=true end;
← →
stas © (2008-08-26 14:46) [2]begin
Result:=false
← →
Palladin © (2008-08-26 14:53) [3]
> Ведь функция возвращает значение ...
с чего ты взял?
← →
Vlad Oshin © (2008-08-26 14:54) [4]
function exitt(b:TWinControl):Boolean;
var
i:integer;
begin
Result:=false;
for i:=0 to b.ControlCount-1 do
if (b.controls[i] is TEdit)and((b.Controls[i] as TEdit).Text="exit") then
result:=true;
end;
← →
Ega23 © (2008-08-26 14:55) [5]
function exitt(b:TWinControl):Boolean;
var i:integer;
begin
Result := False;
for i:=0 to b.ControlCount-1 do
if (b.controls[i] is TEdit)and((b.Controls[i] as TEdit).Text="exit")
then exitt:=true end;
exitt:=true
Так можно, но уже почти никто так не пишет. Пользуют Result.
← →
Ega23 © (2008-08-26 14:57) [6]А она у тебя ещё и неправильная:
function exitt(b:TWinControl):Boolean;
var i:integer;
begin
Result := False;
for i:=0 to b.ControlCount-1 do
if (b.controls[i] is TEdit)and((b.Controls[i] as TEdit).Text="exit")then
begin
Result := True;
Break;
end;
end;
← →
stas © (2008-08-26 14:58) [7]а так будет быстрее
function exitt(b:TWinControl):Boolean;
var
i:integer;
begin
Result:=false;
for i:=0 to b.ControlCount-1 do
begin
Result:= (b.controls[i] is TEdit)and((b.Controls[i] as TEdit).Text="exit")
if result then break;
end;
end;
← →
stas © (2008-08-26 14:59) [8]Ega23 © (26.08.08 14:57) [6]
не успел.
← →
Ega23 © (2008-08-26 15:00) [9]
> а так будет быстрее
Гы... Это чем быстрее-то?
← →
Ega23 © (2008-08-26 15:01) [10]
> stas © (26.08.08 14:59) [8]
>
> Ega23 © (26.08.08 14:57) [6]
> не успел.
>
А, это не мне было.
Ну без Break эта функция вообще ошибочная.
← →
Deltas © (2008-08-26 15:01) [11]
> for i:=0 to b.ControlCount-1 do
> if (b.controls[i] is TEdit)and((b.Controls[i] as TEdit).
> Text="exit")
> then exitt:=true end;
for i := 0 to b.ControlCount - 1 do
if (b.Controls[i] is TEdit) and ((b.Controls[i] as TEdit).Text = "exit") then begin
Result := True;
Exit; // выход из функции
end;
Result := False;
> if exitt(self)=true then form1.Close
Не нужно сравнивать булевские переменные на равенство False, True. Достаточно записать
if exitt(self) then form1.Close;
← →
Ega23 © (2008-08-26 15:06) [12]
> Не нужно сравнивать булевские переменные на равенство False, True.
Не всегда.
← →
Deltas © (2008-08-26 15:07) [13]
> > Не нужно сравнивать булевские переменные на равенство
> False, True.
>
>
> Не всегда.
Например?
← →
Palladin © (2008-08-26 15:07) [14]
Result := False;
for i := 0 to b.ControlCount - 1 do
if (b.Controls[i] is TEdit) and ((b.Controls[i] as TEdit).Text = "exit") then begin
Result := True;
Break; // выход из функции
end;
← →
Ega23 © (2008-08-26 15:08) [15]
> Например?
С вариантами связано. Сейчас в точности не упомню, но прикол такой был.
← →
Deltas © (2008-08-26 15:14) [16]
> С вариантами связано. Сейчас в точности не упомню, но прикол
> такой был.
Насчет вариантов спорить не стану. Но я же написал, что булевские переменные не обязательно сравнивать, а Boolean это не Variant. Кстати, насчет вариантов, думаю прокатит приведение типов Boolean(vrnt), где vrnt: Variant?
← →
Drone © (2008-08-26 15:58) [17]@ stas, Vlad Oshin спасибо!
@ Palladin мне так казалось из-за exitt:=true
@ Ega23 спасибо огромное за поправку я не знал про result
@ Deltas без сравнения на истинность иногда булевские функции срабатывают ошибочно
@ Palladin спасибо за комент :)
@ Ega23 отлично! я не знал про Break и что без Break эта функция не будет работать.
Спасибо всем большое! Я недавно начал работать с Дельфи. Так что всего не знаю
Страницы: 1 вся ветка
Текущий архив: 2008.10.05;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.008 c