Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ISAPI и БД [D7, XP]


Alexey ©   (2008-08-30 07:44:00) 

Здравствуйте. Начал изучать Web-программирование.
Создал Web Server Application. Кинул на WebModule два TTable.
В первом TTable хранятся шаблоны html(в поле типа MEMO), эту таблицу использую только для чтения. Отправил в браюзер вот такую форму


Forum



Тема сообщения:





Текст сообщения:







Пользователь:    
         





Во второй TTable я хочу записать полученые данные:

procedure TWebModule1.WebModule1wiaMessageAction(Sender: TObject;
 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
 st: string;
 sub: string;
 user: string;
 mess: string;
 i: integer;
begin
 st:=Request.Content;
 i:=Pos('&',st);
 sub:=Copy(st,1,i-1);
 Delete(st,1,i);
 i:=Pos('=',sub);
 Delete(sub,1,i);

 i:=Pos('&',st);
 mess:=Copy(st,1,i-1);
 Delete(st,1,i);
 i:=Pos('=',mess);
 Delete(mess,1,i);

 i:=Pos('&',st);
 user:=Copy(st,1,i-1);
 Delete(st,1,i);
 i:=Pos('=',user);
 Delete(user,1,i);

 sub:=AfterPost(sub);
 Mess:=AfterPost(Mess);
 user:=AfterPost(user);

 tbSubjects.Insert;
 tbSubjects['Subjest']:=sub;
 tbSubjects['Message']:=mess;
 tbSubjects['User']:=user;
 tbSubjects.Post;

 Response.Content:='Forum'
           +'Inserting OK';
end;

Но на   tbSubjects.Insert; выдает внктреннию ошибку сервера.
В tbSubjects вставлял записи из простого приложения - без проблем.


Anatoly Podgoretsky   (2008-09-02 14:02:00) [1]

Литература идет с Дельфи, стандартная справка, изучение начать с TSession


Alexey   (2008-09-02 13:02:00) [2]

Loginov Dmitry спасибо за ссылку - буду изучать.
Anatoly Podgoretsky ну в общем почти понял, литературу поищу.
Иду учится... Спасибо!


Anatoly Podgoretsky   (2008-09-02 11:41:00) [3]

> Alexey  (02.09.2008 10:20:07)  [7]

Каждый поток, каждое приложение в БДЕ должно работать в своей собственной уникальной сессии и иметь свою собственную рабочую и временную папку.


Loginov Dmitry   (2008-09-02 11:25:00) [4]


> Чем плох Парадокс и что лучше?


плох он или хорош решайте сами после прочтения http://matrix.kladovka.net.ru/index.php?page=bdeproblems

много подводных камней в нем, но если всё учесть, то работать будет сносно. Лучше использовать более современные и надежные технологии.


Alexey   (2008-09-02 10:20:00) [5]

Спасибо.
С отладкой более менее разобрался, ща будет намного лекче.

> База-то надеюсь не на Парадоксе?)

Я создавал локальные БД на Парадоксе, работало без проблем.
Насколько я понял: сейчас проблема в потоках, когда их несколько штук работает с БД. (Если правилно понял работу ISAPI).
Чем плох Парадокс и что лучше?
Спасибо всем за делные советы.


DrPass   (2008-09-02 10:09:00) [6]


> Tools -> Web App Debugger?

Или включить в "девелоперском" IE загрузку ISAPI в АП сервера, затем Run -> Attach to process


Сергей М.   (2008-09-02 08:56:00) [7]


> Эту DLL какнибудь можно отлаживать?


Можно.
Как и любую другую dll.


Loginov Dmitry   (2008-09-02 07:49:00) [8]

> Впрочем, если хочешь продолжать, добавь TSession, и еще
> про синхронизацию не забудь


Мало добавить TSession, нужно еще убедиться в уникальности его имени, и связать с TTable соответствующим образом. Если все сделано правильно, то дополнительная синхронизация обобо не требуется.

База-то надеюсь не на Парадоксе?)


> Эту DLL какнибудь можно отлаживать?


Tools -> Web App Debugger?


Alexey   (2008-09-02 06:10:00) [9]

Чего ж так обзываться. Про TSession почитал, ща буду пробывать.
Попутный вопрос: Эту DLL какнибудь можно отлаживать?


DrPass   (2008-08-30 22:49:00) [10]


> TTable.

Извращенец:) Впрочем, если хочешь продолжать, добавь TSession, и еще про синхронизацию не забудь


Alexey   (2008-08-30 07:52:00) [11]

Извените поторопился:

procedure TWebModule1.WebModule1wiaMessageAction(Sender: TObject;
 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
 st: string;
 sub: string;
 user: string;
 mess: string;
 i: integer;
begin
 st:=Request.Content; // Получил данные
 // Следующий код: разделяю строку st -
 //в переменню sub записываю тему сообщения
 i:=Pos('&',st);
 sub:=Copy(st,1,i-1);
 Delete(st,1,i);
 i:=Pos('=',sub);
 Delete(sub,1,i);
//в переменню mess записываю сообщение
 i:=Pos('&',st);
 mess:=Copy(st,1,i-1);
 Delete(st,1,i);
 i:=Pos('=',mess);
 Delete(mess,1,i);
//в переменню user записываю пользователя
 i:=Pos('&',st);
 user:=Copy(st,1,i-1);
 Delete(st,1,i);
 i:=Pos('=',user);
 Delete(user,1,i);
//функция AfterPos заменяет в строке '+' на пробел, %0D%0A на #13#10
 sub:=AfterPost(sub);
 Mess:=AfterPost(Mess);
 user:=AfterPost(user);

//вставляю в таблицу запись

 tbSubjects.Insert;
 tbSubjects['Subjest']:=sub;
 tbSubjects['Message']:=mess;
 tbSubjects['User']:=user;
 tbSubjects.Post;

 Response.Content:='Forum'
           +'Inserting OK';
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо