调用 Winexec() 时如何使用变量作参数?(100分)

  • 主题发起人 主题发起人 liukt
  • 开始时间 开始时间
L

liukt

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大仙:<br>&nbsp; &nbsp; 我有一个比较大的数据库,想在程序中调用Winrar压缩软件来做备份。为<br>了能随意选择备份目标磁盘,想使用一个串变量写进命令行参数中,可程序就是<br>不运行,请高手指点为盼!程序如下:<br>&nbsp; &nbsp;Var<br>&nbsp; &nbsp; &nbsp;VarS_D:string;<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp;VarS_D:=edit1.text; //得到目标磁盘盘符 <br>&nbsp; &nbsp; &nbsp;winexec('/winrar &nbsp;a ' +VarS_D +':akk.rar *.db',sw_normal);<br>&nbsp; &nbsp;end;<br>&nbsp; &nbsp; 编译不能通过,显示:Incompatible types:'string'and 'pchar'.<br>&nbsp; &nbsp; 如果去掉变量VarS_D, 直接写成 C:akk.rar能够运行。<br>&nbsp; &nbsp; 是因为Pascal字符串格式吗?该如何改?<br><br>
 
改成winexec(pchar('/winrar &nbsp;a ' +VarS_D +':akk.rar *.db'),sw_normal);<br>就行了
 
这样定义一下就行了<br>var VarS_D:array[0..100]of char;
 
当然,winexec后面接的是Pchar类型,你的程序应该这么修改:<br>...<br>var<br>&nbsp; Cmd : Array[1..255] of char;<br>&nbsp; <br>begin<br>&nbsp; VarS_D := Edit1.text;<br>&nbsp; VarS_d := '/winrar &nbsp;a ' +VarS_D +':akk.rar *.db';<br>&nbsp; StrPCopy(Cmd, VarS_D);<br>&nbsp; Winexec(Cmd, sw_normal);<br>end &nbsp;<br>如果路径很长,中间包含空格等,建议写成<br>如下格式:<br>&nbsp; if Pos(' ', varS_D) &lt;&gt; 0 then<br>&nbsp; &nbsp; StrPCopy(Cmd, '"'+VarS_D+'"')<br>&nbsp; else StrPCopy(Cmd, VarS_D);<br>&nbsp;
 
附注: 既然是命令行使用rar,还不如用Dos下的rar.exe.
 
唉, 这种问题, 来晚了:-(<br>pchar(string)可以转换string--&gt;pchar<br>strpas(pchar)可以转换pchar--&gt;string<br>
 
晚了。:-(
 
又是pchar &amp; string, @_@
 
多谢各位指教!<br>Tomm大师的答案可以正常运行!<br>其它几位的答案不能运行,仍存在同样问题,请试一下。但dick大师<br>的 if...else 思路很好,我已写入程序中。<br>现在程序已经调试好了!再次向各位致谢!<br>这是我见过的最棒的BBS!
 
后退
顶部