![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
216 ошибка [D6, XP]
Alex © (2008-06-09 12:34:00)День добрый! Есть такой код
var
comb:TComboBox;
i:integer;
mas: array[1..32] of integer;
begin
for I := 1 to 32 do
comb:=Form1.Findcomponent('ComboBox'+IntToStr(i)) as TComboBox;вот здесь возникает ошибка runtime error 216 at...
mas[I] := IfThen(Comb.seltext='1',1,0);
end;
Вопрос что я делаю не так и как сделать правильно?
Спасибо
Anatoly Podgoretsky (2008-06-09 13:56:00) [1]> Palladin (09.06.2008 13:36:14) [14]
И еще вопрос, а сколько экземпляров TForm1 в программе.
Ega23 (2008-06-09 13:49:00) [2]
> не важно, создан оно или нет,
Это вопрос был не "Как создан объект?", а "Создан ли объект в ран-тайм?"
Alex (2008-06-09 13:45:00) [3]
> не важно, создан оно или нет, вопрос в том, существует ли
> оно во время исполнения твоего суперкода...
Мой косяк в этом все и дело. Спасибо
Плохиш (2008-06-09 13:41:00) [4]
> Alex (09.06.08 13:13) [8]
>
> > ты конечно уверен, что Form1 у тебя существует?
>
> Form1 существует
Какого-нибуть комбобокса несуществует.
Palladin (2008-06-09 13:36:00) [5]не важно, создан оно или нет, вопрос в том, существует ли оно во время исполнения твоего суперкода...
Ega23 (2008-06-09 13:35:00) [6]
> Ок но в objectTreeView Form1 есть со всеми объектами
>
Он в ран-тайме создан?
clickmaker (2008-06-09 13:33:00) [7]> Ок но в objectTreeView Form1 есть со всеми объектами
а это здесь причем?
TForm1.Create или Application.CreateForm(Form1 есть?
Alex (2008-06-09 13:31:00) [8]
> э... а в отладчике-то что показывает?
>
Вот
Tcomponent:findcomponent:
.
0419E00 837f1000 cmp dword ptr [edi+$10],$00
.
> если у тебя есть в файле Unit1
> Var
> Form1:TForm1;
>
> это еще далеко не значит, что идентификатор Form1 содержит
> то, что ты от него ожидаешь
>
Ок но в objectTreeView Form1 есть со всеми объектами
clickmaker (2008-06-09 13:18:00) [9]э... а в отладчике-то что показывает?
Palladin (2008-06-09 13:14:00) [10]если у тебя есть в файле Unit1
Var
Form1:TForm1;
это еще далеко не значит, что идентификатор Form1 содержит то, что ты от него ожидаешь
Alex (2008-06-09 13:13:00) [11]
> ты конечно уверен, что Form1 у тебя существует?
Form1 существует
Palladin (2008-06-09 13:10:00) [12]ты конечно уверен, что Form1 у тебя существует?
Alex (2008-06-09 13:08:00) [13]Ок сделал так, а ошибка есть
for I := 1 to 32 do
begin
comb:=Form1.Findcomponent('ComboBox'+IntToStr(i)) as TComboBox;
if comb<>nil then mas[I] := IfThen(Comb.seltext='1',1,0);
end;
Olegz77 (2008-06-09 13:07:00) [14]
var
comb:TComboBox;
i:integer;
mas: array[1..32] of integer;
begin
for I := 1 to 32 do
begin
comb:=Form1.Findcomponent('ComboBox'+IntToStr(i)) as TComboBox;
if comb <> nil then
mas[I] := IfThen(Comb.seltext='1',1,0);
end;
end;
Ega23 (2008-06-09 13:05:00) [15]цикл у тебя из одной строчки. А надо из трёх.
Alex (2008-06-09 13:04:00) [16]
> 2. перед mas[I] := ... надо поставить проверку if comb <>
> nil then mas[I] := ...
>
проверку ставил, а ошибка возникает
Olegz77 (2008-06-09 12:42:00) [17]1. У тебя в цикле выполняются два оператора:
comb := ....
и
mas[I] := ...
надо добавить begin после for I := 1 to 32 do и end; после mas[I]
2. перед mas[I] := ... надо поставить проверку if comb <> nil then mas[I] := ...
Ega23 (2008-06-09 12:36:00) [18]
> Form1.Findcomponent('ComboBox'+IntToStr(i)) as TComboBox