I also mentioned this.
Is 1.22 working?
I just released 1.21 too quick.
tcmatch in pb5
Moderators: Hacker, petermad, Stefan2, white
2Samuel
Please tried this:
// ------------------------------------------------------------------------------------------------
// compare the english PinYin "Eng" with the chinese char "Chn" (thanks to Christian Ghisler and Shanny)
int PinYinMatch(WCHAR Eng,WCHAR Chn)
{
if(!use_pinyin) return 0;
if(Eng==Chn) return 1; // add by Che Ming
if(Chn==0x3007) return (Eng=='l');
else if(Chn>=0x4E00 && Chn<=0x9FA5){
LoadPinYinTable();
WORD Dbl=PinYinTable[Chn-0x4E00];
WCHAR Eng1=(Dbl & 0x1F)-1+'a';
WCHAR Eng2=((Dbl>>5)&0x1F)-1+'a';
WCHAR Eng3=((Dbl>>10)&0x1F)-1+'a';
BOOL result=(Eng==Eng1 || Eng==Eng2 || Eng==Eng3);
if(!result){ // there are only 3 ideographs with more than 3 spellings:
switch (Chn){
case 0x7AD3: // qian1 fen1 zhi1 yi1 gong1 sheng1
result=(Eng=='y' || Eng=='g' || Eng=='s');
break;
case 0x7AD5: // shi2 fen1 zhi1 yi1 gong1 sheng1
result=(Eng=='y' || Eng=='g');
break;
case 0x7AE1: // yi1 gong1 sheng1 bai3 bei4
result=(Eng=='b');
break;
}
}
return result;
}else return false;
}
// ------------------------------------------------------------------------------------------------
// compare the english PinYin string "Filter" with the chinese string "Filename"
int PinYinStringMatch(const wstring Filename,const wstring Filter)
{
if(!use_pinyin) return 0;
for(int i=0;i<(int)Filename.length();i++){
int z=i;
for(int j=0;j<(int)Filter.length();j++){
if(z>=(int)Filename.length() || !PinYinMatch(Filter[j],Filename[z])) break; // PinYin not found for this position
z++;
if(j==Filter.length()-1) return 1; // PinYin found
}
}
return 0;
}
Please tried this:
// ------------------------------------------------------------------------------------------------
// compare the english PinYin "Eng" with the chinese char "Chn" (thanks to Christian Ghisler and Shanny)
int PinYinMatch(WCHAR Eng,WCHAR Chn)
{
if(!use_pinyin) return 0;
if(Eng==Chn) return 1; // add by Che Ming
if(Chn==0x3007) return (Eng=='l');
else if(Chn>=0x4E00 && Chn<=0x9FA5){
LoadPinYinTable();
WORD Dbl=PinYinTable[Chn-0x4E00];
WCHAR Eng1=(Dbl & 0x1F)-1+'a';
WCHAR Eng2=((Dbl>>5)&0x1F)-1+'a';
WCHAR Eng3=((Dbl>>10)&0x1F)-1+'a';
BOOL result=(Eng==Eng1 || Eng==Eng2 || Eng==Eng3);
if(!result){ // there are only 3 ideographs with more than 3 spellings:
switch (Chn){
case 0x7AD3: // qian1 fen1 zhi1 yi1 gong1 sheng1
result=(Eng=='y' || Eng=='g' || Eng=='s');
break;
case 0x7AD5: // shi2 fen1 zhi1 yi1 gong1 sheng1
result=(Eng=='y' || Eng=='g');
break;
case 0x7AE1: // yi1 gong1 sheng1 bai3 bei4
result=(Eng=='b');
break;
}
}
return result;
}else return false;
}
// ------------------------------------------------------------------------------------------------
// compare the english PinYin string "Filter" with the chinese string "Filename"
int PinYinStringMatch(const wstring Filename,const wstring Filter)
{
if(!use_pinyin) return 0;
for(int i=0;i<(int)Filename.length();i++){
int z=i;
for(int j=0;j<(int)Filter.length();j++){
if(z>=(int)Filename.length() || !PinYinMatch(Filter[j],Filename[z])) break; // PinYin not found for this position
z++;
if(j==Filter.length()-1) return 1; // PinYin found
}
}
return 0;
}