Q&A

  • 델파이 dll에서 다른 dll에 있는 함수 호출시 에러


안녕하세요.
제가 델파이를 너무 몰라서 이렇게 질문 합니다. 제발 도와 주세요.

지금 프로그램의 환경은 Rge_Login_11.exe 에서 RGEFC031000P.dll 화면을 호출하는 구조입니다.
그래서 RGEFC031000P.dll 화면에서 WatLevy.dll에 있는 Wat_LevyCall 함수를 호출하는데 컴파일도 되고 RGEFC031000P.dll 화면도 뜹니다. 그래서 버튼을 클릭하면 Wat_LevyCall 함수 호출부분에서 'Access violation at address 02864397 in module 'WatLevy.dll'. Read of address 00000049'라는 에러 메세지가 뜹니다.
무엇이 잘못 됐나요?
참고로 새프로젝트를 만들어 버튼 클릭시 똑같이 처리하면 에러 나지 않습니다.

implementation

function Wat_LevyCall(
       pszSvrIp,
       pszSvrPort,
       pszInUserId,
       pszInRequestIp,
       pszDepCode,
       pszRelLvyNo,
       pszRelTaxCode,
       pszAccYear,
       pszAccGbn,
       pszLvyYmd,
       pszFstAmt,
       pszLstAddAmt,
       pszFstNapYmd,
       pszAftNapYmd,
       pszAftNapAmt,
       pszLvyGbn,
       pszPerGbn,
       pszPerNm,
       pszPerPid,
       pszPerPidSno,
       pszPerPost,
       pszPerRegn,
       pszPerHeng,
       pszPerSan,
       pszPerBunji,
       pszPerHo,
       pszPerSpecAddr,
       pszPerSpecDong,
       pszPerSpecHo,
       pszPerTong,
       pszPerBan,
       pszObjNm,
       pszObjPost,
       pszObjRegn,
       pszObjHeng,
       pszObjSan,
       pszObjBunji,
       pszObjHo,
       pszObjSpecAddr,
       pszObjSpecDong,
       pszObjSpecHo,
       pszObjTong,
       pszObjBan,
       pszBigo,
       pszMgeItem1,
       pszMgeItem2,
       pszMgeItem3,
       pszMgeItem4,
       pszMgeItem5,
       pszMgeItem6,
       pszRelGbn : Pchar;var MsgErrCode : integer): Integer; stdcall; external 'WatLevy.dll'
.
.
.
procedure Twf_RGEFC031000W.bbn_ExcelClick(Sender: TObject);
var
result : integer;

pszSvrIp : PChar;
pszSvrPort  : Pchar;
user_id : PChar;
user_ip : PChar;
pszDepCode  : Pchar;
pszRelLvyNo  : Pchar;
pszRelTaxCode  : Pchar;
pszAccYear  : Pchar;
pszAccGbn  : Pchar;
pszLvyYmd  : Pchar;
pszFstAmt  : Pchar;
pszLstAddAmt  : Pchar;
pszFstNapYmd  : Pchar;
pszAftNapYmd  : Pchar;
pszAftNapAmt  : Pchar;
pszLvyGbn  : Pchar;
pszPerGbn  : Pchar;
pszPerNm  : Pchar;
pszPerPid  : Pchar;
pszPerPidSno  : Pchar;
pszPerPost  : Pchar;
pszPerRegn  : Pchar;
pszPerHeng  : Pchar;
pszPerSan  : Pchar;
pszPerBunji  : Pchar;
pszPerHo  : Pchar;
pszPerSpecAddr  : Pchar;
pszPerSpecDong  : Pchar;
pszPerSpecHo  : Pchar;
pszPerTong  : Pchar;
pszPerBan  : Pchar;
pszObjNm  : Pchar;
pszObjPost  : Pchar;
pszObjRegn  : Pchar;
pszObjHeng  : Pchar;
pszObjSan  : Pchar;
pszObjBunji  : Pchar;
pszObjHo  : Pchar;
pszObjSpecAddr  : Pchar;
pszObjSpecDong  : Pchar;
pszObjSpecHo  : Pchar;
pszObjTong  : Pchar;
pszObjBan  : Pchar;
pszBigo  : Pchar;
pszMgeItem1  : Pchar;
pszMgeItem2  : Pchar;
pszMgeItem3  : Pchar;
pszMgeItem4  : Pchar;
pszMgeItem5  : Pchar;
pszMgeItem6  : Pchar;
pszRelGbn  : Pchar;
MsgErrCode : integer;
begin
pszSvrIp := Pchar('10.46.106.13');
pszSvrPort := Pchar('17013');
user_id := Pchar('담당자');
user_ip := Pchar('192.168.0.1');
pszDepCode := Pchar('40501000000');
pszRelLvyNo := Pchar('990000000');
pszRelTaxCode := Pchar('232013');
pszAccYear := Pchar('01');
pszAccGbn := Pchar('01');
pszLvyYmd := Pchar('2006');
pszFstAmt := Pchar('41');
pszLstAddAmt := Pchar('20060613');
pszFstNapYmd := Pchar('10000');
pszAftNapYmd := Pchar('1000');
pszAftNapAmt := Pchar('20060630');
pszLvyGbn := Pchar('20060715');
pszPerGbn := Pchar('20000');
pszPerNm := Pchar('홍길동');
pszPerPid := Pchar('1111111111111');
pszPerPidSno := Pchar('000');
pszPerPost := Pchar('440250');
pszPerRegn := Pchar('4111113800');
pszPerHeng := Pchar('4111159800');
pszPerSan := Pchar('1');
pszPerBunji := Pchar('1234');
pszPerHo := Pchar('123');
pszPerSpecAddr := Pchar('청주아파트');
pszPerSpecDong := Pchar('1216동');
pszPerSpecHo := Pchar('1502호');
pszPerTong := Pchar('1');
pszPerBan := Pchar('1');
pszObjNm := Pchar('물건명');
pszObjPost := Pchar('440250');
pszObjRegn := Pchar('4111113800');
pszObjHeng := Pchar('4111159800');
pszObjSan := Pchar('1');
pszObjBunji := Pchar('1234');
pszObjHo := Pchar('123');
pszObjSpecAddr := Pchar('청주아파트');
pszObjSpecDong := Pchar('1216동');
pszObjSpecHo := Pchar('1502호');
pszObjTong := Pchar('1');
pszObjBan := Pchar('1');
pszBigo := Pchar('비고');
pszMgeItem1 := Pchar('관리1');
pszMgeItem2 := Pchar('관리2');
pszMgeItem3 := Pchar('관리3');
pszMgeItem4 := Pchar('관리4');
pszMgeItem5 := Pchar('관리5');
pszMgeItem6 := Pchar('관리6');
pszRelGbn := Pchar('I');

result := (Wat_LevyCall(
               pszSvrIp,
               pszSvrPort,
               user_id,
               user_ip,
               pszDepCode,
               pszRelLvyNo,
               pszRelTaxCode,
               pszAccYear,
               pszAccGbn,
               pszLvyYmd,
               pszFstAmt,
               pszLstAddAmt,
               pszFstNapYmd,
               pszAftNapYmd,
               pszAftNapAmt,
               pszLvyGbn,
               pszPerGbn,
               pszPerNm,
               pszPerPid,
               pszPerPidSno,
               pszPerPost,
               pszPerRegn,
               pszPerHeng,
               pszPerSan,
               pszPerBunji,
               pszPerHo,
               pszPerSpecAddr,
               pszPerSpecDong,
               pszPerSpecHo,
               pszPerTong,
               pszPerBan,
               pszObjNm,
               pszObjPost,
               pszObjRegn,
               pszObjHeng,
               pszObjSan,
               pszObjBunji,
               pszObjHo,
               pszObjSpecAddr,
               pszObjSpecDong,
               pszObjSpecHo,
               pszObjTong,
               pszObjBan,
               pszBigo,
               pszMgeItem1,
               pszMgeItem2,
               pszMgeItem3,
               pszMgeItem4,
               pszMgeItem5,
               pszMgeItem6,
               pszRelGbn,
               MsgErrCode
               ));

       if result = -1 then
       begin
         label1.Caption := '오류(-1)::통신오류';
       end
       else if result = -2 then
       begin
         label1.Caption := '오류(-2)::통신오류(기타)';
       end
       else if result = -3 then
       begin
         label1.Caption := '오류(-3)::입력오류(Not Null)';
       end
       else if result = -4 then
       begin
         label1.Caption := '오류(-4)::입력오류(길이)';
       end
       else if result = 1 then      // 통신성공
       begin
         label1.Caption := inttostr(MsgErrCode); // 상세업무코드
       end;
end;


에러메세지 캡쳐 떠서 올립니다.
자료가 더 필요하시면 말씀하세요...제발 도와주시길~~~
0  COMMENTS