2010-08-05 10 views
6

मेरे ऐप में उसके डेटाबेस में दस्तावेज़ शामिल हैं। उपयोगकर्ता दस्तावेजों को किस मामले में खोल सकते हैं, दस्तावेज़ अस्थायी फ़ोल्डर में सहेजा जाता है और उपयोगकर्ता के कंप्यूटर पर खोला जाता है।फ़ाइल अपडेट होने पर डेल्फी अधिसूचना

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

डेल्फी 7 में ऐसा करने का सबसे आसान तरीका क्या है? (मुझे लगता है कि इसे कुछ शैल जादू या तृतीय पक्ष घटक की आवश्यकता है)

धन्यवाद!

+0

दस्तावेजों कहाँ लोड किए गए हैं? TRichEdit? TMemo? – zz1433

+0

माइक्रोसॉफ्ट एक्सेल – Steve

उत्तर

4

आप या तो:

  1. Win32 एपीआई SHChangeNotifyRegister फ़ंक्शन का उपयोग अस्थायी फ़ोल्डर में परिवर्तन के लिए देखने के लिए, और फिर अपने कॉलबैक नियंत्रण रखने के अपने अस्थायी फ़ाइलों परिवर्तन रिपोर्ट कर रही हैं।

  2. क्योंकि आप रुचि रखने वाली सटीक फ़ाइल (ओं) को जानते हैं, तो आप टाइमर या थ्रेड में FindFirstFile का उपयोग करके अपने आकार और टाइमस्टैम्प में परिवर्तनों के लिए मैन्युअल रूप से उनकी निगरानी कर सकते हैं।

8

JEDI JVCL संग्रह से TJvChangeNotify घटक का उपयोग करके आप अपनी अस्थायी फ़ाइलों (या किसी भी फ़ाइल) में परिवर्तनों का पता लगा सकते हैं।

+3

मैं किसी भी जेवीसीएल घटकों का उपयोग नहीं करना पसंद करता क्योंकि मैंने उन्हें छोटी तरह की छोटी गाड़ी के रूप में पाया है। गैजिलियन घटकों को स्थापित करने के बारे में बात न करें, जिसकी आपको वास्तव में आवश्यकता है ... – Steve

4

के अलावा क्या RRuz और Remy Lebeau लिखा है:

ध्यान दें कि JvChangeNotify इकाई में TJvChangeNotifyFindFirstChangeNotification API कॉल का उपयोग करता है; this एमएसडीएन दस्तावेज है। ध्यान दें कि यह थोड़ा सा अंतर्ज्ञानी है: नीचे उल्लिखित थ्रेड को थोड़ी देर के अंदर इसका उपयोग करने के तरीके पर देखें।

वहाँ भी ReadDirectoryChanges API कॉल, जो JCL/JVCL से लिपटे नहीं है, और MSDN प्रलेखीकरण here है और वहाँ एक Delphi win32 example भी है।

This thread दो एपीआई कॉल के बीच अंतर बताता है।

--jeroen

+0

जानकारी के लिए धन्यवाद, इन्हें भी जांचें। – Steve

2

इसके अलावा इस पर एक नज़र डालें: http://www.cromis.net/blog/downloads/directory-watch/ और How to monitoring directory for files in Delphi XE?

+0

कृपया ध्यान दें कि उस लाइब्रेरी में एक बग है। आपको TDirWatchThread.Execute (सिग्नल एरर (त्रुटि संदेश) के बाद टर्मिनेट जोड़ने की आवश्यकता है) - इसके बिना जब आप फ़ोल्डर से सभी फाइलों को हटाते हैं तो फ़ोल्डर एक अनंत लूप में प्रवेश करता है तो फ़ोल्डर स्वयं! इस बग को पुन: उत्पन्न करने के चरण: फ़ोल्डर बनाएं, फ़ोल्डर की निगरानी करें, फ़ोल्डर में फ़ाइलों को डालें, फ़ोल्डर से सभी फाइलों को हटाएं, फ़ोल्डर हटाएं, ऐप फ्रीज – Ampere

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