Delphi里面有指针的概念吗?

alphagx 2003-07-04 06:41:16
玩了多年的VC,现在发现做界面用Delph真是太爽了。

现在我实现用Delphi来调用我的VC写的DLL

里面遇到一些问题,希望版里的高手指点一下。

Delphi里面有指针的概念吗??
如何申请一段缓冲区呢??

我在VC里面的结构定义,在Delphi里面能不用??
(个人觉得好象得重写一遍,BCB就不需要了)

...全文
111 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphagx 2003-07-06
  • 打赏
  • 举报
回复
Delphi论坛的人真是太热心了,呵呵。

我这个帐号3年前注册的了,我不知道alphax是谁,在CSDN上我没有马假。



帮忙关于一下这个帖子。
http://expert.csdn.net/Expert/TopicView1.asp?id=1995683

以前一直用的VC,最近刚转用DELPHI,有许多问题,还请大家多多指教。
MSN:gx_cn@hotmail.com
myling 2003-07-05
  • 打赏
  • 举报
回复
Object Pascal素有“先声明,后使用”的基本规则,这使得程序结构规范、严谨。但这一规则在某些特殊情况下则不适用。例如,



type

PRec = ^TRec;

TRec = record

ID: Integer;

Next: PRec;

end;

var

A: array of TRec;



这是循环链表典型的声明范例。可以看出,在声明PRec类型时用到了TRec类型,而此时TRec类型尚未被声明。事实上,编译器对上面的声明是认可的,而且只能如此声明。调换PRec和TRec的声明顺序,编译器将不认可。在PRec和TRec的声明之间加入其他类型声明,只要不增加保留字type,编译器也是认可的。简单地说,类似于这样的循环,相互依赖的声明必需位于同一组类型声明中(即由同一个保留字type引出),而且只能是类型指针在声明之前可以被使用,并且必需在本组类型声明结束之前其进行声明。例如,下面的声明也是合法的:

type

PRec = ^TRec;

PA = array of PRec;

TIntA = array of Integer;

TRec = record

ID: Integer;

Next: PRec;

end;



当然,对于非循环的类型指针声明,也可以采用类似声明。下面的两组声明是等价的:

{ 使用时尚未声明 }

type

PRec = ^TRec;

TRec = record

ID: Integer;

Name: string[10];

end;



{ 使用前已经声明 }

type

TRec = record

ID: Integer;

Name: string[10];

end;

PRec = ^TRec;



显然,后面一组声明更符合规范。
ttch 2003-07-05
  • 打赏
  • 举报
回复
'point' and '^type'两中申请指针方式
第一种需要转换类型
但无类型限制

第二种有类型限制 无须类型转换
李_军 2003-07-05
  • 打赏
  • 举报
回复
当然有
比如说
var
a: PChar;
begin
try
getMem(a,255)
finally
FreeMem(a,255);
end;
end;
OO_is_just_P 2003-07-05
  • 打赏
  • 举报
回复
^
FrameSniper 2003-07-05
  • 打赏
  • 举报
回复
Alphagx?????????????????????????????????

你和Alphax是什么关系,兄弟关系??????
Eastunfail 2003-07-05
  • 打赏
  • 举报
回复
给你几个对照的:

C/C++/C# Unmanaged
1. typedef int* PInt
2. int a;
3. PInt b;
4. a=5;
5. *b=5;
6. b=&a;

Pascal/Object Pascal
type
1. PInt=^Integer;
var
2. a:integer;
3. b:PInt;
begin
4. a:=5;
5. b^:=5; //^用来解引用,和*一样,不过声明类型的时候放在原始类型前面,变量解引用放在变量后面,这个和C/C++不太一样
6. b:=@a; //@用来取指针,相当于C/C++中的 & ,但是在函数声明里面,定义一个引用类型不能够用@,而是添加 var 修饰附.函数指针也是用@来得到.
hkbarton 2003-07-04
  • 打赏
  • 举报
回复
^就可以声明指针类型
2353939 2003-07-04
  • 打赏
  • 举报
回复
mark
xiehua822 2003-07-04
  • 打赏
  • 举报
回复
pointer^:=3;
kataboy 2003-07-04
  • 打赏
  • 举报
回复
有啊。我有一份C与Passcal的资料。要的话发消息给我。
alphagx 2003-07-04
  • 打赏
  • 举报
回复
我在做一个小工具,用vc写界面觉得太麻烦了,
所以决定以后写界面用delphi了,
其实是用getmem函数。
lEFTmOON 2003-07-04
  • 打赏
  • 举报
回复
有,可以用Pointer
当然,也可以用var来实现指针的功能。
qxj 2003-07-04
  • 打赏
  • 举报
回复
当然有了,你怎么也用了?
nzh517 2003-07-04
  • 打赏
  • 举报
回复
Delphi里有指针,和C的用法差不多,很好用,不过Delphi的数据类型相当严格,注意分配内存与强制转化,

VC里的结构体在Delphi里也能用,不过得重新定义,不然你的Delphi程序不认
sixgj 2003-07-04
  • 打赏
  • 举报
回复
应该有吧。
Means_pan 2003-07-04
  • 打赏
  • 举报
回复
当然有啊!

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧