好的,第一个问题;应该相当简单地回答,但作为一个初学者程序员,我不确定解决方案:
- 有没有办法显示使用 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 中,您可以使用IOUtils
单元中的TDirectory.GetDirectories
。如果您没有现代的 Delphi,那么您必须调用 FindFirst
、FindNext
等。在网络上至少可以找到无数此代码的示例。这似乎可以满足您的需要:http://delphi.about.com/od/delphitips2008/qt/subdirectories.htm
关于python - Delphi 和 Python - 一些简短的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142855/