Форум: "Прочее";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
ВнизISAPI в Delphi Найти похожие ветки
← →
poganka © (2006-11-11 16:09) [0]мне очень стыдно в этом признаваться, но я не смогла найти доступной информации по поводу того, что бы такое написать между бегином и эндом в Web Server Application, чтобы по нажатию кнопки submit запускалось ISAPI-приложение, которое, анализируя выбранную клиентом радиокнопку, передвало бы ему в формате хтмл файл, ей соответствующий.
думаю, это всего пара строчек. если кому не сложно, помогите темноте.
← →
poganka © (2006-11-18 15:02) [1]ыыыы. ну почему никто не знает???
← →
Alexander Panov © (2006-11-18 15:34) [2]А у тебя WEB-сервер есть для для использования ISAPI-приложения?
← →
poganka © (2006-11-20 12:27) [3]мне IISа хватит!
← →
Alexander Panov © (2006-11-20 12:30) [4]
> poganka © (20.11.06 12:27) [3]
> мне IISа хватит!
Хватит, конечно.
Тогда создавай страничку с формой, на которой будет кнопка с любым из методов GET или POST, CGI, которы будет срабатывать при посылке данных этой формы. И все.
← →
poganka © (2006-11-20 16:25) [5]я написала хтмл с кнопками. написала хтмл с табличками, которые по идее нужно передать по запросу радиокнопки. запустила шаблон исапи в Delphi. а как писать сам анализ радиокнопок, не знаю.
← →
DrPass © (2006-11-20 16:56) [6]Между begin и end там писать ничего не нужно. А вот если два раза щелкнуть на дизайнере модуля web-приложения, откроется редактор Action"ов. Вот там нужно добавить хотя бы один экшн, и в его обработчике смотреть объект WebRequest, который будет содержать значения полей на HTML-форме. Ну и, само собой, этот самый
> хтмл с табличками
должен содержать правильно написанную HTML-форму, ссылающуюся на твой экшн
← →
poganka © (2006-11-20 17:15) [7]
> Между begin и end там писать ничего не нужно. А вот если
> два раза щелкнуть на дизайнере модуля web-приложения, откроется
> редактор Action"ов. Вот там нужно добавить хотя бы один
> экшн, и в его обработчике смотреть объект WebRequest, который
> будет содержать значения полей на HTML-форме. Ну и, само
> собой, этот самый
> > хтмл с табличками
>
> должен содержать правильно написанную HTML-форму, ссылающуюся
> на твой экшн
по-моему, вы для меня слишком умные :)))
привожу полную постановку задачи (без личной интерпретации):
_____________________________________________
Вывод данных по запросу пользователя. На сервере имеется три текстовых файла, первый содержит список товаров, второй – список услуг, третий – список партнеров некой абстрактной компании. Имеется HTML-страница, содержащая три радиокнопки и кнопки типа submit и reset. По нажатию кнопки типа submit запускается ISAPI-приложение, которое, анализируя выбранную клиентом радиокнопку, передает ему в формате HTML один из трех файлов.
_____________________________________________
неужели нужно еще заботиться о полях этих самых хтмл с табличками? разве нельзя туда любую текстовую байду черкануть?
← →
Сергей М. © (2006-11-20 17:29) [8]
> разве нельзя туда любую текстовую байду черкануть?
хтмл, собственно, и есть "текстовая байда"
← →
DrPass © (2006-11-20 18:01) [9]
> разве нельзя туда любую текстовую байду черкануть?
Совсем любую - нельзя. Обязательно должно присутствовать что-либо такого вида
<form method=POST или GET action= ссылка на твой Action>.
...вот тут можно поместить твои радиокнопки, не забыв указать им параметр name
<input type=submit>
</form>
А в экшене ты и будешь определять состояние радиокнопок по указанному тобой name. С помощью объекта WebRequest
← →
isasa © (2006-11-20 18:22) [10]Если GET-ом
http://<myhost>/<mylib>.dll/<actionName>?<actionParam> <- это GET
"Вынимаем" параметры,
в зависимости от метода (GET, POST) есть ньюансы
procedure TmyWebModule.CheckAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
...
<var>:=Request.QueryFields.Values[<Name>];
или
<var>:=Request.ContentFields.Values[<Name>];
...
← →
isasa © (2006-11-20 18:28) [11]Да, и еще :)
Если предполагается работа с БД, ну что-то типа SQL-сервера, не забыть аккуратно вляпать
CoInitializeEx (nil, COINIT_MULTITHREADED);
в предположении, что DLL, все таки многопоточная.
← →
poganka © (2006-11-21 15:39) [12]если сначала, то вот мой вариант хтмл:
___________________________________________________
<html>
<body>
<form action="myISAPI.exe" method="post">
<input type="radio" name="myname1">Список товаров <BR>
<input type="radio" name="myname2">Список услуг <BR>
<input type="radio" name="myname3">Список партнеров <BR>
<input type="submit">
<input type="reset"">
</form>
</body>
<html>
____________________________________________________
что тут не так, к примеру?
люди, спасибо, что откликаетесь! вы классные!!!
← →
poganka © (2006-11-21 15:54) [13]плюс, грубо говоря, есть 3 хтмл-файла вида:
____________________________
<html>
<body>
ТОВАРЫ
</body>
<html>
____________________________
покритикуйте, плиз.
и всё-таки поточнее хотелось бы, что в Web Server Application написать!
← →
isasa © (2006-11-21 17:08) [14]action="myISAPI.exe"
Это не ISAPI. В крайнем случае WinCGI, а то насоветуют тут ...
← →
isasa © (2006-11-21 17:09) [15]Хотя выгребать в программе одинаково
varMyname1:=Request.ContentFields.Values["myname1"];
...
← →
Чапаев © (2006-11-21 17:14) [16]> [0] poganka © (11.11.06 16:09)
В Тейксейре&Пачеко о CGI вполне вменяемо рассказано. В твоём случае с ISAPI -- точно так же, просто выбирай тип приложения ISAPI вместо CGI.
> Это не ISAPI. В крайнем случае WinCGI, а то насоветуют тут
> ...
От того, что расширение у ISAPI-приложения *.dll, суть не изменится...
← →
isasa © (2006-11-21 17:22) [17]В общем то так. Если о сути.
Но первое in-proc, второе out-proc. Одно отлаживается на ура(CGI), второе, с извращениями.
← →
Чапаев © (2006-11-21 17:34) [18]О да... Но в данном случае вопрос не об этом ведь...
← →
isasa © (2006-11-21 17:42) [19]:)
Ну я и написал [15].
← →
poganka © (2006-11-22 11:38) [20]
> isasa © (21.11.06 17:09) [15]
>
> Хотя выгребать в программе одинаково
> varMyname1:=Request.ContentFields.Values["myname1"];
> ...
это всё, что нужно написать? только 3 раза?
и, честно говоря, я написала myname1-3, но сама не поняла, что это означает.
где же фигурируют названия самих передаваемых хтмл-файлов? (запуталась, короче)
> Чапаев © (21.11.06 17:14) [16]
>
> > [0] poganka © (11.11.06 16:09)
> В Тейксейре&Пачеко о CGI вполне вменяемо рассказано. В твоём
> случае с ISAPI -- точно так же, просто выбирай тип приложения
> ISAPI вместо CGI.
ну, в принципе, понятно, что здесь это не принципиально :)
имеет ли смысл эту книгу искать в эл. виде? я перерыла весь магазин на Лубянке- и ни фига осмысленного по вопросу не обнаружила.
← →
DrPass © (2006-11-22 11:50) [21]
> где же фигурируют названия самих передаваемых хтмл-файлов?
> (запуталась, короче)
В принципе, нигде. Ну разве что так:
var sl: TStringList;
sl:= TStringList.Create;
sl.LoadFromFile("1.html");
Response.Content:= sl.Text;
sl.Free;
← →
Чапаев © (2006-11-22 11:52) [22]> имеет ли смысл эту книгу искать в эл. виде?
Имеет, но если попадётся в бумажном -- хватай! :о)
У меня Т&П по Делфи5 -- отлично. Их книгу по Делфи6 ругают. Не читал, не знаю, что там...
← →
Layner © (2006-11-22 11:53) [23]Это помоему трудновато сделать для чайника, сначала как минимум надо попробовать это сделать на PHP, а потом уж на всяких ISAPI...
← →
Чапаев © (2006-11-22 11:58) [24]Ну да, куда ж без РНР... Как же без него чайникам в веб соваться...
← →
Anatoly Podgoretsky © (2006-11-22 11:58) [25]> Чапаев (22.11.2006 11:52:22) [22]
> Их книгу по Делфи6 ругают.
???
← →
Чапаев © (2006-11-22 12:00) [26]> [25] Anatoly Podgoretsky © (22.11.06 11:58)
Да вот ругают... И здесь кто-то что-то говорил неприятное... Перевод, кажется, ужасный, а не само содержание книги.
← →
isasa © (2006-11-22 12:04) [27]Layner © (22.11.06 11:53) [23]
Очень мило.
Для чайника потом адаптация кода PHP в классы Дельфи, работающие с Вебом(TWebModule, TPageProducer, TWebRequest, TWebResponse...) легче?
← →
Anatoly Podgoretsky © (2006-11-22 12:16) [28]> Чапаев (22.11.2006 12:00:26) [26]
Ну если про перевод, то другое дело, правда это ругали версию про Д5.
Перевод делал англинист, а нужен американист.
Англинисты они не в ладах с американскими отричаниями.
Сама книга нормальная, есть несколько вещей неверно переведеных, совсем с противоположным смыслом.
Так например, у них получился оператор =++ В Дельфи, хотя в оригинале сказано, что в Дельфи подобного нет.
← →
Чапаев © (2006-11-22 12:18) [29]> [28] Anatoly Podgoretsky © (22.11.06 12:16)
Да, вспомнил, речь шла именно о якобы наличии в Делфи оператора += и такого прочего. Но в книге по Д5 таких глупостей нету.
← →
poganka © (2006-11-22 12:34) [30]два разных, но однозначно отзывчивых человека написали:
______________________________
var sl: TStringList;
sl:= TStringList.Create;
sl.LoadFromFile("1.html");
Response.Content:= sl.Text;
sl.Free;
varMyname1:=Request.ContentFields.Values["myname1"];
______________________________
я туплю, но всё же. как это соотнести друг с другом? нужно ли мне что-то еще дописывать?
← →
Чапаев © (2006-11-22 12:41) [31]> [30] poganka © (22.11.06 12:34)
А что смущает? Пример с реквестом показывает, как получить "выбранную клиентом радиокнопку", пример с респонсом показывает, как передать "хтмл файл, ей соответствующий"
← →
DrPass © (2006-11-22 12:46) [32]
> poganka © (22.11.06 12:34) [30]
Вот так
> varMyname1:=Request.ContentFields.Values["myname1"];
ты получаешь состояние чекбокса myname1 на "начальной" странице.
А вот так
> var sl: TStringList;
> sl:= TStringList.Create;
> sl.LoadFromFile("1.html");
> Response.Content:= sl.Text;
> sl.Free;
ты в зависимости от состояний чекбоксов сможешь отправить пользователю требуемый ответ
← →
poganka © (2006-11-22 12:46) [33]
> Чапаев © (22.11.06 12:41) [31]
если этого достаточно для нормального функционирования проги (а я не могу быть в этом стопроцентно уверена из-за незнания Delphi), то ничего не смущает :)
так это всё, что нужно?
← →
poganka © (2006-11-22 12:48) [34]
> DrPass © (22.11.06 12:46) [32]
просто не догнала, в каком месте эти два куска соотносятся друг с другом :)
← →
Alien1769 © (2006-11-22 13:12) [35]
> так это всё, что нужно?
Для начала тестов достаточно.
← →
isasa © (2006-11-22 13:47) [36]Тут еще есть ньюанс по выемке значений.
Сейчас, хоть убейте не вспомню, а лезть в литературу лень, в зависимости от метода передачи параметров(GET/POST), они кладутся в разные классы
Request.QueryFields или Request.ContentFields
Кто, куда кладет, не помню, но можно определить. :)
← →
Layner © (2006-11-22 14:06) [37][27] isasa © (22.11.06 12:04)
Для чайника потом адаптация кода PHP в классы Дельфи, работающие с Вебом(TWebModule, TPageProducer, TWebRequest, TWebResponse...) легче?
Если чел не знает что такое GET или POST, то ты хоть ему заобъясняйся про TWebModule, толку не будет :)
Тем более челу надо курсач сварганить не более.
← →
isasa © (2006-11-22 14:15) [38]Ага. А PHP имеет непосредственное отношение к методам GET POST
← →
Anatoly Podgoretsky © (2006-11-22 14:27) [39]> isasa (22.11.2006 14:15:38) [38]
GET POST имеют отношение только к CGI
← →
isasa © (2006-11-22 14:36) [40]:) Ну тогда и к IE, Opera, Mozilla ...
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.043 c