Интернет решения от доктора Боба | страница 30
;');
> Free
> end
> else
> writeln('Usage: record tablename')
> end.
Конечно, таблица трансляции и программа определения записи должны быть расширены, что включить и другие типы полей Парадокса, но для примера и этого достаточно.
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. Конечно, преобразование записей не просто сделать, но для этого мы имеем всегда оригинальную базу и можем запускать периодически программу преобразования. Так как я добавляю всего несколько записей примерно раз в два месяца, то меня это не очень волнует.