我想在一个字符串里,比如在Str:='请您对您的言行负责,遵守中华人民共和国有关法律!'中提取出长度为16毫米的字符串,Str的长度会随着字体的大小改变而改变,怎样才能实现提取这对应长度的字符串出来呢?

解决方案 »

  1.   

    取16毫米?厉害:)用copy(字符串,起始标志,取的字符长度)
      

  2.   

    字符一个一个给label.caption  label 的autosize 设为 true
    判断label的 width  之后处理就可以了
      

  3.   

    copy ()最后一个参数不是长度!!!1
      

  4.   

    其实在电脑里的每个字和每个字母的长度是一样的,你看看每个字和字母的场地是多少,这样把长度的问题转化为字和字母的个数问题就好弄了!
    有问题请发信息到我的E-mail:[email protected]
      

  5.   

    16毫米不好办,分辨率不一样能显示的字数也不一样,如果是像素倒是可以做,Label1.Canvas.TextWidth('a')可以求出一个字母占多少个像素,然后你可以计算在一行里能显示几个字母
      

  6.   

    Str:='请您对您的言行负责,遵守中华人民共和国有关法律!'
    Str2:=Str;
    Str2.font.size:=8;
    用(Str/Str2)*Str2.width可以算出Str在相对于Str2的宽度所占的字的个数;
    然后Copy(...)
      

  7.   

    我把一个中英文的字符串分开两个。但出现这样的情况“hello我是seasands"刚好在个“是”字分开,所以“是”字的一半在第一个字符串,另一半就在第二个字符串。怎么办??
      

  8.   

    你用 Ord(字符)如果它小于128,说明它是英文,否则这是中文的一半
      

  9.   

    我找到了解决问题的方法
             var 
               strcount:integer;
               str,str1,str2:string;
             begin  
                canvas.Font:=dbedit1.Font;
                strcount:=Trunc(163/canvas.TextWidth('H'));
                str:=dbedit1.Text;
                if CharLength(str,strcount)=2 then
                   begin
                     strcount:=strcount+1;
                   end;
                str1:=copy(str,1,strcount);
                delete(str,1,strcount);
                str2:=str;
      

  10.   

    使用widestring就不用这么麻烦了