السلام عليكم ورحمة الله وبركاته
كيف يتم انشاء اجراء او دالة له براميتر واحد فقط وغير محدد النوع حيث يقوم الاجراء بطباعة حجمه باستخدام 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;
السلام عليكم ورحمة الله وبركاته
شكرا اخي عبد الجليل الطريقة تعمل جيداً, بارك الله فيك
و عليكم السلام ورحمة الله وبركاته
وفيك بارك الله ، بالتوفيق أخي