ورود

View Full Version : پیغام اخطار و بستن فرم



spicirmkh
پنج شنبه 01 آذر 1386, 11:51 صبح
سلام

من یک فایل DLL صدا می زنم وقتی فرم این فایل Dll ایجاد می شود مقدار قرار گرفتن فرم می دهد و مقدار برگشتی از نوع Longint



About_contact : function (AppHandle : THandle ; ParentWnd : Tpanel ): LongInt;stdcall;


زمان کامپایل می گوید unsafe typecast of integer to 'Tform'

گاهی اوقات برنامه روی این خطا پیغام خطا می دهد


if (TForm(Formcontact).Visible = True) then exit ;

vcldeveloper
سه شنبه 06 آذر 1386, 02:20 صبح
زمان کامپایل می گوید unsafe typecast of integer to 'Tform'
خب، اینکه طبیعی هست. داری یک مقدار عددی را بصورت TForm استفاده می کنی و کامپایلر هیچ راهی نداره که بفهمه آیا این مقدار واقعا یک TForm هست یا نه. به همین دلیل هم اخطار میده.
اگر روی خط مربوطه خطا میده، احتمالا مقدار Integer ایی که داری به TForm تبدیل میکنی، آدرس مربوط به یک نمونه از کلاس TForm نیست. بهتره بجای Integer از Pointer استفاده کنی و قبل از فراخوانی Visible با استفاده از تابع Assigned چک کنی که مقدار Pointer برابر nil نباشه. البته این هم فقط nil بودن را چک میکنه و مشخص نمی کنه که آیا واقعا اون Pointer به نمونه ایی از TForm اشاره می کنه یا نه. علت خطرناک بودن این کد هم همینه.