我把程序改为activeform的,现在遇到一个问题:程序需要调用一些文件,原来程序需要文件时指定路径就行了,现在改成activeform的形式,这些文件该怎么处理呢?

解决方案 »

  1.   

    可以一起打包进CAB当中。需要注册的文件,还需要手动修改.inf.
      

  2.   

    to hongqi162 
    这些文件放到哪的系统目录里?服务器?用户的机器?to unsigned
    打包放进cab中,那调用这些文件怎么办?访问路径是什么呢?
      

  3.   

    加到CAB之后,会自动随着下载到家客户端,此时系统会维护一个目录,这样程序运行的时候就能够运行了,如果是需要注册的就添加一个注册键到.inf当中即可。
      

  4.   

    这个路径你是不需要知道的,是一个临时路径,平常我们看到的就是"%windir%\Downloaded Program Files".
      

  5.   

    我就想访问这些需要的文件,不知道路径怎么能访问呢?而且这些文件变成了cab后缀的,也就是压缩后的,如何读取呢?
      

  6.   

    这个不是太容易,但是也不难,先要在应用程序当中找到当前模块(*.ocx),然后取得全路径,然后就可以得到了。
      

  7.   

    var
      iLen:DWORD;
      pName:array [0..max_path] of char;
      s:String;
    begin
      iLen := max_path;
      iLen := GetModuleFileName(GetModuleHandle('TestActiveForm.OCX'),pName,iLen);
      SetString(s,pName,iLen);
      ShowMessage(s);
    end;
      

  8.   

    我用上面的代码试了,网络访问时得到的路径是客户端ie的路径,也就是:C:\Program Files\Internet Explorer
    而所需文件并不在此路径下。我在c盘搜所需文件的名字,发现文件存放在C:\Documents and Settings\administrator\Local Settings\Temporary Internet Files目录下。如何对这个目录下的*.cab文件操作呢?
      

  9.   

    能够看到的路径,应该是"C:\WINDOWS\Downloaded Program Files"(这里的"C:\WINDOWS",即"%WINDIR%")
    "C:\Documents and Settings\administrator\Local Settings\Temporary Internet Files",这个路径是不对的,只是一个下载下来的.CAB文件的路径,而不是执行文件.OCX的路径。至于为什么得到的是"C:\Program Files\Internet   Explorer",这个我就不大清楚,我记得使用工具看到的,不是这个路径,我估计是GetModuleHandle失败,返回了0值,这样子的话,得到的就是IExplorer.exe的路径了。
      

  10.   

    我不知道你是如何测试的,我刚做了一个测试,完全没有问题我在ActiveForm当中添加了一个按钮,同时在ActiveForm的CAB包当中打了一个ini文件,按下按钮读取该配置文件当中的内容
    procedure TMyActiveX.Button1Click(Sender: TObject);
    var
      iLen:DWORD;
      pName:array [0..max_path] of char;
      s:String;
      Ini: TIniFile;
    begin
      iLen := max_path;
      iLen := GetModuleFileName(GetModuleHandle('Project2.ocx'),pName,iLen); //这里的Project2.ocx请使用实际的文件名替代之
      SetString(s,pName,iLen);
      S := ChangeFileExt(S,'.ini');//这里由于配置文件.ini与.ocx同名,所以只须修改扩展名。
      Ini := TIniFile.Create(S);
      try
        ShowMessage(Ini.ReadString('Test','Main','没取到'));
      finally
        Ini.Free;
      end;
    end;配置文件Project.ini当中的有一个节[Test]有一个"Main=测试成功",而程序代码当中写的是如果没有"读取成功",则返回默认值,"没取到"
      

  11.   

    当今企业系统开发领域已经全面進入了互联网开发时代,SOA技术浪潮演化到了RIA新阶段,各种企业业务系统都在追求最高的部署自动化和高度友好的用户界面。在这个强劲的势头推动下,各大公司都推出了自己的RIA解决方案,包括微软的Silver Light和Adobe的AIR。我们在此也推出了更加适合中国特色的RIA框架,CBX RIA,为广大网络应用开发者带来了福音,是新一代开发互联网应用的利器,欢迎资深人员了解这个产品:
    产品主页: http://www.PowerSOA.cn/
    产品页面Demo上可以直接领略CBX RIA企业开发框架的威力。
    服务器Excel文件生成 
    技术构架:Demo程序:
    服务器端Chart: