![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обартится к элементу с порядковым номером в виде переменной? [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) - тебе поможет