PDA

View Full Version : سوال: چرا این حلقه شرط نداره ؟



mehrdad1991h
شنبه 07 اردیبهشت 1392, 12:47 عصر
سلام
الان داشتم دنبال یه چیزی میگشتم که بیام اخر فایل ها را نام گذاری کنم که شماره بگذاره و بره جلو
در جوابی که یافتم حلق شرط نداره
چرا ؟
public FileInfo MakeUnique(string path)
{
string dir = Path.GetDirectoryName(path);
string fileName = Path.GetFileNameWithoutExtension(path);
string fileExt = Path.GetExtension(path);

for (int i = 1; ; ++i)
{
if (!File.Exists(path))
return new FileInfo(path);

path = Path.Combine(dir, fileName + " " + i + fileExt);
}
}


این کد را هنوز تست نکردم ولی الان 2 تا سوال دارم
این حلقه چه موقع متوقف میشه ؟
و این که اینجا داره چه اتفاقی رخ میدهد ؟
path = Path.Combine(dir, fileName + " " + i + fileExt);

یه نفر توضیح بدهد لطفا

با تشکر بابت وقتی که گذاشتید
سپاس

FastCode
شنبه 07 اردیبهشت 1392, 13:04 عصر
poor man's random:قهقهه:

hadi-z
شنبه 07 اردیبهشت 1392, 13:13 عصر
سلام
الان داشتم دنبال یه چیزی میگشتم که بیام اخر فایل ها را نام گذاری کنم که شماره بگذاره و بره جلو
در جوابی که یافتم حلق شرط نداره
چرا ؟
public FileInfo MakeUnique(string path)
{
string dir = Path.GetDirectoryName(path);
string fileName = Path.GetFileNameWithoutExtension(path);
string fileExt = Path.GetExtension(path);

for (int i = 1; ; ++i)
{
if (!File.Exists(path))
return new FileInfo(path);

path = Path.Combine(dir, fileName + " " + i + fileExt);
}
}


این کد را هنوز تست نکردم ولی الان 2 تا سوال دارم
این حلقه چه موقع متوقف میشه ؟
و این که اینجا داره چه اتفاقی رخ میدهد ؟
path = Path.Combine(dir, fileName + " " + i + fileExt);

یه نفر توضیح بدهد لطفا

با تشکر بابت وقتی که گذاشتید
سپاس

سلام
در مورد سوال دوم شما باید بگم که این متد دوتا رشته رو تو یه آدرس کمباین میکنه
ایجا رو ببینید:

http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

mehrdad1991h
شنبه 07 اردیبهشت 1392, 13:28 عصر
اقا اون بالا تویه حلقه چرا اومده اینا گذاشته
چرا همینجوری یه if و int نذاشته و کارش را بکنه ؟
مرض داشته اومده اینجوری کرده با for ؟

Abbas Naghdi
شنبه 07 اردیبهشت 1392, 13:29 عصر
سلام
الان داشتم دنبال یه چیزی میگشتم که بیام اخر فایل ها را نام گذاری کنم که شماره بگذاره و بره جلو
در جوابی که یافتم حلق شرط نداره
چرا ؟
public FileInfo MakeUnique(string path)
{
string dir = Path.GetDirectoryName(path);
string fileName = Path.GetFileNameWithoutExtension(path);
string fileExt = Path.GetExtension(path);

for (int i = 1; ; ++i)
{
if (!File.Exists(path))
return new FileInfo(path);

path = Path.Combine(dir, fileName + " " + i + fileExt);
}
}


این کد را هنوز تست نکردم ولی الان 2 تا سوال دارم
این حلقه چه موقع متوقف میشه ؟
و این که اینجا داره چه اتفاقی رخ میدهد ؟
path = Path.Combine(dir, fileName + " " + i + fileExt);

یه نفر توضیح بدهد لطفا

با تشکر بابت وقتی که گذاشتید
سپاس

اون حلقه بی نهایت هست ... ! که البته فکر نکنم استاندارد باشه !!!

mehrdad1991h
شنبه 07 اردیبهشت 1392, 13:40 عصر
poor man's random:قهقهه:

بخند تا خسته بشی
خوش باش :))
بابا خوب میخوام بدونم چرا اینجوریه تو اگه بلدی بگو چرا مسخره میکنی !!!


اون حلقه بی نهایت هست ... ! که البته فکر نکنم استاندارد باشه !!!

من فکر نمی کنم اون حلقه بینهایت باشه

واقعا سوال است برا من چرا حلقه را اینجوری گذاشته اینجا ؟
اینجا قراره اسم فایل را اگر فایل موجود بود یک عدد بزاره جلوی اسم و ذخیره کنه
نمیشه که بینهایت باشه !!!

SHD.NET
شنبه 07 اردیبهشت 1392, 15:25 عصر
من فکر نمی کنم اون حلقه بینهایت باشه

واقعا سوال است برا من چرا حلقه را اینجوری گذاشته اینجا ؟
اینجا قراره اسم فایل را اگر فایل موجود بود یک عدد بزاره جلوی اسم و ذخیره کنه
نمیشه که بینهایت باشه !!!
سلام. وقتی انتهای حلقه معلو نیست، حلقه بی نهایته و تا n ادامه دارد !!!

موفق و موید

f.beigirad
شنبه 07 اردیبهشت 1392, 15:39 عصر
دوست من بجای اینکه اینقد عصبانی شی، بگرد دنبال کدی که ایتمای داخل اون دایرکتوری رو بشماره و بعد از این عدد به عنوان شرط حلقت استفاده کنی.

دلیل این همه اصرار و پرخاش رو نمیدونم !!!!!!


موفق باشی

FastCode
شنبه 07 اردیبهشت 1392, 15:42 عصر
لطفا متن پیام خصوصی رو در همین ترد بزارید.اگر هنوز متوجه نشدید بگید بیشتر توضیح بدم.

f.beigirad
شنبه 07 اردیبهشت 1392, 15:44 عصر
و اینم بگم توی کتاب اموزش جامع C# 2005 خوندم که این حلقه بینهایته.

تو میتونی در ادامه ی شرط داخل حلقه قسمت else هم اضافه کنی و بعدشم breakکنی.

mehrdad1991h
یک شنبه 08 اردیبهشت 1392, 08:48 صبح
لطفا متن پیام خصوصی رو در همین ترد بزارید.اگر هنوز متوجه نشدید بگید بیشتر توضیح بدم.



خوب مرض که نداشته for گذاشته ؟مشکل همینه.میتونسته بنویسه.
while(true){i++ /*some code*/ }

به جای i هم بهتره بوده از کلاس Random استفاده میکرده که کدش ThreadSafe باشه


با تشکر از همگی و تمامی دوستان چیزی که میخواستم بدونم را FastCode بهش اشاره کردن

و نهایتا این را باید بگم که در حلقهی بالا یه شرط گذاشته که اگر فایل موجود نبود
return new FileInfo(path);
دوستان عزیز و باتجربه ی بنده بعد از return دیگه دستوری اجرا نمیشه و حلقه متوقف میشه
دیگه نیازی به break نیست که

پرخواش و چیزی هم در کار نبوده فقط یه سوال ساده و گفتگو بوده اگر کسی احیانا احساس میکنه من بهش تندی یا...کرده ام من ععذر خواهی میکنم
من فکر میکردم دلیل خیلی خواصی داری که این اومده از for استفده کرده که دیدم چنین چیزی نبوده
سپاس

C#‎_best_Programmer
یک شنبه 08 اردیبهشت 1392, 09:27 صبح
شرطش داخل حلقست