Q&A

  • VB dll사용시 에러납니다. 도와주세요
■모듈사용법  
- 함수   long Edit4Print(CHAR* _pSrc, CHAR* _pDes)
- 인자   [I] _pSrc : 출력문자열
  [O] _pDes : 편집문자열
- 결과값   편집문자열 길이(최대 4096 byte를 반환)

■예제  
Public Declare Function Edit4Print Lib "XCommon.DLL" _  
      (ByVal SData As String, ByVal DData as String) as integer  

Dim SData as String  
Dim DData as String * 4096
Dim nLen as integer

SData = "도시바테크코리아"

nLen = Edit4Print(SData, DData)

위의 코드는 제가 도시바에서 받은 모듈 사용법입니다.



아래는 델파이에서 코딩한 부분입니다.

implementation

//도시바 프린트기 에서 한글출력하는 함수
Function Edit4Print(SData:String; DData:String):integer;stdcall;external 'XCommon.dll'


위에서 함수를 선언하고

procedure TFrmSale.PrintReceipt;
var
DData:string;
nLen:integer;
T1:string;
begin
T1="안녕하세요";
nLen := Edit4Print(T1,DData);

showmessage( DData);
end;



이렇게 코딩을 하면 자꾸 에러가 납니다. 고수님들 도와주세요
Aceess viloation at address 1000128c in module 'XCommon.dll'. write of address 00404e25
라는 에러가 아옵니다.고수님들 도와주세요

그리고 dll 파일을 같이 올립니다.
1  COMMENTS
  • Profile
    김운필 2006.12.04 23:43
    아마 파라미터 Data Type 이 틀린것 같군요.

    Pointer 형으로 넘겨야 합니다.

    Delphi에서 String 형과 C 에서의 Char *  형이 달라서 나오는 겁니다.

    다음과 같이 하시고 DData에는 메모리가 할당 되어야 겠죠.

    Function Edit4Print(SData:PChar; DData:PChar):integer;stdcall;external 'XCommon.dll'


    var
        SData : string;
        DData : array[0..200] of char;


    sdata := 'abcdefg';

    ret := Edit4Print(PChar(SData), @DData);



    그럼....