Delphi开发人员的编程习惯

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

关开发习惯的一些想法,如鲠在喉,不吐不快。究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些建议,或者参考(希望不是误人子弟)。同时,也希望各位能够就我的这些陋习,发表一点看法,给出批评和指正的意见。谢谢。
一.建立工程目录
       首先,第一步要做的,当然是给新项目建一个单独的目录(别笑)。目录名称与项目名称同名,或者另取一个也可,只要清楚、简练。然后,在此目录中创建以下各个目录:
       <Doc>:用来存放该项目相关的开发文档(需求说明,概要设计,详细设计等等等等);
       <Source>:用来存放Delphi源程序中的”.Dpr”,”.Pas”,”.Dfm”等文件;
       <Dcu>:该目录中存放”.Dcu”文件,将’.Pas’与’.Dcu’文件分开存放只是为了让Source目录的内容更加清楚一些;
       <Bin>:存放工程的输出文件,比如”.Exe”,”.Dll”或者”.Ocx”等等;
       <Log>:用来存放日志文件;通常在这个目录中我会放一个”<项目名称>程序员日志.Txt”文件。
       <Images>:当然是存放工程中用到的图片的目录了。一般情况下,这个目录是少不了的。假如还用到其他资源,那么也一样建立各自的目录,比如Wav,比如Avi等等。

 

 

二.设置工程选项
在Delphi中创建一个新的工程,将此工程保存到Source目录中,同时:
a.       选一个耐看的,与项目有些联系的图标作为这个工程的图标。当然,这个图标可能只是临时用用的,但是总要比Delphi默认的那个难看的要好才行,要不然,怎么对得起自己?
b.       将Project Options -> Directories/Conditionals页面中的Output Directory设置为Bin目录;
c.       将Unit output Directory设置为Dcu目录。

 

 

三.添加常量单元
       添加一个新的Unit,另存为“unt<工程名> Consts.Pas”,用来保存工程中用到的常量。

 

 

四.有关窗体(Form)及单元(Unit) 
按照匈牙利命名法则给Form命名,则一个用来登录的窗体可以命名为’FrmLogin’,而其单元名可以为’untLogin’。通常,两个对应的Form和Unit的名称在除去’Frm’或’unt’的缩写后应当保持一致。
在Unit的头部添加本单元的注释,注释的格式可以参照Delphi的源码,但是至少应当包含以下几项:功能描述;作者;版权;创建时间;最后修改时间;修改历史等等。
将新创建好的Form的Caption设置为该Form类的名称,而不是使用Delphi默认的。比如,将Form1更名为FrmLogin后,此时我们获得了TFrmLogin这个新的窗体类,并且Delphi自动将窗体的Caption更新为’FrmLogin’。依我看,该Caption应当为’TFrmLogin’才是,因为我们在设计的是一个窗体类TFrmLogin,而不是仅仅对FrmLogin进行操作。
向TFrmLogin这样功能明确的窗体类,许多人都有在设计期就将其Caption设置为诸如“操作员登录”这种名称的习惯。我的习惯是,象“操作员登录”这样的常量,通常存放在unt<工程名>Consts.Pas中,用ResourceString来定义,或者用Const来定义。至于窗体的Caption的命名,应当属于运行期的工作。所以,我往往在TForm.OnCreate事件触发之时才对Caption进行操作,比如:
procedure TFrmLogin.FormCreate(Sender: TObject);
begin
       Caption := csLoginTitle;
      ....
end;

 

 

五.关于Format函数的使用
       有iYear,iMonth,iDay三个数据,要显示诸如“生日:1976/3/18”这样的信息,你通常怎么做?使用s := ‘生日:’+IntToStr(iYear)+’.’+IntToStr(iMonth)+’.’+IntToStr(iDay); 吗?这样实在是太累了。我的习惯是,在unt<工程名>Consts.Pas中增加一个常量csBirthDayFormat = ‘生日:%d/%d/%d’来保存显示格式,然后使用s := Format(csBirthDayFormat, [iYear, iMonth, iDay]);这样的语句完成数据的拼装。这么做的好处显而易见,那就是你只需在一个地方维护数据的显示格式。
       Format函数功能强大,我对它很是推崇,你呢?

 

 

六.关于注册表或者Ini文件的存储
原先访问注册表我通常使用TRegistry,而访问Ini文件通常使用TIniFile。这两个类的使用方法各不相同,因此想要使用相同的代码既能访问注册表又能访问Ini文件几乎是不可能的。真头疼啊!
终于我发现了救星!那就是TRegistryIniFile类。查看Registry单元,我们发现,TRegistryIniFile继承自TCusomIniFile。而TIniFile也是继承于TCusomIniFile。因此,使用抽象类TCusomIniFile来实现对注册表或者Ini文件的访问便是一举两得了。比如:
var
  csmIniFile: TCusomIniFile;
begin
  if blUseIniFile then//如果使用Ini文件
    csmIniFile:= TIniFile.Create(csRootKey)
  else
    csmIniFile:= TRegistryIniFile.Create(csRootKey);
  //接着就可以使用csmIniFile对Ini文件进行访问,
//或者用类似访问Ini文件的方式访问注册表。

 

 

七.关于TStream流以及TFileStream,TMemoryStream等等
       TFileStream和TMemoryStream都继承自抽象类TStream,这意味着我们可以使用一套代码完成对文件和内存的存取操作。因此,定义一些接口的时候,我往往倾向于将参数的类型定义为抽象类,而不是具体类。比如,要完成保存功能的一个函数,定义成
function Save(AStream: TStream): Boolean;
就比定义成
function Save(AStream: TFileStream): Boolean;
要灵活的多。
前一个定义是具有前瞻性的,因为它可以适用于以后可能出现的新型态的流。而后一个定义只适用于TFileStream这种流(当然包括TFileStream的子类),呆板多了。
我的习惯:如果存在抽象类,那么尽量将参数定义为抽象类的类型,毕竟,我们无法预见未来。

 

 

八.多使用TAction
       Delphi 4以后引入了Action的概念,并且在Standard组件栏中增加TActionList组件。使用Action的好处是,控件状态同步的烦恼从此一扫而空!

【delphi11】delphi进阶【六、数据库编程】 设计数据库:首先,你需要一个数据库。可以是本地的 SQLite 数据库或远程的 SQL Server 数据库。设置数据库连接:使用 ADO 或 FireDAC 组件来建立连接。设计用户界面:创建表格、按钮等控件来显示和操作数据。编写事件处理代码:为按钮点击等事件编写代码,如添加、删除、更新数据库记录。 阅读详情

相关推荐

Delphi编程初体验

一、Delphi 7是否落后了? 恰恰相反,如今主流编译器IDE理念出了问题。python IDE几乎可以乎略,pycharm启动非常慢。像DELPHI 7.0绿色精简版起动又快,又能写GUI程序的编程语言如今已经没有了。一个伟大的编程语言首先要给初学者一个简单的IDE。因为初学者适应编程语言的规则(编译器不懂人语)本来就挺痛苦。 ...

lihongtao8209的专栏 437

Delphi Bpl包编译Dcp,Bin,Dcu路径设置

https://www.cnblogs.com/Herge/p/5633152.html Delphi Bpl包学习 实战截图 -- 对于BPL包,我个人理解是:就是一种封装方式,和DLL,EXE类似,把代码放到包(package)里面保存而已。 一、先说说如何创建BPL包 1、 打开delphi IDE(delphi7 为例)-->File-->Close...

qq_18932003的博客 2413

DELPHI5开发人员指南与代码实践全集

在本章中,我们将初步探索Delphi 5开发环境的核心要素,并为初学者和经验丰富的开发人员提供一个坚实的基础。Delphi 5作为一款高效的编程工具,其设计哲学和工作流程都是为了快速开发和部署应用程序。首先,我们将了解Delphi 5的工作空间,介绍如何配置IDE(集成开发环境),并优化它以适应各种开发需求。接下来,将简单回顾Delphi的历史,以及它如何适应快速发展的编程行业和现代开发场景。

weixin_31869917的博客 1059

ZT: 一个程序员的开发习惯

有关开发习惯的一些想法,如鲠在喉,不吐不快。究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些建议,或者参考(希望不是误人子弟)。同时,也希望各位能够就我的这些陋习,发表一点看法,给出批评和指正的意见。谢谢。 一.建立工程目录 ? ? ? ?首先,第一步要做的,当然是给新项目建一个单独的目录(别笑)。目录名称与项目名称同名,或者另取一个也可,只要清楚、简

foreveryday007's BLOG 1055

ICS网络控件,Delphi 使用

比DElphi自带的网络控件使用更方便的网络控件,能在多个Delph版本中使用,对UDP有通信支持更科学合理。

delphi反编译工具 Decompiler v1.1.0.194

Delphi Decompiler can analyze executables compiled with Delphi 2 to 7 giving you; all DFM files of the target, commented ASM code with references to strings, imported function calls, classes methods calls, components in the unit, Try-Except and Try-Finally blocks. Note, this is a rewrite of the original DeDe. Changes and updates include: + Updated the DSF Editor * Fixed loss of DSF editor when parsing + In DSF editor adds support for Delphi 2007, 2009, 2010 (so far works only for parsing. Bpl) * Optimized code for rendering assembly code * Full reconstruction project to accelerate work on a batch of assemblies and the subsequent testing + Updated the PE Editor + Improved the window "Options" + Added ability to change fonts: - In the DFM Editor - Lists ListView - In disassembler * Reduced the delay timer on the window screen saver * Fixed a PE editor + Added saving of projects Delphi 2007 + Added saving of projects Delphi 2009 + Added saving of projects Delphi 2010 + Rewritten engine decompilation DCU + Rewrote the analysis engine EXE + New format doi and dsf + Completely changed interface + Ability to fully maintain the project (full load project being finalized) + Full support for programs written in Delphi 2 - 7

关于delphi编译路径设置问题

公司有一个控件是用delphi编的,有bug需要修改,我接手之后就开始修改。因为工程使用了大量的外部控件,而且有些源代码需要用最新版替换掉,所以我决定把这些外部控件的源代码整合到一个project group中去。原来以为简单的一个dpk工程的compile和install,谁知道这个工作耗费了将近2天时间。问题很简单,不是不能通过编译,而是明明编译成功的bpl文件,却报告路径找不到。 经过时断时...

weixin_34146805的博客 595

DeDe V3.50.02 (DELPHI反编译工具)

DeDe,著名的DELPHI反编译工具,3.5版本,多语种(含中文)界面,支持到D7版本,反编译结果虽然是汇编级,不过效果已经非常不错了。代码连接为DeDe3.10的源代码(D6编译的)

Delphi的IDE环境设置

Delphi的IDE环境设置

敦格 6001

Delphi获取CPU、硬盘等硬件温度.rar

Delphi获取CPU、硬盘等硬件温度信息,类似CPU-Z的一个软件,检测硬件信息的,主要是检测获取硬件温度,包括CPU和硬盘、内存等,运行界面如上所示。

金现代面试题—— i++,++i, &&,&|自动装箱和自动拆箱(int,byte,float等)|取int等基本类型的最大值

public static void main(String[] args){ int i=1,j=1; if(i++==2&amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp;++j==2){ i=7; } System.out.println(“i=”+i+”,j=”+j); } 请给出 输出结果:

老孟嘚吧嘚 1396

有关DELPHI开发习惯

有关开发习惯的一些想法,如鲠在喉,不吐不快。究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些建议,或者参考(希望不是误人子弟)。同时,也希望各位能够就我的这些陋习,发表一点看法,给出批评和指正的意见。谢谢。一.建立工程目录       首先,第一步要做的,当然是给新项目建一个单独的目录(别笑)。目录名称与项目名称同名,或者另取一个也可,只要清楚、简练。...

注重长远 天天积累 cqujsjcyj 138

Android HDMI-CEC协议解析:从机顶盒到电视的无缝遥控联动

本文深入解析Android HDMI-CEC协议,实现机顶盒与电视间的无缝遥控联动。通过剖析设备角色、消息格式及核心操作码,并结合Android HdmiControlManager API实战,详细讲解如何实现电源同步、按键穿透及音量控制,最终解决多设备遥控繁琐的痛点,提升用户体验。

egg99的博客 974

delphi编程入门_适用于Delphi开发人员的ASP.NET编程入门指南

delphi编程入门 关于课程: ( About the Course: ) This free online course is perfect for beginner Delphi for .NET developers as well as for those who want a broad overview of the art of ASP.NET Web programmi...

cumao2792的博客 1016

大开眼界的十大开源人工智能项目

这是一个强大的开源工具,能让你在不同框架之间自由切换,无需重写代码。它是一个开源工具,能用简单的SQL语言同时处理数据和AI模型,让一切变得有序而高效。Rasa是我开发智能聊天机器人时的首选,它让你轻松掌控机器人对话的每个细节。我经常用它快速验证模型在不同框架下的表现,省去了大量烦躁的调试过程。最近发现的Vapi是一个以API方式提供的语音AI工具,开发者友好程度超乎想象。KNIME是一个以拖拽方式构建数据分析流程的开源工具,仿佛是数据界的乐高积木。它像个忠诚的守门员,确保你的模型始终健康运行。

wjianwei666的专栏 1104

【python爬虫实战】Python 抓取京东商品信息与评论,做竞品分析

本项目通过爬取京东平台商品数据,实现了完整的电商竞品分析流程。文章首先介绍了项目目标和技术栈,包括Python、Requests、BeautifulSoup等工具。然后详细解析了京东页面结构,包括商品列表页、详情页和评论页的特点。核心部分展示了商品列表爬取、评论数据获取以及竞品分析三个关键步骤的代码实现,每部分都包含运行结果和原理讲解。通过情感分析和关键词提取,项目能够对比不同产品的用户评价差异。最后,文章还讨论了合规性考量、优化建议和常见问题解答。该方案不仅适用于市场调研,也为企业制定营销策略提供了数据支

2503_91057718的博客 1万+

Delphi编程(三)__编程习惯

Delphi 代码规范

JOESI的专栏 937

硬件-汽车电子-TBOX/TCAM核心器件选型与系统集成设计指南

本文深入解析汽车电子TBOX/TCAM硬件架构与系统集成设计,涵盖核心器件选型、电源管理、信号完整性优化等关键点。重点分享5G模组选型避坑经验、MCU隐性指标及热设计验证方案,为车载通信系统开发提供实用指南。

weixin_30352645的博客 530

Delphi模式编程

Delphi模式编程

qqrrjj2011的博客 1512

【异常】OpenClaw报错 400 Total tokens of image and text exceed max message tokens. Request

OpenClaw报错400(Token超限)解决方案摘要 该报错因文本/图片总Token数超过模型限额导致,常见于多轮对话累积或单次请求过大。提供三级解决方案: 应急处理:输入"/new"指令清空会话历史,立即重置Token计数(90%问题可解决) 折中方案:保留历史对话前提下,通过精简当前输入、删除早期无关对话或拆分请求来压缩Token 专属处理:单次请求超限时,拆分长文本为2000字以内段落,或分批次上传降低分辨率图片 长期预防建议定期使用"/new"开启新会话,

奶爸的编程之路,也就一周冷个三天 1390

高级数据结构之R树(R-tree)

R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子...

白马负金羁 1万+

Delphi编程技巧集锦

 Delphi编程技巧集锦  ◇[DELPHI]网络邻居复制文件 uses shellapi; copyfile(pchar(newfile.txt),pchar(//computername/direction/targer.txt),false); ◇[DELPHI]产生鼠标拖动效果 通过MouseMove事件、DragOver事件、EndDrag事件实现,例如在PANEL上的

阿土工作室 771

使用Visual Studio 2022创建CUDA编程项目

本文介绍了在Visual Studio 2022中配置CUDA开发环境的完整流程。首先需要安装VS2022并勾选C++开发组件,然后安装CUDA Toolkit和兼容的NVIDIA驱动。创建项目时选择CUDA模板,VS会自动生成数组相加的示例代码。项目配置包含CUDA头文件依赖和链接器设置(cudart_static.lib)。文章详细说明了从环境搭建到代码编写、调试的完整步骤,帮助开发者快速上手CUDA编程。

新兴IT民工的专栏 1万+

DELPHI串口编程剖析

DELPHI串口编程剖析 1第一章 背景知识 31. 概述 32. 什么是接口? 33. 接口分类. 34. 为什么需要I/O接口? 35. I/O接口的功能 46. I/O接口的通信方式 57. I/O接口的分类 58. 串口的分类 89. 串口通信分类 1110. 奇偶校验 12第二章 串口通信编程简介 131. 串口的通信编程流程 132. Unix平台下对串口进行开发的方法 133. Wi

5658

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

读书笔记:Delphi5 开发人员指南 第一章

大学期间基本没有什么编程经验,虽然上学期间相关的课程也学了一些,但那些只是基本的东西而已。比如C语言、比如数据结构、比如数据库。况且作为一个学生,一个比较懒的学生,我基本上是只学了那些老师所教的东西,所谓的“重点”。可以说,对于程序开发,我是一个门外汉。而大学毕业后,我的工作恰又和编程有关。作为一个门外汉,我选择了Delphi作为开发工具,经过半年的学习和实践,竟也完成了工作后的第一份任务。之后,

我的技术笔记 1435

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Delphi 中的字符串——《Delphi6 开发人员指南》读书笔记

Delphi 中的字符串——《Delphi6 开发人员指南》读书笔记Spacesoft【暗夜狂沙】Delphi 对字符串这个结构的支持是十分丰富的,不仅有Delphi 本身支持的string 类型,还支持和C 语言兼容的字符串数组。那么他们之间有什么区别呢?本文试图就此做一个详细的剖析,并且试图回答论坛上常见的几个问题。首先,我们要讨论的是Delphi 中的string 到底是什么

Spacesoft的专栏 2323

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: delphi项目开发经验2008年09月18日 星期四 10:07随着项目的失败,这些天一直在总结失败的原因,到底是为什么?
下一篇: delphi编码规范文档
一剑平江湖
博客等级 码龄18年 207粉丝 1070原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值