Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.17;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.051 c
15-1164559974
Nic
2006-11-26 19:52
2006.12.17
Как удалить свой сайт с fatal.ru?


2-1164866515
Silica
2006-11-30 09:01
2006.12.17
Очистка формы


2-1164713743
Organ
2006-11-28 14:35
2006.12.17
ini-настройки из строки


4-1155094525
Старик
2006-08-09 07:35
2006.12.17
Иконка и курсор главной формы.


15-1164589479
vasIzmax
2006-11-27 04:04
2006.12.17
Кто-нибудь это видел