关于Delphi下的三元运算符?
两个问题:
第一个:
DWORD dwCopyLen = (strlen(argv[1])<BUF_SIZE) ? strlen(argv[1]) : BUF_SIZE;
这句在Delphi下应该怎么理解? 三元运算符? 请问delphi下是否有这种写法?
第二个:
const
szMsg = '测试';
var
pBuf: PAnsiChar;
begin
CopyMemory(pBuf, @szMsg, strlen(szMsg)); //@取szMsg的指针地址,编译出错,求解析.
end;
------解决方案--------------------
1.
D没有这个写法,意思是判断条件1,成立就返回第1个表达式,否则返回第2个
用if…then吧
2.
new(PBuf);
CopyMemory(pBuf, PAnsiChar(szMsg),sizeof(szMsg));
dispose(pbuf);
------解决方案--------------------(strlen(argv[1])<BUF_SIZE) ? strlen(argv[1]) : BUF_SIZE;
就是
if strlen(argv[1])<BUF_SIZE then
strlen(argv[1])
else
BUF_SIZE
------解决方案--------------------1、
Math和StrUtils中有IfThen函数模拟三元