关于以下代码,请帮助!!!! ( 积分: 50 )

  • 主题发起人 主题发起人 斌斌
  • 开始时间 开始时间

斌斌

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是一段在报表打印中处理字符串达到一定宽度后断行的代码。最近我发现这段代码中有一个问题需要解决,即在字符串中,如果也存在换行符#13,断行处理中就有问题了,此段代码将#13也作为一个字符处理,而不是作为控制符处理。如何在下列代码中改动,请示。谢谢!!
var
// bExit : boolean;
iLen : integer;
strSource, strTemp : string;
begin
//48是栏宽。
if Length(Value) <=48 then
exit;
strSource:=Value;
Value:='';
//防止截断汉字。
while truedo
begin
iLen:=1;
while iLen<48do
begin
if ord(strSource[iLen])>128 then
inc(iLen, 2)
else
inc(iLen);
end;
dec(iLen);
strTemp:=Copy(strSource,1,iLen);
//加回车。
if Value='' then
Value:=strTemp
else
Value:=Value+#13+strTemp;
strSource:=Copy(strSource,iLen+1,Length(strSource)-iLen);
if Length(strSource)<=48 then
begin
Value:=Value+#13+strSource;
exit;
end;
end;
end;
 
以下是一段在报表打印中处理字符串达到一定宽度后断行的代码。最近我发现这段代码中有一个问题需要解决,即在字符串中,如果也存在换行符#13,断行处理中就有问题了,此段代码将#13也作为一个字符处理,而不是作为控制符处理。如何在下列代码中改动,请示。谢谢!!
var
// bExit : boolean;
iLen : integer;
strSource, strTemp : string;
begin
//48是栏宽。
if Length(Value) <=48 then
exit;
strSource:=Value;
Value:='';
//防止截断汉字。
while truedo
begin
iLen:=1;
while iLen<48do
begin
if ord(strSource[iLen])>128 then
inc(iLen, 2)
else
inc(iLen);
end;
dec(iLen);
strTemp:=Copy(strSource,1,iLen);
//加回车。
if Value='' then
Value:=strTemp
else
Value:=Value+#13+strTemp;
strSource:=Copy(strSource,iLen+1,Length(strSource)-iLen);
if Length(strSource)<=48 then
begin
Value:=Value+#13+strSource;
exit;
end;
end;
end;
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
I
回复
0
查看
512
import
I
后退
顶部