![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сохранение данных [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] := Файл.Прочитать();
Идея, надеюсь, будет понятна.