翻转字符串,如下procedure ReverseString(var S: string);
var
   P, Q: PChar;
   C: Char;
begin
   if Length(S) = 0 then Exit;
   P := PChar(S);
   Q := P + Length(S) - 1;
   while P < Q do begin
      C := P^;
      P^ := Q^;
      Q^ := C;
      Inc(P);
      Dec(Q);
   end;
end;怎么错了?????

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      S1, S2: string;
      I, L: Integer;
    begin
      S1 := '1234567890';
      L := Length(S1);
      SetLength(S2, L);
      for i := L - 1 downto 1 do
        S2[L - i] := S1[i];
      Caption := S2;
    end;我试过了。没有问题。
      

  2.   

    to jacky_shen(jacky):先谢了!
     
    但你说的方法,我知道,
    而且翻转字符串的方法还远不止这些!我现在想问的是,
    用我上面的方法怎么就错了?
    到底错哪了?
      

  3.   

    我的调用方法:var
       Str: string;
    begin
       Str :=  'abcdefg';
       ReverseString(Str);
       ShowMessage(str);
    end;
      

  4.   

    帮你UP吧,我这台机子上没有delphi,没办法
      

  5.   

    具体是那一步出错啊? 
    检查一下C、P、Q的值
      “ C := P^;
         P^ := Q^;
         Q^ := C;”
      

  6.   

    Venda(浪子) :
      我知道了。我看看原因。
      

  7.   

    to jacky_shen(jacky) again:知道就说啊!我这边要关门了!拜托!:)
      

  8.   

    Q := P + Length(S) - 1;
    这个表达式没问题吗?
      

  9.   

    仔细检查Q := P + Length(S) - 1;
      

  10.   

    Q := P + Length(S) - 1;//没有问题