![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обратиться к объекту? [D7, WinXP]
iterator © (2009-06-19 17:13:00)Возможно, вопрос может показаться уж слишком простым, но что то никак не могу решить следующую задачу:
var
a:string;
b:integer;
a:='Button'+IntToStr(b);{имя объекта кнопка Button0}
а как теперь этой кнопке например заменить свойство caption?
(т.е. есть 10 кнопок, нужно для всех кнопок без лишней писанины заменить значения свойства)
Спасибо.
Andy BitOff (2009-06-20 13:44:00) [1]> Anatoly Podgoretsky © (20.06.09 10:38) [20]
Анатолий, говоря они, я, конечно же, подразумевал решение задачи [3], а не непосредственно переменные. Кстати, я о них не сказал ни слова. Это ясно только по смыслу.
Но в целом согласен. Неудачная формулировка получилась.
Медвежонок Пятачок (2009-06-20 11:42:00) [2]в автошколе массивы не проходят
Strate (2009-06-20 11:37:00) [3]Я тут одного не пойму ) А массивы уже отменили?
Anatoly Podgoretsky (2009-06-20 10:38:00) [4]
> Andy BitOff © (19.06.09 19:12) [8]
Если они являются свойством, то они не являются переменной и по большому счету могут не иметь физического значения в виде хранения.
Германн (2009-06-20 01:48:00) [5]
> iterator © (20.06.09 01:32) [18]
>
>
> > Скорее всего автору лень писать 10 IF'ов.
>
> все верно лень!!! и прокручивать текст на 600 строк тоже
> лень, когда все легко уместится в 50!!
>
Поживёшь - увидишь!
iterator (2009-06-20 01:32:00) [6]
> Скорее всего автору лень писать 10 IF'ов.
все верно лень!!! и прокручивать текст на 600 строк тоже лень, когда все легко уместится в 50!!
Медвежонок Пятачок (2009-06-20 01:05:00) [7]десять их может понадобиться только если паскаль в автошколе досааф изучал.
Германн (2009-06-20 00:19:00) [8]
> iterator © (19.06.09 20:50) [12]
>
> конечно в runtime переменные то не создаются, просто хочется
> упростить процедуру, которая работает с 10 переменными типа
> string, отличающуюся только цифрой в конце.
>
Весьма странное и не менее весьма противоречивое заявление. Скорее всего автору лень писать 10 IF'ов.
Andy BitOff (2009-06-19 22:44:00) [9]> Сергей М. © (19.06.09 22:06) [14]
Сэр формалист?
Сергей М. (2009-06-19 22:06:00) [10]
> Andy BitOff © (19.06.09 20:33) [11]
Вижу только одну переменную:
MyStrings: TMyStrings;
И какое отношение к ней имеет published - не понятно
turbouser (2009-06-19 20:58:00) [11]
> iterator © (19.06.09 20:50) [12]
Oo нда...
TStrings спасут отца русской демократии...
iterator (2009-06-19 20:50:00) [12]конечно в runtime переменные то не создаются, просто хочется упростить процедуру, которая работает с 10 переменными типа string, отличающуюся только цифрой в конце.
например
var
ab0,ab1,ab2,ab3:string;
ab0:='строка0';
ab1:='строка1';
ab2:='строка2';
ab3:='строка3'; и т.д.
нужно проверить каждая ли строка равна некой другой строке, ну, примерно
for i:=0 to 3 do
begin
if (ab+inttostr(i))='ab'+IntToStr(i) then
Showmessage('OK');
end;
то, что выделено жирным меня и интересует, как написать правильно, т.е. если название переменной совпадает cо значением этой переменной, то показать сообщение.... надеюсь вы меня поняли... если уж такое невозможно, то тогда сделаю все на массиве.
Andy BitOff (2009-06-19 20:33:00) [13]> Сергей М. © (19.06.09 20:19) [10]
type
TMyStrings = class
private
FOpenError: string;
published
property sOpenError: string read FOpenError write FOpenError;
end;
var
MyStrings: TMyStrings;
implementation
SetPropValue(MyStrings, 'sOpenError', 'не найден файл или еще чего');
if not FileExists('SomeFile.sf') then
ShowMassege(MyStrings.sOpenError);
Как-то так. Разве нет?
Сергей М. (2009-06-19 20:19:00) [14]
> Andy BitOff © (19.06.09 19:12) [8]
Чегоо ?
Медвежонок Пятачок (2009-06-19 19:31:00) [15]а что за извращение иметь в коде переменную, иметь переменную или литерал с именем первой переменой и искать ее по имени (что само по себе невозможно)?
или он хочет сказать, что делает много раз StrAlloc и не сохраняет ссылки?
но тогда и имени никакого не будет ни в рантайме ни в дизайнтайме.
так что же он собрался искать по имени?
Andy BitOff (2009-06-19 19:12:00) [16]> Styx_ (19.06.09 18:38) [7]
Если они не являются раблишед свойством класса.
В некоторый программах на этом основана локализация. Все строковые переменные забиваются в класс и при локализации ищутся именно по имени.
Styx_ (2009-06-19 18:38:00) [17]Медвежонок Пятачок
Видимо, обратиться надо по заданному в runtime имени. А в runtime у переменных имён нетуть.
Медвежонок Пятачок (2009-06-19 18:25:00) [18]как также обратиться к переменной
То есть переменная у тебя есть, если к ней хочется "обратиться"?
Тогда какие вообще проблемы?
Styx_ (2009-06-19 18:15:00) [19]
> может тогда заодно подскажите как также обратиться к переменной
> (тип string)
Никак
Медвежонок Пятачок (2009-06-19 18:12:00) [20]Чего?