Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.14;
Скачать: 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 вся ветка

Текущий архив: 2009.06.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
15-1238762557
JB2
2009-04-03 16:42
2009.06.14
Относятся ли программисты к пролетариату?


15-1239302762
Real
2009-04-09 22:46
2009.06.14
Smarty и PHP-функции


3-1222175692
SergP
2008-09-23 17:14
2009.06.14
Oracle. Insert


2-1240585096
Fraizer
2009-04-24 18:58
2009.06.14
stringgrid добавление строк сверху


4-1210746463
Dmitry_177
2008-05-14 10:27
2009.06.14
TAPI набор номера, конференция