PDA

View Full Version : مبتدی: معني دستور Assert



Majid.Ebru
دوشنبه 29 شهریور 1389, 13:55 عصر
سلام
توي برنامه زير دستور Assert يعني چي ؟ چي كار مي كنه؟


procedure TEmployeeList.GenerateSalaryList(Strings: TStrings);
var
AEmployee : TEmployee;
begin
Assert(Assigned(Strings),'Strings is not created');

Strings.Clear;
for AEmployee in Self do
Strings.Add(AEmployee.Name + '=' + CurrToStr(AEmployee.Salary));
end;

Mahmood_M
دوشنبه 29 شهریور 1389, 17:17 عصر
دستور Assert یک عبارت شرطی رو دریافت میکنه و در صورتی که حاصل شرط False باشه ، یک پیغام نمایش میده ، پیغام نمایش داده شده شامل نام Unit و شماره ی خطی هست که دستور Assert در اون نوشته شده ، می تونید در پارامتر دوم دستور Assert یک رشته ی دلخواه وارد کنید ، در این صورت پیغام نهایی شامل رشته ی دلخواه و نام Unit و شماره ی خط خواهد بود ...
دستور Assert درواقع ابزاری برای Debug برنامه هست و اصولا در نسخه ی نهایی برنامه استفاده نمیشه ، در زمان تست برنامه می تونید از این دستور استفاده کنید و مثلا از صحت برخی از عبارات شرطی ای که در کدهاتون قرار دادید اطمینان حاصل کنید.
مثلا در Procedure ای که قرار دادید دستور Assert حاصل تابع Assigned رو چک میکنه و اگر مقدار False برگشت داده بشه ، یک پیغام نمایش میده ، توجه کنید که بعد از نمایش پیغام برنامه متوقف میشه ، درواقع دستورات بعد از Assert اجرا نمی شن ، یا به عبارت دیگه یک Access Violation نمایش داده میشه ...

برای اینکه به کامپایلر دلفی بفهمونید که آیا دستورات Assert رو لحاظ کنه یا نکنه می تونید از عبارت Assertion به عنوان یک Compiler Directive استفاده کنید :

{$ASSERTIONS ON} or {$ASSERTIONS OFF}

اگر Assertion رو Off کنید دیگه پیغامی برای دستورات Assert ایجاد نمیشه و همراه فایل کامپایل نمیشه ولی اگر Assertion رو On کنید ، نام Unit و شماره ی خط به عنوان متن پیغام مربوط به Assert توسط کامپایلر در فایل EXE نهایی قرار می گیره ...

موفق باشید ...