비주얼 v++ 선언../////
DLLIMPORT void GetCaptureResult(BYTE* CaptureStatus);
BYTE m_CurrentCaptureField;
BYTE m_CurrentCaptureResult;
int m_ReturnCameraNumber;
//함수
void COnAirGrabberView::GetCurrentCaptureResult()
{
BYTE ReturnValue[3];
GetCaptureResult(ReturnValue);
m_CurrentCaptureField = ReturnValue[0];
m_CurrentCaptureResult = ReturnValue[1];
m_ReturnCameraNumber = (int)ReturnValue[2];
}
값을 이렇게 받아오는 함수가 있습니다..이것을 델파이로 구현을 하려고
합니다...
delphi/////
procedure GetCaptureResult(CaptureStatus : PByte); cdecl;
m_CurrentCaptureField : Byte;
m_currentCaptureResult : Byte;
m_ReturnCameraNumber : Integer;
procedure Tf_Camera.GetCurrentCaptureResult;
var
ReturnValue : array[0..2] of byte;
begin
GetCaptureResult(ReturnValue); //이곳에서 error 남니다..
// [Error] Camera.pas(86): Incompatible types: 'Array' and 'PByte'
end;
type이 달라서 그러는것 같은데 .. 어케 해줘야 할쥐..
조언좀 부탁합니다...
아래처럼 PByteArray를 사용해보세요
포인터형에서 변수명과 @, ^를 적적히 사용해보세요
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ReturnValue : array[0..2] of byte;
begin
GetCaptureResult(@ReturnValue);
Memo1.Lines.Add(intTostr(ReturnValue[0]));
Memo1.Lines.Add(intTostr(ReturnValue[1]));
Memo1.Lines.Add(intTostr(ReturnValue[2]));
end;
procedure TForm1.GetCaptureResult(CaptureStatus : PByteArray);
begin
CaptureStatus[0] := 1;
CaptureStatus[1] := 2;
CaptureStatus[2] := 3;
end;
---------------------------------------------------------------
PByte만 사용할경우
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ReturnValue : PByte;
begin
GetCaptureResult(ReturnValue);
Memo1.Lines.Add(intTostr(ReturnValue^));
end;
procedure TForm1.GetCaptureResult(CaptureStatus : PByte);
begin
CaptureStatus^ := 123;
end;