源代码:
-----------------------------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$APPTYPE CONSOLE}
//下面是不安全的写法
procedure TForm1.Button1Click(Sender: TObject);
var
buf:array[0..255] of char;
size:Cardinal;
begin
size:=sizeof(buf);
if GetComputerName(buf,size) then
begin
edit1.Text:=buf;
end
else
begin
edit1.Text:='取不到计算机名';
end;
//writeln(sizeof(buf));
end;
procedure TForm1.Button2Click(Sender: TObject);
var
size:Cardinal;
p:PChar;
begin
size:=MAX_COMPUTERNAME_LENGTH+1;
getmem(p,size);
if GetComputerName(p,size) then
begin
edit1.Text:=StrPas(p);
end
else
begin
edit1.Text:='取不到计算机名';
end;
FreeMem(p);
end;
//这是我自己的写法,可能有安全隐患
procedure TForm1.Button3Click(Sender: TObject);
var
p:PChar;
begin
if edit1.Text='' then exit;
p:=pchar(edit1.Text);
if SetComputerName(p) then
ShowMessage('计算机名设置成功!')
else
ShowMessage('计算机名设置失败!');
end;
//书本上的写法,以后要照这个写法执行
procedure TForm1.Button4Click(Sender: TObject);
var
p:PChar;
begin
getmem(p,MAX_COMPUTERNAME_LENGTH+1);
StrPCopy(p,edit1.Text); //string赋值到pchar,原来有这个东东
if SetComputerName(p) then
ShowMessage('计算机名设置成功!')
else
ShowMessage('计算机名设置失败!');
FreeMem(p); //注意getmem与freeMem是一对
end;
end.
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.10504794120789 seconds