![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Написание CGI-приложения посредством Delphi
Интернетчик © (2004-06-03 02:38:00)Мне необходимо создать CGI-приложение именно на Delphi, а не на Perl, например. Причина в том, что я использую функции сжатия, шифрования данных, и это у меня написано и работает на Delphi, Надо, чтобы программа работала в качестве полноценного CGI скрипта... Например, мне присылают (POSTом) данные, мне нужно их обработать, как в простой прорамму, и сгенерировать ответ. И также важно, чтобы это дело не весило пол
мегабайта из-за форм.
Подскажите, пожалуйста...
piople (2004-06-03 04:32:00) [1]Так в чем проблема то??? Работай с cgi скриптом по средством консольного приложения!
Хотя честно говоря лучше всего их писать в виде библиотек ISAPI или NSAPI.
Но раз надо малый размер, то пиши консольное приложение.
Пример:
Моя библиотека для работы с общим шлюзовым интерфейсом(CGI):
unit cgiwork;
interface
uses SysUtils, Windows;
function HexToInt(CH : char): integer;
function Decode(Value: string; CH: String): string;
function ParamByName(Name: string; CH: String): string;
function LowCase(ch: Char) : Char;
function ChangeChar(Value, CHOld, CHNew: String): string;
function GetEV(Param: String): String;
implementation
// Полечение переменной сетового окружения
function GetEV(Param: String): String;
begin
result := GetEnvironmentVariable(PChar(Param));
end;
// Функция замены символов в строке
function ChangeChar(Value, CHOld, CHNew: String): string;
begin
while Pos(CHOLD, Value) > 0 do
Value := Copy(Value,0,Pos(CHOld, Value)-1) + CHNew + Copy(Value,Pos(CHOld, Value) + Length(CHOld),Length(Value));
result := Value;
end;
// Переделываем буквы в нижний регистр
function LowCase(ch: Char): Char;
begin
Result := ch;
case Result of
'А'..'Я': Dec(Result, Ord('А') - Ord('а'));
'A'..'Z': Dec(Result, Ord('A') - Ord('a'));
end;
end;
// Переделываем из Hex в Int
function HexToInt(CH : char): integer;
begin
Result:=0;
case CH of
'0'..'9': Result:=Ord(CH)-Ord('0');
'A'..'F': Result:=Ord(CH)-Ord('A')+10;
'a'..'f': Result:=Ord(CH)-Ord('a')+10;
end;
end;
// Декодировать параметр
function Decode(Value: string; CH: String): string;
var
i, L: integer;
begin
Result:='';
L:=0;
Value := ChangeChar(Value, '%0D%0A', ' ');
for i := 1 to Length(Value) do
begin
if(Value[i] '%') and (Value[i] '+') and (L