说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何压缩较长的全路径文件名中的路径 (Path) 字串长度?

HTML文档下载 WORD文档下载 PDF文档下载
VB如何压缩较长的全路径文件名中的路径 (Path) 字串长度?
版本:VB6 / VB5 / VB4-32


或许您看了上面的标题之后,不知道是什么意思,不过,我想您只 要看了下面的说明就会有恍然大悟的感觉了!

压缩前的全路径文件名:
C:\MyFolder\VisualBasic\MyReallyWayTooLongFolderName\ButWhoCares\IhaveTheAPI.doc
压缩后的全路径文件名:
C:\MyFolder\VisualBasic\MyR...\IhaveTheAPI.doc

知道上面标题的意思了吧!这种技巧在很多安装软件中都可以看到,它有几个特色:

1、文件名称完整不变。
2、只縮短路径 (Path) 部份字串。
3、可事先设定压缩后的全路径文件名的最大长度。

或许您会认为这有什么困难?用一些字串处理的函数,例如:Mid$、Left$.... 等就可以做到了!没错。

但是,您知道吗?由于 Microsoft 很多安装软件都会用到这个功能,所以它也有提供一个 PathCompactPath API,它是放在 shlwapi 这个 DLL 文件中。

Declare Function PathCompactPath Lib "shlwapi" _
Alias "PathCompactPathA" (ByVal hDC As Long, _
ByVal lpszPath As String, ByVal dx As Long) As Long

它需要三个引数,说明如下:

hDC:device context handle。
lpszPath:the address of the pathname。
dx:the width in pixels of the spot in which you want the pathname to fit。

來看看实际的例子吧!请在表单中加入一个 CommandButton 及一个 Label,不用更改任何属性,將以下的程序代码复制到表单中:

Private Declare Function PathCompactPath Lib "shlwapi" _
Alias "PathCompactPathA" (ByVal hDC As Long, _
ByVal lpszPath As String, ByVal dx As Long) As Long

Private Sub Command1_Click()
Dim lhDC As Long, lCtlWidth As Long
Dim FileSpec As String

lhDC = Me.hDC
FileSpec = "C:\MyFolder\VisualBasic\MyReallyWayTooLongFolderName\"
FileSpec = FileSpec & "ButWhoCares\IhaveTheAPI.doc"
Me.ScaleMode = vbPixels
lCtlWidth = Label1.Width - Me.DrawWidth

PathCompactPath lhDC, FileSpec, lCtlWidth
Label1.Caption = FileSpec
End Sub
记住 Label1 的宽度不要太大,如果 Label1 的宽度本來就放得下全路径文件名,那就沒有必要压缩全路径文件名了!
Windows环境下实时列表输出的实现方法-Delphi资料 报表制作技巧(二)-Delphi资料 Delphi编制的程序运行中动态制作报表 报表制作技巧(一)-Delphi资料 如何在WINDOWS中控制打印字体的长宽,而不受限于SIZE 的限制-Delphi资料 也谈为Delphi中数据库报表加网格 用Delphi4的QReport部件生成报表 用Delphi编写打印程序的窍门 用Word做Delphi报表输出工具 在DELPHI 文 本 和 图 形 的 打 印 在Delphi中运用QuickReport实现多栏列印 在打印或打印预览前如何获取报表页数-Delphi资料 自定义快速报表的打印预览窗口-Delphi资料 Delphi 3 图形VCL中Bug修改方案 Delphi hint的字体和色彩如何改变 Delphi3.0中复活节彩蛋及实现 Delphi数据库应用程序开发中图像数据的存取技巧 DELPHI图形编辑技巧二则 DELPHI显示JPEG图像文件 Delphi中CANVAS使用三例 Delphi中的图形显示技巧 DELPHI中画布应用技巧 Delphi中控件深度投影及阴影效果的实现 DELPHI中利用对象的常用属性制作动画 Form生成时的事件次序-Delphi资料 LED数码管仿真显示程序-Delphi资料 TPaintBox与TImage的比较-Delphi资料 WINDOWS基于调色板的图像消隐-Delphi资料 改变图片效果-Delphi资料 改造HINT的输出方式-Delphi资料 基于Delphi的图像漫游 SQL Server小小问题 请问那里有DELPHI第二张光盘下载! 如何是使用describe来获取datawindow中的带区参数? 谁有早期的TeeChart5.ocx,文件大小为2,576,384,发行日期在2001-06-17号以前的,我这里有个crack软件,但是新下载的不行,所以重金寻求!!! 请问C语言中有字符串查找函数吗? 请问如何动态的改变应用程序的图标,一定给分 Query主从表编辑问题,从不丢失! 急急急!!!! 高分求禁止IE的自动谈出的广告,有个软见也行,或者告诉实现方法。请告诉下载的网址。 打印一些清单在delphi中用哪些控件比较好? 如何打印到文件 如何得到WINDOWS的拼音字库 如何在BCB中进行SDK编程? 一个简单关于对话框的问题------->> 用asp将图片插入数据库,到底错在哪?苦恼啊!以前这个也通过了(win2000server+Sql7.0)但...(高分!!!!) 为什么我在Access2000的mdb中只能最多得到一条记录? 男人25岁就大吗? 关于 C 类IP的屏蔽 配置为COM+组件后,CoCreateInstance 失败! 关于C 类 IP的屏蔽 有谁知道本.拉登的QQ,俺找他有事?重奖`~~~~~~~~~~~~~~~~~~~! 有没有人告诉我,HTTP头跟正文中间夹的什么? 请问asp和php能访问webservice吗??? 如何一打开NOTE客户端就执行我的数据库(不能设书签)? true dbgrid控件怎么使一个网格又下拉的列表弹出来 关于计数器的代码 那里有含有K线图的图表控件和像OFFICE的工具栏控件下载? 十万火急!如何在Dialog上显示Menu??(我只能给到27分了) 十万火急!如何在Dialog上显示Menu??(我只能给到27分了)十万火急! 问一下,笔记本上的软驱通用吗? maskedit的问题? delphi中报表的问题 关于常用的几种压缩编码? tomcat启动出错,请问什么原因? 一个小问题。回答就给分? 在JSP页面中,能否嵌入ActiveX控件 增加控件的成员变量对程序有什么影响?会使EXE变大吗? shr 是什么意思? 我想用delphi删除一文件夹下面的全部文件,我可以删除一条记录,但无法自动删除全部,数据,我该如何做??? 77分征收四个Delphi中buttons的bmp图标--顶张、下张、上张、末张! 有谁用C++Builder做过corba SQL Server编程求解!!!!! 请问如何测试C#代码的运行瓶颈以便进行优化 80端口是干什么用的 我快要疯了!有关最简单的mdb数据库连接也出问题 win2000 sever 的问题(高手请进) 请问什么地方有BCB的GIF插件下载?具体地址 谁帮助编写一个VCD(DAT)转MPEG格式的程序! 请问上面的V S.net (4cd)里边包括些什么东东?有Vc和msdn吗? oracle中可以保存多个blob字段吗??? 一个大大的问题。。。 在DOS批命令中,对于交互命令如何自动实现输入Y或N以及按任意键继续? 用8个棱长是1厘米的正方体拼成一个长方体,平成的长方体的表面积最大是多少? 马铃薯、甘薯不也有果实啊为什么说它不是果实? 有98名同学,小汽车可坐5人,面包车可坐9人,可以怎样派车?你能写出几种方案? 用10块棱长为1厘米的正方形体积木堆平成一个长方体,这个长方体的表面积最小是( ) 26.如图,有一个附有进水管和出水管的容器,每单位时间内进水、出水的量是一定的.设从某时刻开始的4分钟内只进水,不出水,在随后的8分钟内既进水又出水,得到时间(分)与容器内水量(升 有98名同学,小汽车可坐5人,面包车可坐9人,可以怎么派车?你能写出几种方案? 育才小学115人去秋游,怎样租车跟省钱?大客车坐40人 每辆1000元 小客车坐25人 每辆650元 请用表格解答表格里的内容是怎样算出来的要说 帮帮忙我把家底都掏出来了 一个长方体的棱长之和是80厘米,长8厘米,宽7厘米,表面积是多少,体积是多少 52个人外出游玩,共租了11辆车,正好坐满.轿车坐4人 面包车坐6人 有一桶水,用同样大小的瓶子去装.如果灌满后还有七分之一,如果灌满7瓶后还剩6升,这桶水原有多少升? 一个长方体,长8厘米,宽2厘米,它的总棱长、表面积、体积是多少? 有一个长方体的棱长和是76厘米,长是8厘米,高是5厘米,这个长方体的表面积是(),体积是() 花生出芽能吃吗?昨天买的花生今天就出芽了还能吃吗? 有150人去春游,可以租两种车:大客车限乘45人,每辆900元,小客车限乘30人,每辆700元,应该怎样租车合算 一个长方体的棱长之和76厘米,长方体长8厘米,宽6厘米,高是( )厘米,长方体的表面积是( )平方厘米,体积是( )立方厘米 有一桶水,用同样大小的瓶子去装.如果灌满8瓶后还剩七分之一,如果灌满七瓶后还剩6升,这桶水原有多少升要有过程 四年级282名师生去春游,每辆大客车限坐38人,每辆小客车限坐18人.怎样租车划算? 甲、乙两桶纯净水,甲桶有28kg水,若甲桶喝掉了四分之一,乙桶喝掉了五分之二后,剩下的水一样重.乙桶原有水多少千克?(带算式) 把3个完全一样的正方体平成一个长方体,这个长方体的表面积是350cm2,其中每个正方体的表面积是多少 地瓜长什么样子地瓜女是什么样子 有甲乙两瓶水,甲装水1kg,如果从乙倒入三分之一给甲,两瓶一样多,乙原有水多少kg?说得不错能不能用文字叙述,那样我会给你加分! (9)阅读信息,答题:※红旗小学有155人去秋游 ※大客车可以坐40人,每辆车租金1000元 ※(9)阅读信息,答题:※红旗小学有155人去秋游※大客车可以坐40人,每辆车租金1000元※小客车可以坐25 全世界最大的番薯都长在哪里 甲乙两桶水,甲桶用去四分之一,乙桶用去三分之一后,甲乙两桶剩下的比是3:2,已知原来甲桶比乙桶多15kg,原来甲桶有水()kg 把两个棱长5cm的正方体黏合成一个长方体这个长方体的表面积是()cm²体积是()cm³ 一个长方体的表面积是236平方厘米,它的长是8厘米,宽是6厘米,这个长方体的高是多少厘米? 在100位旅游者中,有75人懂法语,有83人懂英语,另有10人这两种语言都不懂,问又懂法语,又懂英语的人有多 两个棱长是5cm的正方体,粘合成一个长方体,这个长方体的表面积是多少 问有一桶水,连捅重900克,用去一半后还重500克,问这桶水重多少克? 100旅游者中,有75人懂法语,83人懂英语,另有10人这两种语言都不懂,既懂法语又懂英语的旅游者是多少人? 一桶水用同样大小的瓶去装,如果灌满8瓶后,桶内还剩6/7,如果灌满7瓶后,桶内还剩56千克,这通水有多少千克? 一桶水500升,另一桶水300升,如何取出两桶水的一半 在一批旅客中,有3/4的人懂法语,4/5的人懂英语,两种语言都懂的占13/20,另外有10人这两种语言都不懂,这批旅 客有多少人?尽量不要用方程! 把一个长、宽、高分别是5dm,3dm、2dm的长方体截成两个小长方体,这两个小长方体表面积之和最大是()平方分米 一桶水,倒出水的八分之五后,桶内还剩21千克.这个桶原有多少千克水? 一个鱼缸长10dm宽3dm高4dm,一条鱼放入后,水面高度由原来4dm升至4.012dm,请问鱼的体积是多少? 一个长方体,如果它的高减5cm,就成了一个正方体,这时表面积也就减少了120平方厘米,求这个长方体的体积 一桶水重17千克,倒出水的一半,这桶水重9千克,求桶重多少千克? 一桶水连桶共重20kg倒出1/3后,连桶还重14kg,桶重几kg? 一个长方体,高减少5cm,正好成为一个正方体,表面积减少120平方厘米,求原长方体的体积.会的就答. 有8人分别乘两辆小汽车赶往火车站人分别乘两辆小汽车赶往火车站,其中一辆小汽车在距离火车站15千米的地方出了故障,此时离火车停止检票时间还有42分,这时唯一可利用的交通工具只有一 学农基地种花生是白薯的16倍,现在已知道花生比白薯多105棵,问种花生多少棵白薯多少棵? 下面是一个展开图求围成长方体的表面积和体积长是7厘米、宽是5厘米、高是3厘米 把一个长方体的高缩短5CM后,就变成一个正方体,表面积比原来减少了120平方厘米原长方体的表面积是多少?不要用一元二次方程 某旅行团共7人,他们同时乘2辆小汽车(每辆车连司机在内共5人)赶往火车站,其中一辆在距离火车站10千米处出现了故障,此时离检票进站还有40分钟,这时唯一可用的只有另一辆小汽车,假设小 求下面长方体的表面积和体积,长2分之1,宽5分之1,高5分之1,要算式,递等式 一个长方体的长截去5cm后得到一个正方体,表面积减少120平方厘米.求原来长方体的体积是多少? 8人乘速度相同的两辆小汽车同时赶往火车站,每辆车乘4人(不包括司机).其中一辆车在距离火车站10km的地方出现故障,此时距停止检票的时间还有28分钟.这时惟一可利用的交通工具是另一 下图是一个长方体的表面展开图,根据条件,求出这个长方体的表面积和体积. 115人春游 设计最省钱的方案 大客车限坐40 人 每天租金1000元 小客车限坐25人 每天租金700元 8人分别乘两辆小汽车赶往火车站,其中一辆小汽车在距离火车站10千米的地方出了故障,此时离火车停止检票时间还有28分,这时唯一可以利用的交通工具只有一辆小汽车,连司机在内限乘5人,这 用两个完全一样的长方体平成一个大长方体,这个长方体的表面积最小是多少平方厘米?长方体的长6厘米,宽2厘米, 光华小学115人去春游,设计一种最省钱的方案.大客车限坐40名,租金1000元.小客车限坐25名,租金650元 某公司组织一次小组外出活动,8人分别乘两辆 小汽车赶往火车站,其中一辆汽车距离火车站 15km处出了故障.此时离火车停止检票时间还有42min,这时可以利用交通工具只有一辆小汽车,或者就步 把两个表面积是30平方厘米的正方体,平成一个长方体,这个长方体的表面积是多少?我急用.快 甘薯和马铃薯都富含淀粉,但甘薯吃起来比马铃薯甜,为探究其原因,某兴趣小组以甘薯和马铃薯块茎为材料,在不同温度、其他条件相同的情况下处理30min后,测定还原糖含量,结果表明马铃薯不 吃芋头长胖吗?食堂有做那种一片一片的切成山角型的芋头!好像是用糖做的 同学说是先把芋头稍微炸下然后再用糖汁浇上去的 我很喜欢吃芋头 而且感觉超好吃的 就吃了很多 是晚上啊 用三个长5厘米,宽3厘米,高2厘米的长方体平成一个表面积最大的长方体,这个长方体的表面积是多少 山芋和马铃薯能否同吃? 全世界最大的番薯长在哪里?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn