Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.56 MB
Время: 0.04 c
2-1164633388
vitv
2006-11-27 16:16
2006.12.17
Передача данных с контролов на форме в отчёт(Fast Report).


15-1164404890
J_box
2006-11-25 00:48
2006.12.17
Никто не попадал в подобную ситуацию?


3-1160477086
Ольга
2006-10-10 14:44
2006.12.17
Сортировка набора данных, полученных из ХП


15-1163883139
Rouse_
2006-11-18 23:52
2006.12.17
Как же я обожаю цены порядка 9999 и т.п.


2-1164380188
Квэнди
2006-11-24 17:56
2006.12.17
И снова Winamp





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский