Главная страница
    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.008 c
1-49547
Rimd
2004-01-02 11:23
2004.01.16
Rave Reports


1-49548
Werewolf
2004-01-02 08:28
2004.01.16
Как удалить символ перехода на новую строку из строки?


6-49655
Melcor
2003-11-14 02:27
2004.01.16
Рабочие группы


11-49475
Bystander
2003-05-03 13:49
2004.01.16
Scroll Bar & KOL


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