关于运行外部程序的问题

fstao 2000-01-11 09:30:00
delphi的问题:
假如用这个函数:“WinExec('c:\abc\a\a.exe',1)”,这样做的结果是,“a.exe”文件一定
要在c盘,如果改变了路径,那么“WinExec('c:\abc\a.exe',1)”就要改变其它路径。我这样写:
var
DoExec:String;
begin
doExec:=ExtractFilePath(Application.ExeName)+'\a\a.exe';
WinExec(DoExec,1);
end;

运行过程出现错误:“[Error] Main.pas(110): Incompatible types: 'String' and 'PChar'”,
如何修改上面的语句?
...全文
246 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger 2000-01-12
  • 打赏
  • 举报
回复
fstao, 这个问题早已解决, 希望你能把分数分掉.
也可以让我们少一个带解决的问题!!!
caili 2000-01-12
  • 打赏
  • 举报
回复
WinExec已经不再推荐使用了,最好使用CreateProcess。当然,为了解决类型不匹配,可以简单地使用PChar()来转换。
Nico 2000-01-12
  • 打赏
  • 举报
回复
对于常量字符串,DELPHI能够根据需要自动转换成PChar或String类型,但是如果你在字符串操作的过程中出现了STRING类型变量,那么处理之后的东西就是STRING类型了,具体你可以看一下M.C的《DELPHI4从入门到精通》
supershan 2000-01-12
  • 打赏
  • 举报
回复
tiger说的对!
zyb 2000-01-11
  • 打赏
  • 举报
回复
利用Pchar()将string类型转换一下即可.
tiger 2000-01-11
  • 打赏
  • 举报
回复
ShellExecute和winexec是两码事
渤海海峡 2000-01-11
  • 打赏
  • 举报
回复
我用的一个函数:

function ExecuteFile(const FileName, Params, DefaultDir: string;
ShowCmd: Integer): THandle;
var
zFileName, zParams, zDir: array[0..79] of Char;
begin
Result := ShellExecute(Application.MainForm.Handle, nil,
StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),
StrPCopy(zDir, DefaultDir), ShowCmd);
end;

运行外部程序计算器:
exepath:= ExtractFilePath(application.ExeName);
ExecuteFile('Calc.exe','',exepath,SW_Show);


运行日期设置:
if LMDSysInfo1.Platform='Windows 95' then
ExecuteFile(lmdsysinfo1.WinPath+'\control.exe','timedate.cpl',lmdsysinfo1.WinPath,SW_Show) else
ExecuteFile(lmdsysinfo1.WinsysPath+'\control.exe','timedate.cpl',lmdsysinfo1.WinPath,SW_Show);
tiger 2000-01-11
  • 打赏
  • 举报
回复
WinExec(PChar(DoExec),1);
kola 2000-01-11
  • 打赏
  • 举报
回复
应该这样写:
var
DoExec:String;
PDoExec:Array [0..255] of char;
begin
doExec:=ExtractFilePath(Application.ExeName)+'\a\a.exe';
StrpCopy(PDoExec,Doexec);
WinExec(PDoExec,1);
end;
Firing_Sky 2000-01-11
  • 打赏
  • 举报
回复
建议使用ShellExecute

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧