我的编译器是 delphi2010首先我声明了一个 ansichar 静态数组s:array[0..30] of ansichar;s:='aaaaaa';这样编译器是正常通过的。然后,我试着用动态数组解决 静态不能释放的问题。s1:array of ansichar;
setlength(s1,30);
s1:='aaaaa';这样是不能通过的有什么办法可以达到上面通过语句的效果。。要求不用:string 和cstring类型。.... 求解答。。

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      s1: array of AnsiChar;
    begin
      SetLength(s1, 100);
      s1[0] := 'a';
      s1[1] := 'a';
      Caption := PAnsiChar(s1);
    end;
      

  2.   

    追问:如果我想传递的是 'helloword'或者中文比如'今天天气很好。你还好吗'这样逐个是不是会很太繁琐了?
      

  3.   

    var
      s1: array  of AnsiChar;
    begin
      SetLength(s1, 100);
      Fillchar(s1[0], 5, ord('a'));
      Caption := pansichar(s1);
    end;
      

  4.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      ac: Array of AnsiChar;
    //  s: AnsiString;
      p: PAnsiChar;
    begin
      SetLength(ac, 10);
    //  s := 'abc';
    //  Move(Pointer(s)^, Pointer(ac)^, Length(s));
    //  Caption := ac[0] + ac[1];
      p := 'abc';
      StrCopy(PAnsiChar(ac), p);
      Caption := PAnsiChar(ac);
    end;这个没问题了,呵呵。