procedure xxx; 
var
  p:Pointer;
  xx:pchar;
  i:integer;
begin
   xx:='xxx';
   p=@nr;
   xxxxx(p);   //传递指针到下一个函数
end;问题: 这样写有没错误?xx:pchar; 如何定义一个固定的长度(如128个字节);不够用空格补全.

解决方案 »

  1.   

    var
      p:Pointer;
      xx:array[0..127] of char;;
      i:integer;
    begin
      xx:='xxx';
      p:=@xx;  
      xxxxx(p);  //传递指针到下一个函数
    end;这样不就行了吗?
      

  2.   


    procedure xxx; 
    var 
      p:Pointer; 
      xx:PChar; 
      i:integer; 
    begin 
      xx:=PChar(Copy('xxx' + StringOfChar(' ', 128), 1, 128)); 
      p:=xx;      //xx本身就是指针,再用@取地址运算,意思就完全变了样了 
      xxxxx(p);   //传递指针到下一个函数 
    end; 
      

  3.   

    var
      xx: array[0..127] of Char;
      str: string;
    begin
      FillChar(xx, SizeOf(xx), ' ');
      str := 'test';
      CopyMemory(@xx[0], PChar(str), Length(str));
      ShowMessage(xx);
    end;
      

  4.   


    nr???procedure xxx; 
    var 
      p:Pointer; 
      xx:pchar; 
      i:integer; 
    begin 
      GetMem(xx,128);
      xx := 'xxx'; 
      p := xx; 
      xxxxx(p);  //传递指针到下一个函数 
      FreeMem(xx);
    end; 
      

  5.   

    问题还是没有解决?麻烦大家了,我贴出我的使用函数]///================================游戏说话call===================================
    procedure hhcall(hhnr:pointer);     
    Var
     ecx1:integer;
     adderss:pointer;
    begin
    adderss:=pointer($xxxxxx);
    ecx1:=integer(pointer($xxxxxx)^);
    asm
      pushad
    mov ecx,ecx1
    push    ecx
    mov     eax,hhnr;   //说话内容  此处直接写游戏某个含有文本的内存地址是可以的(如$xxxxxxxx)
    push    ecx
    mov     edx, $00000001 ; 说话频道 01是附近
    push    edx
    call    adderss
    popad
    end;
    end;
    ///=================================游戏说话call====================================
    procedure xxx; 
    var 
      p:Pointer; 
      xx:pchar; 
      i:integer; 
    begin 
      xx:='说话内容'; 
      p=@xx; 
      xxxxx(p);  //传递指针到下一个函数  //把说话内容指针传给下说话call
    end; 
    运行游戏就关闭了...............
      

  6.   

    更正 :xxxxx(p);  //传递指针到下一个函数  //把说话内容指针传给下说话call
    hhcall(p);  //传递指针到下一个函数  //把说话内容指针传给下说话call
      

  7.   

    p=@nr; 
    其中nr是什么????