gpt4 book ai didi

delphi - 如果父应用程序由其他目录中的应用程序启动,则文件I/O无法正常工作

转载 作者:行者123 更新时间:2023-12-03 18:14:11 25 4
gpt4 key购买 nike

好的-这是一个非常奇怪的情况,我在尝试深入研究时遇到了问题。

我有2个应用程序(仅说app1和app2)和一个文本文件(txt1)。
App1和txt1驻留在同一目录中(例如C:\ APP),但是app2驻留在app1的目录(C:\ APP \ SUB)的子目录中。

App1启动时,它将使用标准从txt1中读取一些内容:

AssignFile(txtFile,'txt1.txt');
Reset(txtFile);


没问题。
但是,当App2通过shellexecute命令启动App1时:

shellexecute(0,'open','..\app1.exe',nil,nil,SW_SHOW);


App1似乎看不到文本文件。我收到答复说“找不到指定的文件”。奇。

我通过添加以下内容进行调试:

if not fileexists('txt1.txt') then
showMessage(ExtractFilePath(application.exename));


并且这显示了app1(本身)的正确文件路径,那么,为什么“重置”命令会产生“找不到...”错误?我想知道是否使用shellexecute使应用程序以某种方式认为它是从子目录而不是它所在的实际目录中执行的?

我知道最简单的解决方案是将文件路径简单地添加到我的“ app1”正在打开的每个文件的开头(我尝试过,是的,它确实可以正常工作),但是,实际上,主要有数百个文件应用程序通过类似的方法(它们是txt,ini或dll)进行访问,即基于与应用程序位于同一目录中的事实来分配文件,因此,未设置完全限定的文件路径,因此更改(并维护)它们目前,我们还不想做所有事情。

有人看过这样的东西吗?除了ShellExecute之外,让我有一种更好的方法让App2启动App1吗?没有参数或任何要传递给App1的东西,我只需要启动它即可。

感谢您的宝贵时间-如果您需要其他任何帮助,请告诉我!

最佳答案

lpDirectory函数的ShellExecute可选参数允许客户端为要执行的程序指定工作目录。

关于delphi - 如果父应用程序由其他目录中的应用程序启动,则文件I/O无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com