Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Обращению к поле структуры по string переменной |
Автор: hug 2.8.2007, 11:35 | ||||||
есть структурка:
Вот как мне в эту структурку прочитать данные. Если известны имена которые нужны читать
Мне необходимо считывать значение параметром из структуры, обращаясь к поле структуры по имени
Вот примерно чтобы хотелось сделать. Как превратить в рабочий код |
Автор: aktuba 2.8.2007, 12:46 |
Никак!!! |
Автор: hug 2.8.2007, 12:58 |
ок как обращаться к переменным не напрямую, а как к строчным значениям? |
Автор: Grigory 2.8.2007, 13:07 | ||
Ну там все достаточно просто ![]() ![]() |
Автор: hug 2.8.2007, 14:54 |
Жду время) |
Автор: MetalFan 2.8.2007, 15:30 | ||
Grigory, не городи ерунды. сказано - нет возможности обращаться к переменным по их строковым псевдонимам во время выполнения программы т.е. нельзя написать так:
разве что к published св-вам класса |
Автор: EvilsInterrupt 2.8.2007, 19:19 |
hug, Извините, но я так и не понял зачем это вам так нада? Никакой гибкости от этого не получите, а вот изврату очень даже получите! Опишите, что вы хотите решить или чем упростить себе жизнь хотите, быть может вы получите более лучшее решение чем вы хотели бы, а это ведь всегда приятно! |
Автор: hug 2.8.2007, 19:35 | ||||
Расскажите как обращаться к publushed полям класса по имени |
Автор: EvilsInterrupt 2.8.2007, 19:48 |
hug, Почитай в Ксавье Пачеко "Delphi 5 для разработчика", том 2 про свойства-массивы. Это тебе очень многое даст или наведет на мысль к примеру: objOfDB.FieldValues['ID_Param']; - видел наверное при работе с базами,это свойство-массив при работе с TjanXmlParser2: edParamId.Text := XmlParam.attribute['ID']; Тоже свойство-массив |
Автор: Alexeis 2.8.2007, 22:24 |
Это возможности так называемой RTTI - информации о типах времени исполнения. В делфи для обращения к свойствам по их строковому имени используется встроенный модуль TypInfo.pas. Достаточно его открыть и не нужна никакая справка, там очень звучные названия функций. Типа GetPropList и т.д. |
Автор: MetalFan 3.8.2007, 10:49 |
бред. у ObjectPascal'евсого массива не может быть строкового индекса) там просто св-во с параметром (псевдомассив чтоли)... |
Автор: EvilsInterrupt 3.8.2007, 12:38 | ||||
MetalFan, Это есть! Называется оно "свойство-массив". Внизу в коде видишь property Coordinates[Index: Integer], вот это и есть свойство-массив! Позволяет не только принимать Integer, но также можно принять strings, как это сделано в FieldValues при работе с TOraQuery, да и не только с ним по теме:
и это есть в справке!!! зы: Правда пока я это нашел в справке от BDS2006 Architect я мозк убил ((( Но оно же есть! ))) |
Автор: aktuba 3.8.2007, 12:44 | ||
А где в примере строки??? |
Автор: MetalFan 3.8.2007, 12:55 | ||||||||||
это из другой оперы. данная возможность позволяет н-ким свойствам "обслуживаться" одной функцией. согласен. внешне свойство-массив выглядит как массив. в т.ч. со строкой в качестве "индекса". выдержка по теме:
см.подчеркнутый текст. это я и имел ввиду. |
Автор: EvilsInterrupt 3.8.2007, 13:00 | ||||
aktuba, млин ))) Ща блин, покажу я вам строки ![]() у TjanXMLNode2 обладачет таким своейством:
и вот как его применяю:
Ну а всем известно, что Variant содержит в себе не только varInteger, но и строки! Добавлено через 2 минуты и 7 секунд Автору темы: Тебе тута написали прилично, садись читать хелп и Пачеко, думаю того что написали тебе должно хватить для реализации твоих мыслей! |
Автор: MetalFan 3.8.2007, 15:03 |
да что показывать? в выдержке из хэлпа все есть ;) |
Автор: AdvanTiSS 14.1.2008, 11:33 | ||
в тему вопрос: есть свойство
Как передать все элементы свойства-массива в другому экземпляру тогоже класса с сохранением названий индексов? |