Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сохранение данных [D6, XP]


pound ©   (2006-03-01 11:56:00) 

Есть проблема с сохранением данных в дисковом файле.
Создаю динамический массив из элементов DecSim
type
 DecSim = record  //Один элемент
   n: Integer;
   g,b: Byte;
   x,y,r: Double;
 end;
Проблема в том, что я не могу сохранять в файле элементы различной длины,
приходится накладывать ограничение на массив, предположим
MyDecSim = array [0..30] of DecSim; // Элемент, который надо сохранить в файле.
Подскажите, как обойти эту проблему.
Заранее благодарен. Андрей.


Dmitrij_K   (2006-03-01 12:09:00) [1]

Чтото типа такого

procedure Write;
var l,j : Integer;
begin
 l := Length( <Динамический массив>);
 TFileStream.Write(l,SizeOf(l));
 l := SizeOf(DecSim);
 for j:=Low( <Дин Массив>) to High( <Дин Массив>) do
   TFileStream.Write( <Дин Массив>[j],l);
end;
procedure Read;
var l,j : Integer;
begin
 TFileStream.Read(l,SizeOf(l));
 SetLength( <Дин Массив>,l);
 l := SizeOf(DecSim);
 for j:=Low( <Дин Массив>) to High( <Дин Массив>) do
   TFileStream.Read( <Дин Массив>[j],l);
end;


Сергей М.   (2006-03-01 12:03:00) [2]

Решение в псевдокоде :

var MyDecSim: TMyDecSim;
var ArrLen : Integer;

..
сохранение дин.массива в файл

ArrLen := Length(MyDecSim);
Файл.Записать(ArrLen);
for i := 0 to ArrLen-1 do
 Файл.Записать(MyDecSim[i]);

востановление дин.массива из файла

ArrLen := Файл.Прочитать();
SetLength(MyDecSim, ArrLen);
for i := 0 to ArrLen-1 do
 MyDecSim[i] := Файл.Прочитать();

Идея, надеюсь, будет понятна.


Наверх

Титульная страница Поиск, карта сайта Написать письмо