告诉我指针的用法,给你我的所有(200)(200分)

  • 主题发起人 主题发起人 smilecat
  • 开始时间 开始时间
S

smilecat

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi中指针的用法,我能看懂,但不会用,能否给我代码,并加上注释,多谢!!
 
一般就不要用指针了
简单的例子从帮助里找,复杂的例子我写不来
 
你要哪方面的?
 
可是指针有时很方便,而且我很想掌握他,请帮帮我!!!
 
type
PRec = ^Rec;//指向记录的指针
Rec = Record//记录的定义
Rec1 : Integer;
Rec2 : String;
Rec3 : Integer;
end;

var
CRec : PRec;//定义指针类型变量
在程序中,使用New(CRec)建立该指针。
赋值:
CRec^.Rec1 := 1;
CRec^.Rec2 := 'test';
CRec^.Rec3 := 2;
访问:
x := CRec^.Rec1;则x=1
最后用dispose(CRec)释放。
 
如果谁有现成的代码,加上注释(稍微难一点的),或者有OBject pascal 关于指针
的详细的资料的,告诉我或发Email: whb_li@china.net 多谢了!!
 
type
PButton = ^TButton;
var
pb: PButton;
begin
new(pb);
pb^ := TButton.Create (Self);
pb.Caption := 'New Button';

…………

pb.Free;
dispose (pb);
要是你用惯了C++,一定会奇怪的^-^
 
是啊
delphi中的指针怎么看怎么奇怪

pb^.Caption

Pb.Caption
怎么好象没区别啊

不清楚
还有所谓的类引用
好混乱啊
 
最好不要那样搞,那样即使你会了,过几天又忘了,
还是用到什么学什么,哪里不懂问哪里。

to wrench:
不会吧, 你不知道?
 
wrench,你的 pb 虽然说就是一个指针,但是对于对象,不需要撤销引用(即不需要加^)
/~~~~~~~
这种说法我是从书上看来的
 
我这句话说了很多遍了:

delphi 已经简化了指针,比如一个记录指针,也可以不加 ^ 就可
引用其中的域, 当用 with 时,必须加 ^, 这与 类 又不同,
类什么时候都不需要。所以,beta 的说法我也不知道什么意思,
撤销引用? 没有听说过。
 
pascal的指针比c清楚多了,怎么会混乱?
 
本来想说上一段,但这么多的 高手……我也不好意思了
说纤细一些,指针非常好用,

type
Rec = Record//记录的定义
Rec1 : Integer;
Rec2 : String[30];//字符串应该指定长度,默认是255
Rec3 : Integer;
end;
TPRec = ^Rec; //指向记录的指针 ,我这里与tanglu的顺序不一样……
//下面是TFORM类的声明
………………

………………
var
pRec : TPRec;//定义指针类型变量
在程序中,使用New(CRec)建立该指针。
赋值:
pRec^.Rec1 := 1;
pRec^.Rec2 := 'test';
pRec^.Rec3 := 2;
访问:
x := pRec^.Rec1;则x=1
最后用dispose(CRec)释放。

复杂的例子太复杂,怕你……
 

new(ps1);
ps1^.FieldCode:=fields[1].asstring;
ps1^.SBDM := Edit1.Text ;
li1.Data:=ps1;
 
我同意SuperMMX的说法,但还要加一句,在delphi ,c++builder 中尽量少用
指针和数组,因为封装的类基本上都是指针,数组的用途也不是很大。
 
瞎说, 指针的用处大着呢. 用指针可以免去很多麻烦. 数组嘛, 我只用字符串.
其它需要用数组的地方我基本都用TList代替了(hehehehe, 看到指针的用处了吧?
TList和指针配合才能实现复杂的数组).
 
首先声明:我是今天才开始主动去了解delphi的指针的用法的,原因是在
一个优化算法中须用到类似链表的结构。
其次,我下面的程序本人是从本版上拷贝下来的,所谓现炒现买,还热乎呢!(鉴于此
本人可以不要分)

其实我认为,指针的用法也不过上面所述的一些内容,实际用到的也不过如此,再加上
一些关于类、对象或控件的一些与指针有关的属性等。下面贴给你的是我认为今天
找到的比较有用的东西:

pascal 中有两种指针的声明方法, 用途不同,
(1) pMyType = ^MyType;
MyType = record
a: Integer;
next: pMyType;
end;
(2) MyType = record
a: Integer;
b: String;
end;
pMyType = MyType^;
第一种解决了递归的问题,
第二种是通常写法,
(也许两个 ^ 位置相反, 忘了, 没法测试)
 
指针的趋势是逐渐被淘汰。
 
多人接受答案了。
 
后退
顶部