![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Подскажите, пожалуйста, как в Delphi обратится к переменной, имя которой содержится в значении другой переменной. Возможно ли вообще такое?
Например, эта проблема в PHP решается очень просто: $string_2 = "hello"; $string_1 = "string_2"; При записи $$ перед именем переменной: $temp = $$string_1; мы переменной temp присваиваем значение переменной $string_2, т.е. hello Как в Delphi сделать тоже самое? |
#2
|
|||
|
|||
![]() В дельфи напрямую такое невозможно.
Зато можно использовать указатели. Еще можно с помощью RTTI находить экземпляры классов и, соотв., обращаться к ним. Т.е. если у тебя в переменной написано имя экземпляра класса, то через RTTI ты можешьполучить ссылку на него, ну и далеее работать с соотв. переменной. Для этого надо класс скомпилить со специальной директивой (кажется $M+, но не уверен - смотри в доке. большинство классов VCL скомпилированны именно так). |
#3
|
|||
|
|||
![]() С помощью указателей можно обратиться к адресу переменной или ее значению, а к самой переменной - нет, особенно если переменная - массив.
пример: Код:
Все-равно, спасибо за ответ. Все-таки характерная особенность Object Pascal - четкая типизированность данных не всегда бывает удобной при работе. |
#4
|
|||
|
|||
![]() Да нет, нормально. Просто надо уметь работать с указателями и тогда четкая типизация тебе мешать не будет. Сам долго разбирался, но когда пришлось использовать WinAPI, тогда начал понимать как это все работает.
|
#5
|
|||
|
|||
![]() Цитата:
В PHP, VB "склейки" имен переменных делаются. Получаем красивый программный продукт. Delphi - не Си. Вот на Delphi и "споткнулся"! Как частный случай, для отладки: Код:
а как получить значение Key, через str ? P.S. Вообще нравиться интелектуальные ответы, типа: "Спасибо, разобрался!" Если разобрался, то зачем другим голову морочил до этого. А если разобрался, то изложи решение! В электронике - обратная связь!!!! Уважать других надо! |
#6
|
|||
|
|||
![]() Ну бред ты получаешь совершенно закономерно, т.к. в конце PCHAR у тебя не нулевой символ, вот она небось и выводит кучу мусора. Кстати, более правильно писать так:
Код:
Хотя, честно говоря, не помню - копирует она при этом строку или нет. А вообще, если очень хочется работать с перемеными по их именам, используй классы и RTTI. |