Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];

Вниз

ПРИВЕТ ВСЕМ! Можно ли как-то в режиме 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-99107
Спрашивающий
2002-12-16 09:00
2002.12.30
Вопрос про


4-99405
mikhasenko
2002-11-14 17:25
2002.12.30
Специалисты, подскажите!


3-98973
FireWorks
2002-11-26 12:45
2002.12.30
MS SQL Server BLOB поля


4-99414
Vasily Terekhov
2002-11-13 10:19
2002.12.30
Перехват сворачивания и восстановления окон


14-99287
DiamondShark
2002-12-09 13:47
2002.12.30
Новый WEB-проект





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский