немного в коде
предположим есть класс TDataStore
имеющий следующую структуру
- Код: Выделить всё
TDataStore= class
private
Data:string;
public
constructor Create;
destructor Destroy;
SQL: string;
DataSet:TsdfDataset;
procedure FillDataset;
Action: integer; //enum of Select,Insert,Update,Delete
end;
Далее есть класс например TPeople наследник TDataStore
- Код: Выделить всё
TDataStore= class
private
DataForDataSet:string;
public
constructor Create(class_description:string); override;
destructor Destroy;
SQL: string;
DataSet:TsdfDataset;
procedure FillDataset;
Action: integer; //enum of ormSelect,ormInsert,ormUpdate,ormDelete
//////// от TPeople
id: integer;
name:string;
bdate:datetime;
price:float;
end;
А теперь суть вопроса. Так как я не в зуб ногой в lazRTTI (да и в делфовом не очень) то что хотелось бы увидеть.
Есть некоторый структурированный текстовый файл в котором содержатся поля и их значения а также данные для датасета (DataSet) в DataForDataSet.
Создать из этого файла класс с необходимыми полями, и с случае если есть данные для датасета заполнить его. И наоборот из имеющегося класса создать текстовый файл из которого его можно было бы воссоздать исходный класс. Сами данные передаются по сети (транспорт есть)
как бы хотелось это видеть
- Код: Выделить всё
...
TPeople = class(TDataStore)
end;
....
procedure Button1Click(Sender:TObject);
var People:TPeople;
People2:TPeople;
DataClassAsText:string;
begin
//это у работа с insert update delete
DataClassAsText:='какой-то текст'
People := TPeople.Create(DataClassAsText);
People.name := EditName.text; // вот пока не обматерили замечу что сам знаю что не так все просто, но можно же придумать схему через функцию
People.bdate:=EditBdate.text;
People.price:=SpinEditPrice.text;
People.Action:=ormInsert;
// тут будет Select
DataClassAsText:='какой-то текст содержащий правила для создания полей(какие они заранее известно)';
People := TPeople.Create(DataClassAsText);
EditName.text:=People.name;
EditBdate.text:=People.bdate;
Peopleю.SQL := 'select * from lalalal'; // а поля пойдут как Where cause
///или датасет
People.FillDataset;
DS.DataSet := People.DataSet;
People.DataSet.Active:=True;
end;
Надеюсь описал более менее понятно.
Если кто готов взяться за написание подобной вещи, то пишите в ЛС сколько по времени и стоимости. Лимит бюджета обсуждаем так что все зависит от ВАС
Надеюсь на сотрудничество
PS примеры писал на ходу из головы, поэтому прошу не судить строго если найдете мелкие синтаксические ошибки