Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FibPlus в клиент-серверном приложении [D7, Firebird]


Страницы:   1 2

Rusland ©   (2010-04-13 12:48:00) 

Добрый день.
Пишу клиент-вебсерверное приложение (SOAP).
В серверной части в WebModule (Unit1.pas) добавил компоненты FibPlus: TpFIBDatabase, TpFIBTransaction, TpFIBDataSet.

Настроил подключение к своей базе данных и хочу просто передать какое-нибудь значение из базы в клиентскую часть

(потом хочу передавать весь датасет, но это потом).
Написал функцию для обращения к таблице из базы (S1Impl.pas)
...
function Ts1.GetDataFromBase(s:AnsiString): AnsiString; stdcall;
begin
  Log('Начало функции'); // ведем лог в файл
try
     WM.FbDatabase.Connected:=true; // здесь выдает Access Violation
     WM.FbFirms.Active:=true;
     Result:=WM.FbFirmsFIRMA.AsString;
     WM.FbDatabase.Connected:=false;
except
     on E: Exception do Log('Произошла ошибка '+E.Message); //, E.HelpContext
end;
  Log('Конец функции');
end;

WM - это TWM = class(TWebModule)
FbDatabase: TpFIBDatabase;
FbFirms: TpFIBDataSet;

При вызове функции из клиентского приложения я получаю "Access violation at address 0055F78F in module 'webserv1.exe'. Read of address 000000AC" на строке WM.FbDatabase.Connected:=true;  
Если не обращаться к базе данных, то все нормально - никаких ошибок.
После долгих экспериментов увидел, что "Ахсекс виалейшн" вываливается при любом обращении к любому свойству/методу FbDatabase.
Похоже что на момент обращения не создан сам WebModule (WM). Как это проверить?

PS. Использую BDS2006, FibPlus, Firebird2.0.1, сервер Apache
Ссылка на исходники:
http://www.onlinedisk.ru/file/405488/(клиентская часть)
http://www.onlinedisk.ru/file/405493/(серверная часть)


Rusland   (2010-04-13 15:38:00) [21]

Медвежонок Пятачок, Anatoly Podgoretsky
Ткните носом пожалуйста что и где прописать?
У меня же прописано создание WM

program WebServ1;

{$APPTYPE CONSOLE}

uses
 WebBroker,
 CGIApp,
 Unit1 in 'Unit1.pas' {WM: TWebModule},
 S1Intf in 'S1Intf.pas',
 S1Impl in 'S1Impl.pas';

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TWM, WM); // разьве этого недостаточно?
 Application.Run;
end.


Anatoly Podgoretsky   (2010-04-13 13:28:00) [22]

Это проверять не надо, а надо делать так чтобы не проверять


Медвежонок Пятачок   (2010-04-13 13:04:00) [23]

зачем это проверять, это и так из контекста ясно что не создан.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо