मुझे पता है कि जब मैं डेल्फी एपीपी और डेल्फी डीएलएल के बीच strings
साझा करता हूं तो मुझे ऐप और डीएलएल प्रोजेक्ट स्रोत दोनों में Sharemem
को उपयोग खंड में पहली इकाई के रूप में जोड़ने की आवश्यकता है।डेल्फी का शेयरमेम - जब इसकी आवश्यकता नहीं है
लेकिन, यदि डीएल निर्यात कार्य करता है जो केवल Pchars
स्वीकार करता है लेकिन कुछ डीएल तरीकों के अंदर मैं strings
का उपयोग करता हूं, तो क्या मुझे शेयरमेम का भी उपयोग करना चाहिए? मुझे एक नमूना कोड से पता चला है:
procedure ShowMyCustomMessage(aMessage : Pchar);
var
vUselessString : string;
begin
vUselessString := aMessage;
ShowMessage(vUselessString);
end;
exports
ShowMyCustomMessage;
कि सरल और बेकार मामले में, dll एक Pchar
स्वीकार कर रहा है लेकिन निर्यात विधि के अंदर dll एक string
वर पैदा करता है। क्या मुझे ShareMem
भी जोड़ना चाहिए?
WideString
के बारे में क्या? WideString
पैरामीटर पास करने से Sharemem
का उपयोग करने की आवश्यकता है?
AFAIK 'ShareMem' का उपयोग किया जाना है यदि आप बहिष्कृत borlndmm.dll मेमोरी मैनेजर का उपयोग करना चाहते हैं। लेकिन डेल्फी 2007 के बाद से यह एक अच्छा विचार नहीं है। आप बेहतरShareShareMem का उपयोग करेंगे जो FastMM4 पर आधारित है और * बहुत * तेज़ है। –
@ अर्नुड क्या आप निश्चित हैं कि बोर्नलम को बहिष्कृत किया जा रहा है? मैंने किसी के बारे में बात नहीं देखी है। –
@RafaelColucci: * पुराना * borlndmm.dll। उलझन में, सभी मेमोरी मैनेजर डीएलएल के पास यह नाम है। डेल्फी/सी ++ बिल्डर का वर्तमान संस्करण फास्टएमएम का उपयोग करता है, जिसे 'borlndmm.dll' में संकलित किया गया है, और अब कई सालों से है। –