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

Swart Bob

Шрифт:

begin

FDosEnvList.Free;

FDosEnvList := nil;

inherited Destroy

end {Destroy};

function TBDosEnvironment.GetDosEnvCount: Word;

begin

Result := 0;

if Assigned(FDosEnvList) then Result := FDosEnvList.Count

end {GetDosEnvCount};

function TBDosEnvironment.GetDosEnvStr(Const Name: String): String;

var i: Integer;

Tmp: String;

begin

i := 0;

Result := '';

if Assigned(FDosEnvList) then while i <FDosEnvList.Count >do

begin

Tmp := FDosEnvList[i];

Inc(i);

if Pos(Name,Tmp) = 1 then

begin

Delete(Tmp,1,Length(Name));

if Tmp[1] = '=' then

begin

Delete(Tmp,1,1);

Result := Tmp;

i := FDosEnvList.Count { end while-loop }

end

end

end

end {GetDosEnvStr};

 end.

Данный компонент получает список переменных среды во время своего создания. Свойство DosEnvCount и DosEnvList является свойством только для чтения и поэтому лучше его создавать его в на ходу, а не бросать на форму, так как берется только 'свежий' список переменных среды, а не загружается из .DFM файла).

2.2.4. Анализ

Среди переменных среды есть переменная с именем REQUEST_METHOD. Она должна иметь значение POST для нашего примера (Я не люблю другие методы). Затем мы должны найти размер информации, которая передана нам. Для этого мы должны получить переменную CONTENT_LENGTH. Сама информация поступает к нам через стандартный ввод (без маркера конца файла, поэтому наша задача не пытаться читать больше, чем нам передано). Данные поступающие через стандартный ввод имеют следующую форму FIELD=VALUE и разделяется с помощью символа '&'. Например: AUTHOR="Bob_Swart"&. Поскольку мы имеем весь входной поток, как одну длинную строку, то мы можем быстро найти параметр AUTHOR с помощью следующей функции:

 var

Data: String;

function Value(Const Field: ShortString): ShortString;

var i: Integer;

begin

Result := '';

i := Pos(Field+'=',Data);

if i = 0 then

begin

Inc(i,Length(Field)+1);

while Data[i] <> '&' do

begin

Result := Result + Data[i];

Inc(i)

end

end

end {Value};

Следующий шаблон кода показывает как динамически создать переменную TBDosEnvironment, прочитать информацию со стандартного ввода и получить строку готовую для анализа переменных формы.

 {$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('<HTML>');

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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