C++ 转换为C++;FOR循环到Delphi

C++ 转换为C++;FOR循环到Delphi,c++,delphi,C++,Delphi,可能重复: 我试图把C++的循环转换成Delphi,但我不知道如何做……/P> 这是C++函数: bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask) { for(;*szMask;++szMask,++pData,++bMask) if(*szMask=='x' && *pData!=*bMask) return 0; return (*szMask)

可能重复:

我试图把C++的循环转换成Delphi,但我不知道如何做……/P>

这是C++函数:

bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
    for(;*szMask;++szMask,++pData,++bMask)
        if(*szMask=='x' && *pData!=*bMask)   return 0;
    return (*szMask) == NULL;
}
我刚刚得到转换函数声明:

function bCOmpare( pData: PBYTE; bMask: PBYTE; szMask: PCHAR):boolean;
begin
//...
end;
转换过程如何

谢谢

函数b比较(pData:PByte;bMask:PByte;szMask:PAnsiChar):布尔;
开始
而szMask^#0做什么
开始
如果((szMask^='x')和(pData^bMask^))那么
开始
结果:=假;
出口
结束;
股份有限公司(深圳);
公司(pData);
公司(bMask);
结束;
结果:=真//C代码中的测试是毫无意义的
结束;

只要避免使用
PAnsiChar
。使用它的泛型
PChar
@christorramírez不,这是个糟糕的建议。在Delphi 2009和更高版本上,Char的宽度为2字节。在Windows上的C++和C++中, char 总是1字节宽。我的回答中从问题中的
PChar
更改为
PAnsiChar
,这是出于非常有意的原因。
function bCOmpare(pData: PByte; bMask: PByte; szMask: PAnsiChar): Boolean;
begin
  while szMask^<>#0 do
  begin
    if ((szMask^='x') and (pData^<>bMask^)) then
    begin
      Result := False;
      exit;
    end;
    inc(szMask);
    inc(pData);
    inc(bMask);
  end;
  Result := True;//the test in the C code is pointless
end;