Delphi学习笔记

帖]delphi5开发人员指南学习笔记(1)   [转帖]delphi5开发人员指南学习笔记(1) 我学delphi断断续续有两年时间了,中间曾头脑发热看过一本C++的书,又看了一本api sdk编程的书,后来又想参加计算机水平考试,看了几个月复习资料,但都半途而废。两年来,什么也没学好。痛定思痛,下决心只学DELP 阅读详情

1>引用对象与结构对象,对于OO实现的影响。
    OO中非常非常重要的一点就是可以使用虚拟函数。使用虚拟函数需要必然的类型转换。
    那么对于Delphi来说,这些基本可以不用考虑。
   而在VC++中的话,主要使用指针及引用来进行OO中子类到父类的类型转换。一定不能
   直接使用赋值的方式来转换,因为这样做的话,该对象通常就会被阉割了。
  
   

2>VC++与Delphi中的RTTI使用上的区别
    VC++ 中的RTTI精简,使用的一组宏。C++本身的RTTI功能则不是很好用,功能太少了。
    DELPHI 的RTTI则是可以把语言与IDE结合得更紧,目前我所知道的RTTI技术,是需要一个基类的。
    在MFC中是CObject,在Delphi中是TObject.然而,VC++中新建立的类可以不用继承自CObject,那么MFC中的RTTI
    就没法用了。而Delphi由于在Pascal语言中的强势,所以说Delphi是Pascal,Pascal是Delphi也是可以的。
    而在Delphi中所有的类,必须直接或间接的继承自TObject,所以Delphi中的RTTI更常用。


2>异常处理与资源泄露
    在C++中只能使用try...catch...方式处理异常,而在Delphi中则可以使用finally处理。
    通常Delphi在finally中处理了生成资源的回收。
   TObj obj = TObj.Create();
   try
   begin
    //do something
   end
   finally
   begin
      obj.Free(); //
   end;


   而C++中的对象产生异常,则需要这样:
   CObj *obj = new CObj();
   try
   {
       //do something
   }
   catch (...)
   {
       delete obj;
       obj = NULL;
   }
   if (obj) delete obj;
  显得冗长,幸运的是,C++中的对象可以生成在栈中。于是我们可以使用智能指针进行资源的回收。甚至可以不需要使用try。

  另外,由于Delphi中的Record类型才能生成在栈中,而OO对象只能生成在堆中。所以Delphi也只能使用那一种方式。
 
 
3>类型安全与强制转换
   Delphi中的Pointer可能转换成任何Pascal Object。所以减分。
   但是Dephi中的任何地方都可以使用RTTI,所以对他有加分。
   在VC++中指针是非常裸的,所以如果没有其它手段(比如智能指针)保障,那能他的安全可以说是差到不能再差了。
   另外对于强制转换,在Delphi中由是使用单继承,所以这方面他也有一些好处(其实就是可以了解更少)。
   VC++可以使用多继承,由于其虚函数表的实现方式影响。因此,VC++的对象指针在转换后其内存地址可能会不一样。
   因此C++ 中为了正确的进行转换会有一组相应的转换函数static_cast ,reinterpret_cast,dynamic_cast。
   注:我这里说的强制转换与上面说的类型转换是有些不一样。第一次说的是从子类到父类的转换,而这里
            说得更多的是父类到子类的转换。一般来说这是需要RTTI的。所以VC++中的dynamic_cast的正确使用需要开启C++中的RTTI功能
  
 
4>异常发生时的调试:
   Delphi IDE中有个非常好的功能,那就是在设计时(这里我定义为,在Dephi中运行程序)产生的异常能够定位在最近的源码那里,非常方便。
  不过听说在.NET以后等的异常信息可以回朔,就好象查看函数调用的堆栈那样。非常方便,不过这都是题外了。

 

 

DELPHI 7 学习笔记 [ 2013-05-13 ]     【字符串操作】     AnsiStartsText('DATA ', strCommand) —— 如果字符以此打头,需引用 StrUtils     SameText(strCommand, 'QUIT') —— 判断两个字符相同     s:='0001000200030004';     s1:= LeftStr(s,4); //结果 阅读详情

相关推荐

delphi listview 进度条

菜鸟学习笔记。好记性不如烂笔头。老外的码,找不到作者链接了,只好归原创了,毕竟调试了嘛。:) unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls,CommCtrl, Themes; typ.

jack2027cn的博客 462

C++ 关键字 (try-finally)

C++ 关键字 (try-finally)

learning attitude 1万+

STM32H743 ADC多通道采样实战:CubeMX配置+DMA传输避坑指南

本文详细介绍了STM32H743 ADC多通道采样的实战配置,包括CubeMX参数设置、DMA传输优化及常见问题解决方案。重点解析了ADC模块的核心特性、多通道采样序列配置、Cache一致性处理等关键技术,帮助开发者高效实现稳定可靠的模拟信号采集系统。

weixin_29175469的博客 612

NodeMCU学习(五)--Timer

1、认识timer相关的API 2、案例代码 (1)tmr.alarm()应用 if not tmr.create():alarm(5000, tmr.ALARM_SINGLE, function() print("hey there") end) then print("whoopsie") end pin=4 -- 4就是D4,GPIO2 flag=1 timer1 = tmr.create() gpio.mode(pin, gpio.OUTPUT) gpio.wri

zwb_578209160的博客 1702

手把手教你用STM32的SPI驱动MCP2517FD实现CAN FD通信(附完整代码)

本文详细介绍了如何使用STM32通过SPI驱动MCP2517FD实现CAN FD通信,涵盖硬件连接、SPI驱动编写、寄存器配置及数据收发实战。提供完整代码示例和常见问题排查指南,帮助开发者快速构建高可靠性的CAN FD通信系统,适用于汽车电子和工业控制等领域。

weixin_30607029的博客 675

mos管结电容等效模型_MOS管的防冲击防反接电路

MOS管的反接和抑制冲击一:原理分析MOS管由于生产工艺等因素,会产生相应的寄生电容,体二极管等。Mos管的寄生电容如图1所示,可以看到其具有三个寄生电容:G和S的电容Cgs;G和D的电容:Cgd,也称为反向传输电容、米勒电容、Crss;D和S的电容Cds。D和S之间的体二极管D1.图 1:MOS管等效模型寄生电容的数值可以从元器件的datasheet中得到,如图2,图3:Ciss(输入电容)=C...

weixin_29179583的博客 1859

static_cast、dynamic_cast reinterpret_cast和const_(2009-09-04 10:41:56)转载▼

http://blog.sina.com.cn/s/blog_4a84e45b0100f57m.html 关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynami

gaiazhang‘s blog 777

FFTW多核优化避坑指南:从交叉编译到ELF2板载OpenMP部署全流程

本文详细介绍了在ELF2开发板(RK3588平台)上为FFTW库配置OpenMP多核并行的完整流程与避坑指南。内容涵盖从交叉编译、库依赖处理到板载部署的实战步骤,并深入分析了RK3588的big.LITTLE架构对线程调优的影响,帮助开发者在嵌入式环境中高效利用多核性能。

2a4s6d8f0g的博客 272

static_cast 与reinterpret_cast

static_cast用法:static_cast ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:  ①用于类层次结构中基类和子类之间指针或引用的转换。  进行上行转换(把子类的指针或引用转换成基类表示)是安全的;  进行下行转换(把基类指针或引用转换成子类表示)时,由于没

Lambol_8309的专栏 3247

003:大疆智图新手入门:从下载安装到首次建模实战

本文为大疆智图新手提供从下载安装到首次三维建模的完整实战指南。详细介绍了软件安装的硬件要求、试用许可申请流程,并指导用户如何准备航拍数据或使用开源样例进行首次建模。通过分步操作演示与核心参数设置讲解,帮助初学者快速掌握使用大疆智图进行实景三维重建的核心流程与常见问题解决方案。

t8u9v0的博客 702

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1650

《Mastering Delphi 6学习笔记》之二

 《Mastering Delphi 6学习笔记》之二 本文是我在阅读《Mastering Delphi 6》一书过程中的一些心得笔记,一方面因为原书是英文版,所以将一些我认为比较重要的部分整理和摘录出来,记以备忘;另一方面也希望和大家一起分享《Master Delphi 6》这本好书和Delphi 6这一优秀工具。第一部分《Object TreeView简要说明》已经贴出,从这一部分

weizhisheng的专栏 1083

微信小程序 - 最新将页面可分享到朋友圈功能,小程序实现分享到朋友圈功能,开启分享给好友及分享朋友圈功能(微信小程序怎么分享到朋友圈?详细流程及示例代码教程)

没有设置过分享朋友圈功能的小程序,分享朋友圈按钮是灰色且无法点击。小程序 vue2 | vue3 版本语法都能使用,跟着教程复制代码运行即可。如下图所示,将页面开启分享后便可由用户转发出去。

🏆 前端领域优质创作者 2418

《Mastering Delphi 6》学习笔记之六

《Mastering Delphi 6》学习笔记之六Delphi 6中对RTL增加了不少函数和Helper Class,虽然不算翻天覆地的大变化,不过确实方便不少。如果有时间的话,建议大概浏览一下新增的StrUtils,DateUtils和ConvUtils这些单元,相信会发现一些有趣的东西。 如果要得到操作系统的信息,如下即可:  case Win32Platform of 

weizhisheng的专栏 1272

rosbag分析传感器数据的时间同步情况方法

ROS传感器时间同步分析流程:通过rosbaginfo初步检查bag文件信息,使用rqt_bag可视化时间线分布,采用rostopicecho或Python脚本提取各传感器时间戳并计算时间差统计值(均值/最大差/标准差),最后分析接收与采样时间延迟。量化评估同步精度,识别固定偏移或随机抖动问题,确保多传感器数据对齐,为后续融合处理提供可靠数据基础。

start_up_go的博客 201

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Delphi学习笔记:常用组件

一、事件 OnCanResize:当组件试图改变大小时触发(当组件有所改变时触发的事件) onClick:(鼠标单击事件)当在此组件上按下鼠标左键时触发的事件 OnConstrainedResize:在OnCanResize后触发,可调整试图调整大小的组件的约束 OnContexPopup:当弹出式菜单弹出时触发 OnDblClick:(鼠标双击事件)当在此组件上双击鼠标左键时触发的事件 OnDragDrop:释放一个正在拖动的组件时触发 OnDragOver:当一个组件在另一个组件上拖动时触发  OnEn

Any4337 1084

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

《Mastering Delphi 6》学习笔记之六 (转)

《Mastering Delphi 6》学习笔记之六 (转)[@more@] ...

csd3176的博客 81

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《Mastering Delphi 6》学习笔记之四 (转)

《Mastering Delphi 6》学习笔记之四 (转)[@more@] ...

csd3176的博客 88

一个C++程序员的Delphi学习笔记(2)

一个C++程序员的Delphi学习笔记(2)三 VCL   《从入门到精通》,作者的安排可真大胆。不先讲如何在Form上摆控件,倒自VCL讲起。我佩服作者的气魄,直直的深入到问题的核心,剔筋去肉,先将脉络端到你的面前。要知道,这有着失去很多读者的危险。1.TObject,万类之源。RTTI信息就放在这里了,这算是单根单继承实现上的便利吧。2.一个细节:TButton.Instanc

Dream_soft的专栏 2306

《Mastering Delphi 6》学习笔记之七

《Mastering Delphi 6》 学习笔记之七 TObject中的ClassParent是一个很让人感兴趣的方法。通过这个方法,你可以从某个类开始,层层上溯,一直到整个VCL的根TObject为止,描述出一个完整的层次列表。可以用下面的例子来检查类继承关系:procedure TForm1.Button1Click(Sender: TObject);var  CurrO

weizhisheng的专栏 1081

Delphi 对象模型学习笔记

来源:http://blog.youkuaiyun.com/NoteXPad/archive/2004/08/21/80528.aspx标题:Delphi 对象模型学习笔记关键词:Delphi 对象模型 作者:dREAMtHEATER难度:普通[]  中等[x]  高级[]http://dREAMtHEATER.yeah.netE-Mail:NoteXPad@163.com完成日期:2004年08月2

§为艺术而技术§ 1316

DELPHI学习笔记1

DELPHI学习笔记1listbox从文件中读取列表的操作ListBox1.Items.LoadFromFile(ExtractFilePath(Application.ExeName)+aaa.txt);ListBox1.Items.Add(Edit1.Text);//添加了一个项目ListBox1.Items.SaveToFile(ExtractFilePath(Application

whpepsi2的专栏 4952

Delphi学习笔记-1

====================================================== 注:重要!程序员如何有效的放松身心!下班后做什么? ====================================================== 面对对象编程学习: override:重载,是用于对父类中所定义的虚方法(virtual关键字)进行的.它重写父类的

120

delphi 学习笔记

只是简单的c和delphi对照,这样学的很快,笔记记得很随性,只是为了看点小代码,有帮助就看看吧,delphi已经差不多没落了。 1.objectpascal语法 一.首先是main函数 Programfirst;{程序名} vara:integer;{变量声明} b...

chenjialin00001的博客 155

Delphi 基础学习笔记

全面的 Delphi 语言教程,适合初学者和有一定编程经验的人士。Delphi 是一种基于 Object Pascal 的快速应用程序开发(RAD)工具,广泛用于 Windows 应用程序开发。

梵心白莲的博客 1390
上一篇: 最近工作进度非常非常缓慢。
下一篇: 2006_11_18炸弹人开发日志
Meuck
博客等级 码龄25年 14粉丝 94原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值