![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;