0

一段时间以来一直在寻找最好的方法,但没有答案。

我正在使用 Windows XP 和 Delphi 6。

我基本上有 2 个应用程序,我想要相同的源代码。唯一的区别是 2 应用程序查看不同的 SQL 服务器以获取它们的数据。SQL 服务器在 Delphi 启动时读取的 .ini 文件中指定。

我的问题是我希望能够从应用程序本身从一个应用程序切换到另一个应用程序(应用程序 1 切换到应用程序 2)。

我知道我可以在编译之前重命名应用程序,但我需要相同的源代码。编译后我也无法重命名 .exe 文件,因为 .ini 文件在运行时会查看此 .exe 名称。我试图从 .ini 文件中读取应用程序名称,但这同样不起作用。

任何帮助都会很棒。

4

3 回答 3

5

应该只有一个应用程序在运行时切换行为。

我将扩展应用程序以允许 .ini 文件设置被命令行参数覆盖。如果未指定参数,则从 .ini 文件中获取值。如果指定了参数,则它们优先于 .ini 文件。

于 2013-09-19T09:35:50.493 回答
0

如果您绝对必须坚持拥有两个独立的应用程序,那么有一个简单的解决方案。

假设创建两个单独的文件夹,APP1然后APP2将所有应用程序文件(EXE、INI 和应用程序所需的所有其他文件)复制到这两个文件夹。更改 INI 文件 的APP1指向Server1和 INI 文件APP2指向Server2

此解决方案假定 INI 文件位于应用程序文件夹结构中的某个位置,并且您的应用程序设置为从那里读取它。如果是这种情况,则无需更改任何其他内容。使用这种方法甚至可以让您同时运行多个应用程序。

于 2013-09-19T13:06:10.153 回答
0

这里有两个建议

A. 创建一个 MDI 应用程序。请参阅名为 MDIApp.dpr 的 delphi 示例。

您的 ChildMDI 窗口将是每一行的代码。当您创建 MDIchild 窗口时,请读取相应的 .ini 文件以初始化 MDICHild 窗口。这假设您将拥有一个主 MDIApp.ini,它会告诉您有多少行,并在其中定义从何处获取每行的 .ini 文件。所以在你的 .ini 文件中,如果你说你有 2 行,你会说

Lines=2
;Then have an iterator to read the paths/parameters of the .ini file 
; to initialize Line Window
IniFilePathForLine1=
IniFilePathForLine2=

使用子 Ini 文件初始化 MDIchild 窗口

B. 阅读正在运行的流程并将其放在前面

我看到您所描述的问题是所有行都将运行所有进程/应用程序。即 Line1 将为 Line1 和 Line2 运行应用程序。每个终端两个应用程序。我假设这些应用程序仅用于显示和配置,而真正的工作是在其他地方的单个应用程序中完成的。

使用类似的东西读取终端上运行的任务/进程。

如何从 Windows 任务管理器(应用程序选项卡)获取应用程序 + 从 Delphi 获取它们在 HDD 上的位置

过滤屏幕上显示的内容,以便仅显示您的应用程序然后将其放在前面

如何将我的申请放在首位?

于 2013-09-20T14:34:14.420 回答