2011-08-10 104 views
6

根据System.pas,它记录为True if compiled as console app。在System.pas,还有一个任务什么时候在Delphi中System.IsConsole为true?

{$IFDEF LINUX} 
    IsConsole := True; 
... 

我在那里一个应用程序从Delphi应用程序启动,使用的ShellExecute一个奇怪的问题,然后运行到这个代码,提高(意外)异常

if System.IsConsole then 
    raise Exception.Create(Msg) 

该应用程序未与Project/Options/Linking/Generate console application编译。还有什么可以将IsConsole设置为true?


注意,在德尔福XE2,OSX的应用程序不能因为它始终是真实的使用这个变量。见QC Entry 98956Why Does My OSX FireMonkey App Think It Is a Console App ?

+0

'Project/Options/Linking/Generate console application'和'{$ APPTYPE CONSOLE}'是两个单独的东西。 –

+1

你的代码可以设置它! –

回答

5

发现:一直使用dcc32.exe和DPR/CFG文件中创建可执行文件时,CFG包含一行

-cc 

它创建了一个控制台应用程序。

Delphi 2009 Enterprise IDE在Project/Options/Linking/Generate console application对话框中不显示此设置。该应用程序是从一个较旧的Delphi版本移植过来的,并且可能多年来出现了问题。

+0

这确切的事情发生在我身上一次,但那是几年前。有很多原因不能直接从msbuild的Delphi版本中调用dcc32.exe,但这可能是最具有挑战性的一个。 –

+0

@Warren使用dcc32很容易解决 - 将所有源文件复制到新的目标目录,但没有cgf,然后使用脚本文件中的正确设置调用编译器。我发现在我们的自动构建过程中没有迁移到msbuild的优点,msbuild需要一些模糊的[准备](http://stackoverflow.com/questions/1821112/how-does-msbuild-find-the-delphi-search-path)在构建服务器上工作 - 但也许这可能是社区wiki;) – mjn

+0

如果使用构建后步骤并执行命令行dcc32编译,则构建后步骤无法完成,对吧? –

相关问题