Ratunku Dobrzy Ludzie.
Wiem ze ten problem byl juz omawiamy na grupie ale nie wszystko
zostalo wyjasnione. Przeszedlem etap deklarowania struktury i
kompilacji ale niestety nie chca dzialac z ta biblioteka.
W ponizszym przykladzie jesli nie ma podpietej drukarki wywolanie
funkcji GetStatus_CashRegister zwraca jak nalezy blad komunikacji ale
potem program wywala sie na cData:SayMembers("")
Error BASE/1004 No exported method: SAYMEMBERS
Called from SAYMEMBERS(0)
Czyli wywolanie funkcji niszczy strukture.
Jesli drukarka jest podpieta to juz samo wywolanie funkcji
GetStatus_CashRegister powoduje wywalenie programu z GPFem.
Application Internal Error - C:\LOM_HAB\a1.exe
Terminated at: 2011.10.11 17:30:48
Nienaprawialny błąd nr 6005: Exception error:
Exception Code:C0000005
Exception Address:10008F24
EAX:00000000 EBX:00B3E0DC ECX:00000000 EDX:00000060
ESI:00B0628C EDI:00000004 EBP:0022FC28
CS:EIP:001B:10008F24 SS:ESP:0023:0022FC28
DS:0023 ES:0023 FS:003B GS:0000
Flags:00010246
CS:EIP: 89 01 0F B6 15 E4 2D 02 10 83 E2 04 F7 DA 1B D2
SS:ESP: 00000001 00466553 00000000 FFFFFFFF 0022FC58 7C910385
10000000 00000000 0022FD14 7C917C02 10000000 0022FCBA 0022FCB4
0022FCB4 0022FCBA 7C917CA7
C stack:
EIP: EBP: Frame: OldEBP, RetAddr, Params...
Modules:
0x00400000 0x00142000 C:\LOM_HAB\a1.exe
0x7C900000 0x000B4000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x000FD000 C:\WINDOWS\system32\kernel32.dll
0x77C00000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77F10000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x76360000 0x0001D000 C:\WINDOWS\system32\IMM32.DLL
0x77DC0000 0x000AC000 C:\WINDOWS\system32\ADVAPI32.dll
0x77E70000 0x00093000 C:\WINDOWS\system32\RPCRT4.dll
0x77FE0000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x62E70000 0x00009000 C:\WINDOWS\system32\LPK.DLL
0x74D40000 0x0006B000 C:\WINDOWS\system32\USP10.dll
0x10000000 0x00028000 C:\LOM_HAB\ThermalServiceLibrary.dll
Called from DLLCALL(0)
********************************* moj programik testowy a1.prg
************************************
#include "
dll.ch"
#include "
wintypes.ch"
#include "
cstruct.ch"
typedef struct{;
BOOL FSK;
BOOL CMD;
BOOL PAR;
BOOL TRF;
} tCASH_REGISTER_STATUS;
PROC main()
LOCAL hDLL
LOCAL cData := (struct tCASH_REGISTER_STATUS )
hDLL := DllLoad( "ThermalServiceLibrary.dll" )
? "Port Open - "
?? DllCall( hDll, DLL_CDECL, "Port_Open", "COM2", 9600 )
?cData:SayMembers("")
? "GetStatus_CashRegister -- "
?? DllCall( hDll, DLL_CDECL, "GetStatus_CashRegister", @cData )
?cData:SayMembers("")
? "Port Close - "
?? DllCall( hDll, DLL_CDECL, "Port_Close" )
DllUnload( hDLL )
RETURN
*********************************** a1.hbp
**********************************************
a1.prg
xhb.hbc
********************************************************
Czy ktos moglby mi podpowiedziec co jest nie tak. Probowalem juz
wypelnia strukture roznymi danymi przed wywolaniem ale wciaz to samo.
Help
Błażej Powroźnik