2011-08-10 9 views
6

Według System.pas jest to udokumentowane jako True if compiled as console app. W System.pas, jest również przypisanieKiedy system.IsConsole jest prawdziwy w Delphi?

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

że problem dziwne gdy aplikacja jest uruchomiona z aplikacji Delphi pomocą ShellExecute, a następnie biegnie w tym kodzie, podnosząc (nieoczekiwane) wyjątek

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

Wniosek nie został skompilowany z Project/Options/Linking/Generate console application. Co jeszcze może ustawić IsConsole na true?


Należy zauważyć, że w Delphi XE2aplikacje OSX nie można używać tej zmiennej jak zawsze jest prawdą. Zobacz QC Entry 98956 i Why Does My OSX FireMonkey App Think It Is a Console App ?

+0

'Projekt/Opcje/Łączenie/Generuj aplikację konsoli' i' {$ APLIKACJA APLIKACJI} to dwie osobne rzeczy. –

+1

Twój kod może to ustawiać! –

Odpowiedz

5

Znaleziono go: plik został utworzony za pomocą dcc32.exe i pliku DPR/cfg, CFG zawiera linię

-cc 

który tworzy aplikację konsoli.

Identyfikator Enterprise IDE firmy Delphi 2009 nie wyświetla tego ustawienia w oknie dialogowym Project/Options/Linking/Generate console application. Aplikacja została przeniesiona ze starszej wersji Delphi i może coś poszło nie tak z biegiem lat.

+0

Dokładnie to mi się przydarzyło, ale to było lata temu. Istnieje wiele powodów, dla których nie należy wywoływać programu dcc32.exe bezpośrednio z wersji Delphi obsługującej pliki MSbuild, ale może to być NAJBARDZIEJ OBSŁUDZE. –

+0

@Warren łatwo jest rozwiązać z dcc32 - skopiuj wszystkie pliki źródłowe do nowego katalogu docelowego, ale bez cgf, następnie wywołaj kompilator z poprawnymi ustawieniami z pliku skryptu. Nie widzę żadnych korzyści z migracji do msbuild w naszym procesie zautomatyzowanej kompilacji, msbuild wymaga jakiegoś niejasnego [przygotowania] (http://stackoverflow.com/questions/1821112/how-does-msbuild-find-the-delphi-search-path) do pracy na serwerze kompilacji - ale może to może być wiki społecznościowe;) – mjn

+0

Jeśli używasz postów po kompilacji i wykonujesz komendę dcc32 compile, kroki po instalacji nie zostaną wykonane, prawda? –

Powiązane problemy