Delphi中可执行程序的连接问题!!!(100分)

X

xsliu

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi中,我编制了如下过程,并用其调用带参数的可执行程序。
procedure RunProgram(ExeName: ShortString);
var
temp: array[0..255] of Char;
FName: PChar;
begin
FName := temp;
StrPCopy(FName, ExeName);
WinExec(FName, 1);
end;
例如:
begin
……
RunProgram(‘c:/MySoft/Test.exe p1 p2’);
……
end;
通常,这种方法是很有效的。但是,如果文件的路径过长,连接将失败。即使增大temp变量的尺寸也无济于事。这是为什么?该如何改进?是否有更好的连接方法?
 
具个失效的例子看看
 
将shortstring改成string看看。temp:array[0.65535] of char应该够长了吧!
 
非常感谢GuXl的回复!
我重新编写了几个测试程序再次测试,都成功了!只是,前几天我完成了一个较大软件
系统后,用InstallShield Express制作了安装程序。但软件安装后,当读取的数据路径
较长时,便出现这种问题。而将数据路径变短后,就没有问题了。至今,我也不知道问题
出在哪???
 
好像要注意的一点是:
对于 中间有空格的长文件名,会被当作两个参数
解决的方法是把它用双引号"括起来
如参数 c:/MySoft/Program Files/abc
会被当作两个参数 "c:/MySoft/Program", "Files/abc"
可写成 "c:/MySoft/Program Files/abc"

 
顶部