// 拆分字符
TStringList *Split(WideString Spliter, WideString String, int SplitNumber = 0)
{
int const MaxPos = 0x7fffffff, StartPos = 1;
int FindPos, CharLen, Length, MySplitNumber=0;
TStringList *Strs = new TStringList;
BOOL LostTail;
//if (SplitNumber == 0) LostTail = TRUE; 不严格,LostTail 在
// SplitNumber != 0 时可能是任何值。故修改如下:
LostTail = (SplitNumber == 0);
//^^^^^^^^^^^^^^^^^^^^^^^^^^\\
if (SplitNumber <= 0) SplitNumber = MaxPos;
else MySplitNumber = SplitNumber;
CharLen = Spliter.Length(); Length = String.Length();
while(1)
{
FindPos = String.Pos(Spliter);
if (CharLen <= 0){
if (FindPos > Length) break;
else FindPos++;
}
if ((FindPos == 0) || (SplitNumber <= 1)){
Strs->Add(String.SubString(StartPos,MaxPos));
break;
}
--SplitNumber;
Strs->Add(String.SubString(StartPos,FindPos - StartPos));
String = String.SubString(FindPos+CharLen,MaxPos);
}
int i;
for (i=Strs->Count; i<MySplitNumber; i++){
Strs->Add("");
}
if (LostTail){
for (i = Strs->Count - 1; i>=0; i--)
if (Strs->Strings[i] == "") Strs->Delete(i);
else break;
}
return Strs;
}