"Интернет решения от доктора Боба" - читать интересную книгу автора (Swart Bob)

2.2.7. Записи

После осознания, что мы можем писать на Delphi 2 CGI приложения без использования BDE, мы решили сгенерировать тип записи для нашей таблицы delbooks.db и конвертировать ее записи в файл записей. Использую программ RECORD.EXE из предыдущей главы мы получили следующее определение записи.

Type

   TRecord = record

     ISBN: String[16];

     Title: String[64];

     Author: String[64];

     Publisher: String[32];

     Price: Double;

     Code: String[7];

     { Comments }

     Level: Integer;

     TechnicalContentsQuality: Integer;

     QualityOfWriting: Integer;

     ValueForMoney: Integer;

     OverallAssessment: Integer;

     { Cover }

   end;

Теперь нам осталось написать сам конвертор, который в цикле просматривает записи таблицы, помещает их в запись и записывает в файл.

{$APPTYPE CONSOLE}

 uses DB, DBTables, SysUtils;


 var i: Integer;

     Rec: TRecord;

     F: File of TRecord;

 begin

   if ParamCount = 1 then with TTable.Create(nil) do

   try

     System.Assign(f,ChangeFileExt(ParamStr(1),'.REC'));

     Rewrite(f);

     TableName := ParamStr(1);

     Active := True;

     First;

     while not Eof do with Rec do

     begin

       ISBN := FieldByName('ISBN').AsString;

       Title := FieldByName('Title').AsString;

       Author := FieldByName('Author').AsString;

       Publisher := FieldByName('Publisher').AsString;

       Price := FieldByName('Price').AsFloat;

       Code := FieldByName('Code').AsString;

       Level := FieldByName('Level').AsInteger;

       TechnicalContentsQuality :=

          FieldByName('TechnicalContentsQuality').AsInteger;

       QualityOfWriting := FieldByName('QualityOfWriting').AsInteger;

       ValueForMoney := FieldByName('ValueForMoney').AsInteger;

       OverallAssessment := FieldByName('OverallAssessment').AsInteger;

       write(f,Rec);

       Next

     end

   finally

     System.Close(f);

     Free

   end

   else

     writeln('Usage: convert tablename')

 end.

Данная программа может использоваться для полного преобразования таблицы delbooks.db в файл delbooks.rec с типом записи TRecord. Delphi 2 CGI приложение может просто открыть этот файл и читать любую запись без использования BDE. Конечно, преобразование записей не просто сделать, но для этого мы имеем всегда оригинальную базу и можем запускать периодически программу преобразования. Так как я добавляю всего несколько записей примерно раз в два месяца, то меня это не очень волнует.