16,749
社区成员
发帖
与我相关
我的任务
分享
//filter 78 换行
function str78(Deststr : string):string;stdcall;
var
i : integer;
len : integer;
ostr : string;
s : widestring;
c : string;
Turelen : integer;
strl : tstringlist;
lencur : integer;
begin
{--算法
1.判断循环体次数
2.判断汉字
}
s := deststr;
len:= length(s);
lencur :=0;
ostr :='';
//此长度非彼长度
strl := tstringlist.Create;
strl.Clear;
for i := 1 to len do
begin
strl.Add(s[i]);
end;
for i := 0 to strl.Count-1 do
begin
c := strl.Strings[i];
len := length(c);
lencur := lencur+len;
ostr := ostr + strl.Strings[i];
if ((lencur mod 77) = 0) and (lencur <> 0) then
begin
c := strl.Strings[i+1]; //判断下一个字符是否是汉字
len := length(c);
if (len > 1) then
begin //如果是汉字,则处理,否则不处理
ostr := ostr + #13#10 ;
ostr := ostr +'\\';
lencur := 2;
//还原字符
c := strl.Strings[i];
len := length(c);
end
end;
if ((lencur mod 78) = 0) and (lencur <> 0) then //正常情况
begin
ostr := ostr + #13#10 ;
ostr := ostr +'\\';
lencur := 2;
end;
end;
result := ostr;
end;
function str78(Deststr : string):string;stdcall;
var
i : integer;
len : integer;
ostr : string;
s : widestring;
c : string;
Turelen : integer;
begin
s := deststr;
len:= length(s);
Turelen :=0;
ostr :='';
for i := 1 to len do
begin
c := s[i];
if length(c) > 1 then
begin //汉字字符
if (((Turelen mod 78) =0) or ((Turelen mod 78) = 77)) and (Turelen <> 0) then
begin
ostr:=ostr+#13#10;
ostr:=ostr+'\\';
Turelen:=2;
end;
ostr := ostr + c;
Turelen:=Turelen+2;
end
else
begin //普通字符
if ((Turelen mod 78) = 0) and (Turelen <> 0) then
begin //普通字符判断似乎没有生效
ostr:=ostr+#13#10;
ostr:=ostr+'\\';
Turelen:=2;
end;
ostr := ostr + c;
Turelen:=Turelen+1;
end;
end;
result := ostr;
end;