Показать сообщение отдельно
  #6  
Старый 07.05.2009, 17:18
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию Как используется

Код:
Type
  PRec = ^TRec;
  TRec = record
           TabNum : integer;
           FIO    : string[64];
           Oklad  : real;
         end;


procedure TForm1.Button1Click(Sender: TObject);
//Добавить запись в файл
Var
  PMyRec   : PRec;     //буфер для записи в файл
  TabNum   : integer;
  FileName : string;   //имя файла
begin

  FileName:=MainDir+'MyFile.dat';
  ListBox1.Items.Add('CountRec before: '+IntToStr(CountRecInFile(FileName, SizeOf(TRec))));

  //------------------------------------------------
  //блок подготовки данных для записи в файл
  TabNum:=CountRecInFile(FileName, SizeOf(TRec));
  if TabNum<0 then TabNum:=0;
  TabNum:=TabNum+1;
  //------------------------------------------------

  NEW(PMyRec); //Создаем дин.переменную
  TRY
     //-----------------------------------------
     //Записываем данные в буфер
     PMyRec^.TabNum := TabNum;
     PMyRec^.FIO    := 'FIO_'+IntToStr(TabNum);
     PMyRec^.Oklad  := TabNum*100+0.75;
     //-----------------------------------------
     AppendRecToFile(FileName,  POINTER(PMyRec), SizeOf(TRec)); //Сохраняем буфер в файл
  FINALLY
     Dispose(PMyRec);  //освобождаем ресурсы
  END;
  ListBox1.Items.Add('CountRec after: '+IntToStr(CountRecInFile(FileName, SizeOf(TRec))));
end;

procedure TForm1.LoadClick(Sender: TObject);
//Прочитать содержимое файла
Var
  PMyRec   : PRec;     //буфер для записи в файл
  iRec,CountRec : integer;
  FileName : string;   //имя файла
begin
  FileName:=MainDir+'MyFile.dat';
  CountRec:=CountRecInFile(FileName, SizeOf(TRec)); //определим кол-во записей в файле
  if CountRec>0 then begin
     ListBox1.Items.Clear; //сюда будем выводить данные
     NEW(PMyRec); //Создаем дин.переменную
     TRY
       for iRec:=0 to (CountRec-1) do
        begin
          GetRecFromFile(FileName, POINTER(PMyRec), iRec, SizeOf(TRec)); //Читаем из файла в буфер
          //--------------------------
          //Что-то делаем с этими данными
          ListBox1.Items.Add(IntToStr(iRec) + '.  '+IntToStr(PMyRec^.TabNum)+'  '+trim(PMyRec^.FIO)+'  '+FloatToStr(PMyRec^.Oklad));
          //--------------------------
       end;
     FINALLY
       Dispose(PMyRec);  //освобождаем ресурсы
     END;
  end;
end;
Ответить с цитированием