04.08.2006, 04:03 | #1 |
Участник
|
Здравствуйте!
Пытаюсь создавать внешние приложения для Нава, используя C/FRONT. С использованием в СИ всё, в общем-то, понятно, но использовать придётся, скорее всего, Дельфу. Так вот, при попытке подключиться к базе, библиотека выдаёт ошибку: "Error 1406 in module 19". Причём, функция DBL_Init, судя по всему, выполняется без всяких проблем. Код на Дельфе такой: Код: procedure DBL_Init; external 'CFRONT.DLL'; procedure DBL_Exit; external 'CFRONT.DLL'; procedure DBL_OpenCompany(Name: string); external 'CFRONT.DLL'; procedure DBL_CloseDatabase; external 'CFRONT.DLL'; procedure DBL_ConnectServer(dName: string; sName: string; NetType: string); external 'CFRONT.DLL'; procedure DBL_OpenDatabase(Name: string; CacheSize: integer;CommitCache: boolean); external 'CFRONT.DLL'; procedure DBL_CloseCompany; external 'CFRONT.DLL'; procedure DBL_DisconnectServer; external 'CFRONT.DLL'; procedure DBL_LoadLicenseFile(Name:string); external 'CFRONT.DLL'; function DBL_CompanyName: string; external 'CFRONT.DLL'; procedure TfrmMain.Button1Click(Sender: TObject); begin DBL_Init; DBL_ConnectServer('NDBCN', 'accounting', 'tcp'); DBL_OpenDatabase('IDLER.fdb', 2048, False); DBL_OpenCompany('BSOD interactive'); ShowMessage(DBL_CompanyName); DBL_CloseCompany; DBL_CloseDatabase; DBL_DisconnectServer; DBL_Exit; end; Может, кто-то имеет подобный опыт? Или знает коды ошибок? В любом случае, буду рад любой помощи. |
|
04.08.2006, 09:32 | #2 |
Участник
|
Открытия порождают вопросы Здесь я разобрался, но возникли другие проблемы: 1) При попытке подключиться к базе данных, уже открытой в Навижне, библиотека пишет в том смысле, что нельзя использовать базу, пока с ней работает другой пользователь.Самое смешное, что база локальная. 2) При попытке создать таблицу с помощью CFRONT, возникает ошибка приложения (невозможно записать данные по указанному адресу в памяти). В чём могут быть проблемы? И, если кому понадобится: C\FRONT - библиотека сёвая (что означает иное, чем в Паскале, обращение к функциям), и для того, что бы её использовать в Дельфе\Паскале между объявлением функции и обращением к библиотеке нужно вставлять "cdecl" или "stdcall". Например: Код: procedure DBL_OpenDatabase(Name: string; CacheSize: integer;CommitCache: boolean); cdecl; external 'CFRONT.DLL'; |
|
04.08.2006, 16:13 | #3 |
Moderator
|
1) Ничего смешного нет. Локальную базу без сервера можно открять только ОДНИМ клиентом.
2) сфронт, насколько я знаю, не умеет создавать/модифицировать объекты, а так же исполнять код. |
|
04.08.2006, 19:10 | #4 |
Участник
|
Цитата:
сфронт, насколько я знаю, не умеет создавать/модифицировать объекты, а так же исполнять код.
И зачем он, в таком случае, вообще нужен? В конце концов, к нему прилагается сёвый пример, который подключается к базе (заметьте, открытой в Наве) и создаёт в ней таблицу! |
|