“要在读取文件的时候添加一个进度条”,在老板看到我做的东西有麽样了以后,一个新的任务就来了。添加进度条的理由是让人在导入的时候能感觉到导入的进度,这样就不容易让使用者感觉不到什么时候完成,什么时候没有完成。
想想这个功能的确很有用,恩!这个要做,做了感觉上就不一样了。哈哈!这时候突然发现自己的文件读取的地方就根本不在一个单独的类里,于是要把文件的读取专门的提取出来,这样才能让结构更清晰,更合理些。
经过自己的一整天的努力,终于写成了这样一个文件的读取单元。
unit Unit_DXF_FileRead;
interface
uses
SysUtils, StrUtils, ComCtrls;
type
TDXF_FileRead = class
private
//文件
F: Text;
ReadedFileSize: Integer;
wordLn1, wordLn2: String;
Progress: TProgressBar;
//获取本次读取的dxf 的组码
function GetCode(): String;
//获取本次读取的 dxf 的内容
function GetCont(): String;
//获取文件的大小
function GetFileSize(const FileName: String): LongInt;
public
//参数分别是 filePath : 传入的文件全路径, ImportProgressBar: 界面显示进度条。
constructor Create(filePath: String; ImportProgressBar: TProgressBar);
destructor Destroy; override;
//每次读取两行,分别为dxf的组码和内容
procedure ReadCodeAndCont();
property ReadCode: String read GetCode;
property ReadCont: String read GetCont;
end;
implementation
constructor TDXF_FileRead.Create(filePath: String; ImportProgressBar: TProgressBar);
begin
Progress := ImportProgressBar;
Progress.Max := GetFileSize(filePath);
AssignFile(F, filePath);
Reset(F);
if (Progress.Max > 20) then
begin
Progress.Step := Progress.Max div 20;
end;
ReadedFileSize := 0;
end;
destructor TDXF_FileRead.Destroy();
begin
CloseFile(F);
Progress := nil;
inherited Destroy;
end;
function TDXF_FileRead.GetFileSize(const FileName: String): LongInt;
var
SearchRec: TSearchRec;
begin
if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then
Result := SearchRec.Size
else
Result := -1;
end;
procedure TDXF_FileRead.ReadCodeAndCont();
begin
Readln(F, wordLn1);
Readln(F, wordLn2);
Inc(ReadedFileSize, Length(wordln1));
Inc(ReadedFileSize, Length(wordLn2));
if ((ReadedFileSize div Progress.Step) > 0) then
begin
Progress.StepIt();
Dec(ReadedFileSize, Progress.Step);
end;
if (Eof(F)) then
begin
wordLn1 := '0';
wordLn2 := 'EOF';
end;
end;
//private
function TDXF_FileRead.GetCode(): String;
begin
Result := Trim(wordLn1);
end;
function TDXF_FileRead.GetCont(): String;
begin
Result := Trim(wordLn2);
end;
end.
诚实而言,GetFileSize函数的实现和关于进度条步进策略都是在网上找到的,感觉都是很好的东西。前两天“师兄”(没有师傅
先这样称呼前来人)看我的这段代码的时候说,你这样做的进度条不精确的,应该在ReadCodeAndCont里用Progress.Position
也就是把
Inc(ReadedFileSize, Length(wordln1));
Inc(ReadedFileSize, Length(wordLn2));
if ((ReadedFileSize div Progress.Step) > 0) then
begin
Progress.StepIt();
Dec(ReadedFileSize, Progress.Step);
end;
换成:
Progress.Position := Progress.Position + Length(wordln1);
Progress.Position := Progress.Position + Length(wordln2);
他说这样实现的进度条,是非常精确的。想象也是,但是我改过后,看看效果也差不多啊!我决定改回去了,因为我发现速度慢了不少,自己通过比较发现原来4秒钟完成,现在变成了十几秒!我想了一下,在界面上显示的进度条总共才20个格子,而我设定了20步,效果上已经是足够了。我问他们在做导入protel的时候也是这样做的吗?他说是的。我就暗暗想:“难怪这么慢,而且动不动就假死!”。但是他们不会因为我的速度快而去改的,不知道为什么他们老是说不要改,不要改,出问题也是的,再通过一个什么高明的函数,在有问题的地方调用这个函数就是了,整个软件中不知道有多少这样高明的补丁函数了。但是软件还处在没有成熟的阶段
。
delphi也是一个很好的面相对象的语言,可惜可以参考的权威的东西实在太少。看到网上说delphi调用类的Destroy的时候,不让直接用.Destroy,而是让用.free()或用FreeAndNil函数。我这样用了,被“师兄”要求改为.Destroy,很不解,但是后来有些明白了,我们的实现里面居然Destroy 都是非override的,虽然都调用了父类的Destroy 。不解中......
分享到:
相关推荐
apache-jmeter-5.6.3 带插件
内置源程序供读者参考学习
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
MATLAB设计的图像去雾设计(GUI界面设计)
2023年江苏省计算机二级考试VB试题分类汇总及答案.pdf
Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4
2023年微型计算机原理试题库及答案.pdf
美联储在2024年9月18日宣布将其调50个基点,降至4.75%至5.00%之间的水平。这是美联储自2020年3月以来首次降息,也是自2023年7月将利率水平调升至历史高位后的首次下调,标志着货币政策由紧缩周期向宽松周期的转向 数据名称:美国联邦基金有效利率、目标利率历史数据 样本数量:12667条 数据年份:1990.1-2024.9 数据说明:包括有效利率、目标利率 更新日期:2024年9月
2023年专升本计算机基础习题答案.pdf
ava项目springboot基于springboot的课程设计,包含源码+数据库+毕业论文
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
【工程项目】MATLAB教室人数统计(GUI框架,定位和分割人脸,计数)
2023年山东专升本计算机真题及答案.pdf
2023年计算机与通信网络实验报告.pdf
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
英飞凌TC264代码-uart