下面的是一段C++的代码转成delphi  
int i;
CString strID,strtemp;//strtemp保存删除0后的ID
HANDLE hThreadR1;
VARIANT UserData;
//加载模板调用比对 BYTE* temp = new BYTE[irface->m_irface1.GetUserDataSize()*(irface->templatenum)*(irface->totalnum)];
UserData.vt = VT_BYREF | VT_UI1;
for(i=0;i<(irface->totalnum);i++)
{
CString path,str;
str.Format("%d",irface->numlist[i]);
str = irface->Get6ID(str);
path = "StaffInfo/注册信息/facedata1/"+str+".dat" ;  CFile ReadFeatureFile(path, CFile::modeRead | CFile::typeBinary ); 
ReadFeatureFile.Read( temp+irface->m_irface1.GetUserDataSize()*irface->templatenum*i,irface->m_irface1.GetUserDataSize()*irface->templatenum);
ReadFeatureFile.Close(); 
} //调用比对函数
UserData.pbVal = temp;
irface->m_irface1.Verify(UserData, (irface->templatenum)*(irface->totalnum), &(irface->ret));

// CoTaskMemFree(temp);
delete(temp);
UserData.pbVal=NULL;
CoTaskMemFree(&UserData);
return 0;

解决方案 »

  1.   


    C++转换为Delphi的方法:
    符号转换:
        '=' -> ':='
        'NULL' -> 'nil'
        '!' -> 'not'
    语句转换:
        return 0  ->  result :=0;
                      exit;
        数组、结构等变量前的&符号在Delphi中要去掉;
      

  2.   

    int i,totalnum;
    VARIANT UserData;
    //加载模板调用比对
    totalnum = 100;
    BYTE* temp = new BYTE[1024*totalnum];
    UserData.vt = VT_BYREF | VT_UI1;
    for(i=0;i<totalnum;i++)
    {
    CString path,str;
    str.Format("%d",i);
    path = str+".dat" ;  CFile File(path, CFile::modeRead | CFile::typeBinary ); 
    File.Read( temp+1024*i,1024);
    File.Close(); 
    } //调用比对函数
    UserData.pbVal = temp;
    delete(temp);
      

  3.   


    var i: Integer;
        strID, strtemp: string;//strtemp保存删除0后的ID
        hThreadR1: Cardinal;
        UserData: VARIANT;
        temp: PByte;
        path,str: string;
        FileHandle: Integer;
       //加载模板调用比对
       GetMem(temp, irface.m_irface1.GetUserDataSize() * (irface.templatenum) * (irface.totalnum));   UserData.vt := VT_BYREF or VT_UI1;
       for i:=0 to (irface.totalnum)-1 do
       begin
         str := Format('%d', irface.numlist[i]);
         str := irface.Get6ID(str);
         path := Format('StaffInfo/注册信息/facedata1/%s.dat', [str]);     FileHandle :=   FileHandle := FileOpen(FileName, fmOpenWrite);
         if FileHandle > 0 then
         begin
           FileRead(FileHandle, (PChar(temp)+irface.m_irface1.GetUserDataSize()*irface.templatenum*i)^, irface.m_irface1.GetUserDataSize()*irface.templatenum);
           FileClose(FileHandle);
         end;
       end;
      

  4.   

    UserData.vt := VT_BYREF or VT_UI1;
       for i:=0 to (irface.totalnum)-1 do
       begin
         str := Format('%d', irface.numlist[i]);
         str := irface.Get6ID(str);
         path := Format('StaffInfo/注册信息/facedata1/%s.dat', [str]);     FileHandle :=   FileHandle := FileOpen(FileName, fmOpenWrite);
         if FileHandle > 0 then
         begin
           FileRead(FileHandle, (PChar(temp)+irface.m_irface1.GetUserDataSize()*irface.templatenum*i)^, irface.m_irface1.GetUserDataSize()*irface.templatenum);
           FileClose(FileHandle);
         end;
       end;