Главная страница
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.012 c
15-1239049804
Юрий
2009-04-07 00:30
2009.06.14
С Днём рождения ! 7 апреля 2009 вторник


15-1238996189
Int23
2009-04-06 09:36
2009.06.14
Проблемы с RAS на Вин2003


15-1239392544
gost
2009-04-10 23:42
2009.06.14
скрытый запуск приложения


9-1180293174
man-1982
2007-05-27 23:12
2009.06.14
GLscene динамическое обновление тестур


2-1240836697
Student
2009-04-27 16:51
2009.06.14
Область видимости???