D
ddev
Unregistered / Unconfirmed
GUEST, unregistred user!
一件想不透的事:
在C++ Builder 5.0E中,我写一个函数传递了一个字符参数,
然后在一列表中检索匹配。
void __fastcall MyClass::AFunction(const String& szParam)
{
for(int i = 0; i < FMyList->Count; i++)
{
TMyStru* ItemStru = (TMyStru*)(FMyList->Items);
if (ItemStru->AID == szParam)
{
...
}
}
}
发现第一遍检索时,串匹配;第二次检索时,明明是相同的串,却 Pass 了 IF。
改为 if (stricmp(ItemStru->AID.c_str(), szParam.c_str()) == 0) 时,
却对了,真是怪事。谁能告诉我原因(顺便说明一下,代码逻辑肯定没问题,
就是那个比较,真搞不懂)?
在C++ Builder 5.0E中,我写一个函数传递了一个字符参数,
然后在一列表中检索匹配。
void __fastcall MyClass::AFunction(const String& szParam)
{
for(int i = 0; i < FMyList->Count; i++)
{
TMyStru* ItemStru = (TMyStru*)(FMyList->Items);
if (ItemStru->AID == szParam)
{
...
}
}
}
发现第一遍检索时,串匹配;第二次检索时,明明是相同的串,却 Pass 了 IF。
改为 if (stricmp(ItemStru->AID.c_str(), szParam.c_str()) == 0) 时,
却对了,真是怪事。谁能告诉我原因(顺便说明一下,代码逻辑肯定没问题,
就是那个比较,真搞不懂)?