Вход/Регистрация
Интернет решения от доктора Боба
вернуться

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.

  • Читать дальше
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: