|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Как получить данные, передаваемые методом GET, в CGI-приложении?
Как получить данные, передаваемые методом GET, в CGI-приложении?
Сделал как в FAQ, не получилось. Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#2
|
||||
|
||||
Сам нашел:
Код:
unit GetParams; interface uses SysUtils, Windows; procedure Main; implementation var InParams: String; ChatFile: TextFile; procedure InitParams;// Читаем переданные параметры из переменной окружения var SS: String; begin SetLength(SS, 10000); GetEnvironmentVariable('QUERY_STRING', @SS[1], 2000); InParams:=PChar(@SS[1]); end; 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): String;// Преобразует символы, записанные в виде %2B к правильному виду var I, L: Integer; begin Result:=''; L:=0; for I:=1 to Length(Value) do begin if(Value[i]<>'%') and (Value[i]<>'+') and (L<1) then begin Result:=Result+Value[i]; end else begin if(Value[i]='+') then Result:=Result+' ' else if(Value[i]='%') then begin L:=2; if(I<Length(Value)-1) then begin Result:=Result+Chr(HexToInt(Value[I+1])*16+HexToInt(Value[I+2])); end; end else Dec(L); end; end; end; function ParamByName(Name: String): String;// Возвращает значение параметра, заданного в Name var SS, ST: String; K: Integer; begin Result:=''; SS:=InParams; while Length(SS)<>0 do begin K:=Pos('&',SS); if(K<>0) then begin ST:=Copy(SS,1,K-1); SS:=Copy(SS,K+1,10000); end else begin ST:=SS; SS:=''; end; K:=Pos('=',ST); if(K<>0) then begin if(Name=Copy(ST,1,K-1)) then begin Result:=Decode(Copy(ST,K+1,6000)); end; end; end; end; procedure Main; begin InitParams; //Дальше можно получать значения параметров функцией ParamByName end; end. ...... //Файл проекта program Project1; {$APPTYPE CONSOLE} {$e cgi} uses Windows, GetParams in 'GetParams.pas'; begin Main; end. Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |