PDA

View Full Version : استفاده از متغییر داخل unit



vahidarjmand
پنج شنبه 30 اردیبهشت 1389, 19:58 عصر
با سلام
من در پروژه خودم یک unit درست کردم برای اینکه از متغییر های داخل اون در فرم های دیگه استفاده کنم بدین شکل


unit common;
interface
type
Tmysort=record
fldname:string;
acsdesc:string;
end;
implementation
end.

حالا وقتی میخوام از متغییرهام استفاده کنم در فرم دیگه با اینکه unit commonرو use unit کردم و در قسمت var اون را اعلان کردم ولی باز هم error میدهد : uncleared identifier:Tmysort
مشکل کجاست
راهنمایی کنید لطفا

vcldeveloper
پنج شنبه 30 اردیبهشت 1389, 20:04 عصر
شما در این کد متغیری تعریف نکردید، فقط یک Type از نوع رکورد تعریف کردید، با نام Tmysort.

حسین شهریاری
پنج شنبه 30 اردیبهشت 1389, 21:03 عصر
اگه میخاین متغیرها یا روالها در فرمهای دیگر قابل دسترسی باشند باید اونا را در بخش Public تعریف کنید.

vahidarjmand
پنج شنبه 30 اردیبهشت 1389, 23:49 عصر
سلام
مرسی که جواب دادید.من تازه شروع کردم.
میشه راهنمایی کنید پس چه طور باید متغییر هایم را تعریف کنم طوری که صدا زدن آنها بدین شکل باشد.


mysort.fldname
یا
mysort.ascdesc


با تشکر

vcldeveloper
جمعه 31 اردیبهشت 1389, 03:23 صبح
میشه راهنمایی کنید پس چه طور باید متغییر هایم را تعریف کنم طوری که صدا زدن آنها بدین شکل باشد.
شما یک نوع داده ایجاد کردید، باید ابتدا از اون نوع داده یک متغیر ایجاد کنید، و از آن متغیر استفاده کنید:


unit common;

interface
type
Tmysort=record
fldname:string;
acsdesc:string;
end;
var
MySort : TMySort;

implementation

end.

حالا می تونید از MySort در کدتان استفاده کنید.

vahidarjmand
جمعه 31 اردیبهشت 1389, 14:39 عصر
با سلام
جواب داد. مرسی
یک سوال دیگه برام پیش اومده
من یک پروسیجور درست کردم بدین شکل



procedure Tbuy_foil_form.sortqry(par:Tmysort);
begin
if mysort.ascdesc=' ASC ' then
mysort.ascdesc:=' DESC '
else
mysort.ascdesc:=' ASC ';
dm.buy_foil_qry.Sort:=mysort.fldname+''+mysort.asc desc;
end;


و اون رو در قسمت type اعلان کردم


procedure sortqry(par:Tmysort);

unit common رو use unit کردم .
mysortرو در بقیه صفحه میشناسه ولی از دستور اعلانش error میگره یعنی در اونجا mysort رو نمیشناسه


[Error] buy_foil_frm.pas(14): Undeclared identifier: 'Tmysort'

ممنون مییشم اگه بازم راهنمایی کنید

vcldeveloper
جمعه 31 اردیبهشت 1389, 17:31 عصر
من یک پروسیجور درست کردم بدین شکل
این Procedure نیست، بلکه یک متد از کلاس Tbuy_foil_form هست.


و اون رو در قسمت type اعلان کردم

کجا اون رو اعلان کردید؟ در داخل تعریف کلاس Tbuy_foil_form؟


unit common رو use unit کردم .
mysortرو در بقیه صفحه میشناسه ولی از دستور اعلانش error میگره یعنی در اونجا mysort رو نمیشناسه
به خاطر اینکه یونیت Common رو در بخش Implementation از یونیت خودتان use کردید. باید به جای آن، این یونیت را به لیست uses بخش Interface یونیت خودتان اضافه کنید.

در ضمن، اون پارامتر Par: Tmysort که برای متد Sortqry تعریف کردید، در کد شما هیچ نقشی نداره، و در متد از آن استفاده نکردید.