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 함수 선언부와 파라미터 넘기는 방법에 대해 알려주세요..
func1 함수를 보면 char*를 넘깁니다.
char*를 넘긴다는 것은 Value(값)이 아닌 reference(참조)를 넘기는것입니다.
다시말해 string을 넘기는것이 아니라 주소값만 넘기는것이죠
받는쪽에서 char* 즉 주소값을 받아서
string으로 처리하는 과정에서 NULL문자에서 짤리는것입니다.
즉 delphi코드에는 별 문제 없는것 같습니다.