ورود

View Full Version : مشكل در حل Error



Good Looking
دوشنبه 27 خرداد 1387, 23:05 عصر
با سلام و خسته نباشيد:


procedure Tform1.Edit1Click (sender:Tobject
begin
if paste1 thenpaste1.Enabeled:=true
if memo1.SelLength >0 then
begin

Copy1.Enabled:=True;

Cut1.Enabled:=True;

clear1.Enabled:=true

end
else

begin
copy1.Enabled:=False

Cut1.Enabled:=false
Clear1.Enabled:=False
end


قطعه كد بالا را براي گزينه (Edit) نوشتم كه جزئي از برنامه ويرايشگر متني مي باشد ومشخص مي كند كه گزينه هاي (Copy,Cut,Clear) در چه زماني فعال يا غير فعال شوند. بنابر اين اگر متني انتخاب شده باشد اين گزينه ها فعال مي شوند و در غير اين صورت اين گزينه ها غير فعالند.



و در اين قطعه برنامه از متغير (Paste) استفاده شده كه معين مي كند چه زماني گزينه (Paste) فعال باشد(يعني هنگامي كه متني در Clipboard قرار گرفت) براي اولين بار بايد گزينه (Past) غير فعال باشد

. و اين متغير را در بخش (Implementation) را به صورت زير معرفي كردم :



Const



Paste1 :Boolean = false;



ولي در هنگام اجراي برنامه ارور زير نشان داده مي شود:



Type of expression must be BOOLEAN



حال مي خواستم از دوستان گرامي بپرسم كه راه حل چيست؟

Hsimple11
سه شنبه 28 خرداد 1387, 00:02 صبح
حال مي خواستم از دوستان گرامي بپرسم كه راه حل چيست؟


دوست عزیز هیچ نیازی به این همه کد نویسی وجود نداشت. می توانی از خود دلفی برای ایجاد یک ویرایشگر متن ساده استفاده کنی. یک برنامه MDI به راحتی تمام چیزهایی را که نیاز دارید برایتان ایجاد میکند. با این وجود اگر مایلید خود اینچنین برنامه ای را بنویسید بایستی ابتدا شرط ها و متغیر های خود را در هر برنامه به درستی تعریف کنید. مثلا Constant ها متغیر نیستند و خود انواعی دارند. یا اینکه هر شرط در زندگی روزمره خودمان هم باید شرط باشد! یعنی 2 طرف داشته باشد، یک مسئله با مسئله دیگری قیاس شود که اگر شرط برقرار باشد فلان موضوع اتفاق بیفتد یا .....

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

اصغر (پآچ)
سه شنبه 28 خرداد 1387, 00:16 صبح
سلام دوست من
بجای استفاده از Const از Var استفاه کن
موفق و موید باشی

dkhatibi
سه شنبه 28 خرداد 1387, 22:15 عصر
نمی نوانید مقدار ثابتها را در طول برنامه تغییر دهید.

Good Looking
سه شنبه 28 خرداد 1387, 23:10 عصر
با تشكر از شما دوستان
ولي من فكر مي كنم كه اشكال در اين قطعه از كد هست:
( if paste1 then paste1.Enabeled:=true)
كه بايد بعد از (if paste1) يك شرط نوشته بشود و بعد از ان است كه جواب شرط اورده بشود .
حالا شما فكر مي كنيد كه اين شرط(با توجه به توضيحات بالا )چه بايد باشد؟

SYNDROME
چهارشنبه 29 خرداد 1387, 06:22 صبح
( if paste1 then paste1.Enabeled:=true)

paste1 چی هست؟
اگر متغییر است که دستور باید به این شکل نوشته شود.


IF paste1 Then
paste1:=true

البته فکر نمی کنم متغییر باشد.
اگر هم یک کامپونت است در قسمت شرط باید یک عملی انجام دهی که نتیجه Bool باشد.
مثلاً اگر CheckBox است به این شکل عمل کنید.


IF paste1.Checked Then
Paste1.Enabled := True;

البته می توانید اینجوری هم بنویسید.


Paste1.Enabled := paste1.Checked;

موفق باشید

vcldeveloper
پنج شنبه 30 خرداد 1387, 00:02 صبح
مشکل شما را که دوستان گفتند، اما برای کاری که میخواید انجام بدید، پیشنهاد می کنم بجای روش فعلی، که روش جالبی نیست(!)، از یک Action List و Action های استاندارد دلفی برای Edit استفاده کنید. درباره Action ها قبلا در همین سایت بحث شده.