请说详细点好吗?大哥你帮我看看我的程序成吗?请问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),而不是创建多个对象,有这样的例子吗,拜托告诉我网址或者解决办法,谢谢。

解决方案 »

  1.   

    你说你用了4年的delphi,我看不像,或者用得不多。
    看你的另外一个贴吧。
      

  2.   

    我觉得delphi的对象指针非常好用,过了rtti的关口对象就是一个integer.灵活的很
      

  3.   

    to goldtogo Delphi支持指针对象的。应为Delphi中的对象采用的访问方式都是通过指针来实现的。所以你不用再在前面加^了。那样就成了指向指针的指针了。
    你就按照正常的方式申明就是了。
    访问直接用object.nextobject 等等方式就可以建立一个指针链表了。
    指针赋值直接用 object.nextobject:= xxx的形式。之所以会有加^那种想法可能是,接触Delphi不多的缘故。你以前应该一直在用C++吧。
    你可以将Delphi做的控件放到C++builder下面使用看看C++Builder是怎样申明的你就会明白很多的。
      

  4.   

    Delphi为你简化了指针的操作,难道Delphi为程序员着想还错了吗?
      

  5.   

    我用了十年的delphi,我觉得它好差。
    呵呵,顺便问一下,十年前有没有delphi?
      

  6.   

    谢谢有这么多人跟帖。我只不过是发泄一下。
    呵呵,不过我是写算法的,还是用c好,并且我要用各种工具,基本上都是以C为语言,算法的移植就很麻烦。我从delphi 1.0开始就用了。用的时间长并不一定对他每个方面有很熟。顺便说一句,delphi指针和数组不能直接通用,光这一点就繁死我了。大家也不用生气,我没说 delphi不好,我只是讨厌pascal的一些习惯。呵呵呵呵
      

  7.   

    ->qiubolecn(qiubole): 大侠你真逗,别人的4年被你改成10年了?->wyly: Delphi中只有PChar可以进行指针与整数的加减运算,array of Char变量好象可以与Pchar互换。其它类型的数组和指针好象是不能象C指针那样运算。Delphi在语言上的缺陷是有的,但它确实能解决很多应用问题。Delphi的属性特征和事件特征我觉得非常好,以至于我在C++中也模仿了一下事件。
      

  8.   

    哈哈哈哈。我还是赚了不少分的。我暑假写了个东西,算法是C写的,改成pascal花了我不少时间。VC确实是好东西,写出来的东西又快(运行速度)又好,以后我决定算法用vc,界面用cb,呵呵,这样绝对比用delphi好多了。呵呵,我是做项目的,系统中会用到多种操作系统,用delphi确实觉得不方便。