好,第一个问题;应该相当简单地回答,但是作为一个初学者,我不确定该解决方案:
有没有一种方法可以显示使用SHGetSpecialFolderPath提取的整个文件路径-我想创建一个本质上是包含我想要的文件夹的子目录的表,并将其显示为:
C:\ Folder \ Folder2
C:\ Folder \ Folder3
C:\ Folder \ Folder4
那么,第一个查询是我将如何实现? (我不为它是否处于控制台模式而烦恼
或表单中,尽管我想在表单中使用ListBox会更合适?)
其次,我想知道是否可以对我的%AppData%文件夹执行上述操作-
C:\Users\...\AppData\Skype
C:\Users\...\AppData\Firefox
等,这可能吗?如果是这样,怎么办?
第三,最后-我似乎还记得我-将能够在Python中轻松地完成这种事情,因此使用Delphi编码调用Python脚本完全可行(我正在使用的软件通常使用Delphi脚本,所以我必须在使用它时自学(我知道自己陷入了深渊)-但是我可以在Delphi中编写某种程序,例如通过修改启动脚本来软件,并使其调用用Python编写的脚本,还是它们完全不兼容?
再说一次,如果有可能,我很高兴被告知如何做(因为我不知道!)
感谢您的阅读(如果您愿意,请做出贡献!)
最佳答案
在这里炮轰Python并没有任何收获。 Delphi可以轻松地完成您所需的所有工作,您只需要弄清楚如何制作魔咒即可。
看来您只是错误地调用了SHGetSpecialFolderPath
。这是我的方法:
type
TWin32PathBuffer = array [0..Windows.MAX_PATH-1] of char;
function GetSpecialFolderPath(const CSIDL: Integer): string;
var
Buffer: TWin32PathBuffer;
begin
Win32Check(SHGetSpecialFolderPath(0, @Buffer[0], CSIDL, False));
Result := Buffer;
end;
拼图的最后一部分是如何枚举子目录。在现代的Delphi中,您可以使用
TDirectory.GetDirectories
单元中的IOUtils
。如果您没有现代的Delphi,则必须调用FindFirst
,FindNext
等。在网络上至少有大量此类代码的示例。这似乎可以满足您的需求:http://delphi.about.com/od/delphitips2008/qt/subdirectories.htm