Форум: "Основная";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];
ВнизСохранение вариантного массива в файле? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c