Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.12;
Скачать: CL | DM;

Вниз

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="&#206;&#242;&#239;&#240;&#224;&#226;&#232;&#242;&#252;" />
</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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
2-1220519929
Dagir
2008-09-04 13:18
2008.10.12
Сравнение данных


2-1220546393
IvanIvan
2008-09-04 20:39
2008.10.12
TListView: переместить Items


1-1200479320
oleg_teacher
2008-01-16 13:28
2008.10.12
Проблема с мидасом


6-1191700142
Prostoy_paren
2007-10-06 23:49
2008.10.12
Вопрос по получению данных из соединения


2-1220289348
Age
2008-09-01 21:15
2008.10.12
Горячие клавиши