Вниз
Скачать: CL | DM;

Сохранение в 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 вся ветка

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



Память: 0.45 MB
Время: 0.04 c
14-1106902612
Antonn
2005-01-28 11:56
2005.02.20
Про мощные видяхи и хилые БП


14-1106916570
Миша
2005-01-28 15:49
2005.02.20
Г. Климов "Князь мира сего"


9-1099337514
Colt1978
2004-11-01 22:31
2005.02.20
Задание пути объекту.... (GLScene)


6-1102328427
integer
2004-12-06 13:20
2005.02.20
нужно управлять приложениєм через Web


4-1104417010
Katy
2004-12-30 17:30
2005.02.20
"Программа не отвечает", но она не виснет, вып незримые действия




   Наверх