Форум: "Начинающим";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
ВнизSave/Load Tlist Найти похожие ветки
← →
Nameziz (2009-04-25 15:52) [0]имеется наследник TList - TListA список записей типа:
PItemA = ^TItemA;
TItemA = record
Id: Integer;
Name: string;
end;
Вручную написал методы сохранения/чтения списка в файл. Вот код:
procedure TListA.LoadFromFile(const FileName: string);
var
i, L: Integer;
P: PItemA;
S: TStream;
begin
S := TFileStream.Create(FileName, fmOpenRead);
with S do
try
while Position < Pred(Size) do
begin
New(P);
with P^ do
begin
Read(Id, SizeOf(Id));
Read(L, SizeOf(L));
Read(Name, L);
Add(Id, Name);
end;
end;
finally
Free;
end;
end;
procedure TListA.SaveToFile(const FileName: string);
var
i, L: Integer;
P: PItemA;
S: TStream;
begin
S := TFileStream.Create(FileName, fmCreate);
with S do
try
for i := 0 to Pred(Count) do
begin
P := PItemA(List[i]);
with P^ do
begin
Write(Id, SizeOf(Id));
L := Length(Name);
Write(L, SizeOf(L));
Write(Name, L);
end;
end;
finally
Free;
end;
end;
Список вроде как и сохраняется и загружается, но вот только при выводе полей (касается текстового Name) какой-либо записи списка дописываюся лишние символы. В чем может быть ошибка?
← →
MBo © (2009-04-25 16:00) [1]Write(PChar(Name)^, L);
или
if L > 0 then Write(Name[1], L);
аналогично со чтением
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c