Delphi中这段获取计算机名的代码有些不明白的
procedureTForm1.Button1Click(Sender:TObject);varcnamebuffer:pchar;loaded:boolean;clen...
procedure TForm1.Button1Click(Sender: TObject);
var
cnamebuffer:pchar;
loaded:boolean;
clen:^dword;
computername:string;
begin
getmem(cnamebuffer,255);
new(clen);
clen^:=255;
loaded:=getcomputername(cnamebuffer,clen^);
if loaded then
computername:=strpas(cnamebuffer)
else
computername:='unkown';
showmessage('计算机名为:'+computername);
edit1.Text :=computername;
freemem(cnamebuffer,255);
dispose(clen);
end;
end.
这段代码中的
getmem(cnamebuffer,255);
new(clen);
clen^:=255;
和
freemem(cnamebuffer,255);
dispose(clen);
各是什么意思啊,我是个初学者,请各位高手能够耐心详细的为我解答下,并且最好再给个例子 展开
var
cnamebuffer:pchar;
loaded:boolean;
clen:^dword;
computername:string;
begin
getmem(cnamebuffer,255);
new(clen);
clen^:=255;
loaded:=getcomputername(cnamebuffer,clen^);
if loaded then
computername:=strpas(cnamebuffer)
else
computername:='unkown';
showmessage('计算机名为:'+computername);
edit1.Text :=computername;
freemem(cnamebuffer,255);
dispose(clen);
end;
end.
这段代码中的
getmem(cnamebuffer,255);
new(clen);
clen^:=255;
和
freemem(cnamebuffer,255);
dispose(clen);
各是什么意思啊,我是个初学者,请各位高手能够耐心详细的为我解答下,并且最好再给个例子 展开
2个回答
展开全部
getmem(cnamebuffer,255);
意思是getmemory,请求系统分配一个大小为255的内存空间给cnamebuffer
new(clen);
为clen申请内存空间并初始化为0,先前的定义中 clen:^dword 把它定义为一个指向dword数据的指针类型,但是它并没有被初始化,这里就是初始化指针的意思
clen^:=255;
这里就是给clen指向的实际数据赋值为255,这个实际数据就是通过new获得的,只不过new完后它是0现在重新给个255的值
freemem(cnamebuffer,255);
freememory 释放cnamebuffer先前申请的空间
dispose(clen);
释放clen说指向的空间
这个程序绕来绕去的,涉及了delphi的指针定义和用法,以及delphi中申请内存的两种方式,每种方式又有对应的释放内存的方法
new->dispose getmem->freemem
分析程序可以知道,clen^完全没必要,直接用255代替即可
意思是getmemory,请求系统分配一个大小为255的内存空间给cnamebuffer
new(clen);
为clen申请内存空间并初始化为0,先前的定义中 clen:^dword 把它定义为一个指向dword数据的指针类型,但是它并没有被初始化,这里就是初始化指针的意思
clen^:=255;
这里就是给clen指向的实际数据赋值为255,这个实际数据就是通过new获得的,只不过new完后它是0现在重新给个255的值
freemem(cnamebuffer,255);
freememory 释放cnamebuffer先前申请的空间
dispose(clen);
释放clen说指向的空间
这个程序绕来绕去的,涉及了delphi的指针定义和用法,以及delphi中申请内存的两种方式,每种方式又有对应的释放内存的方法
new->dispose getmem->freemem
分析程序可以知道,clen^完全没必要,直接用255代替即可
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询