C++로 작성된 코딩을 델파이로 바꾸려 하는데 몇칠을 고생해도 안풀리는군요.
제가 C++을 잘 모르기때문에 아래 C로 작성된 코딩을 정확히 이해가 안갑니다.
누가 아래 C++을 델파이로 바꿀 방법좀 갈개주세요.
외부 DLL을 호출하면 m_Frame의 수만큼의 영상이 프레임 단위로 lpbMotion에
전달 받아야합니다.
int FAR FASCAL MotionEncode(LPMOTION lpMotion[],int nFrames)
-------------------------
typedef struct tagMOTION {
WORD Buffer[MOTION_BUFFER_SIZE];
int nSize;
} MOTION_BUFFER, * LPMOTION;
APMOTION APMOTION[]
int nFrames
#define MOTION_BUFFER_SIZE 50000
APMOTION lpbMotion[4086];
int m_Frame = 60;
int nMotion;
DWORD i;
CFile Make_File;
for(int i = 0; i < 4086; i++) lpbMotion[i] = NULL;
for(i = 0; i < m_Frame; i++) {
lpbMotion[i] = new MOTION_BUFFER; //이곳이 특히
궁금합니다.
new를 이용하여 메모리(50000 WORD)를 할당받아 lpbMotion[i]에 넘겨주는것
같은데 어떤 데이터가 lpbMotion[i]에 들어가죠? 포이터가 들어가나요?
50000 WORD 분의 직접 메모리가 들어가나요?
}
nMotion = MotionEncode(lpbMotion, m_Frame); //외부 DLL
//델파이로 아래처럼 하니까 1프레임(Frame_count:=1)은 되는것같긴한데.
그이상은 안되더군요.
//멀티 포인터(?)를 사용해야 할것같기도하고..
Function MotionEncode(Motion_Point:longint;Frame_Count:integer):longint;
far; stdcall; external 'msbdll';
procedure TForm1.BitBtn15Click(Sender: TObject);
var
Motion_Buffer0:array of word;
motion_point:^longint;
Frame_Count:integer;
Frame_Return:integer;
begin
frame_count:=1;
setlength(motion_buffer0,50000);
frame_return:=MotionEncode(longint(@Motion_Buffer),integer(Frame_count))
end;
이해 되도록 설명 해주시면 고맙겠습니다. 건강하길..