فایلهای هدر(*.h) چجوری استفاده میشن
فایلهای هدر(*.h) چجوری استفاده میشن
مثال:
#INCLUDE foxpro.h
____________________________
همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)
دوستان ببخشید من سوادم کم است.
Header File چیست و به چه دردی میخورد.
این رو میدونم
منظورم اینه که چه کاری باهاش میشه انجام داد
به عنوان مثال میشه یک فایل هدر داشته باشیم که توش دستورات فاکس باشه
اگه همچین فایلی رو به برنامه اضافه کنیم فاکس پرو همون رفتاری رو باهاش داره که تو زبان سی هست
یعنی قبل از اجرای برنامه اون دستورات رو هم به برنامه اضافه میکنه؟
یه مثال دیگه
من در اکثر برنامه هام یک فایل پی آر جی با نام Config دارم که برای شروع برنامه ازش استفاده میکنم(ست کردن مسیرهاواتصال به بانک اس کیو ال و ....) آیا میتونم اونو تبدیل به یک فایل هدر کنم وتوی یه فایل دیگه ازش استفاده کنم
#Include Config.H
reade event
در هلپ نوشته
The #DEFINE and #UNDEF preprocessor directives are used to create compile-time constants in programs. By creating constants with #DEFINE instead of using variables, you can reduce memory consumption, increase performance, and simplify programs.
در واقع اينها مقادير ثابتي هستند كه ميشه از اونها به جاي متغيرها استفاده كرد و همينطور كه گفته شده باعث كمتر اشغال شدن حافظه ، افزايش كارائي و ساده سازي برنامه نوشته شده ميشه.
مثلا شما اگر در برنامتون از اسم يه شركت براي نمايش در فرمها ، گزارشات و ... استفاده ميكنيد، ميتونيد به جاي اينكه در هر قسمت اونو بنويسيد ، در ابتداي برنامه با معرفي اون با دستور #Define هر بار كه بخواهيد اين اسمو تغيير بديد ديگه نخواهيد تمام برنامه رو اصلاح كنيد.
در آخر هم ميتونيد درصورت تمايل ، تمام اين تعاريف رو در يك فايل جدا بريزيد و با #Include اونو فراخواني كنيد.
بنابراین منظور شما اینه که بجز دستورات پیش پردازنده مثل #defin از دستورات دیگه فاکس نمیشه در فایلهای هدر استفاده کرد
به عنوان مثال نمیشه کد زیر رو تو یه فایل هدر نوشت و با دستور #include به برنامه اضافه کرد
Public CSQL
Csql = SqlStringConnection("Driver=Sql Server;Server=.;UID=sa;PWD=master;DataBase=Master" )1
IF CSQL <= 0
return
درست متوجه شدم
خب منظورتان را کامل بیان کنید تا به هدفتان بهتر برسید.
اگر بدانید که در زبان سی از فایلهای اشاره شده برای تعریف متغیرها و پیش نویس توابع و ماکروها استفاده میشود. در فاکس فقط ماکرو نداریم و نیازی به پیش نویس توابع نیست پس فقط برای متغیرها استفاده میشود نمونه هایی هم خود فاکس استفاده کرده است مثلا:
foxpro.h
خب با این تفاسیر فقط شما از متغیر در این فایلها استفاده کنید و فقط هم دستور #DEFINE
____________________________
همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)
البته در زبان سی میتوانیم دستورات دیگری مثل بدنه توابع را هم در این گونه فایلها وارد کنیم
ولی با توجه به پاسخ های شما این امکان در فاکس وجود ندارد
از توجه شما ممنونم من جواب سوالم را گرفتم
سلاممثلا شما اگر در برنامتون از اسم يه شركت براي نمايش در فرمها ، گزارشات و ... استفاده ميكنيد، ميتونيد به جاي اينكه در هر قسمت اونو بنويسيد ، در ابتداي برنامه با معرفي اون با دستور #Define هر بار كه بخواهيد اين اسمو تغيير بديد ديگه نخواهيد تمام برنامه رو اصلاح كنيد.
معمار جان :
ميشه محتوا رو از يك متغير به اين دستور وارد كرد و ديگه از عملگرها استفاده نكرد؟!!
متغیر خوب نیست چون #DEFINE یک Prototype است یعنی اینکه قبل از اینکه کمپایل بشه مقادیر به جای نام مستعار قرار میگیرند. یعنی اینکه:
#DEFINE VALUE 5
a=VALUE
برنامه اول اینطوری میشه:
a=5
بعد ترجمه میشه.
من امتحان نکردم اما در refox نباید شما #DEFINE داشته باشید! اگر در فایل سورس اصلی بوده باشد.
____________________________
همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)
توی فاکس چیزی شبیه ماکروی زبان سی وجود نداره?????
نه نداریم.
دلیل: ماکرو تقریبا مانند عبارت است با این تفاوت که در موقع کمپایل مقادیر را به جای مناسب قرار میدهد و بعد کمپایل میشود و زمانی از ماکرو استفاده میشود که نخواهیم همین کار را با تابع انجام دهیم و سرعت بالاتر باشد.
در فاکس کمپایل بصورت زبان ماشین نیست p-code است پس قاعدتا سرعت پایین است و ماکرو با تابع جایگزین میشود.
البته من زبانهای دیگر را نمیدانم اما فقط سی و اسمبلی دارای ماکرو هستند.
____________________________
همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)