PDA

View Full Version : تغییر کردن مسیر ذخیره فایل



bpzone
سه شنبه 27 شهریور 1386, 02:49 صبح
من یک برنامه نوشتم که در یک سری شرایط خاص ، یک سری اطلاعات رو درون یک فایل متنی ذخیره میکنه و محل این فایل رو Root برنامه و در کنار فایل exe تعریف کردم

توی برنامه من از کنترل OpenFile استفاده میکنم
مشکل اینجا هست که وقتی من از این کنترل استفاده میکنم ، مسیر ذخیره فایل به مسیر جدید تغیر پیدا میکنه و این در صورتی هست که من هر وقت میخوام با فایل کار کنم ، مسیر را روی فایل exe تنظیم میکنم ولی بعد از هر استفاده ار کنترل OpenFile مسیر تغییر میکنه ؟!؟!

مشکل کجاست !؟!؟!

MH2538
سه شنبه 27 شهریور 1386, 08:42 صبح
سلام
این مشکل طبیعی است چون هر بار که از OpenFile استفاده می‌کنید مسیر جاری (CurrentDirectory) برنامه رو تغییر می‌دهید.
برای حل این مشکل می‌تونید یک متغیر سراسری تعریف کنید و در همان اول برنامه اون رو مقدار دهی کنید (نسبت به مسیر جاری برنامه) و در دفعات بعد هنگامی که قصد دارید چیزی را ذخیره کنید از آدرسی که در همین متغیر ذخیره کردَ‌ه‌اید استفاده کنید

gomnam
سه شنبه 27 شهریور 1386, 09:04 صبح
من یک برنامه نوشتم که در یک سری شرایط خاص ، یک سری اطلاعات رو درون یک فایل متنی ذخیره میکنه و محل این فایل رو Root برنامه و در کنار فایل exe تعریف کردم

توی برنامه من از کنترل OpenFile استفاده میکنم
مشکل اینجا هست که وقتی من از این کنترل استفاده میکنم ، مسیر ذخیره فایل به مسیر جدید تغیر پیدا میکنه و این در صورتی هست که من هر وقت میخوام با فایل کار کنم ، مسیر را روی فایل exe تنظیم میکنم ولی بعد از هر استفاده ار کنترل OpenFile مسیر تغییر میکنه ؟!؟!

مشکل کجاست !؟!؟!

درست متوجه نشدم منظورتون را
کنترل openFileDialog چه ربطی به ذخیره کردن میتونه داشته باشه؟
میشه واضح تر توضیح بدین ؟

MH2538
سه شنبه 27 شهریور 1386, 09:29 صبح
هر برنامه‌ای در زمان اجرا یک مسیر جاری دارد (اغلب اوقات همان مسیری که برنامه در آن قرار دارد ) و به نام مسیرجاری یا دایرکتوری جاری معروف است.
این مسیر به روش‌های مختلف می‌تواند تغییر کنید. مثلاً زمانی که شما یک فایل را با استفاده از SaveDialog ذخیره می کنید و یا با استفاده از OpenDialog برای باز کردن انتخاب می کنید مسیر برنامه به آدرس فایلی که انتخاب کرد‌ه‌اید تغییر می‌کند. شما می توانید به راحتی این موضوع را آزمایش کنید کافی است مسیر جاری برنامه را بدست آورده و نمایش دهید سپس با OpenDialog فایلی را انتخاب کرده و سپس مجدداً مسیر جاری برنامه را بدست آورید. متوجه خواهید شد که آدرس مسیر جاری برنامه تغییر کرده ‌است.
شما هم در زمان ذخیره کردن فایل خود یا اصلا مسر را به برنامه نمی دهید یا با استفاده از دستوراتی که مسیرجاری برنامه را بدست می‌آئرند محل ذخیره سازی را مشخص می :نید که با توجه به توضیحاتی که خدمت شما دادم این مسیردیگر در کنار برنامه نخواهد بود بلکه آدرس فایلی است که آخرین بار انتخاب نموده‌اید.


string s = Environment.CurrentDirectory;
MessageBox.Show(s);
OpenFileDialog OD = new OpenFileDialog();
OD.ShowDialog();
s = Environment.CurrentDirectory;
MessageBox.Show(s);

البته در صورتی که از Application.StartupPath برای مسیر جاری برنامه استفده کنید نیاز به تعریف متغیر نخواهید داشت زیرا این دستور همواره مسیر اجرای برنامه را به شما می دهد و تغییر نمی‌کند.

PC2st
سه شنبه 27 شهریور 1386, 18:26 عصر
مشکل کجاست !؟!؟!
من هم امتحان کردم، متاسفانه نمیشه...

یک کنترل OpenFileDialog رو به فرم اضافه کردم و کد زیر رو در رویداد کلیک یک Button نوشتم:


openFileDialog1.ShowDialog();

بعد از اینکه دوباره روی دکمه کلیک شود، لیست فایلها از پوشه ای که براش مشخص کرده بودیم نمایش داده نمیشه و لیست فایلها از پوشه ای نمایش داده میشه که قبلا ازش یک فایل باز کرده بودیم!!! به نظر خاصیت دیگری برای حل این مشکل وجود نداره و مجبوریم که متد Reset رو صدا بزنیم و از اول خاصیتهای OpenfileDialog رو تنظیم کنیم! تا دوباره لیست فایلهای پوشه ای نمایش داده بشه که در خاصیت InitialDirectory مشخص کرده بودیم.