Swart Bob
Шрифт:
if (FieldDefs[i].FieldClass = TCurrencyField) then
writeln(' ':4,FieldDefs[i].Name,': Double;')
else
writeln('{ ':6,FieldDefs[i].Name,' }')
end
end
finally
writeln(' end;');
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.