![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача параметров WEB-приложению [D7, WinXP]
pjmg © (2005-10-10 18:03:00)Уважаемые мастера, помогите ламеру!
Мне от моей Delphi программы нужно чтоб когда юзер набирал http://localhost/cgi/proga.exe?param1=a¶m2=bто, что после первого равно считывалось в одну переменную, а после второго - в другую. Но функция ParamCount воспринимает это всё как один параметр! То есть если написать ParamStr(2) на выходе будет пустая строка. К тому же мне надо не имя параметра а его значение после равно, как я уже говорил. Подскажите, пожалуйста, что-то в учебниках про это не нашёл
Seeker (2005-10-11 13:48:00) [1]
> 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;
Чапаев (2005-10-11 10:33:00) [2]
> 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 22:24:00) [3]Значение, а не название параметра возвращается только в том случае, если выбран разделитель, отличный от знака, равно, что крайне нежелательно. В противном случае сервер глючит и выдаётся ошибка 500.
pjmg (2005-10-10 21:29:00) [4]Ошибка не возникает только если явно задать параметры в диалоге Run->Parametrs и компилировать программу с ними. Кстати, а нельзя ли получать значение параметра не по номеру, а по имени?
pjmg (2005-10-10 21:25:00) [5]>Seeker
Эта функция вызывает ошибку вида "lIST INDEX OUT OF BOUNDS"
Seeker (2005-10-10 18:52:00) [6]
...
var
VarStr:TStringList;
begin
VarStr:=TStringList.Create;
VarStr.Delimiter:='&';
VarStr.NameValueSeparator:='='; //хотя по умолчанию он равен "="
VarStr.DelimitedText:=ParamStr(1);
//далее VarStr.ValueFromIndex[0] и тд.
...
VarStr.Free;
end;
Чапаев (2005-10-10 18:22:00) [7]Строку придётся самому парсить.
pjmg (2005-10-10 18:04:00) [8]Упс, извините. То, что в первом сообщении обозначается как непонятная закорючка на самом деле амперсанд