我是这样写的ShellExecute(handle,'open','HA_Foxit PDF Reader 1.1.0042X_tracky\PDFReader.exe','文本库\C0000600.pdf',nil,SW_NORMAL);
这样可以打开,可是文本库里面有很多PDF文件,我是要设一个变量来表示文本库下任一个PDF文件,
我先设一个变量P,p:='文本库\C0000600.pdf'然后ShellExecute(handle,'open','HA_Foxit PDF Reader 1.1.0042X_tracky\PDFReader.exe',p,nil,SW_NORMAL);
这样程序就报错了,什么missing operator or semicolon,是不是我用变量的格式不对啊?请教一下!

解决方案 »

  1.   

    ShellExecute(Handle,'Open','COM本质论.pdf',nil,'D:\book',SW_NORMAL);
    测试成功
      

  2.   

    'COM本质论.pdf',单个文件我也可以啊,可是我有一系列的PDF文件,01.pdf02.pdf,......,一定要变量表示啊~~~求救~~`
      

  3.   

    var
      p:string;
      Path:string;
    begin
      P:='COM本质论.pdf';
      Path:='D:\book';
      ShellExecute(Handle,'Open',PChar(P),nil,PChar(Path),SW_NORMAL);
    end;
      

  4.   

    var
      FileName:string;
    begin
      FileName:='D:\book\COM本质论.pdf';
      ShellExecute(Handle,'Open',PChar(FileName),nil,nil,SW_NORMAL);
    end;
      

  5.   

    确实可以,非常感谢solokey(永远的菜鸟-抢分,准备当猩猩) .可是原来我的也差不多怎么就不行了呢?
    这是在我本机上用的,如果在别人机子上上,怎么获得他机子上的Adobe Reader路径呢?嘻嘻,再问一下!
      

  6.   

    用这个前提是要安装了Adobe Reader才可以..
      

  7.   

    需要预先安装Adobe Reader才可以浏览PDF文件.这个你应该晓得.如果使用你程序的机器上也安装了Adobe Reader,直接这样使用ShellExecute是没有问题..如果没有安装..是打不开d...
    或者是使用Adobe Reader的ActiveX控件.在自己的程序中打开这些文件.这个的前提是要在使用的机器上注册这个控件.
      

  8.   

    喔,知道了,谢了,我还以为一定要指明程序路径呢.还有白痴问题如下,请赐教:
         edit2.Text :=listview1.Items[i].Caption ;
         FileName:='文本库\' + edit2.Text +'.pdf';
    这样程序不掉我啊,没找到文件名. 文本库是和程序同目录的,我想用相对路径打开PDF文件,ListView查询出来的是PDF文件名,没有后缀,所以我加了.pdf,可是不行,估计又是格式不对了,再麻烦你一下.
      

  9.   

    edit2.Text :=listview1.Items[i].Caption ;
      FileName:='文本库\' + edit2.Text +'.pdf';
      
     //建议写成这样
      ExeDir:=ExtractFilePath(Applcation.ExeName);
      FileName:=ExeDir+'文本库'+Edit2.Text+'.PDF';
      

  10.   

    在遇到不确定的String的时候.Showmessage(str)一下,这样就可以发现问题了
      

  11.   

    我写错了一点...FileName:=ExeDir+'文本库\'+Edit2.Text+'.PDF';
    少了'\'
      

  12.   

    Applcation.ExeName,'.'后面是不是要改成我程序的名字啊?
      

  13.   

    我倒..我又打错了.是Application.ExeName,不需要改.你Showmessage(Exedir);看一下就知道了
      

  14.   

    什么Undelcared identifier:'applcation'~~~~又出错啊,真是~~~做一点小小的东西老是错.
      

  15.   

    missing operator or semicolon!!!!
    Why?这下我没辄了,前面按你说的都没错啊,可是运行到ShellExecute时光标就停在那,然后报错.
    这可能是什么原因呢?