本帖最后由 aa20000 于 2013-06-16 14:46:14 编辑

解决方案 »

  1.   

    procedure TForm1.btn1Click(Sender: TObject);
    var
      x: String;
      ret: string;
      i: Integer;
    begin
      x := '白日依山尽,黄河入海流。欲穷千里目,更上一层楼。';
      ret := EmptyStr ;
      i := 1;
      while i < Length(x) do
      begin
        ret := ret + Format('%4s',[Copy(x, i, 2)]);
        inc(i, 2);
      end;
      lbl1.Caption := ret;
    end;
      

  2.   

    吃饭时候正好没事,给你写了几行,凑合看吧
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Poem: array of array of Char;
      i, x, y, xCount, yCount: Integer;
      S: string;
    begin
      S := Memo1.Text;    //白日依山尽,黄河入海流,欲穷千里目,更上一层楼。
      x := 0;
      y := 0;
      xCount := 0;
      yCount := 0;
      for i := 1 to Length(S) do
      begin
        SetLength(Poem, xCount + 1, yCount + 1);
        Poem[x, y] := S[i];
        if S[i] = ',' then
        begin
          Inc(x);
          xCount := x;
          y := 0;
        end
        else
        begin
          Inc(y);
          if y >= yCount then
            yCount := y + 1;
        end;
      end;
      for y := 0 to yCount do
      begin
        S := EmptyStr;
        for x := xCount downto 0 do
          S := Format('%s%4s', [S, Poem[x, y]]);
        Memo2.Lines.Add(S);
        Memo2.Lines.Add('');    // 空行
      end;end;
      

  3.   

    先感wzca 回应,复制阁下代码运行程序,无法实现阁下图片状况,是代码那个环节出错??
      

  4.   

    可能是你的memo里的字串是把诗句写成5行,而它示例的是处理一行诗句(一行写完4句)。
    另外也要注意标点符号,必须都是全角。
      

  5.   

    memo的内容是4行:白日依山尽 , 
    黄河入海流 。 
    欲穷千里目 , 
    更上一层楼 。而非一行:
    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。
      

  6.   

    D7 里的Char 装不下一个汉字
    改成 String呗Poem: array of array of string;
      

  7.   

    或者用 WideChar 也成Poem: array of array of WideChar;
      

  8.   

    换了Delphi XE3 运行程序也是一样。
      

  9.   


    我在D7下试了下。要有三个地方要改的。看图吧随便说一下,我D7没有帮助了。
    但是为啥 Format('%4s', WideChar);
    这样的东西会出错捏?
      

  10.   

    你得把format换成对于的unicode版S := WideFormat('%s%4s', [S, Poem[x, y]]);