Q&A

  • Function에서 byte array값 주고받기
안녕하세요?

dll을 공부하는데 있어 일반 변수값 주고받기는 잘됩니다.

하지만 Function에서 array를 인자로 받고 array를 돌려주고 싶은데 선언조차 안됩니다.

아래는 소스코드 중인 내용이며, Function에 Byte array를 인자로 받고 Byte array를 넘겨주는 방식의 프로그램을 어떻게 하면 되는지 알려주시면 대단히 감사하겠습니다.


/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////// Dll 프로그래밍 부분  //////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////

//DLL 파트의 선언문
  public
    myArray: Array[1..10] of byte;
    Function read_arr(TIME:byte):Byte;
    Function read_byte_arr(Arr:array of byte):array[1..300] of Byte;
end;

//DLL 파트 - 한바이트만 받아서 그대로 넘겨주기
Function TDM_Com.read_arr(TIME:byte):Byte;
begin
  result:= time;
end;

//DLL파트 - 어래이로 받아서 어래이로 돌려주기
Function TDM_Com.read_byte_arr(Arr:array of byte):array of Byte;
begin
  myArray[1]:= 1;
  myArray[2]:= 2;
  myArray[3]:= 3;
  result:= myArray;
end;




/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////// Dll load하는 실행 프로그램 부분  ////////////////////
/////////////////////////////////////////////////////////////////////////////////////

//DLL 함수 로딩부분
  Function read_arr(TIME:byte):Byte;stdcall;external 'dll_study.dll';

//버튼을 클릭하면 에디트창에 read_arr()이 돌려준것을 디스플레이
procedure TForm1.Button1Click(Sender: TObject);
  var i:byte;
begin
  i:= read_arr(1);
  edit1.Text:= IntToStr(i);
end;


1  COMMENTS
  • Profile
    최용일 2005.11.28 17:57
    안녕하세요. 최용일입니다.

    DLL에서 read_byte_arr함수의 리턴값이 선언부하고 구현부하고 다르네요...

    그리고 DLL에서는 객체로 선언해서 메소드를 구현하셨는데... 호출할때는 일반함수로 호출하시네요...

    DLL에서 일반함수로 바꾸세요...

    ^^ 항상 즐코하세요...