2011-08-10 8 views
6

System.pas के अनुसार, इसे True if compiled as console app के रूप में प्रलेखित किया गया है। System.pas में, वहाँ भी एक कामसिस्टम कब है ISConsole डेल्फी में सच है?

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

मैं जब किसी ऐप एक डेल्फी app से शुरू की है, ShellExecute का उपयोग कर एक अजीब समस्या है है, और फिर इसे इस कोड में चलाता है, (अप्रत्याशित) अपवाद

को ऊपर उठाने
if System.IsConsole then 
    raise Exception.Create(Msg) 

एप्लिकेशन Project/Options/Linking/Generate console application के साथ संकलित नहीं है। IsConsole को सत्य पर और क्या सेट कर सकता है?


ध्यान दें कि डेल्फी XE2 में, OSX अनुप्रयोगों इस चर का उपयोग नहीं कर सकते हैं यह हमेशा सच है के रूप में। QC Entry 98956 और Why Does My OSX FireMonkey App Think It Is a Console App ?

+0

'परियोजना/विकल्प/लिंकिंग/कंसोल एप्लिकेशन जेनरेट करें 'और' {$ APPTYPE CONSOLE}' दो अलग-अलग चीजें हैं। –

+1

आपका कोड इसे सेट कर सकता है! –

उत्तर

5

यह मिले देखें: निष्पादन dcc32.exe और डीपीआर/cfg फ़ाइल का उपयोग कर बनाया गया है, cfg एक लाइन

-cc 

जो एक सांत्वना आवेदन बनाता है शामिल हैं।

डेल्फी 200 एंटरप्राइज़ आईडीई Project/Options/Linking/Generate console application संवाद में यह सेटिंग नहीं दिखाता है। एप्लिकेशन को पुराने डेल्फी संस्करण से पोर्ट किया गया था और शायद कुछ वर्षों में कुछ गलत हो गया था।

+0

यह सटीक बात मेरे साथ एक बार हुई, लेकिन वह साल पहले थी। डेल्फी के एक एमएसबिल्ड सक्षम संस्करण से सीधे dcc32.exe को न आमंत्रित करने के कई कारण हैं, लेकिन यह शायद सबसे अच्छा ओबस्कुर हो सकता है। –

+0

@Warren dcc32 के साथ हल करना आसान है - सभी स्रोत फ़ाइलों को एक नई लक्ष्य निर्देशिका में कॉपी करें, लेकिन सीजीएफ के बिना, फिर स्क्रिप्ट फ़ाइल से सही सेटिंग्स के साथ कंपाइलर को बुलाएं। मुझे हमारी स्वचालित निर्माण प्रक्रिया में एमएसबिल्ड में माइग्रेट करने का कोई लाभ नहीं दिखता है, एमएसबिल्ड को कुछ अस्पष्ट [तैयारी] की आवश्यकता होती है (http://stackoverflow.com/questions/1821112/how-does-msbuild-find-the-delphi-search-path) एक बिल्ड सर्वर पर काम करने के लिए - लेकिन शायद यह समुदाय विकी हो सकता है;) – mjn

+0

यदि आप पोस्ट-बिल्ड चरणों का उपयोग करते हैं और कमांड लाइन dcc32 संकलित करते हैं, तो पोस्ट-बिल्ड चरण नहीं किए जाते हैं, है ना? –

संबंधित मुद्दे