Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: 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 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
14-1135524553
Fl@sh
2005-12-25 18:29
2006.01.22
Печать pdf


14-1135660671
Nic
2005-12-27 08:17
2006.01.22
Интересный глюк


14-1135583754
Иксик
2005-12-26 10:55
2006.01.22
Кому-нибудь попадалась книга "Наносистемы" на русском?


3-1132771300
alexmember
2005-11-23 21:41
2006.01.22
Задержка отображения записей на pentium 3


1-1134722112
scorpio_md
2005-12-16 11:35
2006.01.22
Как закрыть EXCEL без запроса на сохранение