如何分析一个已有的Delphi项目源代码
分析一个已有的Delphi项目,应该从以下入手(按先后顺序):
1. 编译条件,包括自定义的Condition以及inc文件里的标识
2. 主项目文件dpr,因为窗体的windows消息循环只是程序的一部分,可稍后启动。
3. 各个单元的initialization
4. 主窗体的Create,Show,Init,Close,Active
5. 主窗体的可视控件的事件
6. 根据软件的不同配置,尝试不同的运行,帮助理解软件业务的运行。
以上都是Delphi的固定模式,但有时候在项目里会调用一个额外的其它文件的StartXXX, InitXXX,要注意。
然后尝试精简项目,留下最精华的部分。搞懂这部分就算懂了。
如果某个类函数过多且复杂,那么看它的数据,就能猜到其核心功能。因为一个软件,如果不是系统软件,是要深刻反映外部业务的,必须需要数据。如果是系统软件,只要与系统API打交道,可以不需要数据,一个函数也可以包含许多内容。
如何分析一个已有的Delphi项目源代码的更多相关文章
- gradle一个已删除的项目找不到
排查了已有模块未果,到.idea目录中找到了gradle.xml文件,发现其中externalProjectPath指向的正是报错的那个已删除项目,改之,刷gradle,解决.
- 《转》 Ceilometer项目源代码分析----ceilometer项目源代码结构分析
感谢朋友支持本博客,欢迎共同探讨交流.因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/gaoxingnengjisua ...
- 重度使用示波器进行优化分析——一个DSDA项目回顾
这是若干年前一个项目,最近有时间整理一下.回忆起来,印象最深刻的就是重度使用示波器辅助分析,进行优化. 项目背景是在原有项目3G+项目基础上,增加一颗2G+ Modem,使支持DSDA功能. 在介绍D ...
- 重度使用示波器进行优化分析——一个DSDA项目回顾
这是若干年前一个项目,最近有时间整理一下.回忆起来,印象最深刻的就是重度使用示波器辅助分析,进行优化. 项目背景是在原有项目3G+项目基础上,增加一颗2G+ Modem,使支持DSDA功能. 在介绍D ...
- Django项目运行时出现self.status.split(' ',1)[0], self.bytes_sent,ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。
[02/Nov/2018 09:46:51] "GET /new_industry/category HTTP/1.1" 200 2891792 Traceback (most r ...
- 师兄写的一个JAVA播放器的源代码(转)
师兄写的一个JAVA播放器的源代码 MediaPlayer.java------------------------------------------------------------------ ...
- JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)
接上篇<JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署>,通过一个简单的JSP WEB网站了解了JAVA WEB相关的知识,比如:Ser ...
- 我发起了一个 用 javascript 写一个 Office 的 开源项目 JS Office
用 js 写 Office, 说实在的, 把 现在已有的 各种 富文本编辑器 和 电子表格 js 库 收集起来 整合一下 就 差不多了 , 放到 前几天 那个 “ js 作为 一等公民 ...
- 关联分析FPGrowth算法在JavaWeb项目中的应用
关联分析(关联挖掘)是指在交易数据.关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式.关联.相关性或因果结构.关联分析的一个典型例子是购物篮分析.通过发现顾客放入购物篮中不同商品之 ...
随机推荐
- 标准C程序设计七---100
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- Tomcat是怎么工作的(2) -- 动手实现山寨版的简单Web Server
本文先讲解一下Java web server都是怎么工作的.web server也叫HTTP server——顾名思义它是用HTTP协议和客户端交互的.客户端一般就是各种各样的浏览器了.相信所有朋友都 ...
- What is pseudopolynomial time? How does it differ from polynomial time?
To understand the difference between polynomial time and pseudopolynomial time, we need to start off ...
- 作妖系列——更改spyder黑色主题
https://blog.csdn.net/bat67/article/details/83932835 For Anaconda3 users on Windows 10 : 下载安装QDarkSt ...
- vs2017秘钥
VS2017专业版和企业版激活密钥 需要的请自取- Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM- ...
- Codeforces 696E ...Wait for it...(树链剖分)
题目链接 ...Wait for it... 考虑树链剖分. 对于树上的每个点开一个set,记录当前该节点上所有的girls. 每个节点初始的权值为set中的最小值. 询问的时候每次在路径上寻找最小 ...
- jenkins+gitlab发布maven项目
1.简介:什么是Maven Maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架; 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生 ...
- 在asp.net 项目的bin目录中使用子目录
如果要动态发布第三方扩展或者对asp.net项目进行二次开发时,希望不影响原有的程序并保持原有bin完整性,可以将扩展放到bin下的子目录中,并修改web.config的相应配置. 原配置: < ...
- C - The C Answer (2nd Edition) - Exercise 1-16
/* Revise the main routine of the longest-line program so it will correctly print the length of arbi ...
- Codeforces Beta Round #1 A. Theatre Square
从今天開始.就要在Codeforces里有一个新的開始了,貌似任务非常重的说~~ Codeforces专题我将会记录全部通过的题目,事实上仅仅要通过的题目都是水题啊!. 题目大意: 依照要求计算须要多 ...