2010-12-11 11 views
5

आपका स्वागत हैइंडी प्राप्त dowloading गति

मैं इंडी HTTP GET compontent का उपयोग कर अपने आवेदन में गति डाउनलोड करने के बारे में जानकारी के साथ शीर्षक बनाना होगा।

मेरे दिमाग में मुझे सरल समाधान मिला।

ऑनवर्क ईवेंट पर मुझे डाउनलोड (आकार) की वास्तविक प्रगति मिल जाएगी और इसे पिछले पढ़ने के साथ तुलना करेंगी। (उदाहरण के लिए हर 5 सेकंड)। Curent आकार शून्य पिछले (5 सेकंड ईरियल, वैश्विक var में संग्रहीत) 5 सेकंड * 8 से विभाजित और मुझे गति मिलेगी। यदि वास्तविक आकार पिछले के बराबर है तो sped हमेशा 0.

तो मैं कोडिंग शुरू करना चाहता हूं, लेकिन मुझे odwork नामक सरल फ़ंक्शन में समस्या मिली।

 
procedure TForm1.HttpWork(ASender: TObject; AWorkMode: TWorkMode; 
    AWorkCount: Int64); 
    begin 
    showmessage('hello im herre'); 
end; 

समस्या है, कि समारोह नहीं है कहा जाता है ... मैं पता नहीं क्यों।

मैं 100 एमबी फाइल को डाउनलोड कर रहा हूँ, और मैं नहीं कर सकते किसी भी ShowMessage देखें ...

किसी भी विचार है? सम्मान

उत्तर

0

क्या आप घटक को httpwork भी असाइन करते हैं? प्रगति या कार्य जो कुछ भी कहा जाता है?

इसके अलावा, एक लेबल का उपयोग करें, न कि एक मॉडल घटक जो आपके द्वारा क्लिक किए जाने तक वापस नहीं आएगा, क्योंकि इससे डाउनलोड प्रवाह में बाधा आ सकती है।

+0

अभी, मैं स्वयं initation onwork

 form1.Http := TIdHTTP.Create(nil); form1.Http.OnWork:=form1.HttpWork;
की जोड़ते हैं, लेकिन संकलक
unit1.pas(356,36) Error: Wrong number of parameters specified for call to "HttpWork" 
असफल मैं बस पता करने के लिए जहां समारोह ट्रिगर किया जाएगा कि ShowMessage जोड़ने ... मैं memo1.lines.add ('परीक्षण') की कोशिश; लेकिन काम भी नहीं किया;) – marc

+0

पैरामीटर की गलत संख्या तब दिखाई देती है जब HttpWork के लिए पैरामीटर की अपेक्षित संख्या पैरामीटर की संख्या से भिन्न होती है जो आपके पास है। कृपया यहां कॉपी-पेस्ट कोड ताकि लोग आपकी मदद कर सकें, अन्यथा बहुत अधिक जानकारी नहीं है। – ComputerSaysNo

+0

कंपाइलर असफल ?? –

2

ऑनवर्क्स ... घटनाओं को केवल तभी निकाल दिया जाता है जब कनेक्शन की BeginWork() विधि को पहले से बुलाया गया हो। इंडी के पढ़ने/लेखन विधियों में से कई स्वचालित रूप से इसे कॉल नहीं करते हैं। हालांकि, टीआईडीएचटीटीपी टीस्ट्रीम ऑब्जेक्ट्स का उपयोग करके अनुरोध/प्रतिक्रिया बॉडी डेटा पढ़ता/लिखता है, और कनेक्शन के पढ़ने/लिखने के लिए टीस्ट्रीम विधियां प्रारंभिक रूप से BeginWork() को कॉल करती हैं, इसलिए आप निश्चित रूप से ऑनवर्क्स प्राप्त करेंगे ... HTTP संचालन के दौरान ईवेंट निकाल दिए जाते हैं।

0

मुझे यह कहना होगा कि आपका HTTPWork ईवेंट घटक में शामिल नहीं है। यदि आपके पास फॉर्म पर HTTP घटक है, तो गुणों को लाएं और ऑनवर्क्स ईवेंट पर डबल-क्लिक करें और फिर ShowMessage में डाल दें ... इसे दिखाना चाहिए।

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