Q&A

  • 어디가 잘못되었는지... 도와주세요.
안녕하세요... 델초보입니다.

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'에러가 발생합니다.

무엇이 잘못되었는지 초보인 저로서는 도저히 모르겠습니다.

고수님들의 조언 부탁드립니다...



0  COMMENTS