Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
3-49388
pavell
2003-12-20 15:14
2004.01.16
SQl-запросы


3-49413
MakNik
2003-12-19 10:29
2004.01.16
SQL


1-49549
димка
2004-01-01 17:23
2004.01.16
Как открыть файл с помощью какого-то приложения


14-49769
sever-Rds
2003-12-24 01:40
2004.01.16
Клановость во власти


6-49671
Sadya
2003-11-14 11:26
2004.01.16
No such host known




   Наверх