Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Динамическое создание классов   Найти похожие ветки 

 
qTorus   (2006-06-29 15:14) [0]

Возникла проблема нестандартного типа: необходимо создавать новые классы во время выполнения программы. Т. е. структура этих классов заранее неизвестна на этапе разработки программы. В хелпе ничего не нашёл. И вообще у меня возникают смутные сомнения насчёт наличия такой возможности.

Где-то слышал, что это можно сделать через интерфейсы. Сам ничего не знаю, так как с интерфейсами не работал.


 
Игорь Шевченко ©   (2006-06-29 15:21) [1]


> Т. е. структура этих классов заранее неизвестна на этапе
> разработки программы.


Массив вариантов ?


 
qTorus   (2006-06-29 15:29) [2]


> Массив вариантов ?

Если я правильно понял, то можно сделать так:

type TMyClass = class
 Fields: array of Variant;
end;


 
Игорь Шевченко ©   (2006-06-29 15:56) [3]

qTorus   (29.06.06 15:29) [2]

Можно и так. Можно и без класса


 
qTorus   (2006-06-29 16:01) [4]

Недостатки такого подхода:
1. Переменной типа Variant нельзя присвоить указатель или экземпляр класса
2. Каждая переменная типа Variant "весит" 20 байт, что приводит к неэкономному использованию памяти


 
Игорь Шевченко ©   (2006-06-29 16:03) [5]

qTorus   (29.06.06 16:01) [4]


> 1. Переменной типа Variant нельзя присвоить указатель или
> экземпляр класса


Можно


> 2. Каждая переменная типа Variant "весит" 20 байт, что приводит
> к неэкономному использованию памяти


Это есть. Ты хочешь предложить другой способ ?


 
qTorus   (2006-06-29 16:15) [6]


> > 1. Переменной типа Variant нельзя присвоить указатель
> или
> > экземпляр класса
>
>
> Можно

Компилятор пишет: E2010 Incompatible types: "Variant" and "Pointer"


 
Игорь Шевченко ©   (2006-06-29 16:40) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
 V: Variant;
begin
 TVarData(V).VType := varByRef;
 TVarData(V).VPointer := Self;
 ShowMessageFmt ("%d", [VarType(V)]);
end;



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
2-1151217749
Марина
2006-06-25 10:42
2006.07.16
Как закрасить в какой то свет вертикальную полосу прокрутки?


2-1151392498
corvus
2006-06-27 11:14
2006.07.16
кнопки


3-1147684174
petvv
2006-05-15 13:09
2006.07.16
Help List index out of bounds (0)


15-1150460068
NewCheloveck555
2006-06-16 16:14
2006.07.16
Подскажите бесплатный хостинг с поддержкой MySQL


15-1150563969
Furyz-dimodim
2006-06-17 21:06
2006.07.16
Вопрос для тех кто шарит в линуксе...