delphi4arab منتديات دلفي للعرب

نسخة كاملة : ما سبب ظهور الرسالة Override method should match ancestor عند التعامل مع Thread
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

الرسالة :
PHP كود :
[DCC Hint] Unit1.pas(30): H2365 Override method TUploaderThread.execute should match case of ancestor TThread.Execute 
وهل تشكل خطر ؟؟

في أمان الله,,
هذا تحذير وليس خطأ

عندما تقوم بعمل overried لدالة virtual موجودة في الصنف الاب . المترجم يتوقع منك بعض implementation ولكن اذا وجد الدالة فارغة . يقوم بحذيرك فقط
وعليكم السلام ورحمة الله وبركاته
جرب توجيه reintroduce عوض override لحذفها.
بارك الله فيكم

إقتباس :عندما تقوم بعمل overried لدالة virtual موجودة في الصنف الاب . المترجم يتوقع منك بعض implementation ولكن اذا وجد الدالة فارغة . يقوم بحذيرك فقط
الإجراء Execute ليس فارغ أنظر الكود :
PHP كود :
protected
  
procedure Execute; override;
  
Procedure Upload;
-------------------------------------------------
procedure TUploaderThread.execute;
begin
  
If (Not Terminated) Then
     Upload
;
end; 
ماذا لو وضعة inherited; ذاخل الاجراء Execute :
PHP كود :
procedure TUploaderThread.execute;
begin
  inherited
;
  If (
Not Terminated) Then
     Upload
;
end; 
إقتباس :جرب توجيه reintroduce عوض override لحذفها.
[COLOR="DarkGreen"]نعم اخي الكريم حذفة الرسالة .....
[/COLOR]لكن ما الفرق بينهما (اصلا لم اعرف طبيعة هدا التحدير) ؟؟!

في أمان الله .
inherited تقوم باستدعاء الحدث الأصلي قبل التعليمات التي بعده
reintroduce لإشعار الـ Compiler بإننا نريد (بالقوة) إعادة التعريف المنهج من جديد، وبالتالي لا ينذر يأي شيء
لا فرق (فيما أعلم) بينها وبين override من الناحية العملية.