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

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

Как обратиться к неизвестному экземпляру по индексу?


Zonder2008 ©   (2008-06-15 16:55:00) 

есть скажем 10 Мемо, как сделать memo[i].lines.Add('');


Игорь Шевченко   (2008-06-16 12:00:00) [1]

Anatoly Podgoretsky ©   (16.06.08 11:45) [18]

Я по 2006-й смотрел, других у меня нету.
Впрочем, я так тоже не пишу, поэтому особенно не огорчаюсь.


Anatoly Podgoretsky   (2008-06-16 11:45:00) [2]

> Игорь Шевченко  (16.06.2008 10:47:17)  [17]

Хочешь огорчу?

Результат obj as xxx будет разный в зависимости от версии Дельфи.


Игорь Шевченко   (2008-06-16 10:47:00) [3]

Leonid Troyanovsky ©   (15.06.08 23:56) [14]


> Анатолий, от nil не спасает, бо as его допускает.


Вот же как интересно: Код реализации _AsClass на Pure Pascal не допускает
{$IFDEF PUREPASCAL}
begin
 Result := Child;
 if not (Child is Parent) then
   Error(reInvalidCast);   // loses return address
end;
{$ELSE}

а действительная реализация на ассемблере
       TEST    EAX,EAX
       JE      @@exit
допускает.

Кому верить ?


Германн   (2008-06-16 01:21:00) [4]


> Leonid Troyanovsky ©   (15.06.08 23:56) [14]
>
>

Вот и советуй после этого читать справку.

   with TEdit(FindComponent(NamePrefix + IntToStr(i))) do
   begin
     Left := 10;
     Top := i * 20;
     Parent := self;
   end;

Д6.
Пример из справки я конечно урезал. Но "в рамках данной конференции".
:(


Anatoly Podgoretsky   (2008-06-16 00:07:00) [5]

> Leonid Troyanovsky  (15.06.2008 23:56:14)  [14]

Не буду проверять, поскольку так писать никогда не буду.


Leonid Troyanovsky   (2008-06-15 23:56:00) [6]


> Anatoly Podgoretsky ©   (15.06.08 21:47) [11]

> Леонид проверка на nil не обязательно, поскольку есть предикат
> AS

Анатолий, от nil не спасает, бо as его допускает.

--
Regards, LVT.


Loginov Dmitry   (2008-06-15 23:55:00) [7]

> Если ошибка одна, то это Form1.


Компилятор не ругается! Какая же здесь ошибка? Указанием "Form1" я лишь подчеркнул, что метод FindComponent() следует вызывать в данномслучае именноу формы.

> У Архангельского позаимствовал или сам изобрел ?


Это "изобретение" старо как мир. Теперь видимо и Вы о нем узнали. Читайте в справке про FindComponent().


MsGuns   (2008-06-15 23:25:00) [8]

>Loginov Dmitry ©   (15.06.08 18:01) [4]
>(Form1.FindComponent('Memo' + IntToStr(I)) as TMemo).Lines.Add('');

У Архангельского позаимствовал или сам изобрел ?


Anatoly Podgoretsky   (2008-06-15 21:47:00) [9]

> Leonid Troyanovsky  (15.06.2008 21:07:10)  [10]

Леонид проверка на nil не обязательно, поскольку есть предикат AS


Leonid Troyanovsky   (2008-06-15 21:07:00) [10]


> TForumHelp ©   (15.06.08 20:05) [9]

> а вот здесь: (Form1.FindComponent('Memo' + IntToStr(I))
> as TMemo).Lines.Add(''); если не ошибаюсь.

Если ошибка одна, то это Form1.
Если допустимо более, то это отсутствие проверки nil.

--
Regards, LVT.


TForumHelp   (2008-06-15 20:05:00) [11]


> > (Form1.FindComponent('Memo' + IntToStr(I)) as TMemo).Lines.
> > Add('');Где в этом коде ошибка ?


а вот здесь: (Form1.FindComponent('Memo' + IntToStr(I ))as TMemo).Lines.Add(''); если не ошибаюсь.


Loginov Dmitry   (2008-06-15 20:00:00) [12]

> Где в этом коде ошибка ?


Вам виднее.


Anatoly Podgoretsky   (2008-06-15 19:36:00) [13]

> Smile  (15.06.2008 19:23:06)  [6]

Обратись в уголовный розыск.


Smile   (2008-06-15 19:23:00) [14]

Куда-то пропали индексы у Memo:)


Игорь Шевченко   (2008-06-15 19:19:00) [15]


> (Form1.FindComponent('Memo' + IntToStr(I)) as TMemo).Lines.
> Add('');


Где в этом коде ошибка ?


Loginov Dmitry   (2008-06-15 18:01:00) [16]

(Form1.FindComponent('Memo' + IntToStr(I)) as TMemo).Lines.Add('');


Германн   (2008-06-15 17:44:00) [17]

В FormCreate
 Memo[1]:=Memo1;
 Memo[2]:=Memo2;
и так все 10;


Zonder2008   (2008-06-15 17:15:00) [18]

мне нужно не рантайм создавать а в экземпляры, которые при дизайне созданы были


Renegat   (2008-06-15 16:57:00) [19]

создай массив

memo: array [1..10] of TMemo;


Наверх

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