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

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 вся ветка

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



Память: 0.45 MB
Время: 0.008 c
15-1238860129
Petr V. Abramov
2009-04-04 19:48
2009.06.14
ASP.Net vs Java vs не знаю что еще.


15-1238445234
Дмитрий Белькевич
2009-03-31 00:33
2009.06.14
Вопрос по дедлокам.


15-1239285021
12
2009-04-09 17:50
2009.06.14
Поддерживает.. Что за глупое выражение


2-1240693236
Tany
2009-04-26 01:00
2009.06.14
Хранимые процедуры в FireBird


4-1210937602
_Z_
2008-05-16 15:33
2009.06.14
Сохранить пароль в защищенное хранилище




   Наверх