واضح آرشیو وب فارسی:سایت ریسک: مشكل با فارسي، زبان هاي وي بي و .... A_123 17 اسفند 1389, 08:19سلام اين مشكل فك كنم يه ذره جامعه بين زبان هاي برنامه نويسي. خواهش ميكنم كمك كنيد . هر نظري مي تونه به من كمك كنه. سوال اينه: چرا وقتي با استفاده از dirList ( كه فولدر هاي موجود در مسير داده شده به برنامه را ، نشان مي دهد) وارد فولدر هاي با نام هاي فارسي نمي شود؟ به عبارتي چرا زبان فارسي توسط آنها پشتيباني نمي شود؟ the_king 17 اسفند 1389, 12:41سلام اين مشكل فك كنم يه ذره جامعه بين زبان هاي برنامه نويسي. خواهش ميكنم كمك كنيد . هر نظري مي تونه به من كمك كنه. سوال اينه: چرا وقتي با استفاده از dirList ( كه فولدر هاي موجود در مسير داده شده به برنامه را ، نشان مي دهد) وارد فولدر هاي با نام هاي فارسي نمي شود؟ به عبارتي چرا زبان فارسي توسط آنها پشتيباني نمي شود؟ چون dirList از سیستم کاراکتر های ASCII استفاده می کند که حروف فارسی در آن وجود ندارند و کاراکتر های معتبری نیستند. این موضوع صرفا مربوط به زبان فارسی نیست، از اونجایی که خیلی از سیستم عامل ها و برنامه ها و زبان های برنامه نویسی قدیمی از جدول کاراکتر های ASCII استفاده می کنند، صرفا رشته هایی را می پذیرند که در جدول ASCII موجود باشد. هر کاراکتر ASCII صرفا یک بایت طول دارد که صرفا بر اساس حروف لاتین طراحی شده است. ویژوال بیسیک 6 از نظر رشته ای از کاراکتر های Unicode استفاده می کند که هر کاراکتر دو بایت طول دارد و حروف فارسی را بدون مشکل می پذیرد اما هم رابط نمایشی و هم رابط سیستم فایل ویژوال بیسیک ASCII است، یعنی هم در نمایش حروف فارسی و هم در ارتباط با اسامی فارسی فایل ها و پوشه ها مشکل وجود دارد. برای اینکه یک فایل یا پوشه قابل دسترسی باشد، می بایست اسم آن دقیقا و بدون تغییر ذکر شود، طبیعی است که اگر اسم با کاراکتر های ASCII مشخص شود هیچ کاراکتری خارج از جدول ASCII قابل پذیرش نیست، به همین دلیل است که فایل ها و پوشه هایی که اسم فارسی دارند قابل دسترسی نیستند. A_123 18 اسفند 1389, 07:21ممنون از پاسختون حالا نمیشه هیچ کاریش کرد؟ ببینید من یه فولدر با نام فارسی دارم که می خوام محتویات آن فولدر ( یا کل فولدر) را در مسیری مثلا Drive C کپی کنه. {چون فوادر داخل سی دی هستتش , امکان تغییر نام هم ندارم) the_king 18 اسفند 1389, 08:03ممنون از پاسختون حالا نمیشه هیچ کاریش کرد؟ ببینید من یه فولدر با نام فارسی دارم که می خوام محتویات آن فولدر ( یا کل فولدر) را در مسیری مثلا Drive C کپی کنه. {چون فوادر داخل سی دی هستتش , امکان تغییر نام هم ندارم) دو تا پیشنهاد می تونم بکنم، پیشنهاد اول که توصیه اش می کنم اینه که از ویژوال بیسیک 6 که قدیمی از رده خارجه به ویژوال بیسیک Net. مهاجرت کنید که علاوه بر امکانات بیشتر و طراحی مدرن تر به دلیل اینکه ساختار اش کلا بر اساس جدول Unicode است، هیچ مشکلی با کاراکتر های فارسی نخواهید داشت، چه در هنگام نمایش و چه در سیستم فایل. تنها ایراد Net. نیازش به Framework اش است که نسبتا حجیمه. پیشنهاد دوم ام اینه که از اسم فایل و پوشه های فارسی استفاده نکنید، شما می توانید از دستور های API ویندوز برای کپی کردن فایل و پوشه های Unicode کمک بگیرید، اما این مساله مشکل DirList را حل نخواهد کرد، DirList ذاتا ASCII است و با مسیر های Unicode کنار نمی آید. A_123 18 اسفند 1389, 08:20آیا فایل های exe زبان Dot Net به راحتی روی هر کامپیوتری اجرا میشه؟ منطورم اینه که اگه روی یه کامپوتری فریمور قدیمی بود(یعنی تاحالا روش دات.نت نصب نشده) آیا میشه از فایل های اجرایی exe بدون مشکل استفاده کرد؟ من خودمم برنامه هامو روی ویندوز 7 هم بدون مشکل خاصی اجرا کردم. ممنون the_king 18 اسفند 1389, 08:47آیا فایل های exe زبان Dot Net به راحتی روی هر کامپیوتری اجرا میشه؟ منطورم اینه که اگه روی یه کامپوتری فریمور قدیمی بود(یعنی تاحالا روش دات.نت نصب نشده) آیا میشه از فایل های اجرایی exe بدون مشکل استفاده کرد؟ من خودمم برنامه هامو روی ویندوز 7 هم بدون مشکل خاصی اجرا کردم. ممنون اگه روی ویندوزی Framework با نسخه مناسب نصب نباشه، می بایستی ابتدا نصب بشه وگرنه برنامه Net. ای که به اون نسخه Framework نیاز داره اجرا نمیشه. برای همینه که در کنار فایل Setup اکثر محصولاتی که با Net. نوشته شده اند Setup مربوط به Framework رو هم قرار می دهند. بستگی به نسخه Framework ای داره که باهاش برنامه رو کامپایل کرده اید و همچنین نسخه ویندوزی که می خواهید رویش اجرا کنید. Visual Studio 2005 با Framework نسخه 2.0 عرضه شده که در ویندوز های Vista و 7 نیازی به نصب Framework نداره چون روی خود ویندوز نسخه مناسب یا حتی بالاتر هست اما روی ویندوز XP باید Framework نسخه 2.0 یا بالاتر نصب بشه، وگرنه برنامه هایی که با Visual Studio 2005 نوشتید روی ویندوز XP اجرا نمیشه. Visual Studio 2008 علاوه بر Framework نسخه 2.0 با نسخه های 3.0 و 3.5 هم برنامه کامپایل می کنه، اما ویندوز Vista بصورت پیشفرض نسخه 3.0 و ویندوز 7 نسخه 3.5 رو داره. پس ویندوز 7 هیچ مشکلی با برنامه هایی که با Visual Studio 2008 می نویسید نداره، اما اگه می خواهید برنامه تون بدون نیاز به نصب Framework روی ویندوز Vista اجرا بشه، برای کامپایل کردن برنامه از نسخه 2.0 یا 3.0 استفاده کنید. Visual Studio 2010 که از نسخه های قبلی کاملتره با Framework نسخه های 2.0 و 3.0 و 3.5 و 4.0 برنامه کامپایل می کنه. طبیعتا اگه از نسخه 4.0 استفاده کنید روی همه ویندوز ها نیاز به نصب Framework 4.0 هست، حتی روی ویندوز 7 پس تا حد امکان از Framework 2.0 استفاده کنید تا لااقل روی ویندوز های Vista و 7 نیازی به نصب شدن Framework نباشه، مگر اینکه از قابلیت هایی استفاده کنید که در Framework نسخه 2.0 نباشه. A_123 19 اسفند 1389, 00:15ادمین عزیز اگه برات زحمتی نیست , یه سورس برام بنویس همراه با فایل exe اش تو همون دات.نت با این ویژگی که : بیاد هرچی فایل و فولدر در درایو F هست رو کپی کنه تو درایو E. به طوری از فولدرهای با نام فارسی هم پشتیبانی کنه و محتویات اونا رو هم کپی کنه. در اینجا درایو f , درایو سی.دی. رام هستش. the_king 19 اسفند 1389, 04:00ادمین عزیز اگه برات زحمتی نیست , یه سورس برام بنویس همراه با فایل exe اش تو همون دات.نت با این ویژگی که : بیاد هرچی فایل و فولدر در درایو F هست رو کپی کنه تو درایو E. به طوری از فولدرهای با نام فارسی هم پشتیبانی کنه و محتویات اونا رو هم کپی کنه. در اینجا درایو f , درایو سی.دی. رام هستش. من ادمین نیستم، ادمین ها مدیر کل اند. اصل کار تابعی است که کار کپی کردن از یک مسیر به یک مسیر دیگه رو انجام میده (با همه زیر پوشه هاش) : Private Sub CopyFileFolders(ByVal source As String, ByVal dest As String, ByVal overwrite As Boolean) Dim files() As String, file As IO.FileInfo Dim dirs() As String, dir As IO.DirectoryInfo If IO.Directory.Exists(dest) = False Then Try IO.Directory.CreateDirectory(dest) Catch Exit Sub End Try End If Try files = IO.Directory.GetFiles(source, "*", IO.SearchOption.TopDirectoryOnly) For i As Long = files.GetLowerBound(0) To files.GetUpperBound(0) Try file = New IO.FileInfo(files(i)) file.CopyTo(IO.Path.Combine(dest, file.Name), overwrite) Catch End Try Application.DoEvents() Next Catch End Try Try dirs = IO.Directory.GetDirectories(source, "*", IO.SearchOption.TopDirectoryOnly) For i As Long = dirs.GetLowerBound(0) To dirs.GetUpperBound(0) Try dir = New IO.DirectoryInfo(dirs(i)) CopyFileFolders(dirs(i), IO.Path.Combine(dest, dir.Name), overwrite) Catch End Try Application.DoEvents() Next Catch End Try End Sub پارامتر اول (source) مسیر مبدا است، مثلا :F و پارامتر دوم (dest) مسیر مقصد، مثلا :E پارامتر سوم (overwrite) اگر False باشد فقط فایل هایی کپی می شوند که در مقصد وجود ندارند و روی فایل های مشابهی که از قبل در مقصد وجود دارند چیزی نمی نویسد. اما اگر True باشد همه فایل ها از مبداء به مقصد کپی می شوند، حتی اگر فایلی با همان نام در مقصد وجود داشته باشد. مثلا : CopyFileFolders("F:", "E:", True) یک نمونه پروژه کامل با دو نسخه 2005 و 2008 ضمیمه این پست می باشد. سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2818]