bool PathMgr::DoesMatchNameSub(const char *pattern, const char *fileName, bool ignoreCaseFlag) { if (*pattern == '\0') { return *fileName == '\0'; } else if (*pattern == '*') { return DoesMatchNameSub(pattern + 1, fileName, ignoreCaseFlag) || (*fileName != '\0' && DoesMatchNameSub(pattern, fileName + 1, ignoreCaseFlag)); } else if (*pattern == '?') { return *fileName != '\0' && DoesMatchNameSub(pattern + 1, fileName + 1, ignoreCaseFlag); } else if (*pattern == '[') { pattern++; if (*pattern == '!') { pattern++; for ( ; *pattern != ']' && *pattern != '\0'; pattern++) { if (CompareChar(*fileName, *pattern, ignoreCaseFlag) == 0) return false; } } else { for ( ; *pattern != ']' && *pattern != '\0'; pattern++) { if (CompareChar(*fileName, *pattern, ignoreCaseFlag) != 0) return false; } } if (*pattern == ']') pattern++; return DoesMatchNameSub(pattern, fileName + 1, ignoreCaseFlag); } else { return CompareChar(*pattern, *fileName, ignoreCaseFlag) == 0 && DoesMatchNameSub(pattern + 1, fileName + 1, ignoreCaseFlag); } }
const char *FindString(const char *str, const char *sub, bool ignoreCaseFlag) { for ( ; *str != '\0'; str++) { const char *p1 = str, *p2 = sub; for ( ; *p2 != '\0'; p1++, p2++) { if (CompareChar(*p1, *p2, ignoreCaseFlag) != 0) break; } if (*p2 == '\0') return str; } return nullptr; }
String::const_iterator FindString(String::const_iterator str, String::const_iterator strEnd, const String &sub, bool ignoreCaseFlag) { for ( ; str != strEnd; str++) { String::const_iterator p1 = str; String::const_iterator p2 = sub.begin(); for ( ; p2 != sub.end(); p1++, p2++) { if (CompareChar(*p1, *p2, ignoreCaseFlag) != 0) break; } if (p2 == sub.end()) return str; } return strEnd; }
void CCallHistoryDlg::OnButtonAbstract() { int nCurSel; if(m_pHistData->IsEmpty(m_DispFilter)) return; if((nCurSel = m_lstHist.GetNextItem(-1, LVNI_SELECTED)) == -1) { AfxMessageBox(IDS_NOITEMSEL, MB_OK | MB_ICONINFORMATION); return; } if(m_pPbData->CheckFull()) { AfxMessageBox(IDS_PB_FULL); return; } CString strUnknown; strUnknown.LoadString(IDS_UNKNOWN); WORD nIndex = m_DspIndexArr[m_DispFilter][nCurSel]; ASSERT(nIndex < m_pHistData->GetCount(m_DispFilter)); stHistItem HistItem; memset(&HistItem, 0x00, sizeof(stHistItem)); HistItem = m_pHistData->GetItem(m_DispFilter, nIndex); if(wcslen((TCHAR*)HistItem.szNumber) > 0 && wcscmp((TCHAR*)HistItem.szNumber, strUnknown)) { if(CompareChar((TCHAR*)HistItem.szNumber)) { CSelPosition dlg(this, (TCHAR *)HistItem.szNumber); dlg.DoModal(); DispCallHistory(); } } else AfxMessageBox(IDS_SELCONNECT_NULLNUM); }
int FindWithWildcards(const wchar_t* source, const wchar_t* findstring, size_t len) { wchar_t cmp[3] = {0}; int findlen = ceil(((double)wcslen(findstring) / 2)); if(len < findlen) return -1; for(int i = 0; i < len; i++) { for(int j = 0; j < findlen; j++) { wcsncpy(cmp, findstring + j * 2, 2); if(!CompareChar(source[i+j], cmp)) break; else if(j == (findlen - 1)) return i; } } return -1; }
//检查联系人内容是否符合规范 bool CGetOutlookPBDlg::CheckContactRule(StPbRecord *pPBRecord) { bool bCheckRes = false; //检查姓名是否符合规范 CString strName = _T(""); strName.Format(pPBRecord->strName); if(0 != strName.GetLength()) { bCheckRes = CheckPbNameUnicode(strName); if(!bCheckRes) { return false; } if(VCARD_NAME_MAX < strName.GetLength()) { strName = strName.Left(VCARD_NAME_MAX); } memcpy(pPBRecord->strName,strName,strName.GetLength()); //AfxMessageBox(mphb.strName); } //检查Mobile是否符合规范 bCheckRes = false; CString strMobile = _T(""); strMobile.Format(pPBRecord->strMobile); USES_CONVERSION; if (0 != strMobile.GetLength()) { if(!CheckPbNumber(strMobile)) { return false; } if(VCARD_NUM_MAX < strMobile.GetLength()) { strMobile = strMobile.Left(VCARD_NUM_MAX); } if (!CompareChar(strMobile)) { return false; } memcpy(pPBRecord->strMobile,strMobile,strMobile.GetLength()); } //检查Home是否符合规范 bCheckRes = false; CString strHome = _T(""); strHome.Format(pPBRecord->strHome); if (0 != strHome.GetLength()) { if(!CheckPbNumber(strHome)) { return false; } if(VCARD_NUM_MAX < strHome.GetLength()) { strHome = strHome.Left(VCARD_NUM_MAX); } if (!CompareChar(strHome)) { return false; } memcpy(pPBRecord->strHome,strHome,strHome.GetLength()); } //检查Company是否符合规范 bCheckRes = false; CString strCompany = _T(""); strCompany.Format(pPBRecord->strCompany); if (0 != strCompany.GetLength()) { if(!CheckPbNumber(strCompany)) { return false; } if(VCARD_NUM_MAX < strCompany.GetLength()) { strCompany = strCompany.Left(VCARD_NUM_MAX); } if (!CompareChar(strCompany)) { return false; } memcpy(pPBRecord->strCompany,strCompany,strCompany.GetLength()); } //检查Email是否符合规范 bCheckRes = false; CString strEmail = _T(""); strEmail.Format(pPBRecord->strCompany); if (0 != strEmail.GetLength()) { if(VCARD_EMAIL_MAX < strEmail.GetLength()) { strEmail = strEmail.Left(VCARD_EMAIL_MAX); } memcpy(pPBRecord->strEmail,strEmail,strEmail.GetLength()); } return true; }