请说详细点好吗?大哥你帮我看看我的程序成吗?请问delphi支持对象指针吗?这个程序为什么不能得到正确的结果呢?快疯了// #### car.pas ####
unit car;
interface
Type
Pcar=^Tcar;//这里可以这样写吗?
TCar=class(Tobject)
constructor create(strNo:integer;t:integer;p:Pcar);
destructor destroy();
private
curStr:integer;
timeleft:integer;
next:Pcar;//含有一个指向该类对象的指针,这里可以吗?
public
procedure setLeftTime(time:integer=0);
function getLeftTime():integer;
end;
implementation{ TCar }constructor TCar.create(strNo:integer; t: integer;p:Pcar);
begin
inherited create;
curStr:=strNo;
timeleft:=0;
next:=nil;
end;destructor TCar.destroy;
begin
inherited destroy;
end;procedure TCar.setLeftTime(time: integer);
begin
timeLeft:=time;
end;;
function TCar.getLeftTime(): integer;
begin
getLeftTime:=timeleft;
end;
//################################ Unit car identify ended ####################################
//############################### program cs #################################
program cs;{$APPTYPE CONSOLE}uses
SysUtils,
car in 'car.pas';
var
ch:char;
head,tail,Pmycar:Pcar;
begin
head:=nil;
tail:=nil;
new(Pmycar);
pmycar^.setLeftTime(10); //这句有问题吗?
head:=Pmycar; //这句呢?
tail:=pmycar;
writeln(head^.getLeftTime());
read(ch);//让控制台程序停住,不立即关闭。
end.//我期望的结果是输出10,我的本意是想建立一个Tcar类对象的链表,没有写真正的链表建立,因为头指针都不对。
//还有一个问题,是不是我没有调用Tcar.create除了问题呢?
//如果这样写到是可以得到期望值
// var mycar:Tcar;
// begin
// mycar:=Tcar.create(1,0,nil);
// pmycar:=@mycar;
// pmycar^.setLeftTime(10);
// writeln(pmycar^.getLeftTime());
// end.
//但是我的链表可能长度为100呢,不能都指向@mycar地址阿,应该还是用new(pmycar)吧,为什么达不到记录指针那种效果?
//怎样动态创建对象的实例(instance),而不是创建多个对象,有这样的例子吗,拜托告诉我网址或者解决办法,谢谢。
unit car;
interface
Type
Pcar=^Tcar;//这里可以这样写吗?
TCar=class(Tobject)
constructor create(strNo:integer;t:integer;p:Pcar);
destructor destroy();
private
curStr:integer;
timeleft:integer;
next:Pcar;//含有一个指向该类对象的指针,这里可以吗?
public
procedure setLeftTime(time:integer=0);
function getLeftTime():integer;
end;
implementation{ TCar }constructor TCar.create(strNo:integer; t: integer;p:Pcar);
begin
inherited create;
curStr:=strNo;
timeleft:=0;
next:=nil;
end;destructor TCar.destroy;
begin
inherited destroy;
end;procedure TCar.setLeftTime(time: integer);
begin
timeLeft:=time;
end;;
function TCar.getLeftTime(): integer;
begin
getLeftTime:=timeleft;
end;
//################################ Unit car identify ended ####################################
//############################### program cs #################################
program cs;{$APPTYPE CONSOLE}uses
SysUtils,
car in 'car.pas';
var
ch:char;
head,tail,Pmycar:Pcar;
begin
head:=nil;
tail:=nil;
new(Pmycar);
pmycar^.setLeftTime(10); //这句有问题吗?
head:=Pmycar; //这句呢?
tail:=pmycar;
writeln(head^.getLeftTime());
read(ch);//让控制台程序停住,不立即关闭。
end.//我期望的结果是输出10,我的本意是想建立一个Tcar类对象的链表,没有写真正的链表建立,因为头指针都不对。
//还有一个问题,是不是我没有调用Tcar.create除了问题呢?
//如果这样写到是可以得到期望值
// var mycar:Tcar;
// begin
// mycar:=Tcar.create(1,0,nil);
// pmycar:=@mycar;
// pmycar^.setLeftTime(10);
// writeln(pmycar^.getLeftTime());
// end.
//但是我的链表可能长度为100呢,不能都指向@mycar地址阿,应该还是用new(pmycar)吧,为什么达不到记录指针那种效果?
//怎样动态创建对象的实例(instance),而不是创建多个对象,有这样的例子吗,拜托告诉我网址或者解决办法,谢谢。
解决方案 »
- 请教:哪位兄弟有无线扫描枪的使用经验
- 关于数据库的一个简单问题,大家帮帮忙!!
- 高手帮忙,头疼死了,我用Webbrowse开发的一个程序,为什么会自动退出???
- delphi程序报错:Access Violation at address 00000000. Read of address 00000000?
- 如何更改Object Inspector对象面板的默认设置
- 关于做报表的问题
- !!!放送《Object Pascal Reference》中英文对照CHM格式!!!
- 请看原代码:
- 请教一个ADO的问题,ado高手请进!!!
- 不知有没有哪位大虾知道,聊天室里给自己加管理员帽子是怎么一回事?
- 再找不到原因,我就要郁闷而死了!
- 请问关于getlogicaldrivestrings的api用法
看你的另外一个贴吧。
你就按照正常的方式申明就是了。
访问直接用object.nextobject 等等方式就可以建立一个指针链表了。
指针赋值直接用 object.nextobject:= xxx的形式。之所以会有加^那种想法可能是,接触Delphi不多的缘故。你以前应该一直在用C++吧。
你可以将Delphi做的控件放到C++builder下面使用看看C++Builder是怎样申明的你就会明白很多的。
呵呵,顺便问一下,十年前有没有delphi?
呵呵,不过我是写算法的,还是用c好,并且我要用各种工具,基本上都是以C为语言,算法的移植就很麻烦。我从delphi 1.0开始就用了。用的时间长并不一定对他每个方面有很熟。顺便说一句,delphi指针和数组不能直接通用,光这一点就繁死我了。大家也不用生气,我没说 delphi不好,我只是讨厌pascal的一些习惯。呵呵呵呵