SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
ناقص عمل کردید، unrar.cs در پروژه تون نیست.
آها Unrar.cs
من فکر کردم UnrarTest.cs منظورتونه
اشتباه دیدم
چک کنم
ناقص عمل کردید، unrar.cs در پروژه تون نیست.
rar.ReadHeader()
خیلی ممنون آقا علی
همه چی درست شد
فقط توی اون حلقه ای که قرار میگرفت یعنی کد :
کد:rar.ReadHeader()
که توی حلقه گذاشته شد ؛ این باعث میشه هر بار و آنقدر فایل های داخل رار رو دونه دونه بخونه و بعدش در بدنه ی حلقه اکسترکت کنه تا تموم شه؟؟ یعنی عملیات رو برای تک تک فایل انجام میده هر بار دیگه نه اینکه یه دفعه انجام بده . درسته؟
این روش خیلی راحت تر از اون فایل ها بود که گفتین . فقط پیوست کردن شون مراحل داشت
-------------------------
ولی یه مشکل وجود داره
وقتی فایل rar با دو پارت (حجم دو پارت 1.7 گیگ) رو اکسترکت میخوام کنم ، ارور File CRC Error رو میده (try-catch کردم)
ولی با نرم افزار رار ، اکسترکت میشه و مشکلی نداره
حالا نمیدونم بخاطر چند پارت بودن شه یا پر حجم بودنش!
منم فقط مسیر اولین پارت رو دادم برای اکسترکت . از 1.7 گیگ ، فقط 250 مگ رو اکسترکت میکنه و اون ارور رو میده
نمیدونین بخاطر چیه؟
ربطی به حجم فایل تون نداره، خطا باید مربوط به یک ناسازگاری با چند تکه بودن در کد unrar.cs باشه. فرصت نکردم کدش رو بررسی کنم اما هر چی که هست از همونه.
ایراد از خود unrar.dll نیست چون مثال Visual Basic .NET اش مشکلی با چند تکه بودن فایل نداره، البته یک پیغام Oops!!, I don't know what I doing here برای هر تکه نشون میده.
فایل اجرایی TestRAR.exe اش رو با فایل rar چند تکه تان امتحان کنید، مثال ویژوال بیسیک ئه :
مشاهده پیوست 111546
public static string RarExtract(string rarSourceFile, string rarDestinationFolder, string password)
{
try
{
Unrar rar = new Unrar(rarSourceFile);
rar.DestinationPath = rarDestinationFolder;
rar.Password = password;
rar.Open(Unrar.OpenMode.Extract);
while (rar.ReadHeader())
{
rar.Extract();
}
rar.Close();
return "extracted";
}
catch (Exception err)
{
MessageBox.Show(err.Message);
return err.Message;
}
}
ممنون
جز همون پیامی که گفتین ، مشکلی نداشت ویژال بیسیک و درست اکسترکت کرد ولی کد من توی سی شارپ اینه که اون ارور رو میده (عین کد شماست) و علی الظاهر نباید مشکلی باشه :
کد:public static string RarExtract(string rarSourceFile, string rarDestinationFolder, string password) { try { Unrar rar = new Unrar(rarSourceFile); rar.DestinationPath = rarDestinationFolder; rar.Password = password; rar.Open(Unrar.OpenMode.Extract); while (rar.ReadHeader()) { rar.Extract(); } rar.Close(); return "extracted"; } catch (Exception err) { MessageBox.Show(err.Message); return err.Message; } }
Case Else
MsgBox("Oops!!, I don't know what I doing here")
End Select
End Function
private int RARCallback(uint msg, int UserData, IntPtr p1, int p2)
{
string volume = string.Empty;
string newVolume = string.Empty;
[B][COLOR="#0000FF"] int result = -1;[/COLOR][/B]
.
.
.
return result;
}
private int RARCallback(uint msg, int UserData, IntPtr p1, int p2)
{
string volume = string.Empty;
string newVolume = string.Empty;
int result = [B][COLOR="#0000FF"]0[/COLOR][/B];