【发布时间】:2019-11-07 03:07:03
【问题描述】:
在WizardForm.InstallingPage 上,WizardForm.FilenameLabel 自动截断包含文件路径的字符串,以包括开头的驱动器号,后跟最大可显示路径,从路径的顶层截断,以适应标签的大小,以便始终显示文件名,例如C:\...\LongFilePathNameWithMultipleSubDirectories\Filename.ext。
我查看了Length、Pos、Copy 和ExtractFileDrive 字符串函数,但考虑到路径和文件名的可能性几乎是无限的,因为用户可以选择任何安装路径希望,我正在努力寻找一种方法来显示路径的最大可能长度,而不会截断文件名。
我想我需要一个像Pos 这样的函数,它返回匹配的数量和它找到的每个\ 的索引,这意味着我可以在每个索引之间使用Length 来确定@987654332@ 的来源,但我找不到任何方法。
【问题讨论】:
-
所以您想要在任何
...截断之前路径中的最大字符数? - 这是一件非常奇怪的事情 - 您将需要考虑正在使用的特定字体,下载 inno 源代码并查看 cmnfunc.pas 中的 MinimizePathName() 以了解它如何与 GetTextWidth() 一起使用。跨度> -
我基本上想模拟 Inno Setup 在提取文件时对
FilenameLabel显示所做的操作。因此,如果C:\First Folder\Second Folder\Third Folder\Filename.ext太长而无法容纳FilenameLabel,那么它将酌情截断如下C:\...\Second Folder\Third Folder\Filename.ext或C:\...\Third Folder\Filename.ext以适应,但也显示可能的最大路径量。 -
这正是我需要的功能。我不知道我是如何在文档中错过它的。如果您想将其添加为答案,我会接受。