निम्नलिखित कोड (केवल समस्या का प्रदर्शन करने के लिए निर्मित) डेल्फी 2010 में संकलित और काम करता है। डेल्फी 200 9 में, कंपाइलर "ई 2035 पर्याप्त वास्तविक पैरामीटर" में विफल रहता है।डेल्फी 200 9 में अज्ञात प्रक्रियाओं कास्टिंग
program Project50;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TMyProc = reference to procedure(param: integer);
var
a: TProc;
b: TMyProc;
begin
b := procedure (param: integer)
begin
end;
a := TProc(b); // <-- [DCC Error] Project50.dpr(19): E2035 Not enough actual parameters
end.
मुझे समस्या के आसपास काम करने के लिए केवल एक बहुत बदसूरत हैक मिला है (ए: टीपीआरसी पूर्ण बी)। क्या इस कंपाइलर की कमी के लिए कोई भी अच्छे कामकाज के बारे में जानता है?
[टीपीआरसी क्षेत्र वास्तव में एक रिकॉर्ड के अंदर छिपा हुआ है जो विभिन्न 'निष्पादन योग्य' कोड - टीप्रोसेडर, टीएमआईडी और टीप्रोक स्टोर कर सकता है। कास्टिंग इस क्षेत्र में विशिष्ट गुमनाम proc स्टोर करने के लिए प्रयोग किया जाता है]
यह परीक्षण मामले में काम करता है, लेकिन मेरे (थोड़ा अधिक जटिल) मामले में नहीं। वहाँ इंटरफेस संदर्भ गिनती के साथ कुछ गलत हो जाता है। मैं एक और सटीक परीक्षण मामले को एक साथ रखने की कोशिश करूंगा। टीपीआरसी अलग-अलग 'प्रक्रिया के संदर्भ' के लिए एक भंडारण क्षेत्र है, इसलिए मैं इसे कास्टिंग कर रहा हूं। शायद जेनेरिक के साथ कुछ अच्छा किया जा सकता है ... – gabr
@gabr: मैंने हैक # 3 (इंटरफेस रेफ काउंटर बढ़ाना चाहिए) का प्रस्ताव देने के लिए अपनी पोस्ट अपडेट की है – kludg
आपके सभी कामों के लिए धन्यवाद लेकिन मुझे अभी एक बहुत ही आसान तरीका मिला है इस समस्या को हल करें ... – gabr