Banco Oracle 10g.
Forms 6.i Patch_17 aplicado.
Procedimentos:
WHEN-BUTTON-PRESSED
DECLARE
--
lv_municipio varchar2(7) := '3305802'; --'4314407';
lv_amb varchar2(11):= 'Homologacao';
lv_texto varchar2(20):= 'Primeiro Teste Echo';
LV_CHAR VARCHAR2(2000);
--
BEGIN
--
:PESQ.VERSAO := NFSE.COMUNICADLL(lv_amb,lv_municipio,lv_texto);
--
DBG ('SAI COM RESULDADO');
EXCEPTION
--
when others then
message (sqlerrm);
pause;
raise form_trigger_failure;
END;
-PACOTE
-
PACKAGE NFSE IS
--
FUNCTION COMUNICADLL(lv_homologacao IN VARCHAR2,
lv_municipio IN VARCHAR2,
lv_texto IN VARCHAR2) RETURN VARCHAR2;
--
END;
PACKAGE BODY NFSE IS
--
FDLL Ora_Ffi.Libhandletype;
DLL_FUNCAO Ora_Ffi.Funchandletype;
--
FUNCTION CHAMAFUNCAOINOUT(fhandle Ora_Ffi.Funchandletype,
lv_homologacao IN VARCHAR2,
lv_municipio IN VARCHAR2,
lv_texto IN VARCHAR2)RETURN VARCHAR2;
PRAGMA interface(C, CHAMAFUNCAOINOUT, 11265);
--
--
--TESTA ESTA FUNÇÃO
FUNCTION COMUNICADLL(lv_homologacao IN VARCHAR2,
lv_municipio IN VARCHAR2,
lv_texto IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
--
FDLL := Ora_Ffi.Load_Library ('C:\WINDOWS\SYSTEM32\','InterfaceEasy.dll');
dbg ('OK LOAD');
DLL_FUNCAO := Ora_Ffi.Register_Function(FDLL,'Echo',ORA_Ffi.C_STD);
DBG ('OK REGISTRO');
Ora_Ffi.Register_Parameter (DLL_FUNCAO, ora_ffi.C_CHAR);
Ora_Ffi.Register_Parameter (DLL_FUNCAO, ora_ffi.C_CHAR);
Ora_Ffi.Register_Parameter (DLL_FUNCAO, ora_ffi.C_CHAR);
DBG ('OK PARAMETRO');
Ora_Ffi.Register_Return (DLL_FUNCAO,Ora_Ffi.C_CHAR);
DBG ('OK REGISTRA');
--
--
--'PROBLEMA ABAIXO E SAI DO FORMS SE OLHAR O LOG DO ERRO
--[01/17/12 14:16:04 E. South America Daylight Time]::Client Status [ConnId=0, PID=25696]
-->> ERROR: Abnormal termination, Error Code: C0000005 ACCESS_VIOLATION
-- DLL Module: C:\WINDOWS\system32\kernel32.dll
--Fault address: 77E6C427 01:0002B427
--Module: C:\WINDOWS\system32\kernel32.dll
--ESTA DLL NEM CHAMO NA MINHA APLICAÇÃO, alguém SABE ME DIZER ALGO?
--
RETURN(CHAMAFUNCAOINOUT(DLL_FUNCAO,lv_homologacao,lv_municipio,lv_texto));
dbg ('passei');
--
--
EXCEPTION
--
WHEN Ora_Ffi.Ffi_Error THEN
/* print error message */
text_io.put_line(tool_err.message);
/* discard the error */
tool_err.pop;
when others then
message (sqlerrm);
pause;
raise form_trigger_failure;
END COMUNICADLL;
END;
01/17/12 14:16:04 E. South America Daylight Time]::Client Status [ConnId=0, PID=25696]
>> ERROR: Abnormal termination, Error Code: C0000005 ACCESS_VIOLATION
======================= STACK DUMP =======================
Fault address: 77E6C427 01:0002B427
Module: C:\WINDOWS\system32\kernel32.dll
System Information:
Operating System: Windows NT Version 5.2 Build 3790 Service Pack 2
Command line: IFDBG60 -SsL09@
FORM/BLOCK/FIELD: AT5450:MOV.BT_ASSINA_XML
Last Trigger: WHEN-BUTTON-PRESSED - (In Progress)
Msg: <NULL>
Last Builtin: SHOW_ALERT - (Successfully Completed)
Registers:
EAX:00000048
EBX:00152E20
ECX:000001B5
EDX:00000049
ESI:000004E4
EDI:00000000
CS:EIP:001B:77E6C427
SS:ESP0013C548 EBP:0013C578
DS:0023 ES:0023 FS:003B GS:0000
Flags:00010246