Показать сообщение отдельно
  #1  
Старый 08.02.2013, 06:59
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Нестандартная задача. Создание класса

Есть задача создать класс для подгрузки (из БД или ИНИ) настроек и дальнейшего их использования в программе. Причем для более удобного использования этого класса, вид извлечения и добавления этих настроек должен выглядеть вот так:

Код:
var
Opt:TMyClass; //экземпляр класса
Var1:integer;
begin
Opt := TMyClass.Create;
Opt['Category']['SubCategory']['SubSubCategory']['Option1'] := 'qwe';
{Строчка выше означает, что класс должен создать (если ранее не создано) категорию 'Category', 
в ней Подкатегорию 'SubCategory', в ней еще подкатегорию 'SubSubCategory' (то есть все в виде дерева), 
в ней опцию 'Option1' и присвоить этой опции значение 'qwe'}
Var1 := Opt['Category']['Option2'];
{Строчка выше означает, что переменной Var1 типа integer должно присвоиться значение опции 'Option2' 
из категории 'Category', если данные опция и категория созданы
}
end;

То есть при первом же рассмотрении встает вопрос, как сделать так, чтобы у дефолтной property функции для read и write имели разные типы данных?
Типа того:
Код:
TCategory = Class;
TMyClass = Class
private
function GetV(Name:string):TCategory;
procedure SetV(Name:string;Value:STRING);
public
property Cat[Name:string]:TCategory read GetV write SetV; default;
end;
Само собой компилятор в этом случае выдает ошибку о несовпадении типов.
Ответить с цитированием