请问众位高手们,在用QuickRep做报表的时候,自动换行,如果出现中英文混杂的内容,怎么样避免将汉字从中间截断?(50分)

  • 主题发起人 Spring_Thunder
  • 开始时间
S

Spring_Thunder

Unregistered / Unconfirmed
GUEST, unregistred user!
我的换行是这样处理的如下所示
procedure TFrm_Main.QRDBText6Print(sender: TObject;
var Value: String);
var
s:string;
j,k,h,p:integer;
i:real;
begin
k:=0;
p:=1;
value:='';
s:=query1.fieldbyname('user_ad').asstring;
i:=length(s)/44;
j:=length(s) div 44;
if i<>j then
k:=j+1;
for h:=1 to kdo
begin
value:=value+copy(s,p,44)+' ';
p:=p+44;
end;
end;

可是当这个字段是中文跟英文或是数字混杂的话,用我的这种
处理方法,因为我是按双数位截嘛,所以当是纯中文的话没有
问题可是当出现这种问题,
如'中华人民共和国1中华人民共和国'
这样的内容,我按十六位截的话,那第二个中就被从中间截断
了,会出现乱码,这种问题该怎么解决啊?
罗里罗唆的写了这么多,不知道大家听明白了没有,还望大家
帮忙解决
 
把s换成widestring类型就可以了
 
老兄啊,好像还是不行啊
 
现在是什么情况?
Length和Copy这些对字符串操作的函数会把wideString类型中的汉字当做一个字符处理,
你注意到了没,而String类型则是两个
 
var s:widestring;
i,t:integer;
begin
s:=value;
i:=0;
t:=0;
while i<length(s)do
begin
inc(i);
inc(t);
if t=44 then
begin
insert(' ',s,i);
t:=0;
end;
end;
value:=s;
 
多人接受答案了。
 
顶部