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

Вниз

Сохранение вариантного массива в файле?   Найти похожие ветки 

 
Voice   (2004-01-05 12:53) [0]

У меня есть вариантный массив, в котором хранятся данные разных типов. Что-то вроде

var MyVar:Variant;
begin
MyVar:=VarArrayCreate([0,9],varVariant);
MyVar[0]:="abcd";
MyVar[1]:=123;
MyVar[2]:=123.456;
MyVar[3]:=true;
MyVar[4]:=false;
...........
end;

Мне надо эту переменную сохранить в файле. Как бы это можно сделать, если вообще можно?


 
olookin ©   (2004-01-05 13:01) [1]

Я полагаю что только через SizeOf. Например если известно что MyVar[2] - это double, то тогда f.Write(MyVar[2],SizeOf(double));
Тип можно узнать через VarType


 
Sandman25 ©   (2004-01-05 13:06) [2]

f.Write(MyVar[2],SizeOf(Variant));


 
olookin ©   (2004-01-05 13:15) [3]

d: double;
d:=Myvar[2];
f.Write(d,SizeOf(double));

Так получается писать в файл и читать тоже

f.Read(d,sizeof(double));


 
Voice   (2004-01-05 13:16) [4]

А если тип varVariant?
SizeOf от Variant всегда возвращает 16 байт, но там может храниться и больше.....


 
Sandman25 ©   (2004-01-05 13:19) [5]

[4] Voice (05.01.04 13:16)

Если есть строки и прочее, то тогда нужно разбираться с внутренним устройством TVarRec и записывать еще и то, на что Variant ссылается.


 
Sandman25 ©   (2004-01-05 13:20) [6]

Вру. Не TVarRec, а TVarData.


 
alex_*** ©   (2004-01-05 13:52) [7]

писать размер и тип поля перед каждым полем


 
Voice   (2004-01-05 14:09) [8]

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


 
Voice   (2004-01-05 14:36) [9]

Как-нть можно узнать размер самой MyVar?



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

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

Наверх




Память: 0.48 MB
Время: 0.031 c
7-49788
MakNik
2003-11-03 09:33
2004.01.16
Помогите, пожалуйста, разобраться с сервисами!


1-49505
Grotesk
2004-01-03 16:57
2004.01.16
Имя переменной - в строку


1-49564
Gnom
2004-01-05 23:14
2004.01.16
Записать в файл


1-49601
_hunter_
2004-01-05 12:02
2004.01.16
Как отключить автопрокрутку...


1-49554
GooG-NTS
2004-01-06 04:42
2004.01.16
BitMap ресурсы!