同一应用程序的两个不同版本

Wel*_*Wel 4 delphi delphi-2010 delphi-ide delphi-xe3

我有一个用Delphi 2010制作的软件,它需要在两个不同的部门中使用,它们共享相同的数据和相同的UI,除了隐藏/添加按钮,表单和网格列之类的一些更改.因此,需要具有相同应用程序的两个版本.

在应用程序启动时无法提示用户选择我必须使用单独的EXE的部门.

在Delphi 2010或XE3(将在以后升级)中执行此操作的最佳方法(概念)是什么?是否可以使用不同的exe名称进行编译?

Rem*_*mko 9

听起来像维护噩梦,所以请考虑其他解决方案,如评论中建议的,如登录或设置文件.

如果你想制作单独的exe,那么你可以使用编译器定义并基于代码中的define in/exclude部分:

添加新配置:

在此输入图像描述

将配置添加到配置中: 在此输入图像描述

在代码中使用define:

{$IFNDEF ADVANCED}
   // Remove Event Handler
   Button1.OnClick := nil;
   // Hide Button
   Button1.Visible := False;
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)


kob*_*bik 9

我可以想到几个解决方案:

  • 在发布应用程序中提供INI文件(或在客户端计算机上创建注册表项)以指定/确定应用程序所服务的部门.然后通过TIniFile或读取值TRegistry.例如一个INI文件(MyApp.ini):

    [选项]
    部门=销售

  • 创建程序的快捷方式并使用参数例如"MyApp.exe /sales""MyApp.exe /support"(ParamStr(1)将告诉您它是否/sales/support部门相关)

  • 使用2个单独的项目文件,并在每个项目选项中定义您的Conditionals指令,SALES或者SUPPORT在您的代码中使用{$IFDEF SALES}...{$ENDIF}- 使用此选项,完全重建所有项目单元非常重要.(我有一个预构建脚本,在编译之前删除项目*.dcu文件).