PDA

View Full Version : سوال: سوال در مورد GetExtension



ahrimaneahurai
سه شنبه 29 دی 1388, 09:22 صبح
سلام دوستان من می خوام پسوند یه فایل رو بدونم با GetExtension اما وقتی از OpenDialogFile استفاده میکنم درست پسوند رو بهم پاس میده چون تو OpenDialogFile پسوند فایل هم وجود داره اما وقتی که آدرس فایل رو پاس میدم ( چون از روی ردیف و کد و .... آدرس رو بدست میارم که راه زیاد خوبی نیست اما چاره ای نداشتم)چون پسوندش رو ندارم GetExtension ، Null بر میگردونه
حالا من چیکار کنم ؟
ممنون میشم کمکم کنید

razavi_university
سه شنبه 29 دی 1388, 09:28 صبح
چون از روی ردیف و کد و .... آدرس رو بدست میارم

ردیف و کد کجا؟ نام فایل را در دیتابیس ذخیره کردین؟
اگر با نام و مسیر و پسوند ذخیره کرده اید مثلا C:\New Folder\myFile.abc
با متد Substring کار کنید و 3 کاراکتر آخر را بیرون بکشید

ahrimaneahurai
سه شنبه 29 دی 1388, 11:27 صبح
سلام
نه دیگه دوست عزیز
متاسفانه بنا به دلایلی نمیشد تو دیتابیس ذخیره کرد که درست ترین کاره اما الان آدرس فایل رو بر اساس تکست باکس های روی فرم بدست میارم اما چون پسوندا متفاوت هست به غلط کردن افتادم حجم کار هم اونقد زیاد هست که نمیشه کد رو عوض کرد چون فردا باید پروژه رو تحویل شرکت بدم.این کارم من نکردم کارمند قبل از من کرد حالا من گیر کردم

mir555
سه شنبه 29 دی 1388, 17:33 عصر
یعنی تو filename که از دیالوگت میاد اسم فایل بدون پسوند میاد؟؟
اون تیکه کدتو بزار اینجا شاید تونستم کاری کنم

mehdi.mousavi
سه شنبه 29 دی 1388, 17:38 عصر
سلام دوستان من می خوام پسوند یه فایل رو بدونم با GetExtension اما وقتی از OpenDialogFile استفاده میکنم درست پسوند رو بهم پاس میده چون تو OpenDialogFile پسوند فایل هم وجود داره اما وقتی که آدرس فایل رو پاس میدم ( چون از روی ردیف و کد و .... آدرس رو بدست میارم که راه زیاد خوبی نیست اما چاره ای نداشتم)چون پسوندش رو ندارم GetExtension ، Null بر میگردونه حالا من چیکار کنم ؟ ممنون میشم کمکم کنید

سلام.
اگر سوال رو فارسی بپرسید، من بهتون پاسخ میدم. اما متاسفانه اینقدر گنگ و بد سوال رو مطرح کرده اید که نمیشه ازش چیزی فهمید. GetExtension چه ربطی به OpenDialogFile داره؟ Row و Code و Address چی هستن؟ پسوندش رو ندارم یعنی چی؟ آدرس فایل رو پاس میدم یعنی چی؟

لطفا سوال رو دقیق بپرسید!

ahrimaneahurai
سه شنبه 29 دی 1388, 18:27 عصر
شرمنده که نتونستم منظورمو بگم
ببینید توی این برنامه آدرس یه فولدر به نام recivepic هست که میاد تموم عکس های نامه ها رو میریزه اون تو.طریقه ذخیره کردنشم اینطوریه که میاد اسم اون عکس رو تغییر میده و میذاره ردیف اون نامه مثلا اگه اسم عکس pic008 بوده و ردیف نامه 12.3 بوده موقع ذخیره ( به اصطلاح خودش ) عکس رو به فولدر E:/recievepic با نام 12.3 کپیش میکنه.حالا جز عکس ،صدا و ویدیو و ... رو جاهای دیگه اینجوری ذخیره میکنه
حالا من میخوام هرکدوم از این فایل ها با برنامه های خود ویندوز باز شه مثلا عکس با photoviewer,صدا با مدیا پلیر اما وقتی می خوام با این کد بازش کنم
System.Diagnostics.Process.Start("") میگه پسوند فایل هم میخوام.من با
Path.GetExtension("") میخوام پسوند فایل رو بدست بیارم null برمیگردونه
من الان دارم کل پروژه رو عوض میکنم و میبرم تو دیتابیس آدرس فایل ها رو اما خیلی دوس دارم ببینم این مشکل چجوری حل میشه

با این آدرس ذخیره میکنه

Data.clsItems.recievepicaddress + '\\' + txtId.Text + "-" + (j + 1).ToString() + ".bmp";
با این کد هم میاد عکس رو تو picturebox نشون میده

pictureBox1.Load(Data.clsItems.sendpicaddress + txtId.Text + ".bmp");

ممنون از همگیتون
منظورم رو رسوندم ؟

razavi_university
چهارشنبه 30 دی 1388, 08:29 صبح
کد رو تست نکردم ولی پسوند یک تصویر رو حذف کردم ولی بازهم با Windows Pic & fax viewer نمایش داده شد.
در دستور

System.Diagnostics.Process.Start("")

چطوری میگید فایل رو اجرا کنه؟

اینطوری؟

System.Diagnostics.Process.Start("12.3")
یا با ارسال این تصویر به عنوان پارامتر؟

System.Diagnostics.Process.Start("mspaint","12.3")

mehdi.mousavi
چهارشنبه 30 دی 1388, 10:56 صبح
شرمنده که نتونستم منظورمو بگم
ببینید توی این برنامه آدرس یه فولدر به نام recivepic هست که میاد تموم عکس های نامه ها رو میریزه اون تو.طریقه ذخیره کردنشم اینطوریه که میاد اسم اون عکس رو تغییر میده و میذاره ردیف اون نامه مثلا اگه اسم عکس pic008 بوده و ردیف نامه 12.3 بوده موقع ذخیره ( به اصطلاح خودش ) عکس رو به فولدر E:/recievepic با نام 12.3 کپیش میکنه.حالا جز عکس ،صدا و ویدیو و ... رو جاهای دیگه اینجوری ذخیره میکنه حالا من میخوام هرکدوم از این فایل ها با برنامه های خود ویندوز باز شه مثلا عکس با photoviewer,صدا با مدیا پلیر اما وقتی می خوام با این کد بازش کنم
System.Diagnostics.Process.Start("") میگه پسوند فایل هم میخوام.من با
Path.GetExtension("") میخوام پسوند فایل رو بدست بیارم null برمیگردونه
من الان دارم کل پروژه رو عوض میکنم و میبرم تو دیتابیس آدرس فایل ها رو اما خیلی دوس دارم ببینم این مشکل چجوری حل میشه

با این آدرس ذخیره میکنه

Data.clsItems.recievepicaddress + '\\' + txtId.Text + "-" + (j + 1).ToString() + ".bmp";با این کد هم میاد عکس رو تو picturebox نشون میده

pictureBox1.Load(Data.clsItems.sendpicaddress + txtId.Text + ".bmp");ممنون از همگیتون
منظورم رو رسوندم ؟

خیر. منظورتون رو نرسوندید، اما خیلی بهتر از سوال اولی شدش!


مگه همه فایلهایی که ذخیر می کنید، .bmp هستن؟ (البته در مورد اکثر فایلها (احتمالا) مشکلی پیش نمیاد، چون هر فایل تو Header خودش نگه میداره که تایپش چیه، چه ورژنی هستش و ... و برنامه های امروزی عموما با خوندن اونHeader اقدام به نمایش / پردازش فایل مزبور میکنن، البته نرم افزارهایی که به extension فایلها هم حساسند زیاده... در نتیجه، این منو میرسونه به سوال بعدی که:
اصلا چرا موقع ذخیره کردن extension فایل رو حذف میکنید؟ هدف از اینکارو متوجه نمیشم.
وقتی میخواهید فایل رو ذخیره کنید، extension اش رو دست نزنید و نام فایل رو هر طور که مایلید تغییر بدید. اینطوری مجبور نیستید جای دیگه ای (در صورت نیاز) extension به هر ID رو نگه دارید و ...

@razavi_university:
سلام. نیازی به این کار نیست. اگر extension فایل رو داشته باشن و حذف نکرده باشن، کافیه فقط نام فایل رو به Start بدن و بطور خودکار، سیستم نگاه میکنه ببینه چه برنامه ای بعنوان Default Document Handler اون Extension در سیستم ثبت شده، و خودش اون برنامه پسش فرض رو باز میکنه. بعنوان مثال، اگر نام فایل temp.jpg باشه و روی سیستم فایلهای .jpg رو با XNView ببینن، اونوقت Start("temp.jpg") خودش بطور خودرکار XnView رو باز میکنه و Open Verb رو روی XnView با پارامتر temp.jpg فراخوانی میکنه! در نتیجه برنامه XnView باز میشه و temp.jpg نمایش داده میشه. اما حالا همین فایل temp.jpg رو به temp.jpg.txt تغییر نام بدید و دوباره Start رو با پارامتر جدید فراخوانی کنید. اینبار میبینید همون فایل، با Notepad باز میشه، چون Default Program ای که قراره .txt ها رو Handle کنه، روی این سیستم، notepad هستش. در مورد 12.3 هم قاعدتا برنامه ای برای handle کردن فایلهایی با پسوند 3 روی سیستم وجود نداره و Win32Exception تولید خواهد شد! در نتیجه، سوال این هستش که چرا در وهله اول، ایشون extension فایل رو حذف کرده اند که حالا نیاز به کارهای عجیب و غریبی برای تشخیص اون داشته باشن.

موفق باشید.