Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
ВнизКак обратиться к объекту? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c