Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Общие вопросы > WEB-Программирование
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.12.2007, 18:16
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию Как получить данные, передаваемые методом GET, в CGI-приложении?

Как получить данные, передаваемые методом GET, в CGI-приложении?
Сделал как в FAQ, не получилось.
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #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. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2020

ВКонтакте   Facebook   Twitter