Haitham.2012
24-12-2011, 04:45 PM
http://www.alheweny.org/mages2/salam.gif
تحياتي لكم جميعا .. من المهم جدا أن يكون هناك شئ يوضح للمستخدم مدى تقدم بعض الوظائف مثل عملية النسخ أو النقل أو فك الضغط ( وهو محور موضوعنا )
بمعنى أن يظهر للمستخدم شريط progress يوضح له مدى تقدم العملية الحالية
فعندما فكرت في عمل شريط progress يوضح مدى تقدم عملية فك الضغط لاحظت شئ غريب وهو أن البرنامج يقوم أولا بفك الضغط ثم يقوم بتحريك شريط ال progress أي لا فائدة لشريط ال progress
مبدئيا كنت أستخدم هذا الكود لتحريك شريط ال progress مع عملية فك الضغط
zip_contents = Zip.GetContents("Data\\Docs\\file.zip", true);
count = Table.Count(zip_contents);
for i=1, count do
Progress.SetCurrentPos("Progress1", i*100/count);
Zip.Extract("Data\\Docs\\PNG.zip", {zip_contents[i]}, _DesktopFolder, true, true, "", ZIP_OVERWRITE_ALWAYS, nil);
end
ولكن كما وضحت سابقا أنه لا يحرك شريط ال progress إلا بعد أن ينتهي من عملية فك الضغط فعليا
طيب لماذا ظهرت هذه المشكله ..
الفضل لله أولا ثم لأخي النصل القاطع وضح لي نقطه وهي كالتالي
نفترض أن لديك مجلد اسمه ( مجلد 1 ) و به 10 ملفات ومن ضمنهم مجلد اسمه ( مجلد 2 ) ويوجد داخل ( مجلد 2 ) مجموعه من الملفات
فعندما يقوم البرنامج بفك الضغط سوف يعتبر المجلد الثاني ( مجلد 2 ) كأنه ملف ( على الرغم انه سوف يقوم بفك الملفات التي بداخله أيضا وبشكل عادي ) ولكن هذا سوف يسبب مشكلة تاخر تقدم شريط ال progress
طيب .. لو لاحظنا في هذا الكود الخاص بمعرفة محتويات الملف المضغوط .. سنجد به حقل إختياري ( إذا كنت تريد أن تشمل المجلدات ام لا )
Zip.GetContents("Data\\Docs\\file.zip", true);
وهنا true أي اشمل المجلدات
و false أي لا تشمل المجلدات
طيب إذا كنت تريد أن تكون عملية تقدم فك الضغط صحيحه ودقيقه عليك أن تستخدم نتيجة كلا الحالتين .. سأقول لك لماذا
لأنك لو استخدم الطريقه الأولى فقط وهي أن تشمل المجلدات
سوف تحدث مشكله وهي :
1 - حلقات التكرار ستزيد بعدد المجلدات ( يعني لو الملف المضغوط يحتوي على 10 ملفات و 5 مجلدات فإن حلقات التكرار ستكون 15 حلقه )
2 - المشكله التي تحدثنا عنها وهي فك الضغط أولا ثم تحريك شريط ال progress
ولو استخدمت الطريقه الثانية فقط وهي أن لا تشمل المجلدات
سوف تحدث مشكله وهي :
الملفات التي سوف يتم فك ضغطها ستنقص بعدد المجلدات بمعنى ( لو الملف المضغوط يحتوي على 10 ملفات و3 مجلدات سوف يتم فك ضغط 7 ملفات فقط ويترك ال 3 ملفات الباقيه )
وهنا علينا أن نستخدم الطريقتين
نستخدم الطريقه الاولى وهي أن تشمل المجلدات وذلك لمعرفة عدد المجلدات فقط ( ولكن بطريقه غير مباشرة وسنستخدم طريقه معينه لنعرف بها عدد المجلدات ) ستجدوا الكود في الملف
والطريقه الثانيه وهي أن لا تشمل المجلدات لكي نستخدمها في عملية فك الضغط الحقيقية
بمعنى ذكرنا في الطريقه الثانيه يتم فك ضغك الملفات ولكنها تنقص بعدد المجلدات وبالتالي سوف نحتاج لنزيد حلقات التكرار بعدد المجلدات حتى يتم فك ضغط كل الملفات وهذا ما حصلنا عليه في الطريقه الاولى
أتمنى أن تكون وضحت الفكره وهذا الملف المفتوح قد يسهل عليكم الأمر
http://img205.imageshack.us/img205/2457/44204469.png
كل ودي وتقديري
رابط الملف
http://www.mediafire.com/?3f22ztfa7azk95a
للعلم : ضع أولا أي ملف مضغوط داخل مجلد Docs حتى لا تظهر رسالة خطأ عند الضغط على الزر
مع مراعاة اسم الملف داخل المجلد واسمه في اكواد البرمجه
تحياتي لكم جميعا .. من المهم جدا أن يكون هناك شئ يوضح للمستخدم مدى تقدم بعض الوظائف مثل عملية النسخ أو النقل أو فك الضغط ( وهو محور موضوعنا )
بمعنى أن يظهر للمستخدم شريط progress يوضح له مدى تقدم العملية الحالية
فعندما فكرت في عمل شريط progress يوضح مدى تقدم عملية فك الضغط لاحظت شئ غريب وهو أن البرنامج يقوم أولا بفك الضغط ثم يقوم بتحريك شريط ال progress أي لا فائدة لشريط ال progress
مبدئيا كنت أستخدم هذا الكود لتحريك شريط ال progress مع عملية فك الضغط
zip_contents = Zip.GetContents("Data\\Docs\\file.zip", true);
count = Table.Count(zip_contents);
for i=1, count do
Progress.SetCurrentPos("Progress1", i*100/count);
Zip.Extract("Data\\Docs\\PNG.zip", {zip_contents[i]}, _DesktopFolder, true, true, "", ZIP_OVERWRITE_ALWAYS, nil);
end
ولكن كما وضحت سابقا أنه لا يحرك شريط ال progress إلا بعد أن ينتهي من عملية فك الضغط فعليا
طيب لماذا ظهرت هذه المشكله ..
الفضل لله أولا ثم لأخي النصل القاطع وضح لي نقطه وهي كالتالي
نفترض أن لديك مجلد اسمه ( مجلد 1 ) و به 10 ملفات ومن ضمنهم مجلد اسمه ( مجلد 2 ) ويوجد داخل ( مجلد 2 ) مجموعه من الملفات
فعندما يقوم البرنامج بفك الضغط سوف يعتبر المجلد الثاني ( مجلد 2 ) كأنه ملف ( على الرغم انه سوف يقوم بفك الملفات التي بداخله أيضا وبشكل عادي ) ولكن هذا سوف يسبب مشكلة تاخر تقدم شريط ال progress
طيب .. لو لاحظنا في هذا الكود الخاص بمعرفة محتويات الملف المضغوط .. سنجد به حقل إختياري ( إذا كنت تريد أن تشمل المجلدات ام لا )
Zip.GetContents("Data\\Docs\\file.zip", true);
وهنا true أي اشمل المجلدات
و false أي لا تشمل المجلدات
طيب إذا كنت تريد أن تكون عملية تقدم فك الضغط صحيحه ودقيقه عليك أن تستخدم نتيجة كلا الحالتين .. سأقول لك لماذا
لأنك لو استخدم الطريقه الأولى فقط وهي أن تشمل المجلدات
سوف تحدث مشكله وهي :
1 - حلقات التكرار ستزيد بعدد المجلدات ( يعني لو الملف المضغوط يحتوي على 10 ملفات و 5 مجلدات فإن حلقات التكرار ستكون 15 حلقه )
2 - المشكله التي تحدثنا عنها وهي فك الضغط أولا ثم تحريك شريط ال progress
ولو استخدمت الطريقه الثانية فقط وهي أن لا تشمل المجلدات
سوف تحدث مشكله وهي :
الملفات التي سوف يتم فك ضغطها ستنقص بعدد المجلدات بمعنى ( لو الملف المضغوط يحتوي على 10 ملفات و3 مجلدات سوف يتم فك ضغط 7 ملفات فقط ويترك ال 3 ملفات الباقيه )
وهنا علينا أن نستخدم الطريقتين
نستخدم الطريقه الاولى وهي أن تشمل المجلدات وذلك لمعرفة عدد المجلدات فقط ( ولكن بطريقه غير مباشرة وسنستخدم طريقه معينه لنعرف بها عدد المجلدات ) ستجدوا الكود في الملف
والطريقه الثانيه وهي أن لا تشمل المجلدات لكي نستخدمها في عملية فك الضغط الحقيقية
بمعنى ذكرنا في الطريقه الثانيه يتم فك ضغك الملفات ولكنها تنقص بعدد المجلدات وبالتالي سوف نحتاج لنزيد حلقات التكرار بعدد المجلدات حتى يتم فك ضغط كل الملفات وهذا ما حصلنا عليه في الطريقه الاولى
أتمنى أن تكون وضحت الفكره وهذا الملف المفتوح قد يسهل عليكم الأمر
http://img205.imageshack.us/img205/2457/44204469.png
كل ودي وتقديري
رابط الملف
http://www.mediafire.com/?3f22ztfa7azk95a
للعلم : ضع أولا أي ملف مضغوط داخل مجلد Docs حتى لا تظهر رسالة خطأ عند الضغط على الزر
مع مراعاة اسم الملف داخل المجلد واسمه في اكواد البرمجه