ورود

نسخه کامل مشاهده نسخه کامل : نادیده گرفتن یک مشکل در compile از طرف visual studio !!!!!!!



mani_kalantar
24-11-2008, 15:43
سلام دوستان.

من یک برنامه نوشتم که قراره با حلقه foreach و یک تابع بازگشتی تمام فایلها و دایرکتوری های یک درایو را نشان بده.ولی موقع کامپایل متوجه شدم کامپایلر یک شرط if رو نادیده میگیره.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


در خط if(retdi==ll2) اگر retdi و ll2 با هم مساوی باشند باید بازگشت انجام شود ولی شرط نادیده گرفته میشه و یک حلقه بی نهایت ایجاد میشه و error میده.
اگر کسی هم میتونه این مساله رو با foreach یک جور دیگه حل کنه لطفا راهنماییم کنه
توضیح این که در بازگشتی باید به یک نقطه بازگشت برسی تا تابع بازگشت کنه.اگر نه یک حلقه تو در توی "خود فراخوان" رو ادامه بده.من نمیدونم اون نقطه بازگشت رو باید کجا بگیرم.
باز هم از همگی تشکر میکنم.

hamidreza_buddy
25-11-2008, 01:45
چون تعداد فایل ها و دابرکتوری ها متناهی هست، در نتیجه اگه if هم نداشته باشیم بازگشت می کنه. به یه جایی می رسه که دیگه دایرکتوری، زیردایرکتوری نداره. در نتیجه بر می گرده. مثل ساختمان داده یک درخت.

مشکل کدت اینه. به جای

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

باید این باشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اون if هم نیاز نیست.

این یه کد که این کارو میکنه (کنسول):

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
25-11-2008, 01:47
سلام
یک کد یک خطی هم میتوانید بنویسید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

البته در تایید پست جناب hamidreza_buddy باید اضافه کنم که تسلط و بلد بودن طراحی الگوریتم هم ارزش خودش را دارد.

_H2_
26-11-2008, 09:56
سلام
راستی یادم نبود، شاید دستور زیر از قبلی بهتر باشد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

am2
29-11-2008, 10:32
سلام
من يه مشكل با ويژال استوديو 2008 دارم اونم اينه كه وقتي توي برنامه كد زير رو مينويسم ميگه اشتباهه

کد:
Private Sub txtCelsius_KeyUp (KeyCode As Integer, shift As Integer)

txtFahrenheit = (Val (txtCelsius)*9/5) + 32

End Sub
و زيرش خط ميكشه حالا نميشه كاري كرد كه برنامه از اين مشكل نضر كنه و ادامه برنامه رو براي تست اجرا كنه

_H2_
29-11-2008, 22:39
سلام

کدتان اصلاً خطای سینتکسی دارد، چه انتظاری از کامپایلر دارید؟
مثل این است که من بنویسم If x y While "r'=25 !!!!! آیا کامپایلر باید این را متوجه شود؟
دیگر رعایت قواعد سینتکسی جزو بدیهیات است، شما نمیتوانید به زبان VB مد نویسی نکنید و توقع اجرا فرمان هم داشته باشید.

=====

- ایراد اصلی سینتکسی شما از فقدان خصویت Text است، شما معلوم نکرده اید چه خصیصه ای باید پردازش شود
- ایراد قانونی هم دارید! تبدیلات صریح را رعایت نکرده اید، من به همه دوستان توصیه میکنم در vb با تنظیم Option Strict On کدنویسی کنند تا اجبار تبدیلات صریح فعال شود و جلوی خطاهای بزرگتر را بگیرد

کد پیشنهادی:
(اگر Me.txtCelsius.Text خالی و یا غیر قابل تبدیل باشد با خطا مواجه خواهد شد.)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

=====

موفق باشید.