Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.16;
Скачать: CL | DM;

Вниз

Как обратиться к объекту?   Найти похожие ветки 

 
iterator ©   (2009-06-19 17:13) [0]

Возможно, вопрос может показаться уж слишком простым, но что то никак не могу решить следующую задачу:

var
a:string;
b:integer;

a:="Button"+IntToStr(b);{имя объекта кнопка Button0}

а как теперь этой кнопке например заменить свойство caption?
(т.е. есть 10 кнопок, нужно для всех кнопок без лишней писанины заменить значения свойства)

Спасибо.


 
Сергей М. ©   (2009-06-19 17:22) [1]

TButton(FindComponent(a)).Caption := ..


 
iterator ©   (2009-06-19 17:32) [2]

Благодарствую!!!


 
iterator ©   (2009-06-19 18:09) [3]

может тогда заодно подскажите как также обратиться к переменной (тип string), а не к объекту?


 
Медвежонок Пятачок ©   (2009-06-19 18:12) [4]

Чего?


 
Styx_   (2009-06-19 18:15) [5]


> может тогда заодно подскажите как также обратиться к переменной
> (тип string)

Никак


 
Медвежонок Пятачок ©   (2009-06-19 18:25) [6]

как также обратиться к переменной

То есть переменная у тебя есть, если к ней хочется "обратиться"?
Тогда какие вообще проблемы?


 
Styx_   (2009-06-19 18:38) [7]

Медвежонок Пятачок
Видимо, обратиться надо по заданному в runtime имени. А в runtime у переменных имён нетуть.


 
Andy BitOff ©   (2009-06-19 19:12) [8]

> Styx_   (19.06.09 18:38) [7]

Если они не являются раблишед свойством класса.
В некоторый программах на этом основана локализация. Все строковые переменные забиваются в класс и при локализации ищутся именно по имени.


 
Медвежонок Пятачок ©   (2009-06-19 19:31) [9]

а что за извращение иметь в коде переменную, иметь переменную или литерал с именем первой переменой и искать ее по имени (что само по себе невозможно)?

или он хочет сказать, что делает много раз StrAlloc и не сохраняет ссылки?
но тогда и имени никакого не будет ни в рантайме ни в дизайнтайме.

так что же он собрался искать по имени?


 
Сергей М. ©   (2009-06-19 20:19) [10]


> Andy BitOff ©   (19.06.09 19:12) [8]


Чегоо ?


 
Andy BitOff ©   (2009-06-19 20:33) [11]

> Сергей М. ©   (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);


Как-то так. Разве нет?


 
iterator ©   (2009-06-19 20:50) [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о значением этой переменной, то показать сообщение.... надеюсь вы меня поняли... если уж такое невозможно, то тогда сделаю все на массиве.


 
turbouser ©   (2009-06-19 20:58) [13]


> iterator ©   (19.06.09 20:50) [12]

Oo нда...
TStrings спасут отца русской демократии...


 
Сергей М. ©   (2009-06-19 22:06) [14]


> Andy BitOff ©   (19.06.09 20:33) [11]


Вижу только одну переменную:
MyStrings: TMyStrings;

И какое отношение к ней имеет published - не понятно


 
Andy BitOff ©   (2009-06-19 22:44) [15]

> Сергей М. ©   (19.06.09 22:06) [14]

Сэр формалист?


 
Германн ©   (2009-06-20 00:19) [16]


> iterator ©   (19.06.09 20:50) [12]
>
> конечно в runtime переменные то не создаются, просто хочется
> упростить процедуру, которая работает с 10 переменными типа
> string, отличающуюся только цифрой в конце.
>

Весьма странное и не менее весьма противоречивое заявление. Скорее всего автору лень писать 10 IF"ов.


 
Медвежонок Пятачок ©   (2009-06-20 01:05) [17]

десять их может понадобиться только если паскаль в автошколе досааф изучал.


 
iterator ©   (2009-06-20 01:32) [18]


> Скорее всего автору лень писать 10 IF"ов.

все верно лень!!! и прокручивать текст на 600 строк тоже лень, когда все легко уместится в 50!!


 
Германн ©   (2009-06-20 01:48) [19]


> iterator ©   (20.06.09 01:32) [18]
>
>
> > Скорее всего автору лень писать 10 IF"ов.
>
> все верно лень!!! и прокручивать текст на 600 строк тоже
> лень, когда все легко уместится в 50!!
>

Поживёшь - увидишь!


 
Anatoly Podgoretsky ©   (2009-06-20 10:38) [20]


> Andy BitOff ©   (19.06.09 19:12) [8]

Если они являются свойством, то они не являются переменной и по большому счету могут не иметь физического значения в виде хранения.


 
Strate ©   (2009-06-20 11:37) [21]

Я тут одного не пойму ) А массивы уже отменили?


 
Медвежонок Пятачок ©   (2009-06-20 11:42) [22]

в автошколе массивы не проходят


 
Andy BitOff ©   (2009-06-20 13:44) [23]

> Anatoly Podgoretsky ©   (20.06.09 10:38) [20]

Анатолий, говоря они, я, конечно же, подразумевал решение задачи [3], а не непосредственно переменные. Кстати, я о них не сказал ни слова. Это ясно только по смыслу.
Но в целом согласен. Неудачная формулировка получилась.



Страницы: 1 вся ветка

Текущий архив: 2009.08.16;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.013 c
15-1244925005
Юрий
2009-06-14 00:30
2009.08.16
С днем рождения ! 14 июня 2009 воскресенье


1-1212141167
dmitry_12_08_74
2008-05-30 13:52
2009.08.16
Как добавлять 32-х битные картинки на компонент типа TSpeedButton


2-1245139484
a.a.j.
2009-06-16 12:04
2009.08.16
EmbeddedWB и PNG


2-1245355798
antonn
2009-06-19 00:09
2009.08.16
AV при доступе к объекту из потока


15-1245124402
Демон
2009-06-16 07:53
2009.08.16
Copy: Командная строка