程序与细节

原创 2006年06月23日 14:51:00

版权声明:

本文由Lyris完成,首发于CSDN,作者保留中文版权。
未经许可,不得使用于任何商业用途。
欢迎转载,但请保持文章及版权声明完整。
如需联络请发邮件:
chenwentao@gmail.com

早在几年前,就在shlwapi.dll里面找个这个函数: 格式化输出文件大小:文件大小原始都是字节数,比如1234567个字节。在windows资源管理器里面可以看到, 如果文件大小大致是这样的,小于1K的用字节表示如23字节,大于1K的用如343.5KB表示,大于1M的用如1.4MB表示,总之,系统非常智能的选取各种量纲,非常方便查看大小。既然系统已经有这个功能了,就不用自己来写函数来换算了。在shlwapi.dll里面有这个函数StrFormatByteSizeA, StrFormatKBSizeA,查查MSDN,转换成delphi就如

function StrFormatByteSize(dw: DWORD; szBuf: PChar; uiBufSize: UINT):
  PChar; stdcall; external 'shlwapi.dll' name 'StrFormatByteSizeA';
function StrFormatKBSize(qdw: LONGLONG; szBuf: PChar; uiBufSize: UINT):
  PChar; stdcall; external 'shlwapi.dll' name 'StrFormatKBSizeA';

今天发现Windows很多地方如搜索进度显示时,对如“C:/Documents and Settings/LocalService/Application Data/Microsoft/Internet Explorer/demo.txt”这样的文件名总是能恰到好处的缩略成如“C:/Documents and Settings/L.../demo.txt”,估计也有相关的函数,果然,打开shlwpi.dll一看,里面有很多操作路径的函数,如PathCompactPathA,顾名思义已经差不多了,用MSDN一查,果然是这样的。很快写出delphi的导出函数:


function PathCompactPath(hDC: HDC; lpszPath: Pchar; dx: integer): Bool
  stdcall; external 'shlwapi.dll' name 'PathCompactPathA';

马上就得到了想要的效果。
 
总结: 对于做应用的来说,很多东西不用重复发明轮子,基本上每个领域方面的细节都有专门研究的参考实现。善于思考,快速查找资料可以让自己进一步改进或站在更高的角度看问题。当然了基本功一定要扎实,刚开始的时候为练手也可以自己实现。

顺便赞扬windows一句,细微之处见精神,呵呵。这样做技术上并不难,但对改进用户体验有很大帮助。不要以为软件就是算法、代码,实际上有很多地方值得去关注,如用户习惯。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

程序猿之---C语言细节7(检测两个整型相加是否溢出)

主要内容:检测两个整型相加是否溢出 #include #include int main(int argc, char *argv[]) { /* * a和b为非负整型变量,检测a+b是...

程序猿之---C语言细节29(#define宏大小、空结构体大小、柔性数组不知道你见过没)

柔性数组不知道你见过没、#define宏大小、空结构体大小

对C程序运行过程中底层细节的初步认识

对一个极小C程序的汇编代码工作过程的底层堆栈等细节分析

程序猿之--C语言细节4(数组及指针操作)

主要内容:数组及指针操作

Java程序优化细节

下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。   1. 尽量在合适的场合使用单例   使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,...

在细节上提升你的程序的性能

虽然,这些使用方法看似差别不大,在现在的cpu运行期起来几乎上可以忽略不计, 但是,我们想一下现在软件,每一个都是那么的庞大,一个小项目都是几万行代码, 一个函数中你消耗一点,那么多函数是很大的性...

运算符重载里面程序运行细节

用一个Integer的类来模拟int数据类型的操作过程首先实现运算符+的重载,来详细观察里面的执行流程。 在该类中写出了默认析构函数,默认拷贝函数,默认赋值函数。 重载了构造函数,operator...

程序猿之---C语言细节20(符号和有符号之间转换、两数相加溢出后数值计算)

主要内容:无符号和有符号之间转换、两数相加溢出后数值计算 #include /* 这个函数存在潜在漏洞 */ float sum_elements(float a[], unsigned len...

程序猿之--C语言细节13(二维数组和指针,&*a[i][0]的理解,数组1[e]和e[1]很可能你没见过)

主要内容:二维数组和指针,&*a[i][0]的理解 #include #define NUM_ROWS 10 #define NUM_COLS 10 int main(int argc, cha...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)