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

Вниз

ПРИВЕТ ВСЕМ! Можно ли как-то в режиме Run-Time определить   Найти похожие ветки 

 
@andrew ©   (2002-12-18 13:33) [0]

свой тип... Или как выйти из ситуации.

У меня есть несколько типов,
type TMyType1 = packed record
a: array[0..4] of char;
b: array[0..9] of char;
c: byte;
d:.....................
end;
и т.д.
Так вот возникла ситуация, при которой я не могу сказать каковы объемы массивов. Как-то можно динамически это определить?


 
Digitman ©   (2002-12-18 13:38) [1]

оч просто

SizeOf(TMyType1.a) возвратит 5
SizeOf(TMyType1.b) возвратит 10


 
han_malign ©   (2002-12-18 13:42) [2]

RTTI работает только для классов. В Delphi, в отличии от C++, запись классом не является.


 
@andrew ©   (2002-12-18 13:50) [3]

Сорри!!!!!!!!! Сам виноват!!!!!!!!
Немного не то! Мне не надо вычислять размер моего типа или его составляющих! Мне надо определить тип с составляющими того объема, который я получаю в процессе работы программы,
т.е. что-то типа
type ....
a: array og char;
.........
var k: TMyType1;
.....
а потом SetLength(k.a, что-то)
Это понятно не работает, а вот что заработает?


 
@andrew ©   (2002-12-18 13:55) [4]

Напр., есть вариант
type ....
a: PChar;
al: integer;
b: PChar;
bl: integer;
.............

А потом AllocMem и в al, bl и т.д. записывать сколько выделил
а размер типа вычислять суммирование al, bl и т.д.
Но это сложно, может можно проще?


 
Digitman ©   (2002-12-18 13:57) [5]

Ничччего не понял)

что значит "определить тип" ?

- определить новый тип данных, который в последствии будет использован для, например, создания переменной этого нового типа ?

- определить, какого типа данные, хранящиеся в указанной переменной (или по указанному адресу в памяти) ?



 
han_malign ©   (2002-12-18 13:59) [6]

Open arrays:

a: array of char;
..........
SetLength(a,len);
Length(a), Low(a)=0, Hight(a)=Length(a)-1


 
@andrew ©   (2002-12-18 14:09) [7]

>Digitman
Опишу мою задачу, дабы было проще:
Иная программа создала антипед файл и записала в его начало структуру данных. Я читаю начало этого файла и выясняю, что длинна одной записи = len_record, а запись состоит из var1 длинной len1, var2 длинной len2 и т.д. Далее, по идеи я должен определить тип, который будет соответствовать этой записи и читать спокойно файл, применяя BlockRead(f, k, sizeof(TMyType1)), где к: TMyType1. А чтение кокретных данных будет через k.что-то. Не знаю: стало ли понятнее :-), но на большее я не способен :-).


 
@andrew ©   (2002-12-18 14:10) [8]

>Digitman
т.е. скорее первое :-)


 
Digitman ©   (2002-12-18 14:12) [9]


> @andrew


сделать это в run-time невозможно

только - в compile-time


 
Skier ©   (2002-12-18 14:16) [10]

>@andrew
А цель-то какая ?
Может ты не в ту сторону копаешь ?



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
14-99297
Best Sniper
2002-12-08 19:15
2002.12.30
Установил Oper у 6.05.......


1-99135
VIB
2002-12-18 13:41
2002.12.30
Cursor


3-99031
Opryshok
2002-12-10 16:01
2002.12.30
Формат данньіх в Гриде


6-99226
Vadimka
2002-10-31 23:02
2002.12.30
Перехват из сети www-адреса, запрашиваемых пользователями


4-99419
Griffin
2002-11-15 23:05
2002.12.30
Передача сообщений от мыши другому окну