![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Web Server Application и Глобальные переменные? [D7, Win95/98]
Shlomo © (2005-09-13 10:11:00)Здравствуйте!
Помогите, пожалуйста, разобраться.
Создаю обычное «Web Server Application» приложение, однако выясняется, я не могу хранить в этом модуле глобальные переменные. Нужно сохранять некоторые параметры. Как это сделать?
Please, help!
Плохиш (2005-09-13 15:10:00) [1]
> Shlomo © (13.09.05 14:18) [15]
> ОК. И что же делать?
А ответы [10] и [11] ну совсем не помогли?
Тогда читай книжки, смотри примеры, поставляемые с Делфи. В интернете информации немерянно, наконец.
Digitman (2005-09-13 14:43:00) [2]и не надо ее объяснять.
создай простейший проект вида :
programm Dummy;
uses ..
var GlobalVar: Integer; // ЧЕМ не глобальна сия переменная ?!
begin
GlobalVar := GetCurrentProcessId;
ShowMessage('GlobalVar = ' + IntToStr(GlobalVar));
end;
запусти более одного процесса - экз-ра приложения, описанного данным проектом.
подумай над увиденным тобой.
Shlomo (2005-09-13 14:29:00) [3]Иногда объяснить задачу сложнее чем снять штаны и трусы
Digitman (2005-09-13 14:24:00) [4]известно что)
снять штаны и бегать)
или объяснить условия задачи без хныканья а-ля "я - чайник"..
Shlomo (2005-09-13 14:18:00) [5]ОК. И что же делать?
Digitman (2005-09-13 13:45:00) [6]
> Shlomo © (13.09.05 13:38) [13]
при обслуживании очередного кл.запроса создается новый процесс того самого твоего Stand-alone (EXE) - приложения.
Со всеми вытекающими.
Shlomo (2005-09-13 13:38:00) [7]- CGI Stand-alone (EXE)
Digitman (2005-09-13 13:16:00) [8]
> Shlomo © (13.09.05 13:04) [9]
> Ваши непонятки связаны с тем, что я "чайник"
нет, ты не "чайник"
"Чайник" обычно что видит, то и говорит.
А видеть он должен при выборе File->New..-> Web Server Application не какое-то там непонятное "обычное Web приложение", а один из 5-ти предложенных ему варианов проектов :
- ISAPI/NSAPI (DLL)
- CGI Stand-alone (EXE)
- Apache 1.x SO (DLL)
- Apache 2.x SO (DLL)
- Web App Debugger (EXE)
Ты КАКОЙ из этих вариантов выбрал ?!
DiamondShark (2005-09-13 13:13:00) [9]Это всё потому, что протокол HTTP -- это протокол без состояния.
После того, как сервер сгенерировал и отправил клиенту ответ, он про этого клиента забыл. Новый запрос -- это новый клиент.
Эмуляция состояния не входит в задачу веб-сервера, это целиком забота приложения.
Для сохранения состояния надо использовать какой-либо внешнее хранилище (напр. БД), и как-то идентифицировать одного и того же клиента (обычно для этого используются специльные куки).
Джо (2005-09-13 13:10:00) [10]1. Храни их в файле.
2. Храни их в Memory Mapped Files
Shlomo (2005-09-13 13:04:00) [11]Ещё раз прошу прошения. Ваши непонятки связаны с тем, что я "чайник".
Создаю обычное Web приложение со вкладки "New". Появляется обычный WebModule.
Когда приложение загружается срабатывает событие ModuleCreate, затем когда "переходишь на вторую страницу" ещё раз срабатывает этот метод, соответственно все глабальные переменные обнуляются, а мне надо хранить их значение.
Digitman (2005-09-13 11:31:00) [12]
> Плохиш © (13.09.05 11:18) [7]
протелепатировать в дан.случае не так уж трудно)
> непонятно, зачем нужны при обработке запроса от Васи данные из запроса от Пети? К тому нет никакой гарантии, что эти модули выполняются в одно время
а вот это уже - на совести автора .. мои телепатические способности на этом исчерпаны)
Плохиш (2005-09-13 11:18:00) [13]
> Digitman © (13.09.05 11:04) [6]
Телепат, однако :-)
Только непонятно, зачем нужны при обработке запроса от Васи данные из запроса от Пети? К тому нет никакой гарантии, что эти модули выполняются в одно время. :-)
Digitman (2005-09-13 11:04:00) [14]
> Плохиш © (13.09.05 10:59) [5]
> А не пофигу
да пофигу, конечно же .. это бесспорно ..
другой вопрос, что автор скорей всего имел ввиду не глобальность идентификатора в проекте с т.з. Делфи, а ран-тайм-доступность значения некоей объявленной им переменной из разных экз-ров модуля
Плохиш (2005-09-13 10:59:00) [15]
> Digitman © (13.09.05 10:54) [4]
> Какой из них ты имеешь ввиду ?
А не пофигу, какое он имеет ввиду? Главное, что глобальные переменные (в терминах объект паскаля) есть во всех. А что он под этим термином подразумевает, это его проблема. Пусть книжки почитает для начала.
Digitman (2005-09-13 10:54:00) [16]
> Создаю обычное «Web Server Application» приложение
какое такое "обычное" ?
Эксперт, запускаемый по File -> New -> Web Server Application, предлагает создать аж 5 различных по назначению и структуре проектов ! И все они "обычные" ..
Какой из них ты имеешь ввиду ?
Плохиш (2005-09-13 10:48:00) [17]
> Shlomo © (13.09.05 10:32) [2]
> ОК. Согласен!:)
> Прошу прошения.
>
> Хорошо. Как объявить, чтобы потом использовать?
var GlobalVar: <Type>;
Shlomo (2005-09-13 10:32:00) [18]ОК. Согласен!:)
Прошу прошения.
Хорошо. Как объявить, чтобы потом использовать?
Digitman (2005-09-13 10:22:00) [19]
> не могу хранить в этом модуле глобальные переменные
глобальные переменные в модуле не "хранятся", а объявляютсяи используются