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

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

Как обартится к элементу с порядковым номером в виде переменной? [D6, XP]


vegarulez ©   (2007-01-06 20:08:00) 

Доброго времени суток мастерам.
Подскажите ответ на такой вопрос
есть
Edit1 Edit2
и
i:integer

Так вот вопрос по синтаксису как правильно обратится к Edit`ам?

типа Edit[i] или Edit+[i] или как?...


ors_archangel   (2007-01-07 18:01:00) [1]

Вопрос [0], я так понял, появляется не реже, чем раз в месяц :) Пора делфи переписывать


MsGuns   (2007-01-07 14:37:00) [2]

Дело даже не в коде, а .. в полных потемках в головах


Anatoly Podgoretsky   (2007-01-07 13:31:00) [3]

> koha  (07.01.2007 02:49:12)  [12]

Плохой код.


vegarulez   (2007-01-07 09:59:00) [4]

2: Sleepeer
 Пасип... но уже разобрался...  ;)

2: koha  
Очень полезная проверка на Nil...
если её не делать то при обращении к свойству несуществующего компонента - на эксэпшн выпадает...


koha   (2007-01-07 02:49:00) [5]

> Sleepeer   (06.01.07 22:01) [7]

> for i := 1 to 5 do begin
>   Ed := FindComponent('Edit' + IntToStr(i));
>   (Ed as TEdit).Text := 'найден';
> end;

В подобный код проверочку можно вставить, чтобы было "Not Ничего не будет"

if FindComponent('Edit' + IntToStr(i)) <> Nil then begin
 ShowMessage('Найден')
 Ed:=TEdit(FindComponent('Edit' + IntToStr(i)));
end    
else ShowMessage('Не найден');


Anatoly Podgoretsky   (2007-01-06 23:52:00) [6]

> MsGuns  (06.01.2007 23:36:10)  [10]

Отсюда вывод - не надо так делать.


MsGuns   (2007-01-06 23:36:00) [7]

>MetalFan ©   (06.01.07 23:09) [9]
>а что будет, если не окажется компонента с таким именем? ;)

Ничего не будет ;)
В смысле AV ;))


MetalFan   (2007-01-06 23:09:00) [8]


> Sleepeer   (06.01.07 22:01) [7]


а что будет, если не окажется компонента с таким именем? ;)


MsGuns   (2007-01-06 22:35:00) [9]

>Sleepeer   (06.01.07 22:01) [7]

Плохо самому ТАК делать, но вовсе преступно советовать ЭТО другим


Sleepeer   (2007-01-06 22:01:00) [10]

Если ещё не разобрался, то вот :

procedure TForm1.Button1Click(Sender: TObject);
var
i     : byte;
Ed : TComponent;
begin
for i := 1 to 5 do begin
  Ed := FindComponent('Edit' + IntToStr(i));
  (Ed as TEdit).Text := 'найден';
end;
end;


MsGuns   (2007-01-06 20:50:00) [11]

В [1]-м к солдатам обращаются по фамилиям, не так ли ?


vegarulez   (2007-01-06 20:47:00) [12]

2: MsGuns ©
 Ну да собственно в скриптовых языках я атк и делал....
2: Sleepeer
 Ахха пасип... вроде понял....


Джо   (2007-01-06 20:21:00) [13]

> [2] vegarulez ©   (06.01.07 20:19)
> А напрямую никак нельзя???

Делфи — не скриптовый язык и имена переменных в нем ничего не значат и даже не хранятся в готовой программе.


MsGuns   (2007-01-06 20:21:00) [14]

Представь выстроенную дивизию, перед которой стоит наш Чапаев:
- Солдат[i], [i+1] и [i+2] выйти из строя !


vegarulez   (2007-01-06 20:19:00) [15]

А напрямую никак нельзя???
вроде
Edit +(i)
или ещё как нить?


Sleepeer   (2007-01-06 20:11:00) [16]

function FindComponent(const Name: string) - тебе поможет


Наверх

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