Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизСохранение в TMemoryStream Найти похожие ветки
← →
k@rt © (2005-02-08 00:33) [0]Допустим есть у меня вот такая вот запись:
TMExIt = (it1, it2, it3);
TMEx = packed record
A: String;
B: String;
C: TMExIt;
end;
TMR = packed record
A: string;
B: Boolean;
C: string;
D: string;
E: string;
F: string;
G: string;
H: TDate;
L: Boolean;
M: TDateTime;
O: Boolean;
Ex: array[0..255] of TMEx;
NextRecordSize: Integer; // Размер записи следующей
end;
И вот это я сохраняю: TMemoryStream.Write. Размер записи SizeOf(Переменная).
Считываю: TMemoryStream.Read. Размер записи беру из NextRecordSize. Если все String заменить на String[n], то есть фиксированого размера, то все работает, а если String то нефига.
Почему и как мне сохранять запись такого типа?
← →
Gero © (2005-02-08 00:35) [1]
> Почему
string + F1
> как мне сохранять запись такого типа?
Ты же сам себе ответил:
> все String заменить на String[n], то есть фиксированого
> размера
← →
Digitman © (2005-02-08 08:44) [2]
> как мне сохранять запись такого типа?
"одним махом" - никак.
придется поля обрабатывать по отдельности каждое
для переменных (или полей записи) типа ansistring :
var
s: string;
l: Integer;
..
//сохранение в поток
l := length(s);
stream.writebuffer(l, sizeof(l));
stream.writebuffer(pchar(s)^, l);
//восстановление из потока
stream.readbuffer(l, sizeof(l));
setlength(s, l);
stream.readbuffer(pchar(s)^, l);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 4.063 c