Мда, даже сам себе поражаюсь, когда-то я сочинил такое:
function ClSubject(Subj: pChar): pChar;
var
I: LongInt;
FlDel: Boolean;
function _Re_Del(pRe: pChar): Boolean;
var
pEndRe: pChar;
begin
pEndRe:=StrPos(pRe, ':');
if pEndRe<>nil then
begin
Inc(pEndRe);
pEndRe:=IgnoreSpace(pEndRe);
// while (pEndRe^<>#0) and (pEndRe^=#$20) do Inc(pEndRe);
lstrcpy(pRe, pEndRe);
Result:=True;
end
else
Result:=False;
end;
begin
if Subj<>nil then
begin
I:=0;
while not (Subj[I]=#0) do
begin
FlDel:=False;
case Subj[I] of
'R', 'r': if Subj[I+1] in ['e', 'E'] then
if Subj[I+2] in [':', '[', '^', '1'..'9'] then
FlDel:=_Re_Del(Subj+I);
{
Case Subj[I+2] of
':': FlDel:=_Re_Del(Subj+I);
'[': FlDel:=_Re_Del(Subj+I);
'^': FlDel:=_Re_Del(Subj+I);
'1'..'9': FlDel:=_Re_Del(Subj+I);
end;
}
'О': if StrLIComp(Subj+I+1, 'твет:', 5)=0 then FlDel:=_Re_Del(Subj+I);
'Н': if (Subj[I+1] in ['а', 'А']) and (Subj[I+2]=':') then FlDel:=_Re_Del(Subj+I);
'H': if (Subj[I+1] in ['A', 'a', 'а']) and (Subj[I+2]=':') then FlDel:=_Re_Del(Subj+I);
// 'H': if StrLComp(Subj+I+1, 'A:', 2)=0 then FlDel:=_Re_Del(Subj+I);
end;
if not FlDel then Inc(I);
end;
end;
Result:=Subj;
end;
И нелень было....
LI 5.09.15