هل يمكن كتابة اجراء يستقبل براميتر غير محدد النوع
#1
السلام عليكم ورحمة الله وبركاته

كيف يتم انشاء اجراء او دالة له براميتر واحد فقط وغير محدد النوع حيث يقوم الاجراء بطباعة حجمه باستخدام Sizeof علما ان المتغير الذي سيتم ارساله للاجراء او الدالة ليس معلوم النوع , او يوجد لدينا عدة متغيرات مختلفة النوع وسيتم ارسال واحد تلو الاخر الى نفس الاجراء.

لم انجح في استخدام النوع Variant.
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
الرد
#2
حاولت مجددا ولم يجدي نفعاً غير استخدام Oop polymorphism
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
الرد
#3
وعليكم السلام و رحمة الله و بركاته

إقتباس :https://stackoverflow.com/questions/3275...en-variant



كود :
function GetVarTypeSize(AVarType : TVarType; isArray : boolean) : integer; begin   isArray := AVarType <> (AVarType and VarTypeMask);   case AVarType and VarTypeMask of     varSmallInt: result := SizeOf(SmallInt);     varInteger:  result := SizeOf(Integer);     varSingle:   result := SizeOf(Single);     varDouble:   result := SizeOf(Double);     varCurrency: result := SizeOf(Currency);     varDate:     result := SizeOf(TDateTime);     varOleStr:   result := SizeOf(PWideChar);     varDispatch: result := SizeOf(Pointer);     varError:    result := SizeOf(HRESULT);     varBoolean:  result := SizeOf(WordBool);     varUnknown:  result := SizeOf(Pointer);     varShortInt: result := SizeOf(ShortInt);     varByte:     result := SizeOf(Byte);     varWord:     result := SizeOf(Word);     varLongWord: result := SizeOf(LongWord);     varInt64:    result := SizeOf(Int64);     varUInt64:   result := SizeOf(UInt64);     varString:   result := SizeOf(Pointer);     varAny:      result := SizeOf(Pointer);     varArray:    result := SizeOf(PVarArray);     varByRef:    result := SizeOf(Pointer);     varUString:  result := SizeOf(Pointer);     varRecord:   result := SizeOf(TVarRecord);   else     result := -1;  //unknown   end; end; procedure pr_variant(my_var: variant); begin ShowMessage(inttostr(GetVarTypeSize(VarType(my_var),false))) ; end; procedure TForm1.Button1Click(Sender: TObject); begin pr_variant(10); pr_variant('test'); end;
[-] كل من 1 user says قال شكرا ل Lam.Abdeldjalil على المشاركة المفيدة
  • ELARAPY
الرد
#4
السلام عليكم ورحمة الله وبركاته

شكرا اخي عبد الجليل الطريقة تعمل جيداً, بارك الله فيك
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
[-] كل من 1 user says قال شكرا ل ELARAPY على المشاركة المفيدة
  • Lam.Abdeldjalil
الرد
#5
و عليكم السلام ورحمة الله وبركاته

وفيك بارك الله ، بالتوفيق أخي
[-] كل من 1 user says قال شكرا ل Lam.Abdeldjalil على المشاركة المفيدة
  • ELARAPY
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم