writeln('
');
writeln('
');
writeln('
The following books have been found foryou:
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
После того как заголовок написан, самое время выводить сами записи. Я не хочу сортировать их по рейтингу от 5 до 1, так что я просто иду по списку книг и печатаю каждую со своим рейтингом. Этот путь, потому что я знаю, что книги уже отсортированы по рейтингу в основной базе delbooks.db (которая отсортирована по уровню и рейтингу). Обычно книги в верху списка уже лучший ответ на заданный вопрос.
ifDataRec.Delphi2 then
begin
forHits := 5 downto1 do
begin
fori:=1 toBooks32 do ifResult32[i] = Hits then
begin
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
')
end
end;
ifDataRec.Delphi1 thenwriteln('
')
end;
ifDataRec.Delphi1 then
begin
forHits := 5 downto1 do
begin
fori:=1 toBooks16 do ifResult16[i] = Hits then
begin
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
');
writeln('
')
end
end
end;
writeln('
Hits |
Title |
Author |
Publisher |
ISBN |
Level |
Con |
Wri |
Val |
Tot |
',Roman[Hits],' |
',Book32[i].Title,' |
',Book32[i].Author,' |
',Book32[i].Publisher,' |
',Book32[i].ISBN,' |
',Level[Book32[i].Level],' |
',Book32[i].TechnicalContentsQuality,' |
',Book32[i].QualityOfWriting,' |
',Book32[i].ValueForMoney,' |
',Book32[i].OverallAssessment,' |
|
',Roman[Hits],' |
',Book16[i].Title,' |
',Book16[i].Author,' |
',Book16[i].Publisher,' |
',Book16[i].ISBN,' |
',Level[Book16[i].Level],' |
',Book16[i].TechnicalContentsQuality,' |
',Book16[i].QualityOfWriting,' |
',Book16[i].ValueForMoney,' |
',Book16[i].OverallAssessment,' |
');
writeln('
');
writeln('Dr.Bob''s Delphi Clinic');
writeln('
');
writeln('
');
writeln;
Free
end
Страницу HTML с результатом, сгенерированную по запросу мы модем увидеть выполнив CGI приложение. Для этого требуется (персональный) Web сервер. По этому я написал небольшую программу отладки, используя Delphi 2.01 и NetManage HTML control:
Я надеюсь, что я показал, как мы можем писать интерактивные Интернет (Интранет) CGI приложения с помощью Delphi 2 используя CGI, WinCGI и Delphi 3 ISAPI/NSAPI Web Modules. Лично я планирую делать многое с помощью Дельфи для Интернет и Интранет.
Многое из того, что вы узнали, позволяет вам писать Интернет приложения с помощью Delphi. Особенно с помощью новых средств в Delphi 3 таких как ActiveForms и Web Modules. Но иногда мы хотим сделать, что еще быстрее и проще. Иногда мы просто хотим загрузить файл из Интернета. В терминах Интернета это означает, что мы хотим использовать FTP (file transfer protocol) клиента. И если вы верите мне, то вам не требуется ни какой FTP клиент, но если вы верите мне, то вы можете написать свой…
Как я сказал во введении, FTP означает File Transfer Protocol, который описан в RFC 959. Модель связи FTP может быть реализована с помощью сокетов, но это более низкоуровневое решение и если вы посмотрите спецификацию, то поймети, что написание программы FTP клиента с нуля не такая уж простая задача. С другой стороны, мы можем использовать NetManage TFTP компонент из Delphi 2.01 (и выше) и C++Builder. Я пробовал использовать этот компонент несколько раз, и нашел его просто глюкавым, особенно для файлов свыше 10 Kb. Я могу понять, почему Microsoft (первый разработчик Internet Solutions Pack) не захотела использовать его и продала затем NetManage, которая тоже не справилась с ним и продала далее фирме NetMasters. Проблема в том, что Internet Solutions Pack – хотя и бесплатный – основан на наборе с ограничениями ActiveX, и каждая компания которая использует его также имеет более лучшее решение (обычно не бесплатно). Поддержка и документация всегда отвратительная…
Так что же, назад к низкоуровневому программированию? Ни в коем случае. Как всегда на помощь приходит Microsoft
Читать дальше