我使用指针来传递数组时碰到问题了:
本想按BUTTON1时,LABEL1显示‘tttt...’可是达不到。谢谢。type
  ppp = ^char;   //没有直接用PCHAR
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  array2: array [0..27] of char;
begin
  getp(@array2);
  label1.Caption := '';
  for i := 0 to 27 do
    label1.Caption := label1.Caption + array2;
end;procedure TForm1.getp(p1: ppp);
var
  i: integer;
  mybytearray: array [0..27] of char;
begin
  for i := 0 to 27 do
      mybytearray := 't';
  p1 := @mybytearray;
end;

解决方案 »

  1.   

    看看下面的代码
    ----------------------------------------------------
    type
      ppp = ^char;   //没有直接用PCHAR
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure getp(var p1:ppp);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
      array2: array [0..27] of char;
      p:ppp;
    begin
      getp(p);
      for i:=0 to 27 do
      begin
         array2[i]:=p^;
         inc(p);
      end;
      label1.Caption := '';
      for i := 0 to 27 do
        label1.Caption := label1.Caption +array2[i];
    end;procedure TForm1.getp(var p1:ppp);
    var
      i: integer;
      mybytearray: array [0..27] of char;
    begin
      for i := 0 to 27 do
          mybytearray[i] := chr(integer('a')+i);
      p1 := @mybytearray;
    end;
      

  2.   

    getp函数中:  for i := 0 to 27 do
          mybytearray := 't';
    //  p1 := @mybytearray;////这里不对,mybytearray是函数的局部变量,函数返回,变量会释放.而这里的赋值是把指针p1指向了mybytearray。改成下面这样把变量mybytearray的内容拷贝到指针p1指向的空间里,就可以了。
        copymemory(p1,@mybytearray,27);
    end;