小弟学Delphi不久,费了好大劲用Delphi2006写了一个VCL For .Net Application的程序, 程序不大, 只有200KB,在自己机子上运行很好,结果兴冲冲地放到别人的机子上一试才发现根本就用不了,一运行就出错,超级郁闷 我想是不是别人的电脑上没有装.Net FramWork的原因,可是装了以后还是出现同样的错误我的程序比较简单,就引用了一个System.IO的文件, 也不知道为什么会这样,难道要在别人电脑上也装个Delphi2006才能用,请问各位大大,可不可以在Delphi的编绎过程中把要用的一些什么类库啊什么的都打进EXE文件里,文件大点没关系,只要放哪都能用就可以了,我在网上找了一下,有人说:选菜单里的 Project -> Options.. (Shift+Ctrl+F11) 
出现Project Options for Project1.exe窗口,在左边选 Packages  出现如下图的东西,这样修改:
1> 将Runtime packages里的[ ]Build with runtime packages钩上
2> 将不需要的包去掉就行了。(一般编写Win32的程序,只要rtl;vcl就行)可是我的Options里根本就没有Packages这个选项,只有:forms
application 
compiler 
compiler Messages
Linker
Directories/Conditionals
Debugger
  -Symbol Tables
  -Environment Block这些选项,有没有办法解决程序到了别人机子上就水土不服这个难题呢, 烦请各位大大指教, 小弟感激不尽.

解决方案 »

  1.   

    在菜单中有一个编译文件夹的选项? 哪个菜单, 是Project--Options--compiler 吗? 具体是哪一个选项啊,应该怎样选可以具体说下吗?
      

  2.   

    安装了Net   FramWork应该没有问题啊。
      

  3.   

    VCL   For   .Net   Application既然For .net了,客戶端安裝.net framework是必需的
      

  4.   

    而且我发现就是新建一个VCL.NET程序,什么都没有就一个窗口,按F9运行生成的EXE文件有1.2M, 这个文件无论拷哪都是可以用的, 然后再随意拖一个控件上去,按F9生成Exe文件后, 这是的EXE文件就只有11K了,这个EXE文件无论拷哪都是不能用的,无论对方装没装.NET Framework1.1,装.NET SDK都不行, 但是其它机子上如果装了Delphi2006就可以运行现在我知道只有在VCL for win32的Project里的Options里才有Packages这个选项, VCL for .NET的Project里是没有的难道没什么办法了吗, 让它生成的EXE文件大点就好了, .NET生成的EXE都只有几十上百K,但拷哪都不能用....5555555....
      

  5.   

    亏你还装的Delphi 2006。安装光盘里面有一个Delphi相关的Redist文件夹,下面的安装包包含了Delphi for .NET所有运行时的dll,需要在安装完.NET 1.1 Framework后安装。这样Delphi for .NET应用程序才可以正常运行。这个在光盘附带的deploy.html里面都写了。
      

  6.   

    我用的是5CD版本的Delphi2006, 昨天看了lextm的贴子,在CD1的目录下的确有一个DotNetRedist文件夹,里面有三个文件:dotnetfx.exe, NDP1.1sp1-KB867460-X86.exe,和 WindowsServer2003-KB867460-x86-ENU.exe前两个是DotNet Framework1.1的安装包和补丁,我在别人电脑上早就装过了, 但是解决不了问题, 后一个Wserver2003的补丁,无法装
      

  7.   

    倒是我在CD5里发现一个Demo文件夹, 里面是一些Borland提供的程序代码范例, 很奇怪的是, 我把那些范例程序的界面上的控件全都删掉, 只留下它最基本的Reference, 然后再把我原来的程序的控件和代码粘上去, 这个时候怎么编绎,EXE文件都有1.4M, (而我原来编绎的程序只有200K) 拷到别人的电脑上也全部能用了, 我对比了一下Project菜单里的Options里的内容,发现都是一样, 所以我觉得问题不是出在别人的电脑上,而是我的程序编绎出现了问题
      

  8.   

    我发现我用Delphi自己建的VCL For .Net Application 和 Delphi提供的范例主要有两个不同Borland CD5中提供的Demo中的Unit1.Pas中代码首中的代码是unit Unit1;interfaceuses
      Windows, Messages, SysUtils,system.io, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, ExtCtrls, XPMan;
    而程序生成的VCL的Unit1.Pas中的Use就不同unit Unit1;interfaceuses
      Windows, Messages,system.io, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel, Borland.Vcl.ComCtrls,
      Borland.Vcl.ExtCtrls;而且Project1.dpr中也有不同, Demo中的是program Project1;{%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.dll'}
    {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Data.dll'}
    {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Drawing.dll'}
    {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.XML.dll'}uses
      System.Reflection,
      System.Runtime.CompilerServices,
      SysUtils,
      Forms,
      Unit1 in 'Unit1.pas' {MainForm};而我以前的Project1.dpr中是这样的
    program JnuChouQian;{%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.dll'}
    {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Data.dll'}
    {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Drawing.dll'}
    {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.XML.dll'}
    {%DelphiDotNetAssemblyCompiler 'c:\program files\common files\borland shared\bds\shared assemblies\4.0\Borland.Vcl.dll'}
    {%DelphiDotNetAssemblyCompiler 'c:\program files\common files\borland shared\bds\shared assemblies\4.0\Borland.Delphi.dll'}
    {%DelphiDotNetAssemblyCompiler 'c:\program files\common files\borland shared\bds\shared assemblies\4.0\Borland.VclRtl.dll'}uses
      System.Reflection,
      System.Runtime.CompilerServices,
      System.Runtime.InteropServices,
      SysUtils,
      Forms,
      Unit1 in 'Unit1.pas' {Form1};差别不是很大,无非就是程序的Reference中有些不同, 但是一个Project中生成的EXE文件有1.4M,并且可以在别人的电脑上运行,而另一个编绎出来的程序就只有200K,拷别人机子上(装了.Net FrameWork1.1,但没装Delphi2006)一运行就出错, 为什么呢???
      

  9.   

    所以我现在用很笨的办法, 一个程序写好后,在编绎之前, 把References里的所有Borland开头的DLL文件全部Remove From Project, 然后再编绎, 这样生成的程序全都在1M以上, 而且可以在别人的机子上运行, 但是我不知道为什么会这样, 而且每次我只要再往界面上添加任何一个控件, Borland.Vcl.dll、 Borland.Delphi.dll、 Borland.VclRtl.dll三个文件又会被加入Reference中去, 生成的文件有只有200来k了,再删后编绎又是1M以上的EXE文件, 我无语小弟不是学计算机的,只是因为兴趣, 才学Delphi不久,所以请老鸟们能够带带, 不胜感激
      

  10.   

    我用的是5CD版本的Delphi2006,   昨天看了lextm的贴子,在CD1的目录下的确有一个DotNetRedist文件夹,里面有三个文件:dotnetfx.exe,   NDP1.1sp1-KB867460-X86.exe,和   WindowsServer2003-KB867460-x86-ENU.exe前两个是DotNet   Framework1.1的安装包和补丁,我在别人电脑上早就装过了,   但是解决不了问题,   后一个Wserver2003的补丁,无法装
    ===============
    这个是.NET的发布包,并不是我说的那一个。你看过deploy.html没?我这边已经在用RAD Studio 2007了,Delphi 2006早就不用了。
      

  11.   

    现在解决了吗?我用DELPHI2007也碰到了同样的问题!怎么办的