下面的是一段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;
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;
C++转换为Delphi的方法:
符号转换:
'=' -> ':='
'NULL' -> 'nil'
'!' -> 'not'
语句转换:
return 0 -> result :=0;
exit;
数组、结构等变量前的&符号在Delphi中要去掉;
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);
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;
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;