2008-09-30 13 views
17

मैं इस समस्या का वास्तव में बीमार हूं। Google खोज हमेशा "पैकेज के लिए सभी बीपीएल हटाएं" का सुझाव देते हैं, "सभी डीसीएस हटाएं"। कभी-कभी यह काम नहीं करता है। उम्मीद है कि मैं यहां कुछ अन्य विचार प्राप्त कर सकता हूं।डेल्फी की [पास्कल घातक त्रुटि] F2084 आंतरिक त्रुटि को हल करने के लिए कैसे करें: LA33?

मेरे पास घर में एक पैकेज लिखा गया है, जिसे कुछ महीने पहले बिना किसी समस्या के स्थापित किया गया था। स्रोत में कुछ बदलाव किए जाने के बाद, मुझे लगा कि यह पैकेज को पुन: स्थापित/पुनर्स्थापित करने का समय था। अब मुझे दो त्रुटियां मिलती हैं, पहला अगर मैं "इंस्टॉल" चुनता हूं तो

मॉड्यूल 'dcc100.dll' में पते 02422108 पर उल्लंघन का उल्लंघन करें। पता की पढ़ें 00000000.

... या अगर मैं निर्माण करने के लिए/पैकेज संकलन की कोशिश, मैं

[पास्कल घातक त्रुटि] F2084 आंतरिक त्रुटि मिलती है: LA33

इस में से एक है उन डेल्फी समस्याओं में से कई के लिए समय और समय लगता है। अगर हम की तर्ज पर एक प्रतिक्रिया कुछ मुक़ाबला कर सकता है बहुत अच्छा होगा "किसी भी एक या निम्न चरणों का यह ठीक कर सकता है के संयोजन, लेकिन अगर आप कर सभी इन चरणों का यह यह ठीक कर देंगे ...."

पल में, मैं इस पैकेज के लिए बीपीएल/डीसीपी फ़ाइलों के सभी संदर्भ निकाल दी है, लेकिन अभी भी एक ही त्रुटि मिल रही है ...

BDS2006 (डेल्फी) का उपयोग करना

अद्यतन 01-Oct- 2008: मैंने इसे हल करने में कामयाब रहा - नीचे मेरी पोस्ट देखें। चूंकि मैं अपना जवाब स्वीकार नहीं कर सकता, मुझे पूरा यकीन नहीं है कि यहां क्या करना है। जाहिर है कि इस तरह के मुद्दे कुछ लोगों के लिए अक्सर होते हैं, इसलिए मैं इसे अन्य सुझाव प्राप्त करने के लिए थोड़ी देर के लिए खोल दूंगा। तो मुझे लगता है कि अगर कोई सुपर-पोस्ट में सभी जानकारी एकत्र करता है, तो मैं जवाब

+0

इस संस्करण का सामना करने के लिए किस संस्करण का उपयोग किया जाना चाहिए? –

उत्तर

14

पर रिपोर्ट करना चाहिए मैं, इस का समाधान करने में कामयाब नीचे प्रक्रिया

  1. निम्नलिखित एक नए पैकेज
  2. एक-एक करके बनाएँ, घटक जोड़ने पैकेज में, संकलित होने तक & संकलित करें।
  3. विफलता के कारण इकाई की जांच करें।

यह पता चला है, इसलिए विचाराधीन इकाई एक वर्ग लगातार सरणी था, जैसे

TMyClass = class(TComponent) 
private 
    const ErrStrs: array[TErrEnum] of string 
    = ('', //erOK 
     'Invalid user name or password', //erInvUserPass 
     'Trial Period has Expired'); //erTrialExp 
protected 
    ... 
public 
    ... 
end; 

तो ऐसा लगता है कि डेल्फी पैकेज घटकों

में वर्ग स्थिरांक (या शायद वर्ग निरंतर सरणियों) पसंद नहीं है

अद्यतन: और हाँ, इस

+1

मैंने अपना स्वयं का जवाब यहां स्वीकार कर लिया है, क्योंकि यह वही था जिसने इसे ठीक किया था, हालांकि लार्स भी बहुत उपयोगी थे। लेकिन बहुत सारे अनिवार्य रूप से खुले प्रश्न नहीं होने के हित में, मैंने यह किया है - सुनिश्चित नहीं है कि एसओ पर चीजों को करने का सही तरीका है या नहीं। लेकिन यह अब के लिए कर देगा ... – Graza

+1

+1 इसे खोजने के लिए +1; मेरी इच्छा है कि मैं इसे क्यूसी में रिपोर्ट करने के लिए एक और +1 कर सकता हूं। –

+0

अतीत से विस्फोट - लेकिन बस एक वर्ग सरणी निरंतर के साथ एक पैकेज संकलित करने की कोशिश कर इस समस्या को हिट करें! –

4

ये संकलक/लिंकर में बग हैं। आप अलग-अलग डेल्फी संस्करणों में इंटरनेट पर इन बग के कई संदर्भ पा सकते हैं, लेकिन वे हमेशा एक ही बग नहीं होते हैं। इससे उन सभी प्रकार की समस्याओं के लिए एक समाधान देना मुश्किल हो जाता है। किसी अन्य तरीके से

  • निकालें * .dcp * .dcpil * .dcu * .dcuil * .bpl * .dll अपने कोड
  • पुनर्लेखन:

    जनरल समाधान है कि इसे ठीक कर सकता है, कर रहे हैं के रूप में आप का उल्लेख किया

  • संकलक विकल्पों के साथ टिंकर
  • नवीनतम डेल्फी संस्करण

मैं व्यक्तिगत रूप से पाया अगर मैं रंग बंद कर दिया इस तरह के कीड़े से एक हल किया जाना हो जाओ ई जांच यदि आप किसी अन्य इकाई से जेनेरिक का उपयोग नहीं करते हैं तो दूसरों को हल किया जाता है। और एक हल किया गया था अगर यूनिट का नाम और वर्ग का नाम बदलकर छोटा हो गया।

और निश्चित रूप से आप किसी भी समस्या आप http://qc.codegear.com

+0

XE4 के तहत, अज्ञात विधियों के कारण ऐसी आंतरिक त्रुटि हुई, और सभी .dcu फ़ाइलों को हटाने से समस्या हल हो गई। धन्यवाद। –

1

CodeGear सूचित किया गया है मैं एक ऐसी ही मामले में, जहां समाधान/एल से फ़ाइल urlmon.dcu दूर करने के लिए था आईबी/डिबग।

यह "डीबग। डीकस" का उपयोग पूरी तरह से बंद करने के लिए भी काम करता है। यह निश्चित रूप से वांछनीय नहीं है, लेकिन आप इसका उपयोग यह जांचने के लिए कर सकते हैं कि समस्या आपकी किसी भी इकाई के साथ है, या डेल्फी की इकाइयों में से किसी के साथ है।

3

शायद निम्न चरण एक बेहतर समाधान होगा:
सरणी को एक प्रकार के रूप में घोषित करें और इस प्रकार के साथ कक्षा निरंतर परिभाषित करें, उदाहरण के लिए।

TMyArray = array[TErrEnum] of string; 

TMyClass = class(TComponent) 
private 
    const ErrStrs: TMyArray 
    = ('', //erOK 
     'Invalid user name or password', //erInvUserPass 
     'Trial Period has Expired'); //erTrialExp 
protected 
    ... 
public 
    ... 
end; 

इससे सरणी घोषणा स्पष्ट हो जाती है।

+0

+1 - यह मेरे लिए काम किया। धन्यवाद। :) – Shannon

2

मैंने इस मुद्दे पर कई घंटे बर्बाद कर दिए, डीसीयू को हटाया, आदि का कोई फायदा नहीं हुआ।

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

0

मेरे लिए, डी 2010 में कंपाइलर विकल्प को अक्षम करने में "एमिट रनटाइम प्रकार की जानकारी" चाल चल रही थी।

1

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

0

अक्षम करना "शामिल दूरस्थ डिबग प्रतीकों" लिंकर विकल्प से डेल्फी 2007, dll परियोजना

1

डेल्फी XE3 अद्यतन 2

F2084 Internal Error: URW1147

मामला 1 मेरे लिए समस्या का समाधान हो:

समस्या यह था कि एक सामान्य वर्ग की प्रक्रिया में एक प्रकार घोषित किया गया था।

procedure TMyClass<TContainerItem, TTarget>.Foo(); 
type 
    TCacheInfo = record 
    UniqueList: TStringList; 
    UniqueInfo: TUniqueInfo; 
    end; 
var 
    CacheInfo: TCacheInfo; 

कक्षा घोषणा के निजी हिस्से में प्रकार की घोषणा को स्थानांतरित करने से इस मुद्दे को हल किया गया।

केस 2:

unit A.pas; 
interface 
type 
    TTest<T> = class 
    public 
    type 
     TTestProc = procedure (X: T) of object; 
    constructor Create(TestProc_: TTestProc = nil); 
    end; 
... 

आंतरिक संकलन त्रुटि जैसे ही TTest वर्ग के एक चर एक और इकाई में घोषित किया गया था उत्पन्न हुई: इस मामले में

समस्या एक वैकल्पिक पैरामीटर से संबंधित था : उदाहरण के लिए

unit B.pas: 

uses A; 
var 
    Test: TTest<TObject>; 

समाधान TestProc_ गैर-वैकल्पिक के निर्माता तर्क को बनाना था।

0

विभिन्न उत्तरों से यह त्रुटि संकलक द्वारा एक सामान्य अनचाहे अपवाद दिखती है।

मेरे मुद्दा गलती से बुला function X(someString:String) : Boolean; जो स्ट्रिंग बदल और एक बूलियन लौटे, someString := X(someString);

0

का उपयोग कर आंतरिक त्रुटि के मेरे अनुभव के रूप में की वजह से किया गया था कि, मैं लाइन द्वारा फिर से लिखा लाइन और फिर संकलन और महसूस किया है कि कुछ यदि किसी और बयान

आंतरिक त्रुटि की तरह काम नहीं करता है तब होता है

if (DataType in ASet) 
    begin 
//do work 
    end 
    else if (DataType = B) 
    begin 
//do work 
    end 
    else 
    begin 
//do work 
    end; 

मैं कैसे हल:

if (DataType = B) 
     begin 
    //do work 
     end 
     else if (DataType in ASet) 
     begin 
    //do work 
     end 
     else 
     begin 
    //do work 
     end; 

बस शर्तों के रूप में शर्तों को बदल दिया। उम्मीद है कि यह मदद करता है।

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