const
     max_computername_length=15;
定义到外面,试试

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var Buf:String[20];
        size:Cardinal;
    begin
      size := 19 ;
      GetComputerNameA(@buf[1],size);
      Caption := buf;
    end;
      

  2.   

    看下面的代码:
    var
      pCn: PAnsiChar;
      dwSize: DWORD;
      b: Boolean;
    const
      MAX_LENGTH = 15;
    begin
      dwSize:=MAX_LENGTH+1;
      Getmem(pCn, dwSize);
      if GetComputerNameA(pCn, dwSize) then Caption:=StrPas(pCn);
      Freemem(pCn);你的程序出错,因为PAnsiChar仅是一个指针类型,程序并未分配内存给它
    所有你必须为该指针手工分配内存,然后才可以调用Api将内容填充到他所指向
    的缓冲!