المشاركات : 367
المواضيع 54
:
: 506
الإنتساب : Jan 2011
02-04-2022, 07:16 AM
(آخر تعديل لهذه المشاركة: 02-04-2022, 07:20 AM بواسطة ELARAPY.)
السلام عليكم ورحمة الله وبركاته
كيف يتم انشاء اجراء او دالة له براميتر واحد فقط وغير محدد النوع حيث يقوم الاجراء بطباعة حجمه باستخدام Sizeof علما ان المتغير الذي سيتم ارساله للاجراء او الدالة ليس معلوم النوع , او يوجد لدينا عدة متغيرات مختلفة النوع وسيتم ارسال واحد تلو الاخر الى نفس الاجراء.
لم انجح في استخدام النوع Variant.
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
المشاركات : 367
المواضيع 54
:
: 506
الإنتساب : Jan 2011
حاولت مجددا ولم يجدي نفعاً غير استخدام Oop polymorphism
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
المشاركات : 842
المواضيع 49
:
: 65
الإنتساب : Jun 2010
وعليكم السلام و رحمة الله و بركاته
إقتباس :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;
المشاركات : 367
المواضيع 54
:
: 506
الإنتساب : Jan 2011
السلام عليكم ورحمة الله وبركاته
شكرا اخي عبد الجليل الطريقة تعمل جيداً, بارك الله فيك
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
المشاركات : 842
المواضيع 49
:
: 65
الإنتساب : Jun 2010
و عليكم السلام ورحمة الله وبركاته
وفيك بارك الله ، بالتوفيق أخي