2011-06-01 24 views
5

मेरे पास मेरी परियोजना में एक xyz.pas फ़ाइल संदर्भ है। लेकिन वह फाइल मेरे साथ नहीं है। मुझे xyz.dcu और xyz.pob फ़ाइल की xyz.das फ़ाइल है। जब मैंने प्रोजेक्ट को संकलित करने का प्रयास किया तो मुझे त्रुटि मिली "xyz.dcu नहीं मिला"। इसलिए मैंने खोज पथ में xyz.dcu का पथ शामिल किया है। अब मुझे त्रुटि मिल रही है "xyz.dfm नहीं मिला"।डेल्फी डीएफएम नहीं मिला

कृपया मुझे समाधान का सुझाव दें। क्या प्रोजेक्ट को केवल .dcu और .obj फ़ाइलों के साथ संकलित करना संभव है?

अग्रिम धन्यवाद। सादर, नरेन

उत्तर

1

DFM-फ़ाइलें एक (माना) कृपया "दृश्य" पहलुओं (नियंत्रण, घटक, गुण, दृश्यों, डेटा ...) पकड़ो। यदि पीएएस-फाइल (या संकलित डीसीयू-फाइल) को डीएफएम की आवश्यकता है, तो आपको यह होना होगा, या आपको यह त्रुटि मिल जाएगी। मुझे लगता है कि डीएफएम होने की तुलना में कोई दूसरा रास्ता नहीं है।

सुधार (नीचे के रूप में लिखा है, खेद है!): यदि आप केवल DCU-फ़ाइल के साथ संकलन कर सकते हैं अगर आप पीए-फ़ाइल को हटाने और केवल DCU-फ़ाइल प्रदान करते हैं। इस मामले में डीसीयू-फाइल को उसी कंपाइलर-संस्करण के साथ संकलित किया जाना चाहिए जिसे ऐप में जोड़ा जाना चाहिए, क्योंकि संकलक डीसीयू को पुन: संकलित नहीं कर सकता है।

+0

ठीक है। धन्यवाद एंड्रियास। – naren

5

मुझे आशा है कि आपने अपना काम खो दिया नहीं है।
पीए + DFM => DCU
DCU + आरईएस => EXE
अधिक डेल्फी फ़ाइलों के बारे में इस उत्तर के अंत में:

सरलीकृत, डेल्फी इस तरह काम करता है।

यदि आपके पास केवल डीसीयू फ़ाइल है तो आप प्रोजेक्ट को संकलित कर सकते हैं। सबसे पहले, अपने फ़ोल्डर से पीएएस फ़ाइल को हटा दें अन्यथा डेल्फी इसे पुन: संकलित करने का प्रयास करेगा (और इसे पुन: संकलित करने के लिए, इसे डीएफएम फ़ाइल की आवश्यकता है)।
मुझे नहीं लगता कि ओबीजे फ़ाइल आपके लिए किसी भी उपयोग का होगा।


डीएफएम फ़ाइल आपके प्रोजेक्ट के लिए बहुत महत्वपूर्ण है लेकिन अभी तक महत्वपूर्ण नहीं है। यदि आपको गहरी आवश्यकता है, तो आप अभी भी इसके बिना आगे बढ़ सकते हैं क्योंकि इसे पीएएस फ़ाइल में आपके पास मौजूद जानकारी के आधार पर मैन्युअल रूप से पुनर्निर्मित किया जा सकता है और जिस तरह से एप्लिकेशन के जीयूआई दिखता है (यदि आपने इसे कभी देखा है)।

बस एक नया रूप बनाने और उसके बाद प्रपत्र की घोषणा के लिए अपने मूल पीए फ़ाइल के शीर्ष पर देखें:

यहाँ चाल (कुछ काम शामिल है) है। यह इस तरह लग सकता है:

TYPE 
    TYourForm = class(TForm) 
    xLabel: TLabel; 
    yButton: TButton; 
    etc 
    etc 
    end; 

फिर अपने नए रूप के लिए वापस उन सभी नियंत्रण रख सकते हैं और उन्हें वास्तव में नाम के रूप में वे (xLabel, yButton, आदि) पीए फ़ाइल में नामित कर रहे हैं। उन्हें मूल जीयूआई जैसा दिखने के लिए व्यवस्थित करें। पूर्ण होने पर, अपनी मूल पीएएस फ़ाइल के साथ नई बनाई गई पीएएस फ़ाइल को प्रतिस्थापित करें। महत्वपूर्ण: डीएफएम और पीएएस फ़ाइल का नाम मेल खाना चाहिए। संकलित करें और आप कर चुके हैं! पुनर्निर्मित जीयूआई मूल रूप से बिल्कुल नहीं दिख सकता है, लेकिन इसे करना चाहिए।

संकेत:
ऐसे उपकरण हैं जो डीसीयू/EXE से डीएफएम फ़ाइल निकाल सकते हैं।
यहां उनमें से कुछ हैं: www.delphi2.software.informer.com/download-delphi-extract-dfm
इससे आपको बहुत मदद मिलेगी!


.PAS - डेल्फी स्रोत फ़ाइल
पीए स्रोत नियंत्रण में संग्रहित किया जाना चाहिए
डेल्फी में, पीए फ़ाइलें हमेशा या तो एक इकाई या एक फार्म के लिए स्रोत कोड है। यूनिट स्रोत फ़ाइलों में एक एप्लिकेशन में अधिकांश कोड होते हैं। इकाई में फॉर्म की घटनाओं या उसके घटकों से जुड़ी किसी भी ईवेंट हैंडलर के लिए स्रोत कोड होता है। हम डेल्फी के कोड संपादक का उपयोग कर .pas फ़ाइलों को संपादित कर सकते हैं। .pas फ़ाइलों को हटाएं मत।

डीसीयू - डेल्फी संकलित इकाई
एक संकलित इकाई (.pas) फ़ाइल। डिफ़ॉल्ट रूप से प्रत्येक इकाई का संकलित संस्करण यूनिट फ़ाइल के समान नाम के साथ एक अलग बाइनरी-प्रारूप फ़ाइल में संग्रहीत होता है, लेकिन एक्सटेंशन के साथ। डीसीयू (डेल्फी संकलित इकाई)। उदाहरण के लिए unit1.dcu में unit1.pas फ़ाइल में घोषित कोड और डेटा शामिल है। जब आप किसी प्रोजेक्ट का पुनर्निर्माण करते हैं, तो अलग-अलग इकाइयों को फिर से संकलित नहीं किया जाता है जब तक उनके स्रोत (पीएएस) फ़ाइलों को अंतिम संकलन के बाद बदल दिया नहीं जाता है, या उनकी डीसीयू फाइलें नहीं मिल पाती हैं। सुरक्षित रूप से .dcu फ़ाइल को हटाएं क्योंकि जब आप एप्लिकेशन संकलित करते हैं तो डेल्फी इसे पुन: प्रयास करता है।

.DFM - डेल्फी फार्म
DFM स्रोत नियंत्रण
इन फ़ाइलों को हमेशा .pas फ़ाइलों के साथ जोड़ा जाता में संग्रहित किया जाना चाहिए। डीएफएम फ़ाइल में एक फॉर्म में निहित वस्तुओं के विवरण (गुण) होते हैं। इसे फ़ॉर्म पर राइट क्लिक करके टेक्स्ट के रूप में देखा जा सकता है और पॉप-अप मेनू से टेक्स्ट के रूप में देखने का चयन किया जा सकता है। डेल्फी .dfm फ़ाइलों में समाप्त .exe कोड फ़ाइल में जानकारी कॉपी करता है। इस फ़ाइल को बदलने में सावधानी बरतनी चाहिए क्योंकि इसमें परिवर्तन आईडीई को फॉर्म लोड करने में सक्षम होने से रोक सकता है। फॉर्म फ़ाइलों को या तो बाइनरी या टेक्स्ट प्रारूप में सहेजा जा सकता है। पर्यावरण विकल्प संवाद आपको यह इंगित करने देता है कि आप किस प्रारूप को नव निर्मित रूपों के लिए उपयोग करना चाहते हैं। .dfm फ़ाइलों को न हटाएं।

स्रोत: delphi.about.com/od/beginners/a/aa032800a.htm

+0

हाय, मदद के लिए बहुत बहुत धन्यवाद। यू ने मुझे परियोजना बनाने के लिए कुछ उम्मीद दी। किसी ने मेरी परियोजना से xyz.pas और xyz.dfm फ़ाइल को हटा दिया है। और अब मैं केवल xyz.dcu की प्रतिलिपि बना रहा हूँ। अब xyz.pas नहीं है, मुझे त्रुटि क्यों मिल रही है "xyz.dfm नहीं मिला"? परियोजना को संकलित करने के लिए समाधान का सुझाव दें। बहुत बहुत धन्यवाद। --- नरेन – naren

+2

'यदि आप केवल डीसीयू फ़ाइल रखते हैं तो आप प्रोजेक्ट को संकलित कर सकते हैं।' यह केवल तभी सही है जब आप ** सटीक ** डेल्फी के समान संस्करण का उपयोग कर रहे हैं जो मूल। डीसीयू के साथ बनाया गया था (ध्यान दें ** सटीक ** पर जोर)। अन्यथा, आपको डेल्फी के विभिन्न संस्करणों के लिए पुन: संकलित करने के लिए .pas फ़ाइल होना आवश्यक है। –

+4

डीसीयू डीसीयू में निहित नहीं हैं। डीएफएम अनिवार्य रूप से विशेष * .RES फ़ाइल हैं। यदि आपके पास डीएफएम फ़ाइल नहीं है, तो आप संकलन के लिए डीसीयू का उपयोग नहीं कर सकते हैं। –

3

आप निष्पादन के स्वामित्व में अब भी कर रहे हैं, तो आप अपने पूर्ण और मूल DFM फ़ाइल आवेदन संसाधनों से निकाल सकते हैं किसी भी मनमानी संसाधन प्रबंधक द्वारा। उदाहरण के लिए: XN Resource Editor। आरसी डेटा श्रेणी में, TXYZ नामक एक आइटम होगा।

+0

हाय, धन्यवाद। मैं बस परियोजना को संकलित करना चाहता हूं। क्या केवल डीसीयू फाइलों के साथ संकलन करना संभव है? --- नरेन – naren

+0

मैंने अभी कोशिश की, लेकिन काम नहीं किया। शायद यह केवल तब काम करता है जब dfm बाइनरी संग्रहीत किया जाता है। लेकिन: क्या आपके पास (पुराना) निष्पादन योग्य है? – NGLN

+0

दुर्भाग्य से मेरे पास पुराने exe भी नहीं है। :( – naren

2

डेल्फी 20XX/XE
ध्यान दें कि डेल्फी __history कहा जाता है अपनी परियोजना dir के एक छिपे हुए subdir में आपकी फ़ाइलों के पुराने संस्करण को बचाता है।

उस डीआईआर में आपके .pas, .dfm और अन्य प्रोजेक्ट फ़ाइलों के सहेजे गए संस्करण हैं।
ये फ़ाइलें हर बार डिस्क में परिवर्तन सहेजने पर बनाई जाती हैं।

(छिपा लोगों सहित) एक अपने harddisk पर सभी फ़ाइलों के लिए खोज, *.~*~ नामित यह किसी भी बैकअप स्रोत फ़ाइलें आप हो सकता है ऊपर लाने चाहिए।
वे आपके द्वारा किए गए अंतिम परिवर्तन को याद करेंगे, लेकिन कम से कम आपको फिर से सब कुछ नहीं करना पड़ेगा।

डेल्फी 7 और से पहले
डेल्फी 7 एक .~ विस्तार के साथ अपनी परियोजना फ़ाइलों के रूप में एक ही निर्देशिका में इन फ़ाइलों को बचाता है।

0

यह बहुत देर हो चुकी है, लेकिन यहां मैं क्या आया हूं।

मेरे निर्देशिका संरचना इस

/ Project 
/Source 
    /Unit1.pas 
/Packages 
    /Delphi2010Berlin 
    /MyPackage1.dpk 
    /MyPackage2.dpk 
/Library 
    /Delphi2010Berlin 
    /Win32 
     /Debug 
     /Release 

/परियोजना फ़ोल्डर में की तरह है, मैं एक .bat फ़ाइल का नाम 'dfmcopy.bat'

सभी उसमें शामिल बनाया

@echo off 
for /r %1 %%x in (*.dfm) do @copy "%%x" %2 /Y >NUL 

है फिर, मेरे पोस्ट में मेरे .bpl

./../../dfmcopy.bat $(PROJECTPATH)\..\..\Source $(PROJECTPATH)\..\..\Library\$(Platform)\$(Config) 
के लिए ईवेंट बनाएं

यह रिकर्सिवली सभी .dfm कि/Library/{DelphiVersion} में/स्रोत फ़ोल्डर में निहित हैं/{मंच}/{कॉन्फ़िग} फ़ोल्डर की प्रतिलिपि जाएगा

एक चेतावनी है कि आप इस किया है कि कई परियोजनाओं है, तो पोस्ट बिल्ड इवेंट, प्रत्येक प्रोजेक्ट के लिए डीएफएमएस की प्रतिलिपि बनाई जा सकती है। पता नहीं है कि अब कोई समस्या हो सकती है या नहीं।

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