Griaule Biometrics

Startseite » Forums » FINGERPRINT SDK » Delphi Specific » Canvas does not allow drawing
1 reply [Letzter Beitrag]
alfer
Offline
Joined: 2011-03-03
Rate this post:
0
Noch keine Bewertungen vorhanden
Canvas does not allow drawing

Hello, please excuse for passing through English. 
I use Delphi 7 + Firebird + trial licence Fingerprint SDK 2009 (dll) + scanner crossMatch verifier 300 LC 2.0 
Entry into the database and saving works properly, but when reading and comparing (do based on the example) is sometimes an error and only restart helps Delphi 
"Canvas does not allow drawing" 
noticed that an error occurs during execution - ret: = GrIdentifyPrepare (template.tpt, GR_DEFAULT_CONTEXT); 
In what may be a problem. as database search goes well. error occurs even if a scan and totzhe finger a few times. 

partial code:

---------------------------

function NewIdentify(var score: Integer): Integer;

Var

  ret: Integer;

  tmp: String;

  numstr: integer;

  tptRef: TTemplate;

Begin

  if not(TemplateIsValid())then

  begin

    NewIdentify := ERR_INVALID_TEMPLATE;

    exit;

  end;

 

  ret := GrIdentifyPrepare(template.tpt, GR_DEFAULT_CONTEXT);

 

  if (ret < 0) then begin

    NewIdentify := ret;

    exit;

  end;

           

  DB.newgetTemplates();

  tptRef := DB.newgetNextTemplate();

 

  if tptRef.size > 0 then

    repeat

      ret := GrIdentify(tptRef.tpt, score, GR_DEFAULT_CONTEXT);

      if (ret = GR_MATCH) then

      begin

        NewIdentify := tptRef.id;

        exit;

      end

      else if (ret < 0) then

        begin

          NewIdentify := ret;

          exit;

        end;

      tptRef := DB.newgetNextTemplate();

    until tptRef.size <= 0;

    NewIdentify := GR_NOT_MATCH;

end;

 

------------------------------

procedure TDBClass.newgetTemplates();

begin

  formMain.qFinger.First;

end;

--------------------------------------------

function TDBClass.NewgetNextTemplate(): TTemplate;

Var

  tmp: String;

begin

  if formMain.qFinger.Eof then

  begin

    tptBlob.size := -1;

    NewgetNextTemplate := tptBlob;

  end else

  begin

    tptBlob.id := formMain.qFinger.FieldByName('IDFINGER').AsInteger;

    tmp := formMain.qFinger.FieldByName('ctemplate').AsString;

    tptBlob.size := length(tmp);

    Move(PChar(tmp)^, tptBlob.tpt^, tptBlob.size);

    formMain.qFinger.Next();

    NewgetNextTemplate := tptBlob;

  end;

end;

------------------------------------------

function TDBClass.NewaddTemplate(template: TTemplate): Integer;

var

  rs: TADODataSet;

  tptStream: TMemoryStream;

  id: Integer;

begin

  tptStream := TMemoryStream.Create();

  tptStream.write(template.tpt^, template.size);

  tptStream.SaveToFile('c:\finger.dat');

 

  formMain.qFinger.Open();

  formMain.qFinger.Append();

  (formMain.qFinger.FieldByName('ctemplate') as  TBlobField).LoadFromStream(tptStream);

  //formMain.qFinger.FieldByName('IDFINGER').AsInteger := 1;

  formMain.qFinger.FieldByName('pid').AsInteger := 1;

  formMain.qFinger.post();

 

  tptStream.Free();

end;

---------------------------------------------

type

  TTemplate = class       //

    public

      tpt:        Pchar;

      size:       Integer;

      id:         Integer;

 

      constructor Create;

      destructor Destroy; override;

  end;

  TDBClass = class

  private

    dsTemplates: TIBDataSet;

    connection: TADOConnection;

    tptBlob: TTemplate;

  public

    function openDB(): boolean;

    procedure closeDB();

    function NewaddTemplate(template: TTemplate): Integer;

    procedure newgetTemplates();

    function NewgetNextTemplate(): TTemplate;

  end;

------------------------------



m.svol
Offline
Joined: 2010-09-02
Rate this post:
0
Noch keine Bewertungen vorhanden

Dear customer,

What error are you getting?
Could you try to debug your code and tell us exactly when that's happening?

Best regards,

 

--
Matheus Smythe Svolenski
Griaule Biometrics Support Team