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

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

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


Наверх

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