Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2012, 09:27   #1
Helpix
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 12
По умолчанию структура класса в XML

Добрый день, подскажите пожалуйста каким образорм можно представить структуру текущего класса в XML файлике? Реально ли это? К сожалению поиск по форуму на мысли не натолкнул...
Helpix вне форума Ответить с цитированием
Старый 09.07.2012, 10:12   #2
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Что такое в вашей интерпретации:
текущий класс и структура класса?
В Object Pascal (и как следствие, в Delphi) таких определений нет, отсюда и вопросы.

Последний раз редактировалось Karabash; 09.07.2012 в 10:14.
Karabash вне форума Ответить с цитированием
Старый 09.07.2012, 10:20   #3
Helpix
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Karabash Посмотреть сообщение
Что такое в вашей интерпретации:
текущий класс и структура класса?
В Object Pascal (и как следствие, в Delphi) таких определений нет, отсюда и вопросы.
Допустим:
Есть некий класс:

Tclass = class
a:integer;
b:integer;
end;

и мне необходимо "просканировать его на свойства" и сохранить в XML данные, которые соответствуют свойствам данного класса....
Helpix вне форума Ответить с цитированием
Старый 09.07.2012, 10:25   #4
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

RTFM начиная с GetPropList, и по ссылкам в файле справки (:

Пример:

Код:
procedure TForm1.FormCreate(Sender: TObject);
var P: PPropList;
    X: Integer;
    S: string;
begin
   New(P);
   X := GetPropList(lv, P); // получим все имена свойств объекта lv
   for X := 0 to X-1 do
      with lv.Items.Add do begin
         Caption := P[X].Name;
         SubItems.Add(GetPropValue(lv, P[X].Name));
      end;
   Dispose(P);
end;
Данный код получает все имена свойств объекта lv (TListView), а затем запихнет их в этот же листвью (попутно получив и значение для каждого свойства).

Ну, а уж как это все переточить на твою задачу (см. xml) - думаю, сам справишься.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 09.07.2012, 10:26   #5
Helpix
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от ych_del Посмотреть сообщение
RTFM начиная с GetPropList, и по ссылкам в файле справки

Пример:

Код:
procedure TForm1.FormCreate(Sender: TObject);
var P: PPropList;
    X: Integer;
    S: string;
begin
   New(P);
   X := GetPropList(lv, P); // получим все имена свойств объекта lv
   for X := 0 to X-1 do
      with lv.Items.Add do begin
         Caption := P[X].Name;
         SubItems.Add(GetPropValue(lv, P[X].Name));
      end;
   Dispose(P);
end;
Данный код получает все имена свойств объекта lv (TListView), а затем запихнет их в этот же листвью (попутно получив и значение для каждого свойства).
Огромнейшее тебе спасибо!!! Это оно...
Helpix вне форума Ответить с цитированием
Старый 11.07.2012, 11:11   #6
Helpix
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 12
По умолчанию И еще одна задача

Подскажите пожалуйста, реально ли сделать?
Имеется класс:

Name=class(TObject)
a: integer;
b: string;
end;

Каким образом и можно ли выгнать структуру класса в xml файл, что бы получить такой результат:

<Name>
<a>
<type>integer</type>
<value>12</value>
</a>
<b>
<type>string</type>
<value>ABCD</value>
</b>
</Name>
Helpix вне форума Ответить с цитированием
Старый 11.07.2012, 13:10   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Использовать то, о чем в 4-ом посте написано + IXMLDocument или NativeXML.
Человек_Борща вне форума Ответить с цитированием
Старый 11.07.2012, 13:40   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Helpix, ищите сериализация. И конкретно сериализация в дельфи
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.07.2012, 14:32   #9
Helpix
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 12
По умолчанию

Посоветуйте пожалуйста чайнику какую нибудь литературу, в которой можно было бы разобраться с сериализацией, перелопатил все поиски - нет ни одного примера толкового...
1,5 недели ушло коту под хвост...
Helpix вне форума Ответить с цитированием
Старый 20.07.2012, 19:49   #10
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Примерно так:

Код:
{$TYPEINFO ON}
{$METHODINFO ON}
type
  TMyClass = class(TObject)
    TestField: string;
    function GetTestProperty: string;
    property TestProperty: string read GetTestProperty;
  end;
{$TYPEINFO OFF}
{$METHODINFO OFF}
Очень важный вопрос: какая версия Delphi?

Если 7ка или около, там RTTI есть, но крайне неочевидно. Некто Hallvard Vassbotn подробно интересовался этим вопросом и раскопал ответы на все вопросы. Получилось увлекательное чтиво, которое можно в переводе почитать в блоге GunSmoker: http://www.transl-gunsmoker.ru/search/label/RTTI

Вкратце, сведения о published свойствах и названиях перечислений лежат на поверхности — тот самый TypInfo. Сведения о published полях оказываются в модуле Classes, и используются для загрузки форм из dfm. Наконец, сведения о published методах были почерпнуты из модуля ObjAuto. Всё в разных местах. По мотивах своих исследований автор написал библиотеку HVRTTIUtils

Если версия Delphi >= 2010, там есть встроенный модуль Rtti.pas, в котором всё доступно в одном месте.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура в качестве параметра параметризованного класса applegrub Общие вопросы C/C++ 5 13.03.2012 21:38
Определение типа класса по переменной на объект этого класса при компиляции phomm Общие вопросы Delphi 24 08.04.2011 14:11
сформировать xml-файл на основе другого xml-файла NieL Общие вопросы Delphi 2 21.12.2010 15:49
C# структура класса borik120 Общие вопросы C/C++ 0 22.05.2010 17:24
парсер XML, не видит XML тэги supercelt PHP 3 02.11.2009 19:18