안녕하세요... 델초보입니다.
VC++로 작성된 CCTV 카메라 루틴 DLL을 델파이에서 Call하는데
'Invalid Pointer Operation'에러가 발생합니다.
DLL 헤더파일과 델파이 소스는 다음과 같습니다.
WORD *sBuffer;
BYTE *jBuffer;
extern int FAR PASCAL Encode((WORD *)sBuffer,int Size,int Synk);
extern long FAR PASCAL ConvJPG((BYTE *)sBuffer,(BYTE *)jBuffer,int c,int r, long len);
<델파이 소스>
var
sBuffer: PWord;
jBuffer: PByte;
implementation
{$R *.DFM}
procedure TVideoForm.FormCreate(Sender: TObject);
begin
sBuffer := GlobalAllocPtr(GHND, 100000);
jBuffer := GlobalAllocPtr(GHND, 100000);
end;
function TVideoForm.GetImageStill: Integer;
begin
Result := Encode(sBuffer, sizeof(sBuffer), 0); // DLL
end; ==> 디버깅시 커서가 여기에 위치하고 다음으로 넘어가지 않음
function TVideoForm.ConvStillToJPG(Size: Integer): Longint;
begin
Result := ConvJPG(PByte(sBuffer),jBuffer,1,1,Size); // DLL
end;
procedure TVideoForm.ReadImageFromMemory;
var
size: Longint;
jplen: Integer;
begin
jplen := GetImageStill;
if jplen=0 then exit;
size := ConvStillToJPG(jplen);
if size <= 0 then exit;
:
jBuffer ==> Display
:
end;
로 되어 있습니다.
그런데, GetImageStill루틴에서 'Invalid Pointer Operation'에러가 발생합니다.
무엇이 잘못되었는지 초보인 저로서는 도저히 모르겠습니다.
고수님들의 조언 부탁드립니다...