Q&A

  • NULL이 포함된 스트링 데이터를 파라미터로 넘기는 방법
VC로 만들어진 DLL의 함수로 NULL(0x00)이 포함된 스트링 데이터를 파라미터로 넘기는 방법이 뭔지 모르겠습니다..

우선은

int func1(char *input_data, char *output_data);

위와 같이 VC DLL 함수가 있습니다..

델파이에서 위의 함수를 호출해서 NULL(0x00) 이 포함된 스트링을 넘기려고 합니다..

델파이에서 VC 함수를 아래처럼 선언 했는데, NULL 데이터가 짤려서 넘어갑니다..

function func1(input_data: PChar; output_data: PChar):Longint; stdcall; external '.\MYDLL.dll'

procedure TForm1.Button1Click(Sender: TObject);
var
     myparameter1: array [0..99] of char;
     myparameter2: array [0..99] of char;
     rc: Integer;
begin
     myparameter1 := '';
     myparameter2 := '';

     myparameter1 에 값을 넣고.....
     ...
     rc = func1(myparameter1, myparameter2);
     ...
end;

VC 함수 선언부와 파라미터 넘기는 방법에 대해 알려주세요..
1  COMMENTS
  • Profile
    장성호 2008.04.25 20:48
    VC의 DLL코드를 봐야 할것 같은데요

    func1 함수를 보면 char*를 넘깁니다.
    char*를 넘긴다는 것은 Value(값)이 아닌 reference(참조)를 넘기는것입니다.
    다시말해 string을 넘기는것이 아니라 주소값만 넘기는것이죠

    받는쪽에서 char* 즉 주소값을 받아서
    string으로 처리하는 과정에서  NULL문자에서 짤리는것입니다.

    즉 delphi코드에는 별 문제 없는것 같습니다.