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

сохранение данных   Найти похожие ветки 

 
pound ©   (2006-03-01 11:56) [0]

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


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

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

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] := Файл.Прочитать();

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


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

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

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;



Страницы: 1 вся ветка

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



Память: 0.45 MB
Время: 0.032 c
1-1139728417
Vacek
2006-02-12 10:13
2006.03.19
Как сделать проект always on top?


2-1141129418
Alexsan
2006-02-28 15:23
2006.03.19
Принтер


2-1141392347
RomanH
2006-03-03 16:25
2006.03.19
Умный ComboBox


5-1127647314
Jioniro
2005-09-25 15:21
2006.03.19
Компонент кнопка аля ACDSee 7.0


3-1138628947
= guest =
2006-01-30 16:49
2006.03.19
Как сделать, чтобы при нажатии на combobox - выпадал список табли




   Наверх