有一段漢字和英文字的混合Widestring,我現在想將它打印出來.要求自動換行,每一行長度一樣.我的方法:
如果定議每行為20個字符,有時就有如下的現像:x代表字母,"漢"代表漢字xxxxxxxxxxxxxxxxxxxx
漢漢漢漢漢漢漢漢漢漢xxxxxxxxxx
漢漢漢xxx漢漢漢xxx漢漢漢xxx漢漢
漢漢漢漢漢漢漢漢漢漢漢漢漢漢漢漢漢漢漢漢這樣就顯得對不齊,
請問各位,有什麼方法讓這段文字換行,又像NotePad一樣對齊?

解决方案 »

  1.   

    str:=取一位str
    IF (ord(str[1])>160) then    //未汉字
       else                      //不是汉字
      

  2.   

    呵呵,最近单位也要求解决这个问题,经本人反复研究,解决方法如下:
    由于delphi中widestring类型把一个汉字看成一个字符,所以用widestring来判断字符数是不正确的,应该把你的字符串转换成string类型来判断字符串长度,但是这样一来,string类型的字符串又不能正确获取汉字,怎样解决呢?请看:var
      nRowWidth, vLen: Integer;
      aNR, TempNR: WideString;
      vStr: string;
    //每一行可以填写多少个字符(注意:此值是string类型长度,就是说一行可以放多少个英文字母)。nRowWidth := 80; 
    vLen := length(TempNR);
    aNR:='';
    while length(aNR) < vLen do
      begin
        vStr := vStr + LeftStr(TempNR, 1);//存放每行字符串
        aNR := aNR + LeftStr(TempNR, 1);//做为判断循环结束的字符串
        TempNR := RightStr(TempNR, length(TempNR) - 1);//前面每取出一个字(包括汉字或者英文字母),字符串就要减去一个字。
        if length(vStr) >= nRowWidth then
        begin
    //在这里写换行或对齐语句
        end;
    end;上面的语句你仔细研究一下,应该对你有所帮助。