powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Проблемы с подключением dll к Oracle Forms
5 сообщений из 5, страница 1 из 1
Проблемы с подключением dll к Oracle Forms
    #32697506
saleo2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть написанная dll на Delphi.

Нужно подключить данную dll к Oracle Forms.
Для примера покажу вызов фунции prover. Которая выводит сообщение и возвращает результат n*3.

Делаю так:

код Delphi:

Код: plaintext
1.
2.
3.
4.
5.
 
function prover(N: Integer): Integer; stdcall;
   begin
      MessageBox( 0 ,'Вызвана функция','Первая dll',mb_OK);
      Result:= N* 3 ;
  end;


пакет в Oracle:

Код: plaintext
1.
2.
PACKAGE test_dll IS
 function prover (n number) return number;
END;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
PACKAGE BODY test_dll IS
    test_dll_lhandle   Ora_Ffi.Libhandletype ;
    prover_fhandle  Ora_Ffi.Funchandletype ;
 
   function ff_prover (pfhandle Ora_Ffi.Funchandletype,n number)
     return number;  
   PRAGMA interface(C, ff_prover,  11265 ); 
 
   FUNCTION prover(n number) RETURN NUMBER IS
      BEGIN 
         RETURN(ff_prover(prover_fhandle,n)); 
   END;

 Begin
     begin
        test_dll_lhandle := Ora_Ffi.Load_Library('C:\WINNT\SYSTEM\', 'raaaa.dll');
        prover_fhandle:=Ora_Ffi.Register_Function(test_dll_lhandle, 'prover', Ora_Ffi.PASCAL_STD);
       Ora_Ffi.Register_Parameter (prover_fhandle,Ora_Ffi.C_INT);
       Ora_Ffi.Register_Return (prover_fhandle, Ora_Ffi.C_INT);
      
      exception
         when ora_ffi.FFI_ERROR then
   	  Msg_alert('Библиотека не загружена', 'W', false);
   end; 
   
  END;


После этого делаю вызов на кнопке на триггере when-button-pressed (непринципиально):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
declare
   temp  number ;
   t number;
   a number;
begin
       t:=test_dll.prover( 4 );	
       Message(t);  
       Message(t); 
end;


Вопросы: (

1) Хочу вывести число, которое возвращает данная функция. То есть хочу увидеть 12. Но выводиться 0.0000000000 что-то типа такого.
2) После выхода из формы начинают валиться сообщения:
-the memory could not be "read"
-runtime error

Не подскажите как решить эти проблемки? (((

Заранее огромнейшее спасибо.
...
Рейтинг: 0 / 0
Проблемы с подключением dll к Oracle Forms
    #32697572
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве можно использовать вызовы форм (MessageBox) в серверных процедурах?
...
Рейтинг: 0 / 0
Проблемы с подключением dll к Oracle Forms
    #32697594
saleo2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim_MaximovА разве можно использовать вызовы форм (MessageBox) в серверных процедурах?


Дело точно не в этом. Убирая messagebox, ничего не меняется.
...
Рейтинг: 0 / 0
Проблемы с подключением dll к Oracle Forms
    #32697815
saleo2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так никто и не может помочь? (((((((((((
...
Рейтинг: 0 / 0
Проблемы с подключением dll к Oracle Forms
    #32697905
saleo2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема была в несовместимости типов.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Проблемы с подключением dll к Oracle Forms
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]