Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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="&#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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.041 c
15-1219647892
rx275d7_jedi
2008-08-25 11:04
2008.10.12
Написать программу


2-1220106974
Alral
2008-08-30 18:36
2008.10.12
Функция Recv и PChar


4-1197470220
Unknown user
2007-12-12 17:37
2008.10.12
Зависает API функция EnterCriticalSection


2-1220256443
Q123
2008-09-01 12:07
2008.10.12
Универсальный метод для сортировки масивов.


3-1208098876
Снежинка
2008-04-13 19:01
2008.10.12
Вычисление среднего балла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский