如何在 Delphi 中获取用户输入的文件或目录的正确文本大小写?
How can I get the correct text case of a user inputted file or directory in Delphi?
在我的 (Windows) 程序中,用户可以输入文本,该文本可以是文件或目录。
现在我想修复文本大小写,使输入文本与文件系统大小写匹配。例如,如果用户输入:
C:\PROGRAM FILES\FOO\BAR
并且目录存在这个文本大小写:
C:\Program Files\Foo\Bar
我想 return 它与后面的(正确的)文本大小写。
在 Delphi 中我该怎么做?我尝试使用 FindFirst
和 FindNext
,但我没有 TSearchRec
中的完整路径(当然我可以拆分字符串并为每个级别执行多个 FindFirst
,但一定有更好的方法)。
我使用 Delphi 10.4 如果它改变了什么。
使用 CreateFile()
打开 file/directory 的句柄,然后您可以使用:
-
GetFileInformationByHandleEx()
,设置FileInformationClass
参数为FileNameInfo
NtQueryInformationFile()
,设置FileInformationClass
参数为FileNameInformation
在我的 (Windows) 程序中,用户可以输入文本,该文本可以是文件或目录。
现在我想修复文本大小写,使输入文本与文件系统大小写匹配。例如,如果用户输入:
C:\PROGRAM FILES\FOO\BAR
并且目录存在这个文本大小写:
C:\Program Files\Foo\Bar
我想 return 它与后面的(正确的)文本大小写。
在 Delphi 中我该怎么做?我尝试使用 FindFirst
和 FindNext
,但我没有 TSearchRec
中的完整路径(当然我可以拆分字符串并为每个级别执行多个 FindFirst
,但一定有更好的方法)。
我使用 Delphi 10.4 如果它改变了什么。
使用 CreateFile()
打开 file/directory 的句柄,然后您可以使用:
GetFileInformationByHandleEx()
,设置FileInformationClass
参数为FileNameInfo
NtQueryInformationFile()
,设置FileInformationClass
参数为FileNameInformation