object pascal是delphi的基石。我们在这里讨论的是核心的问题。虽然量少但质量高。

解决方案 »

  1.   

    或许前一段时间楼主说这话我还不以为然,但是这一段时间的体验让我不得不相信。以前看书老是跳过前两章(序言+object pascal),以至于漏洞越来越大,现在只好饿补了!sigh
      

  2.   

    在pascal中其实和c++一样,指针等于一切,我的看法,能够跨越指针,配合
    WIN32SDK,VC++能够做到,我也能做到
      

  3.   

    同意楼主。我觉得mastering delphi6的介绍op的不错
      

  4.   

    呵呵!还好我聪明,将Object Pascal学了四遍了,每学一次,我对Delphi更了解.
      

  5.   

    都是编译器而已,我觉得它不错,该支持的都支持了,指针,汇编嵌入,面向对象,都支持的很好,而且在很多关键技术上有自己的特色(起码我认为在面向对象方面优于MS的思想)。不过现在市面上关于Object Pascal的好书实在太少了,我自己曾经想写一本,但又怕写不好,思路不够清晰,也不知道有没有市场?
      

  6.   

    自认为CSDN改版以来,Object Pascal栏没有优秀的帖子。
    数据结构、数据算法不足以体现Object Pascal的全部。
    我建议,楼上的和其他对Object Pascal有深入了解的网友可以出些考题,主要方向是面向对象编程。特别是类、接口方面的。
      

  7.   

    完全支持
    Object Pascal的好书实在太少了
    :《
      

  8.   

    我觉得先懂得一点object pascal知识,不必要太精深,
    做了一部分程序后再去看op,这样看得更清楚!!
      

  9.   

    請問哪裏有詳細的object pascal的書籍....我現在雖在delphi寫,但用的都是pascal
      

  10.   

    非科班出生没有好好研究过Object pascal回头一定好好学习一下
      

  11.   

    贡献一片浅谈Object Pascal的指针
    http://www.sunistudio.com/nicrosoft/article/art5.htm
      

  12.   

    后悔当初大学的时候Pascal学的不好,现在只好饿补!
      

  13.   

    难道 object pascal 真的没有好帖子吗?
      

  14.   

    object pascal是delphi的核心,其重要性还用说吗?delphi并不是简单的拉拉控件,填填代码就行了,在这里我不想重复名家的话了.
      

  15.   

    我想了解Object Pascal能做操作系统吗?
      

  16.   

    改版时间太短,可能这个板块暂时的确没有什么好帖子。
    但是以前好帖子应该很多,我记得有一篇讨论class of class 的帖子非常经典的。
      

  17.   

    我要重新学习一下object pascal了,基础太差~
      

  18.   

    传说mac的操作系统是pascal写的。
      

  19.   

    有没有介绍VCL源码的文章?
    我觉得这是学习object pascal最好的方法了
      

  20.   

    object pascal我想重要的应该是object...
      

  21.   

    我同意singleword的观点,要是自己看,一下子又很难看懂,哎,郁闷呀
      

  22.   

    说到Object pascal ,还是Borland 软件中带的那一份手册,其它就没有了。为什么Borland不面对市场出一本呢, 一定会很好卖呀。
      

  23.   

    古龙小说里面百小生的兵器谱里前十位很多都不是常用的兵器,但在他们的手里威力确不小.谁会想到Microsoft 的Windows XP里面有很多Basic代码哦,正版的Delphi里确实有一份中文版的Object Pascal,没钱买,D版的Object Pascal Reference英文版也可以磨练磨练自己的英文;另外Essential Pascal
    很不错,中文也有很多我正在看《程序员2002》光盘里面的哪。
      

  24.   

    1.Borland从TP5.5开始就引入OO方法,但Borland自己认为,BP7是学习OO方法的最好的工具(这是Borland网站以前的主页上介绍的).可惜的是,国内BP7的书一本也没有出版过,不像delphi那样,书店中很多很多.
    2.石油出版社出版的三本一套的Delphi-1中,有一本就叫<Object pascal>,我认为很不错,这是从Borland公司自己出版的书翻译过来的,有权威性.
      

  25.   

    Borland提倡使用Delphi语言而不是Pascal语言进行程序编制
      

  26.   

    请不要介意我在这里说说Object Pascal作为一门语言以及它的编译器的缺点以及一些我希望它有但是它没有的特性(暂时只能列出这么多,请指正):1. 没有宏支持
    2. 不能声明Inline函数
    3. 不能声明类的静态变量(这点不太要紧,可以用静态函数和全局变量来仿真)
    4. 不能隐藏一个祖先隐藏的属性或方法。Object Pascal可以披露祖先类隐藏的方法或属性,但是要隐藏祖先类披露的属性或方法,我还不知道怎样做。把这些属性放到protected section或private section也不能做到。
    5. 有限的inherited。有时我想调用祖先类的方法,而不是父类的方法,但是我也不知道怎样做。比如:
      TAncestor = class(...)
      protected
        procedure AProc; virtual;
      end;  TParent = class(TAncestor)
      protected
        procedure AProc; override;
      end;  TChild = class(TParent)
      protected
        procedure AProc; override;
      end;procedure TChild.AProc; 
    begin
      //can not call TAncestor.AProc via the below statement
      //inherited TAncestor.AProc;  //you can call this only
      inherited;
      ...
    end;6. 没有声明裸(naked)函数的能力。
    7. 只能产生兼容Intel的目标代码,不能产生基于像Alpha这样的CPU的机器的目标代码
    8. 没有类似于C的位字段声明的能力。
    9. 从Delphi5开始,产生的目标程序总是依赖于oleaut32.dll,因为System单元需要它。
    10. 有缺陷的exception捕捉,有时候捕捉到的Exception的message属性为空。
    11. 缺少try except finallay end.结构
    12. 缺少多重继承(虽然现在很多设计人员不赞同多重继承,但毕竟这是一种语言和编译器的能力)总之,Delphi的目标是RAD,并不是面面俱到的
      

  27.   

    语言各有其特点,要是功能都一样就没有语言的差异了,只不过写的语法不同而已,C语言中的宏本来就不再提倡使用了,至于INLINE,你靠INLINE所增加的性能,倒不如使用更好的算法。对DELPHI我也不熟,觉得一样东西总有它的缺点。但在实际应用当中应该比VC有更大的用途。
      

  28.   

    ftp://ftp.swcp.com/pub/users/dodrill/pashtm.zipGordon Dodrill 写的,虽然成文于1996年,但是绝对经典,我重新看了一遍,并且把稍微难懂的地方都翻译过来了,过段时间传到主页http://houhuayuan.myetang.com
      

  29.   

    to dbExpress:
    1 真叫人痛恨
    8 D6似乎有个结构用来进行位运算,我记不清了
    11 Borland很顽固,不知道为什么,相信有成千上万的人已经反映了这个问题
    12 Borland拒绝加入多重继承,我觉得从能力上来说,既然允许接口的多重继承,那么当然有能力处理类的多重继承
      

  30.   

    我认为,Delphi-1三本一套中的<Object Pascal>就可以一看,石油出版社出版,共180元.
      

  31.   

    to dbExpress
    有些问题也许并不象我们想的那样简单,因为我们毕竟不可能向Borland的专家那样精通。
    举个例子: Inter的理处理器在底层的存储上采用了字节颠倒的存储方法。这经常给我们编程带来不便。可是你能说他的CPU设计没有摩托罗拉设计的好。有些东西支不支持和这个语言的设计思想是有关系的。现在的Delphi语言我个觉得是非常优美的,并且是足够用的。对于我们来说根本还谈不上精通他。又有几个人敢说精通它呢。只要我们花时间去持续深入的研究就会发现你原先没有发现的功能,包括你前面说的有个问题是提供了支持的,只不过你还不知道而已。当然有些问题我们都希望Borland能改进,可是我理解也许这和他们的底层设计思路可能有冲突。所以对于我来说,就现在的Delphi已经足够我掌握了。没事看看Borland的源代码,真是经典啊。
      

  32.   

    补义,所以我觉得最好的教材无它,就是Borland的源代码了。
      

  33.   

    呵呵,我也来谈谈我对Object Pascal痛恨的地方
    1、不支持带参数类,这一点让我非常的怀念C++;
    2、不支持操作符重载;
    3、没有多重继承关于dbExpress谈到的几点,我是这样认为的
    1. 宏本来就应该抛弃,C++背上的历史包袱太沉重了
    3. 同意。
    4. 祖先了和子类不放在一个单元文件private的成员对于子类就是不可见的了
    5. 可以通过指针操作办到
    11. 完全同意。
      

  34.   

    首先要谢谢你对小弟的提点,但是你也应该说说我哪里说错了,还望你再提点清楚,真心的希
    望。我也是个Pascal迷,从TP6追随到现在的。不怕大佬们笑话,我对编译器感兴趣,而且有很多
    人都和我一样,已经感觉到Borland对她的偏爱已经不及当年了,所以我一直有个自己学着写
    的念头(汗!)。当然我还差很远,不过这只是我个人的兴趣罢了。所以,我写了上面的那个
    有点扯淡的列表,不过,我很希望有人来告诉我,这个特性已经被遗弃了,这个特性没什么
    用。或者告诉我,这个特性你没有说到。这些实在是我业余时间闹着玩的。我希望你能理解我的想法,不要吝惜你的打字时间。在这里,我还要谢谢nichoti对我的提点。修正一下:〉〉1. 没有宏支持       确实没有什么太大的必要
    〉〉2. 不能声明Inline函数        确实没有什么太大的必要
    3. 不能声明类的静态变量(这点不太要紧,可以用静态函数和全局变量来仿真)
    4. 不能隐藏一个祖先隐藏的属性或方法。Object Pascal可以披露祖先类隐藏的方法或属性,但是要隐藏祖先类披露的属性或方法,我还不知道怎样做。把这些属性放到protected section或private section也不能做到。
    5. 有限的inherited。有时我想调用祖先类的方法,而不是父类的方法,但是我也不知道怎样做。比如:
      TAncestor = class(...)
      protected
        procedure AProc; virtual;
      end;  TParent = class(TAncestor)
      protected
        procedure AProc; override;
      end;  TChild = class(TParent)
      protected
        procedure AProc; override;
      end;procedure TChild.AProc; 
    begin
      //can not call TAncestor.AProc via the below statement
      //inherited TAncestor.AProc;  //you can call this only
      inherited;
      ...
    end;// 6. 没有声明裸(naked)函数的能力。   可以
    7. 只能产生兼容Intel的目标代码,不能产生基于像Alpha这样的CPU的机器的目标代码。不知道在运行在Alpha之上的NT上运行Delphi的目标程序会怎样。没机会试。
    8. 没有类似于C的位字段声明的能力。
    // 9. 从Delphi5开始,产生的目标程序总是依赖于oleaut32.dll,因为System单元需要它。  不要紧。我只是不喜欢windows的variant操作例程。
    10. 有缺陷的exception捕捉,有时候捕捉到的Exception的message属性为空。
    11. 缺少try except finallay end.结构
    // 12. 缺少多重继承(虽然现在很多设计人员不赞同多重继承,但毕竟这是一种语言和编译器的能力),有Interface就行了13. 请见谅,不应该在这里写这样的帖子。另外开帖吧同志们,为了共产主义的伟大事业,向我开炮!!!
      

  35.   

    没想到有被插了队,以下是对proman大老说的:==================
    首先要谢谢你对小弟的提点,但是你也应该说说我哪里说错了,还望你再提点清楚,真心的希
    望。
    ==================以下to Ringo:
    ==================
    说实在,我最先用的是C++,大概只用过一年,可以说是不知道C的,所以说了要求Pascal支持宏这种背包袱的要求。你说的参数类是怎么回事?至于,
    4.我说的是隐藏祖先披露的方法或属性
    5.我知道用RTTI可以做到,但是如果直接inherited TAncestor.AProc,那该多爽。
      

  36.   

    object pascal 就是苹果提出的。
      

  37.   

    to dbExpress:
    呵,就是标准模板库的意思了
      

  38.   

    Delphi、Kylix等开发套件中的ITE都是Object Pascal的设计加速器。
    Delphi中的VCL和Kylix中的CLX等都是Object Pascal的性能加速器。
    俺要说的是:Delphi和Kylix都是为Object Pascal服务的(尽管后者不仅仅为OP服务)。准确地说,Borland/Inprise一直在发展Pascal,而在发展中产生了Delphi、Kylix,使得这些开发平台能实现最快的Object Pascal应用开发。
    因此,Object Pascal是Delphi的基石,尽管没错,但俺以为把主次弄颠倒了。就象有人说他的爸爸和他长的很象差不多。
    俺以为应该说成,Delphi是Object Pascal的加速器,Delphi的精华是Object Pascal。此为拙见,祈为见谅!
      

  39.   

    object pascal就其语言本身而言,我觉得无法跟c++比,可是配上DELPHI,它就有很多优点了.只所以选择DELPHI,我看不是因为OBJECT PASCAL,是因为DELPHI的集成开发环境.
      

  40.   

    To: Dbexpress
    无法给你回短消息,不知为什么。
    其实在用Delphi的过程中我也遇到过一些问题。比如那个Try的结构问题,说句老实话我也用得很不爽,不过我一开始并不知道还有几个在一起的结构,但看了一点Java之后,确实觉得这种结构是不错的。但是这也是可以解决的。无非是写起起来繁烦一点而已。其实这样的结构就是下面的句子:
      try
        try    except    end;
      finally  end;
    是吧,其实Delphi是可以完成这样的功能的,当然写得是要繁一点,这就如我上面所说,各个语言的设计思想的出发点不尽相同,特别是底层的思路可能有很大的区别,这也就是Delphi不支持多重继承等的主要原因。但是就你上面说的那些问题,有些也许可以算是Delphi的优点,有些看上去确实是Delphi的不足。当然称Delphi是不合适的,因当准确的说是Object Pascal。所以说Object Pascal是Delphi的精华。不要称我为大佬,我是不敢当的。我用Delphi也就几年功夫。你确到的大部分问题,也曾经是我经常骂在嘴边的。可是随着我对Delphi的深入,特别是对Delphi中VCL组件的源码的深入解析,原先在我心中的一些问题却已有了新的想法。
    举个例子,我想没有人会说Delphi的IDE写的不好吧。在有这么多的不方便之处,为什么他们能写这么好呢。你甚至可以用一个Delphi去调试另一个Delphi。其实无它,因为Borland的人已经熟透了Delphi。我想如果如果我程序遇到了需要上面那些问题解决的时候,我是应当需要考虑一下我的类的设计了。因为我发现,当然需要用到这些特别的功能时,经常都是祖先类没有设计好造成的。VCL的层次结构为什么没有这些问题呢。唉,学无止境啊。
    其实对Delphi来说,最重要的不是他的版本,而是Object Pascal编绎器的版本,现在不是支持Linux下的编绎了吗?其实我想它支持Alpha是不难的。关键是一个商业公司为什么要去支持吧。
    对不起,我是随便说两句。大家不要介意。更不必挂在心上。我才用了Delphi几年,还差的远呢,还是愿意听取大家的意见。Borland又要推出C#Build了。唉,不知后事如何啊。
      

  41.   

    关注!很想将掌握Object Pascal
      

  42.   

    推荐各位去看看《深度探索C++对象模型》这个书,从语意的基础上理解理解C++编译器是如何理解我们写出的代码的,看看C++的编译器在后台帮我们做了什么。最后用从这本书中学到的知识来推敲推敲D的编译器为我们在后台做了些什么。我推荐大家看看这两天鸡翅兄(MAHONGXI)发的那个帖子,地址是
    http://www.csdn.net/Develop/article/17/17299.shtm
    其实很多的书上都谈到了关于D编译器的后台动作问题,但总感觉说的很不过瘾,看来只能靠我们自己在茫茫的资料海洋中一点一点汲取了,没有办法,找不到钥匙啊!呵呵大家有关于Delphi编译器的后台行为方面的知识点和资料连接都提供出来,说不定可以汇集成一本书的内容啊!
      

  43.   


    >>3. 不能声明类的静态变量(这点不太要紧,可以用静态函数和全局变量来仿真)
    ------------------------------------
    使用属性多好>>4. 不能隐藏一个祖先隐藏的属性或方法。Object Pascal可以披露祖先类隐藏的方法或属性,但是要隐藏祖先类披露的属性或方法,我还不知道怎样做。把这些属性放到protected section或private section也不能做到。
    ------------------------------------------------
    那是因为在同一个单元文件中,所有类可以互相看得见。如果这些类不在同一个单元文件中,就可以隐藏祖先类披露的属性或方法。不信你试试!>>5. 有限的inherited。有时我想调用祖先类的方法,而不是父类的方法,但是我也不知道怎样做。比如:
      TAncestor = class(...)
      protected
        procedure AProc; virtual;
      end;  TParent = class(TAncestor)  protected
        procedure AProc; override;
      end;  TChild = class(TParent)
      protected
        procedure AProc; override;
      end;procedure TChild.AProc; 
    begin
      //can not call TAncestor.AProc via the below statement
      //inherited TAncestor.AProc;  //you can call this only
      inherited;
      ...
    end;
    ----------------------------------------
      你的TAncestor.AProc是虚方法,当然不行。这样试过吗?
      TAncestor = class(...)
      protected
        procedure AProc; 
      end;  TParent = class(TAncestor)  protected
        procedure AProc; 
      end;  TChild = class(TParent)
      protected
        procedure AProc; 
      end;procedure TChild.AProc; 
    begin
     inherited TAncestor.AProc;
    end;
    >>6. 没有声明裸(naked)函数的能力。   
    ---------------------
    可以使用类方法,不需要实例就可以使用类的函数。
    >>12. 缺少多重继承(虽然现在很多设计人员不赞同多重继承,但毕竟这是一种语言和编译器的能力),有Interface就行了
    --------------------
    Delphi是强类型语言,使用类的多重继承后如何转型(转为父类型,还是母类型?),用Interface可以实现多重继承,这是趋势,C#和Java都向他学习。
      

  44.   

    又一本《delphi高手突破》大家听说过吗?!不错的呀!
      

  45.   

    to newdream(newdream) :
    有限的inherited。有时我想调用祖先类的方法,而不是父类的方法....
    ...你的方法不行,编译时报错:Undeclared identifier: 'TAncestor'!!
      

  46.   

    http://www.playicq.com/dispdocnew.php?t=&id=1029
    这有个翻译过的OBJECT PASCAL
      

  47.   

    其实我觉得,语言是一通百通,都差不多,比如面向对象的,
    不管是object pascal,还是java,c++,我都用过,如果不做深入的深入的研究,都一样,但如果深到了一定的层次,还是一样