***基础语法问题,把常量地址赋给指针(50分)

  • 主题发起人 轻音乐
  • 开始时间

轻音乐

Unregistered / Unconfirmed
GUEST, unregistred user!
如:
const flag=true;
var P: TPoint;
begin
P:=@flag; // 编译错
end;
若flag是变量就可以通过。
欢迎讨论
 
你看一下TPoint类型的定义:

TPoint type defines a pixel location onscreen.

Unit

Windows

type TPoint = record
X: Longint;
Y: Longint;
end;

Description

The TPoint type defines a pixel location onscreen, with the origin in the top
left corner. X specifies the horizontal coordinate of the point, Y specifies
the vertical coordinate.

所以不能用TPoint,它不是指针。应该用Pointer

const
flag = true;
var
P: pointer;
begin
P := pointer(flag);
end;
 
to:zw84611 编译不出错了,可是执行出错,请在帮我看一看

var
Form1: TForm1;
const flag=True;
implementation

{$R *.dfm}

procedure TForm1.ButtonClick(Sender: TObject);
begin
if Treeview.Selected.Data=nil
then
begin
showmessage('是nil');
Treeview.Selected.Data:=Pointer(flag);
end
else
if Boolean(Treeview.Selected.Data^) ***** 这出的错。
then showmessage('no nil');
end;
 
var
Form1: TForm1;
const flag=True;
implementation

{$R *.dfm}

procedure TForm1.ButtonClick(Sender: TObject);
begin
if Treeview.Selected.Data=nil
then
begin
showmessage('是nil');
Treeview.Selected.Data:=Pointer(flag);
end
else
if PBoolean(Treeview.Selected.Data)^ ***** 这样试试
then showmessage('no nil');
end;
 
一般情况下,常量是由编译器处理的,在编译时就已经处理了。你可以这样试试:
const flag:boolean=true;
var P: Pointer;
begin
P:=@flag; // 编译错
end;
 
顺便问一下,我先显示 Treeview.Selected.Data 的地址要怎么做?
string(@Treeview.Selected.Data)
//怎么不行
 
pchar(Treeview.Selected.Data);
 
procedure TForm1.FormCreate(Sender: TObject);


var
flag:boolean;
P: Pointer;
begin
P:=@flag ;
end;
 
const
flag='aaaaaaaa';
var
P: Pointer;
begin
P:=@flag[1] ;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
const
flag=true;
var
P: Pointer;
begin
// P:=pchar(flag);
P:=Pointer(flag);

end;

end.
 
为什么这么做不行?
var
x :pointer;
y :string;
begin
y := 'xxxx';
x := @y ;
showmessage(string(@x))
//取X的地址
end;

string(@x) 和pchar(@x)有什么区别呢?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
645
import
I
I
回复
0
查看
623
import
I
顶部