Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
ВнизISAPI и БД Найти похожие ветки
← →
Alexey (2008-08-30 07:44) [0]Здравствуйте. Начал изучать Web-программирование.
Создал Web Server Application. Кинул на WebModule два TTable.
В первом TTable хранятся шаблоны html(в поле типа MEMO), эту таблицу использую только для чтения. Отправил в браюзер вот такую форму
<html><head>
<title>Forum</title>
</head>
<body>
<form action="Project1.dll/message" method="post" style="height: 312px">
Тема сообщения:
<input name="Text1" type="text" style="width: 249px" />
<br />
<br />
<span lang="ru">Текст сообщения:</span><br />
<textarea name="TextArea1" style="width: 373px; height: 174px"></textarea><br />
<br />
<br />
Пользователь: <input name="Text2" type="text" />
<input name="Submit1" type="submit" value="Îòïðàâèòü" />
</form>
</body>
</html>
Во второй 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:="<html><head><title>Forum</title></head>"
+"<body><h1>Inserting OK</h1></body></html>";
end;
Но на tbSubjects.Insert; выдает внктреннию ошибку сервера.
В tbSubjects вставлял записи из простого приложения - без проблем.
← →
Alexey (2008-08-30 07:52) [1]Извените поторопился:
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:="<html><head><title>Forum</title></head>"
+"<body><h1>Inserting OK</h1></body></html>";
end;
← →
DrPass © (2008-08-30 22:49) [2]
> TTable.
Извращенец:) Впрочем, если хочешь продолжать, добавь TSession, и еще про синхронизацию не забудь
← →
Alexey (2008-09-02 06:10) [3]Чего ж так обзываться. Про TSession почитал, ща буду пробывать.
Попутный вопрос: Эту DLL какнибудь можно отлаживать?
← →
Loginov Dmitry © (2008-09-02 07:49) [4]> Впрочем, если хочешь продолжать, добавь TSession, и еще
> про синхронизацию не забудь
Мало добавить TSession, нужно еще убедиться в уникальности его имени, и связать с TTable соответствующим образом. Если все сделано правильно, то дополнительная синхронизация обобо не требуется.
База-то надеюсь не на Парадоксе?)
> Эту DLL какнибудь можно отлаживать?
Tools -> Web App Debugger?
← →
Сергей М. © (2008-09-02 08:56) [5]
> Эту DLL какнибудь можно отлаживать?
Можно.
Как и любую другую dll.
← →
DrPass © (2008-09-02 10:09) [6]
> Tools -> Web App Debugger?
Или включить в "девелоперском" IE загрузку ISAPI в АП сервера, затем Run -> Attach to process
← →
Alexey (2008-09-02 10:20) [7]Спасибо.
С отладкой более менее разобрался, ща будет намного лекче.
> База-то надеюсь не на Парадоксе?)
Я создавал локальные БД на Парадоксе, работало без проблем.
Насколько я понял: сейчас проблема в потоках, когда их несколько штук работает с БД. (Если правилно понял работу ISAPI).
Чем плох Парадокс и что лучше?
Спасибо всем за делные советы.
← →
Loginov Dmitry © (2008-09-02 11:25) [8]
> Чем плох Парадокс и что лучше?
плох он или хорош решайте сами после прочтения http://matrix.kladovka.net.ru/index.php?page=bdeproblems
много подводных камней в нем, но если всё учесть, то работать будет сносно. Лучше использовать более современные и надежные технологии.
← →
Anatoly Podgoretsky © (2008-09-02 11:41) [9]> Alexey (02.09.2008 10:20:07) [7]
Каждый поток, каждое приложение в БДЕ должно работать в своей собственной уникальной сессии и иметь свою собственную рабочую и временную папку.
← →
Alexey (2008-09-02 13:02) [10]Loginov Dmitry спасибо за ссылку - буду изучать.
Anatoly Podgoretsky ну в общем почти понял, литературу поищу.
Иду учится... Спасибо!
← →
Anatoly Podgoretsky © (2008-09-02 14:02) [11]Литература идет с Дельфи, стандартная справка, изучение начать с TSession
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c