Bob Swart - Интернет решения от доктора Боба

Здесь есть возможность читать онлайн «Bob Swart - Интернет решения от доктора Боба» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Интернет решения от доктора Боба: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Интернет решения от доктора Боба»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Интернет решения от доктора Боба — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Интернет решения от доктора Боба», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

{$APPTYPE CONSOLE}

var

Data: String;

ContentLength,i,j: Integer;

begin

writeln('HTTP/1.0 200 OK');

writeln('SERVER: Dr.Bob''s Intranet WebServer 1.0');

writeln('CONTENT- TYPE: TEXT/HTML');

writeln;

writeln('');

writeln('

');

writeln('Generated by Dr.Bob''s CGI-Expert on ',DateTimeToStr(Now));

withTBDosEnvironment.Create( nil) do

begin

fori := 0 toPred(DosEnvCount) do

begin

ifPos('REQUEST_METHOD',DosEnvList[i]) 0 then

begin

Data := DosEnvList[i];

Delete(Data,1,Pos('=',Data))

end

end;

ifData = 'POST' then

begin

ContentLength := StrToInt(GetDosEnvStr('CONTENT_LENGTH'));

SetLength(Data,ContentLength+1);

j := 0;

fori:=1 toContentLength do

begin

Inc(j);

read(Data[j]);

end;

Data[j+1] := '&';

{ now call Value or ValueAsInteger to obtain individual values }

end;

Заметим, что первые три "writeln" строки, посылаемые на стандартный вывод, необходимы для браузера, что бы сообщить ему, что содержимое страницы имеет тип TEXT/HTML.

2.2.5. Базы данных

При написании CGI приложений, вам необходим, какой то путь для доступа к данным базы. Одним из простых решений будет использование BDE и помещение ваших данных в таблицы Парадокса или dBASE. Если по какой либо причине BDE не инсталлировано на вашем NT Web сервере (может быть ваш дружественный Internet Provider не предоставляет вам BDE), вы можете использовать технику старых дней, используйте вместо базы данных файл записей.. Все что вам нужно, определить тип TRecord и написать программу, которая конвертирует вашу базу данных в file of TRecord.

2.2.6. Преобразование

Если вы посмотрите на список полей Парадокса, то вам не составит труда понять, что не все поля можно просто конвертировать в текстовый формат, например типа Memo обычно не помещаются в короткие строки (Short String). А как начет Blob? Для данного типа полей я составил небольшую таблицу конвертирования.

Paradox field type ObjectPascal conversion type
TStringField (size) String[length]
TIntegerField, TWordField, TSmallIntField Integer
Currency Double
Memo, Blob n/a (ignored)

Использую данную таблицу не трудно небольшую программу, которая берет на вход таблицу и создает программу определения записи на Паскале.

{$APPTYPE CONSOLE}

usesDB, DBTables;

vari: Integer;

begin

ifParamCount = 1 then withTTable.Create( nil) do

try

TableName := ParamStr(1);

Active := True;

writeln('Type');

writeln(' TRecord = record');

fori:=0 toPred(FieldDefs.Count) do

begin

if(FieldDefs[i].FieldClass = TStringField) then

writeln(' ':4,FieldDefs[i].Name,': String[',FieldDefs[i].Size,'];')

else

begin

if(FieldDefs[i].FieldClass = TIntegerField) or

(FieldDefs[i].FieldClass = TWordField) or

(FieldDefs[i].FieldClass = TSmallintField) then

writeln(' ':4,FieldDefs[i].Name,': Integer;')

else

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: recordtablename')

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;

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Интернет решения от доктора Боба»

Представляем Вашему вниманию похожие книги на «Интернет решения от доктора Боба» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


libcat.ru: книга без обложки
Анонимные Алкоголики
Боб Шоу - Bob Shaw
Боб Шоу
Отзывы о книге «Интернет решения от доктора Боба»

Обсуждение, отзывы о книге «Интернет решения от доктора Боба» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x