var
   s:array[0..30] of char;
   p:^char;
   i:integer;
begin
   s:='ddssds';
   ShowMessage(s);
   p:=@s;
   for i:= 0 to strlen(s) do
   begin
     ShowMessage(p[i]);
     inc(p);
   end;
end;
为什么这样不能运行,好奇怪,

解决方案 »

  1.   

    //ShowMessage(p[i]); //p是指针,不能当数组访问的!你这样写肯定是不能通过编译。ShowMessage(p^); //这样吧,取指针的值就行了。
      

  2.   

       var 
       s:array[0..30] of char; 
       p:^char; 
       i:integer; 
    begin 
       s:= 'ddssds '; 
       ShowMessage(s); 
       p:=@s; 
       for i:= 0 to strlen(s) do 
       begin 
         //ShowMessage(p[i]); 
         ShowMessage(strpas(p));
         inc(p); 
       end; 
    end; 
      

  3.   


    var
       s:array[0..30] of char;
       p:^char;
       i:integer;
    begin
       //s:= 'ddssds ';
       fillchar(s,30,0);
       move('ddssds ',s,7);
       ShowMessage(s);
       p:=@s;
       for i:= 0 to strlen(s) do
       begin
         //ShowMessage(p[i]);
         ShowMessage(strpas(PChar(p)));
         inc(p);
       end;
    end;
      

  4.   

    这CSDN也改得太强了吧,我发出去的贴子,竟然要几分钟之后才看到
      

  5.   

    var
       s:array[0..30] of char;
       p:^char;
       i:integer;
    begin
       s:= 'ddssds ';
       p:=@s;
       for i:= 0 to strlen(s) do
       begin
         showmessage(string(p^));
         inc(p);
       end;
    end;
      

  6.   

     可以通过了,但是DLEPHI里这指针确实有点不习惯,在C++里是那样是运行的,我在VC6调试过,我才来DELPHI里写的
    楼上的编译可以通过,我以前把^p 当P^在那里使用了,竟然不报错,因为对DELPHI不熟,想靠便宜器提示才行,
      

  7.   

    #include<iostream.h>
    int main()
    {
    char a[30]="adsdsds";
    char * p = a;
    for(int i = 0; i<=29; i++)
    {
    cout<<p[i]<<endl;
    }
    cin.get();
    return 0;
    }
    这是我写的C++代码,是不是我把它转换成DELPHI的时候转换错了?