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

نسخة كاملة : هل يمكن كتابة اجراء يستقبل براميتر غير محدد النوع
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

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

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

إقتباس :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;
السلام عليكم ورحمة الله وبركاته

شكرا اخي عبد الجليل الطريقة تعمل جيداً, بارك الله فيك
و عليكم السلام ورحمة الله وبركاته

وفيك بارك الله ، بالتوفيق أخي