Показать сообщение отдельно
  #2  
Старый 01.01.2008, 18:54
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Сам нашел:
Код:
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. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием