Q&A

  • ActivX dll을 이요한 VB코딩을 Delphi로 변환중 이미지파일 Byte Type 변환문제
지문인식 단말기와 통신하는 프로그램을 만드는 중입니다.

단말기와 함께 제공되는 ActiveX dll을 연동하여 프로그램하는데 VB로 된 예제파일을 참조하고 잇습니다.

그런데 bmp파일로 보관중인 지문파일을 단말기로 내려주는 과정에서 이미지 변환에서 막혔습니다.

VB 예제에서는 아래와 처리되어 있습니다.

Dim FPData1() As Byte
Dim FPData2() As Byte
Dim D4700 As TermLib.Mycom  //ActiveX dll 참조

Set D4700 = New TermLib.Mycom

D4700.UserID = '12345'
D4700.FPData1 = FPData1
D4700.FPData2 = FPData2
D4700.AddNew

위 내용을 제가 Delphi로 변경한 내역은 다음과 같습니다.
function TfrmMain.funFingerBioStore(pIDNUM: String) : Integer;
var sImgFile : String;
    tmpImage : TFileStream;
    CountBytes : integer;
    AOB : TByteArray;
    tmpVar : Variant;
begin
                //TermLib는 Type Library로 등록했습니다.
    frmMain.TermLib1.UserID := pIDNUM;

    //지문DATA 찾아서 변환
    tmpVar   := '';
    sImgFile := frmMain.pubRunDir + 'data\' + pIDNUM + '.bmp';

    if FileExists(sImgFile) then begin
        tmpImage := TFileStream.Create(sImgFile, fmOpenRead);

        try
            countbytes := tmpImage.Read(AOB,tmpImage.Size);
            DynArrayToVariant(tmpVar,AOB,TypeInfo(TByteArray));
        finally
            tmpImage.Free;
        end;

        //여기서 FPData1이라는 프로퍼티가 VB에서는 Byte(Array형태)으로 사용하는데
        //델파이에서는 oleVariant로 나타나서 위와같이 변환했습니다.
        TermLib1.FPData1 := tmpVar;
        TermLib1.FPData2 := tmpVar;
        tmpImage.Free;
    end;

    TermLib1.Store(1, 'User');
end;

이렇게 코딩하고 컴파일하면 정상적으로 되는데...
실행 해 보면 단말기로 지문데이터가 전송되지 못합니다...

혹시 이 문제 해결에 도움이 될 예제 또는 방법을 알려주시면 감사하겠습니다.
0  COMMENTS