Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача параметров 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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо