用法str78(目标字符串),返回每78行分割的字符串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:=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:=Turelen+2;
end;
ostr := ostr + c;
Turelen:=Turelen+1;
end; end;
result := ostr;
end;
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:=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:=Turelen+2;
end;
ostr := ostr + c;
Turelen:=Turelen+1;
end; end;
result := ostr;
end;
解决方案 »
- SendMessage WM_GETTEXT 的问题
- 求:移动硬盘序列号不是硬盘U盘的
- 紧急求救:dbgrideh的总结拦中如何不显示某些竖线.?
- 煽分了!!!
- 打开文件的程序中,有一个changegrid是什么?
- 求助:关于DELPHI调用VC的dll文件的问题
- 我的一个dbgrid的连到一个datasource名是dtds,然后dtds的dataset是一个adoquery,现在当我在dbgrid上选择了几个记录后,如何把所有被选择
- TIdTCPServer 的多端口接收
- 如何创建一个无焦点的Form?类似模拟键盘。另外,谁知道WebBrowser控件如何把显示的网页另存为本地文件,类似IE里面的文件另存为功能。
- 关于程序启动时增加登录窗口的问题
- 挣点小钱真难呀
- 报表(fastreport4)设计时的显示问题
用法str78(目标字符串),返回每78个字符分割的字符串 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;
ostr:=ostr+'\\';
Turelen:=2; ////这里要Turelen:=0begin //普通字符判断似乎没有生效
ostr:=ostr+#13#10;
ostr:=ostr+'\\';
Turelen:=2;////这里要Turelen:=0我已经调试通过了
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;