ورود

View Full Version : Header File



NewFoxStudent
یک شنبه 26 خرداد 1387, 11:02 صبح
فایلهای هدر(*.h) چجوری استفاده میشن

rezaTavak
یک شنبه 26 خرداد 1387, 13:05 عصر
مثال:


#INCLUDE foxpro.h

frahimi
یک شنبه 26 خرداد 1387, 15:48 عصر
دوستان ببخشید من سوادم کم است.

Header File چیست و به چه دردی میخورد.

NewFoxStudent
یک شنبه 26 خرداد 1387, 16:07 عصر
این رو میدونم
منظورم اینه که چه کاری باهاش میشه انجام داد
به عنوان مثال میشه یک فایل هدر داشته باشیم که توش دستورات فاکس باشه
اگه همچین فایلی رو به برنامه اضافه کنیم فاکس پرو همون رفتاری رو باهاش داره که تو زبان سی هست
یعنی قبل از اجرای برنامه اون دستورات رو هم به برنامه اضافه میکنه؟

NewFoxStudent
یک شنبه 26 خرداد 1387, 16:20 عصر
یه مثال دیگه
من در اکثر برنامه هام یک فایل پی آر جی با نام Config دارم که برای شروع برنامه ازش استفاده میکنم(ست کردن مسیرهاواتصال به بانک اس کیو ال و ....) آیا میتونم اونو تبدیل به یک فایل هدر کنم وتوی یه فایل دیگه ازش استفاده کنم



#Include Config.H
reade event

rezamim
یک شنبه 26 خرداد 1387, 16:50 عصر
در هلپ نوشته
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 اونو فراخواني كنيد.

NewFoxStudent
یک شنبه 26 خرداد 1387, 18:09 عصر
بنابراین منظور شما اینه که بجز دستورات پیش پردازنده مثل #defin از دستورات دیگه فاکس نمیشه در فایلهای هدر استفاده کرد
به عنوان مثال نمیشه کد زیر رو تو یه فایل هدر نوشت و با دستور #include به برنامه اضافه کرد


Public CSQL
Csql = SqlStringConnection("Driver=Sql Server;Server=.;UID=sa;PWD=master;DataBase=Master")1
IF CSQL <= 0
return

NewFoxStudent
یک شنبه 26 خرداد 1387, 18:09 عصر
درست متوجه شدم

rezaTavak
دوشنبه 27 خرداد 1387, 07:38 صبح
خب منظورتان را کامل بیان کنید تا به هدفتان بهتر برسید.

اگر بدانید که در زبان سی از فایلهای اشاره شده برای تعریف متغیرها و پیش نویس توابع و ماکروها استفاده میشود. در فاکس فقط ماکرو نداریم و نیازی به پیش نویس توابع نیست پس فقط برای متغیرها استفاده میشود نمونه هایی هم خود فاکس استفاده کرده است مثلا:

foxpro.h

خب با این تفاسیر فقط شما از متغیر در این فایلها استفاده کنید و فقط هم دستور #DEFINE

NewFoxStudent
دوشنبه 27 خرداد 1387, 08:23 صبح
البته در زبان سی میتوانیم دستورات دیگری مثل بدنه توابع را هم در این گونه فایلها وارد کنیم
ولی با توجه به پاسخ های شما این امکان در فاکس وجود ندارد
از توجه شما ممنونم من جواب سوالم را گرفتم

rahro
دوشنبه 27 خرداد 1387, 09:50 صبح
مثلا شما اگر در برنامتون از اسم يه شركت براي نمايش در فرمها ، گزارشات و ... استفاده ميكنيد، ميتونيد به جاي اينكه در هر قسمت اونو بنويسيد ، در ابتداي برنامه با معرفي اون با دستور #Define هر بار كه بخواهيد اين اسمو تغيير بديد ديگه نخواهيد تمام برنامه رو اصلاح كنيد.
سلام
معمار جان :
ميشه محتوا رو از يك متغير به اين دستور وارد كرد و ديگه از عملگرها استفاده نكرد؟!!

rezaTavak
دوشنبه 27 خرداد 1387, 11:09 صبح
متغیر خوب نیست چون #DEFINE یک Prototype است یعنی اینکه قبل از اینکه کمپایل بشه مقادیر به جای نام مستعار قرار می‌گیرند. یعنی اینکه:



#DEFINE VALUE 5
a=VALUE


برنامه اول اینطوری میشه:


a=5


بعد ترجمه میشه.





من امتحان نکردم اما در refox نباید شما #DEFINE داشته باشید! اگر در فایل سورس اصلی بوده باشد.

NewFoxStudent
دوشنبه 27 خرداد 1387, 12:11 عصر
توی فاکس چیزی شبیه ماکروی زبان سی وجود نداره?????

rezaTavak
سه شنبه 28 خرداد 1387, 08:03 صبح
نه نداریم.

دلیل: ماکرو تقریبا مانند عبارت است با این تفاوت که در موقع کمپایل مقادیر را به جای مناسب قرار میدهد و بعد کمپایل میشود و زمانی از ماکرو استفاده میشود که نخواهیم همین کار را با تابع انجام دهیم و سرعت بالاتر باشد.


در فاکس کمپایل بصورت زبان ماشین نیست p-code است پس قاعدتا سرعت پایین است و ماکرو با تابع جایگزین میشود.

البته من زبانهای دیگر را نمیدانم اما فقط سی و اسمبلی دارای ماکرو هستند.