PDA

View Full Version : سوال: متن موجود در کامنت build



Mask
سه شنبه 27 اردیبهشت 1390, 17:28 عصر
با سلام
وقتی برنامم رو با Ctrl+F9 اجرا میکنم . با اینکه بیلد میشه اما این تکست رو نمایش میده.
اولا اگه محبت کنید و بفرمایید چطوری برطرف میشه و چرا میاد.
ممنون.

[Hint] Unit2.pas(1090): Value assigned to 'IsMatch' never used
[Warning] Unit2.pas(1765): Symbol 'IncludeTrailingBackslash' is specific to a platform
[Warning] Unit2.pas(3179): Constant expression violates subrange bounds
[Warning] Unit1.pas(763): Return value of function 'PowerMng' might be undefined
[Warning] Unit1.pas(960): Constant 0 converted to NIL

یوسف زالی
سه شنبه 27 اردیبهشت 1390, 17:41 عصر
اولی میگه یه متغیر داری که ازش استفاده نکردی.
دومی می گه که این کد فقط رو یه پلت فرم خاص جواب میده . احتمالا فقط ویندوز منظورشه
سومی هم میگه از اندازه مجاز برای اون متغیر فراتر رفتید.
رو هر کدوم دوبار کلیک کنی میره رو خطش.

SAASTN
سه شنبه 27 اردیبهشت 1390, 19:37 عصر
اولی میگه یه متغیر داری که ازش استفاده نکردی
متغیر استفاده نشده که اینه: Variable 'Hello' is declared but never used in 'TForm1.Button1Click'
اولی می گه از مقدار اختصاص داده شده به یه متغیر استفاده نشده. مثلا تو کد زیر به خط یک این گیرو میده:
Hello := 10;
Hello := 20;
ShowMessage(IntToStr(Hello));

میگه اختصاص اولی بی کاربرد مونده و باید حذف بشه. ولی خوب این گیر بعضی وقتا بی مورده، مثلا تو کد زیر هم به خط یک گیر میده:
Hello := 0;
while Condition do
Hello := Hello + 1;
ShowMessage(IntToStr(Hello));


Return value of function 'PowerMng' might be undefined
اینم زمانی اتفاق میوفته که خروجی یه تابع رو داخل شرطها و case و ... اختصاص بدید. که اینم بعضی وقتا منطقا بی مورده ولی خوب کامپایلر شعورش نمی رسه، مثلا کد زیر این پیغامو ایجاد می کنه:
type
TWeekDays = (wdMonday, wdTuesday, wdWednesday, wdThursday, wdFriday,
wdSaturday, wdSunday);
function WeekDayToStr(Day: TWeekDays): string;
begin
case Day of
wdMonday: Result := 'Monday';
wdTuesday: Result := 'Tuesday';
wdWednesday: Result := 'Wednesday';
wdThursday: Result := 'Thursday';
wdFriday: Result := 'Friday';
wdSaturday: Result := 'Saturday';
wdSunday: Result := 'Sunday';
end;
end;

البته بین خودمون باشه، الان این کد تو XE اون پیغام و ایجاد نمی کنه، حتی چند تا از سطراشم پاک کردم که دیگه رسما مشکل داشته باشه ولی بازم هیچی. اما همین کد تو 2007 warning میده.
کلا اگه می خواید بدونید هر کدوم از این خطا ها و اخطارها و تذکر ها چی می گن کافیه کل متنشون رو توی راهنمای دلفی جستجو کنید، معمولا پاسخ اول دقیقا توضیح همون متن خطاست.
اگرم به یکی از این خطا ها اشراف دارید و کلا رو اعصاب راه میره و نمی خواید ببینیدش می تونید غیرفعالش کنید:

Project\Options\Delphi Compiler\Hints and Warnings
ولی خوب اکثرا بودنشون بهتر از نبودنشونه، من میذارم جمع شن، هر یکی دوماه یبار میشینم تو پروژم اینا رو می خونم و بعضی وقتا پیش میاد که راست میگن و باید برطرفشون کنم.

Mask
سه شنبه 27 اردیبهشت 1390, 20:01 عصر
خط آخر دیگه چی میگه؟
خیلی بی معنیه...

SAASTN
سه شنبه 27 اردیبهشت 1390, 20:51 عصر
Constant 0 converted to NIL
خوب اینم از متنش مشخصه، داره اطلاع میده که یجا بجای اشاره گر از مقدار عددی استفاده شده و 0 توسط کامپایلر به nil تبدیل شده. توجه داشته باشید اینا خطا نیستند، دارند موارد مشکوک در کد رو به شما اطلاع میدن، این قضیه هم از نظر دلفی کار روتینی نبوده و داره اخطار میده.
تو راهنما هم گفته که برای حفظ سازگاری کد های قدیمی اجازه داده میشه که از 0 بجای nil به عنوان مقدار اشاره گر استفاده بشه. اما خوب معلومه خیلی با این قضیه حال نمی کنه و داره گیرش رو میده تا خود برنامه نویسا این موارد رو اصلاح کنن.