Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.01 c
1-49552
A. Sonin
2004-01-05 21:50
2004.01.16
Эффективный способ предотвращения запуска второго экземпляра


1-49512
Rimd
2004-01-03 11:45
2004.01.16
StringGrid


1-49574
Pa5ha
2004-01-05 16:14
2004.01.16
Куда засунуть файлы, чтоб путь поиска постоянно не писать?


1-49639
axx
2004-01-04 14:28
2004.01.16
Помогите с востановлением строки из Array of byte


14-49742
barbi
2003-12-23 10:22
2004.01.16
Москва дезинформирует о погоде в нашем регионе, а как в ваших?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский