Вниз
Скачать: CL | DM;

Передача параметров WEB-приложению   Найти похожие ветки 

 
pjmg   (2005-10-10 18:03) [0]

Уважаемые мастера, помогите ламеру!
Мне от моей Delphi программы нужно чтоб когда юзер набирал http://localhost/cgi/proga.exe?param1=a&param2=b то, что после первого равно считывалось в одну переменную, а после второго - в другую. Но функция ParamCount воспринимает это всё как один параметр! То есть если написать ParamStr(2) на выходе будет пустая строка. К тому же мне надо не имя параметра а его значение после равно, как я уже говорил. Подскажите, пожалуйста, что-то в учебниках про это не нашёл


 
pjmg   (2005-10-10 18:04) [1]

Упс, извините. То, что в первом сообщении обозначается как непонятная закорючка на самом деле амперсанд


 
Чапаев ©   (2005-10-10 18:22) [2]

Строку придётся самому парсить.


 
Seeker ©   (2005-10-10 18:52) [3]


...
var
 VarStr:TStringList;
begin
VarStr:=TStringList.Create;
VarStr.Delimiter:="&";
VarStr.NameValueSeparator:="="; //хотя по умолчанию он равен "="
VarStr.DelimitedText:=ParamStr(1);
//далее VarStr.ValueFromIndex[0] и тд.
...
VarStr.Free;
end;


 
pjmg   (2005-10-10 21:25) [4]

>Seeker
Эта функция вызывает ошибку вида "lIST INDEX OUT OF BOUNDS"


 
pjmg   (2005-10-10 21:29) [5]

Ошибка не возникает только если явно задать параметры в диалоге Run->Parametrs и компилировать программу с ними. Кстати, а нельзя ли получать значение параметра не по номеру, а по имени?


 
pjmg   (2005-10-10 22:24) [6]

Значение, а не название параметра возвращается только в том случае, если выбран разделитель, отличный от знака, равно, что крайне нежелательно. В противном случае сервер глючит и выдаётся ошибка 500.


 
Чапаев ©   (2005-10-11 10:33) [7]


> var
>  VarStr:TStringList;
> begin
> VarStr:=TStringList.Create;
> VarStr.Delimiter:="&";
> VarStr.NameValueSeparator:="="; //хотя по умолчанию он равен
> "="
> VarStr.DelimitedText:=ParamStr(1);
> //далее VarStr.ValueFromIndex[0] и тд.
> ...
> VarStr.Free;
> end;

Ух ты какой умный! Спасибо. ;-)


 
Seeker ©   (2005-10-11 13:48) [8]


> pjmg  

А самому тяжело подумать?

var
VarStr:TStringList;
str:string;
begin
VarStr:=TStringList.Create;
VarStr.NameValueSeparator:="?";
VarStr.Text:="http://localhost/cgi/proga.exe?param1=a&m2=b";//ParamStr(0);
str:=VarStr.ValueFromIndex[0];
if str <> "" then
 begin
   VarStr.Delimiter:="&";
   VarStr.NameValueSeparator:="="; //хотя по умолчанию он равен "="
   VarStr.DelimitedText:=str;
   //далее VarStr.ValueFromIndex[0] и тд.
 end;

VarStr.Free;
end;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
14-1135962701
palva
2005-12-30 20:11
2006.01.22
С новым Годом и небольшой подарок


1-1135057258
Separator
2005-12-20 08:40
2006.01.22
Поиск чеков на определенную сумму


5-1122625321
Juice
2005-07-29 12:22
2006.01.22
Как отлаживать свои компоненты?


1-1134906574
The Only
2005-12-18 14:49
2006.01.22
wm_keydown и memo


6-1128105684
heady
2005-09-30 22:41
2006.01.22
IdHTTP1 (Indy компонент) отловить ошибку




   Наверх