घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "मामले";
वर्तमान संग्रह: 2003.05.01;
डाउनलोड करें: [xml.tar.bz2];

नीचे

DLL के साथ काम करें इसी तरह की शाखाएँ खोजें


minotavr   (2003-04-08 17:20) [0]

सभी को नमस्कार।
लोग मदद करते हैं।
डेटाबेस के साथ काम करने के लिए एक कार्यक्रम है। मैं एक DLL बनाना चाहता हूं लेकिन कॉलिंग प्रोग्राम से कनेक्शन का उपयोग करने के लिए।

और अगर सामान्य तौर पर, कॉलिंग प्रोग्राम में ऑब्जेक्ट्स के साथ काम करने के लिए DLL से कैसे?

SW से। Minotavr।



evvcom   (2003-04-09 09:34) [1]

Http://delphimaster.net/view/1-1049860557/ पर मेरा उत्तर देखें, शायद यह मदद करेगा।



Minotavr   (2003-04-09 17:09) [2]

उत्तर के लिए धन्यवाद।
लेकिन यह मदद नहीं करता है।

शेयरमम - पहले से ही वर्तनी।
डीएलएल - मुख्य रूप से पूरा होने पर उतारना।

मैंने भी कुछ इस तरह की कोशिश की:

DLL:
प्रत्येक
आधार: ^ TIBDatabase;
....

प्रक्रिया क्रिएलफॉर्म (टेस्टडब: टीआईबीडीबेस);
...

BASESAAE: = @ testdb

और विभिन्न बदलाव

मैंने जो अधिकतम हासिल किया है वह एक त्रुटि है जैसे "ऐसी कोई तालिका नहीं है"

लेकिन कुछ गुण काम करते हैं, जैसे:

कैप्शन: = BASESAAE ^ .datebasename

या ऐसा कुछ

SW से। Minotavr



evvcom   (2003-04-10 02:27) [3]

मैंने वही विषय बनाए ...
और यहाँ http://delphimaster.net/view/1-1049860557/ देखा?



falcon_k   (2003-04-10 02:35) [4]

मेरे पास निम्नलिखित निर्माण हैं

डीएल में

प्रक्रिया .... (ddd: पूर्णांक)
...
था
DB: TIBDatabase;
...
DB: = TIBDatabase (ddd);
...
Query1.Database: = DB;

मुख्य कार्यक्रम में
क़क़्क़ा: = पूर्णांक (सूचक (DM.DB))
dq को qqq पास करें



evvcom   (2003-04-10 02:46) [5]

मैं समझता हूँ कि TIBDatabase एक वर्ग है? फिर निर्माण ^ TIBDatabase और BASESAAE: = @ testdb सुपरफ्लुअस हैं, अर्थात प्रक्रिया में निर्मित सुधार (testdb: TIBDatabase) - ऑब्जेक्ट के लिए एक सूचक पहले से ही पारित किया गया है, और अनावश्यक पते / अग्रेषण केवल भ्रमित करता है।
और यही कारण है कि यह काम नहीं कर रहा है। मैंने पहले ही लिखा था कि exe में क्लास TIBDatabase और Dll में TIBDatabase पूरी तरह से अलग-अलग वर्ग हैं, हालाँकि उनके पास समान कोड है! यानी ऑब्जेक्ट जिसका डेटा और ट्रू हैंडलर्स exe-file में हैं, उसका संदर्भ dll को दिया जाता है, और dll उस ऑब्जेक्ट को कक्षा के तरीकों का उपयोग करके संसाधित करने का प्रयास करता है, जिसका कोड dll में निहित है! Dll के अंदर प्राथमिक जांच: अगर testdb tibdatabase है मान गलत लेता है, और अंदर बाहर: सच है। अंतर महसूस किया जाता है?



evvcom   (2003-04-10 08:14) [6]

बाज़ के लिए: और फिर भी इसे एक असंतुष्ट के साथ देखना आवश्यक है। यदि एक एक्स-मॉड्यूल के वर्ग तरीकों को बुलाया जाता है, तो सब कुछ सामान्य होता है (जिसे मैं दृढ़ता से संदेह करता हूं), और अगर कक्षा विधियों को dll में कहा जाता है (जो कि सबसे अधिक संभावना है), तो ऐसा निर्माण समय के लिए काम करता है, और जब यह आश्चर्य पेश करना शुरू करता है , पहले से कोई नहीं जानता। लेकिन जब यह शुरू होता है, तो आप पूरे सिर को तोड़ देंगे, क्या बात है, यह कल काम किया, और आज सेशन-पा!



jack128   (2003-04-10 09:17) [7]

evvcom © (10.04.03 08: 14)


> मैंने पहले ही लिखा था कि वर्ग TIBDatabase in exe और TIBDatabase In
> dll पूरी तरह से अलग वर्ग हैं, हालांकि उनके पास समान हैं
> कोड! यानी dll ऑब्जेक्ट रेफ़रेंस, जिसका डेटा पास किया गया है
> और सच्चे हैंडलर एक्स-फाइल में हैं, और डीएल की कोशिश करता है
> इस ऑब्जेक्ट को उस कक्षा के तरीकों का उपयोग करके संसाधित करें जिसका कोड
> dll में निहित है!

कोड समान है और यह Dll या EXE में नहीं है, बल्कि पैकेज में है ..

आखिरी चर्चा से

> रनटाइम पैकेज के साथ, भले ही उनके बिना। अन्यथा, इस तरह के एक dll> डेल्फी के उसी> संस्करण में संकलित exe से ही बुलाया जा सकता है!

क्या यह एक धारणा या एक सिद्ध तथ्य है ??



evvcom   (2003-04-10 10:16) [8]

क्या धिक्कार है पैकेज! हम समाप्त कार्यक्रम exe और dll के बारे में बात कर रहे हैं। और .dcu .bpl .dcp इत्यादि के बारे में नहीं। रेडी-मेड कोड पहले से ही इन सभी रन-टाइम या डिज़ाइन-टाइम पैकेज से संकलित है। यह स्वयं पैकेज है (इसे रन-टाइम होने दें), इसका कोड विधानसभा के बाद एक्स-फाइल और डीएलएल-फाइल दोनों में शामिल है। और क्या यह एक अनुमान नहीं है। मैंने इस पर खुद को गलत समझा, जब पहली बार, कई साल पहले, dll में मैंने कुछ बेस क्लास से वंशज वस्तुओं के लिंक पारित किए थे (TWinControl लगता है, लेकिन यह महत्वपूर्ण नहीं है)। और फिर dll में जाँच की अगर प्रेषक Tedit है तो ...; अगर प्रेषक TComboBox है तो ...; और इसी तरह नतीजतन, प्रेषक टीडिटबॉक्स के लिए नहीं टीडॉटबॉक्स के रूप में निकला, हालांकि यह वास्तव में प्रसारित हुआ। मैंने इस व्यवसाय को देखने के लिए एक डिस्सेम्बलर में शुरू किया, यह यहां था कि मुझे अपनी गलती का एहसास हुआ, कि कक्षा एक लग रही थी, लेकिन यह पता चला कि 2 उदाहरण उनकी स्मृति में थे, लेकिन is यह उसके और उसके माता-पिता के वर्गों की श्रृंखला में प्रेषक वर्ग के पते की समानता की जाँच करता है, जिसमें पता Tedit, TComboBox, आदि के साथ है।
निष्कर्ष: यदि लंबे समय से त्रुटियों की खोज के साथ छेड़छाड़ करने की कोई इच्छा नहीं है, तो मैं बस कक्षाओं को डीएलई और उन्हें वहां संसाधित करने की अनुशंसा नहीं करता हूं। हमें स्वयं को सरल डेटा संरचनाओं तक सीमित रखना चाहिए।



jack128   (2003-04-10 22:41) [9]

हम्म .. मैंने DLL "ke check विरोध वर्ग में कोशिश की है - यह पता चला है कि बटन Tform है ...



Fantasist.   (2003-04-11 01:47) [10]


> यह स्वयं पैकेज है (इसे रन-टाइम होने दें), इसका कोड इसके बाद आता है
> एक्स-फाइल में विधानसभा, और डीएलएल-फाइल में


और इस रन-टाइम के बाद क्या है? रन-टाइम वह क्या है और रन-टाइम है, कि प्रोग्राम कोडिंग के समय उसका कोड लोड किया जाना चाहिए, न कि लिंकिंग स्टेज पर। अन्यथा, यह सामान्य स्थैतिक लिंक से जुड़ा हुआ है।


> यदि आप त्रुटियों की खोज के साथ लंबे समय तक गड़बड़ नहीं करना चाहते हैं,
> मैं बस वहाँ और वहाँ dll कक्षाओं गुजरने की सिफारिश नहीं है
> उन्हें प्रोसेस करें


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



evvcom   (2003-04-11 08:17) [11]

सपने देखने:
और इस रन-टाइम के बाद क्या है? रन-टाइम वह क्या है और रन-टाइम है, कि प्रोग्राम कोडिंग के समय उसका कोड लोड किया जाना चाहिए, न कि लिंकिंग स्टेज पर। अन्यथा, यह सामान्य स्थैतिक लिंक से जुड़ा हुआ है।
और यह आपको कहां से लोड करता है? इसे निर्वासित करें, इसे स्थानांतरित करें одного दूसरी मशीन पर, और चलाएं। बस किसी भी अतिरिक्त dll का उपयोग न करें, उन्हें इस तरह के परीक्षण की आवश्यकता नहीं है। और देखो कि यह बिना किसी प्रकार के रन-टाइम कोड को लोड किए बिना आपके लिए कैसे ठीक रहेगा।
रन-टाइम वह कोड होता है जिसे प्रोग्राम के सामान्य संचालन के दौरान निष्पादित किया जाता है और इसे सामान्य तरीके से जोड़ा जाता है, अर्थात। स्थिर। और डिजाइन-टाइम ठीक वही कोड है, जो विकास के दौरान उन्माद के लिए आवश्यक होता है। यहाँ यह फाइल bpl में बैठता है, जो संरचना द्वारा dll हैं। लेकिन इस मामले में सभी विधियों को बीपीएल से बुलाया जाता है, और आपके सभी घटक इस पुस्तकालय की वस्तुएं हैं।



Fantasist.   (2003-04-11 17:40) [12]


> evvcom © (11.04.03 08: 17)


एह-एह ... ठीक है, आपको क्यों लगता है, रन-टाइम पैकेज का उपयोग किया जाता है "और सामान्य तौर पर? यहां वीसीएल को कभी-कभी रन-टाइम पैकेज के रूप में उपयोग करने का सुझाव दिया जाता है। क्यों? वे कहते हैं कि संकलित कोड छोटा हो जाता है। हां, आप कोशिश करेंगे और चिह्नित करेंगे। प्रोजेक्ट-> विकल्प में, रन-टाइम पैकेज के साथ बिल्ड की जांच करें और एक पुनर्निर्माण करें। 400 kb के साथ निष्पादन 60 तक घट जाएगा। लेकिन बाकी कोड कहां चले गए? ठीक है, इन सभी पैकेजों, जो आमतौर पर स्टेटिक रूप से जुड़े हुए हैं, गतिशील रूप से जुड़े हुए हैं। निष्पादन योग्य में शामिल किया गया था, और प्रोग्राम की शुरुआत में लोड किए गए पैकेजों में बने रहे (जैसा कि आपने स्वयं देखा - ये वही हैं डालूँगा), और वे स्वाभाविक रूप से मशीन जहां कार्यक्रम चल रहा है पर उपस्थित थे चाहिए।



evvcom   (2003-04-14 08:49) [13]

हाँ, मैं आपसे क्षमा चाहता हूँ। मैंने इसे आजमाया, आयात अनुभाग को देखा, bpl वास्तव में वहां मौजूद था। सी रन-टाइम पैकेज वास्तव में कभी परेशान नहीं हुए - कोई ज़रूरत नहीं थी। इसलिए, मेरे सभी तर्क केवल स्थैतिक लिंकिंग पर लागू होते हैं।
बोरलैंड में खराब हो गया! और सिद्धांत रूप में, एक या किसी अन्य लिंक विधि का उपयोग कोड की गुणवत्ता को प्रभावित नहीं करना चाहिए।



АлексейК   (2003-04-14 09:24) [14]

मामले में रूप मोडल है। गैर-मोडल के साथ थोड़ा कठिन।
कार्यविधि CreateDllForm (db: TIBDataBase, aHandle: थैंडल);
var MyDllForm: TMyDllForm;
शुरू करना
अनुप्रयोग.हैंडल: = एहैंडल;
MyDllForm: = TMyDllForm। बनाएँ (अनुप्रयोग);
MyDllForm के साथ करते हैं
शुरू करना
IBQuery.DataBase: = डीबी;
..........
ShowModal;
अंत;
FreeAndNil (MyDllForm);
अंत;
जब आप कॉल करते हैं, तो आपको Application.Handle को स्थानांतरित करना होगा। और कोई फर्क नहीं पड़ता कि DLL को क्या पैरामीटर पास करना है।



EthernalWonderer   (2003-04-14 11:14) [15]

और यह संभव है, यहां तक ​​कि सादगी के लिए भी, एक "कनेक्शन" के साथ एक dll में रूपों और अन्य संचालन के निर्माण को दिलाने के लिए।
ऐसा करने के लिए, कॉलर से एक फ़ंक्शन जैसे निर्यात करें
समारोह GetDS (IntName: स्ट्रिंग): TIBDataSet; निर्यात; शुरू करना // नाम या कुछ और द्वारा खोज ... परिणाम: = MainExeDataSet मिला; समाप्त;
और "कनेक्ट" DataSet को dll:
समारोह GetDS (IntName: स्ट्रिंग): TIBDataSet; stdcall; बाहरी "mainexe.exe"; ... बाहरीडसेट: = गेट्स ("DATASET1");
तो आप कुछ भी "कनेक्ट" कर सकते हैं। लेकिन आपको RTTY की मदद से "इस" की जांच नहीं करनी चाहिए - यह सच है।



NVB   (2003-04-14 11:21) [16]

एफआईबी के मामले में:

का उपयोग करता है
... IBase ...
....
ListDB (Database.Handle) पर कॉल करें
...

dll में

प्रक्रिया सूची (DBHandle: TISC_DB_HANDLE); StdCall;
शुरू करो
..
डेटाबेसहैंडल: = DBHandle;
..
अंत;

पुनश्च। डेटाबेस गुणों में
DesignDBOations [
ddoIsDefaultDatabase = गलत
ddoStoreConnected = गलत



पन्ने: 1 पूरी शाखा

फोरम: "मामले";
वर्तमान संग्रह: 2003.05.01;
डाउनलोड करें: [xml.tar.bz2];

ऊपर









मेमोरी: 0.63 एमबी
समय: 0.053 c
7-817
SasH_Ok
2003-03-14 06:02
2003.05.01
प्रक्रिया कितनी मेमोरी लेती है?


3-395
Wedos
2003-04-11 12:31
2003.05.01
एक ग्रिड में पंक्तियों को क्रमबद्ध करें


8-651
Fredegar
2002-11-17 19:35
2003.05.01
SLD प्रारूप ऑटोकैड


4-826
केवीए
2003-03-03 16:45
2003.05.01
फॉर्म सिस्टम मेनू में पारदर्शी पृष्ठभूमि के साथ चित्र


3-426
Slisten
2003-04-09 22:01
2003.05.01
RowSelect विकल्प खोए बिना DBGrid में मान सम्मिलित करना





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский