发布网友 发布时间:2024-10-24 15:12
共4个回答
热心网友 时间:2024-11-08 09:04
joyhero(JoyHero)朋友,能不能告诉我为什么?另外能推荐点书看看吗?我先给一半分,OK?热心网友 时间:2024-11-08 09:08
WinExec(PChar(strCmd),SW_HIDE);热心网友 时间:2024-11-08 09:11
我在使用WinApi函数WinExec()时,出了点问题:我在FORM1上添加民一些必要的控件后,写了下列代码:procedure TForm1.Button1Click(Sender: TObject);var strCmd,strDir:string;beginstrDir:=directorylistbox1.Directory;strCmd:='subst a: '+strdir;Windows.WinExec(strCmd,sw_hide);end;我的意思是将对软盘的访问改向到对硬盘上某个文件夹的访问,如:subst a: d:\example但我在程序运行期间要不断变换文件夹,所以想用一个变量代替,但出现了错误。编译时的错误信息为:[Error]Unit1.pas(51):Incompatibletypes:'String' and 'PChar'[Fatal Error]Project1.dpr(5):Could not complie used unit 'Unit1.pas'如果我把Windows.WinExec(strCmd,sw_hide);中的变量strCmd换成一个字符串常量就没问题,请问各位怎么办?一旦解决,立即送分。热心网友 时间:2024-11-08 09:04
看看WinExec的声明,第一个参数要求一个PChar类型,因此你传入一个String类型会报告错误,而直接用一个字符串常量Delphi会认为你传的是一个PChar常量,因此没有问题。而PChar(strCmd)是将strCmd强制转换为一个PChar类型,另外,PChar和String之间是可以直接赋值的,如:var p:PChar; s:string;begin s:='subst a: c:\windows'; p:=s; WinExec(p,SW_HIDE);end;