Главная страница
    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.077 c
13-1121805388
NewWonder
2005-07-20 00:36
2008.10.12
C#: Borland or MS?


2-1220452724
FIL-23
2008-09-03 18:38
2008.10.12
Двойное нажатие мышкой...


1-1200387243
Sour Smile
2008-01-15 11:54
2008.10.12
Перезапустить програмно COM+ сервер


2-1220859352
quake
2008-09-08 11:35
2008.10.12
Работа с путями


1-1199544751
Wolf
2008-01-05 17:52
2008.10.12
Перевод функций на asm для ускорения работы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский