المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : هل File.GetSize تعطي رقما ثابتا لحجم الملف يمكننا الاعتماد عليه بدقة ؟


علي قد حالي
24-04-2016, 10:29 AM
السلام عليكم ورحمة الله وبركاته

هل File.GetSize تعطي رقما ثابتا لحجم الملف يمكننا الاعتماد عليه بدقة أم أن رقم حجم الملف يمكن أن يتغير من جهاز لآخر أو من نظام تشغيل لآخر ولو بشكل طفيف ؟
لأني أريد استخدام if الشرطية وسأشترط التساوي == مع حجم الملف ( مع ملاحظة أني لن استخدم < أو > ) لذلك أريد الاطمئنان أن رقم الحجم سيظل ثابتا و لن يتغير :abc_138:

و إذا كانت الطريقة الأدق للتحقق من وجود ملف ما كما هو دون تغيير هي عن طريق بصمة الملف ...
فيا ليت أحد الكرام يخبرنا بكود التحقق من الملف عن طريق بصمته إتماما للفائدة ... :abc_088:

عبد الهادي بهاب
24-04-2016, 02:27 PM
قبل ان اجرب الكود .....فيه لقطة يستعملها الكثير من المبرمجين هي استعملا مكان اخراج النتائج و غالبا تكون دبياوج

يعني مثلا نكتب

a + b = resulta

اي نعرف قيمة ج او ماهي ج و هل هي عذذ او قيمة او نص او ........نخرجها في دالوج

dialog.message("notice",resulta);

عبد الهادي بهاب
24-04-2016, 02:32 PM
الكود يعطيك الحجم بوحدة octets

عبد الهادي بهاب
24-04-2016, 02:47 PM
لدينا ملفين مضغوطين في القرص C
file1.rar
file2.rar

في زر نزرع الكود



s1 = File.GetSize("C:\\file1.rar");
s2 = File.GetSize("C:\\file2.rar");

if s1 == s2 then
Dialog.Message("notice", "goooooooood ");
else
Dialog.Message("notice", "falseeeeee");
end

علي قد حالي
24-04-2016, 02:54 PM
الكود يعطيك الحجم بوحدة octets
نعم اخي الحبيب و في الاوتوبلاي مكتوب عنها انها تعطينا الحجم بال bytes
لكن مثلا هل ال byte هو نفسه ال octet فعلا ؟
وجدت أحدهم يقول علي هذا الرابط https://learningnetwork.cisco.com/thread/56208
ان ال byte قد تختلف عن ال octet ولكن الشائع ان كلاهما واحد = 8 bit
لم افهم كلامهم جيدا ولا ادري مدي صحته و لكن يبقي السؤال هل استخدام هذا الاكشن لجلب قيمة حجم ملف سيعطينا نفس الرقم علي كل الاجهزة أم أنه قد يختلف في بعض الاجهزة مسببا مشاكل لم تكن في الحسبان اثناء كتابة الاكواد ...
فمثلا لو اشترطت ان يكون حجم الملف مساوي لقيمة معينة بال bytes لتنفيذ امر معين
اذا اختلفت هذه القيمة من جهاز لآخر ستحدث مشكلة ... فتارة سيكون الحجم مساويا و تارة سيكون غير مساو ... رغم أن الملف في الحالتين واحد ولم يحدث له أي تغيير
فهل الادق التحقق من وجود ملف ما عن طريق البصمة ام ماذا ؟
هناك برنامج للأخ الكريم هيثم لحذف الملفات المكررة ذكر انه اعتمد علي بصمة الملف و ليس الاسم او الحجم ... حاولت معرفة الكود الخاص ببصمة الملف ؟
لكني لم استطع اتوصل لكود التحقق من بصمة الملف :abc_102: ...

عبد الهادي بهاب
24-04-2016, 06:05 PM
الكود هو هو في كل الاجهزة اقصد قضية اشتراط تساوي الحجمين مهما كانت الوحدة ....

علي قد حالي
24-04-2016, 07:26 PM
الكود هو هو في كل الاجهزة اقصد قضية اشتراط تساوي الحجمين مهما كانت الوحدة ....
كلامك صحيح في حالة الكود الذي تفضلت بكتابته لن تكون هناك مشكلة
ولكن مثلا الكود التالي ستحدث مشكلة إذا كان الحجم يختلف من جهاز للآخر
s1 = File.GetSize("C:\\file1.rar");
s2 = 78423

if s1 == s2 then
Dialog.Message("notice", "goooooooood ");
else
Dialog.Message("notice", "falseeeeee");
end
لأن S1 عل جهاز سيكون بحجم معين وليكن 78423 ولكنه علي جهاز آخر سيكون بحجم آخر مختلف حتي ولو اختلاف طفيف 78422 فسيعطي false
(أنا هنا اتكلم بافتراض أن قيمة الحجم ستتغير من جهاز لآخر ولكني لا أعلم هل هذا صحيح أم خطأ)

لذلك كنت أفكر في مسألة التحقق من وجود الملف بشيء يميز الملف و لا يتغير أبدا (تجنبا لاحتمال أن تكون قراءة حجم الملف بالبايت قد تتغير فعلا من جهاز لآخر ) ...
هل تعرف أخي كود التحقق من وجود الملف بالبصمة كالذي استخدمه الأخ هيثم بدلا من التحقق بالحجم أو الاسم ؟ و هل البصمة هذه هي الهاش أم ماذا ؟ :abc_088:

عبد الهادي بهاب
24-04-2016, 08:04 PM
بالاسم ممكن اما قضية البصمة فلا اعرف ما هي اصلا و ما المقصود بها
طبعا ننت؟ر الاخوة ممكن لهم راي اخر و اكثر دقة و علما

علي قد حالي
24-04-2016, 08:12 PM
بالاسم ممكن اما قضية البصمة فلا اعرف ما هي اصلا و ما المقصود بها
طبعا ننت؟ر الاخوة ممكن لهم راي اخر و اكثر دقة و علما
منتظر معك بارك الله فيك ... و إن كنت أشعر ان File.GetAttributes سيكون لها علاقة بموضوع بصمة الملفات و الله أعلم ....
:abc_138::abc_138::abc_138:

Haitham.2012
25-04-2016, 01:25 AM
اخي الكريم .. موضوع ان حجم الملف يتغير من جهاز إلى آخر لا أعتقد وفي نفس الوقت لا أستطيع أن أؤكد ذلك .

أما عن الكود المستخدم للحصول على بصمة الملف ..

File.GetCRC("C:\\MyFile.txt");

بالتوفيق اخي الكريم

علي قد حالي
25-04-2016, 09:07 AM
اخي الكريم .. موضوع ان حجم الملف يتغير من جهاز إلى آخر لا أعتقد وفي نفس الوقت لا أستطيع أن أؤكد ذلك .

أما عن الكود المستخدم للحصول على بصمة الملف ..

File.GetCRC("C:\\MyFile.txt");

بالتوفيق اخي الكريم

شكرا لك أخي الكريم ...
استخدمت الكود ولاحظت أنه يعطي هذا الرقم الثابت 4294967295 إذا كان الملف غير موجود في المسار المحدد....
فهل هذا خطأ من نسخة الاوتوبلاي عندي أم ان ذلك شيء عادي يحدث مع الجميع ؟
جزاك الله خيرا :abc_152:

Haitham.2012
25-04-2016, 12:01 PM
شكرا لك أخي الكريم ...
استخدمت الكود ولاحظت أنه يعطي هذا الرقم الثابت 4294967295 إذا كان الملف غير موجود في المسار المحدد....
فهل هذا خطأ من نسخة الاوتوبلاي عندي أم ان ذلك شيء عادي يحدث مع الجميع ؟
جزاك الله خيرا :abc_152:


نعم اخي الكريم .. اذا كان الملف غير موجود يعود بهذا الرقم .. كان المفترض ان يعود بقيمه nill أو -1 ... ولكن لا عليك استخدم اكواد التحقق من وجود الملف الهدف أولا قبل استخدام كود البصمه

بالتوفيق

علي قد حالي
25-04-2016, 01:38 PM
نعم اخي الكريم .. اذا كان الملف غير موجود يعود بهذا الرقم .. كان المفترض ان يعود بقيمه nill أو -1 ... ولكن لا عليك استخدم اكواد التحقق من وجود الملف الهدف أولا قبل استخدام كود البصمه

بالتوفيق

بارك الله فيك أخانا الكريم ...
هل أطمع أن تخبرني برأيك في هذا الكود علي هذه المشاركة http://www.abc4web.net/vb/showpost.php?p=300912&postcount=3 ليطمئن قلبي :abc_139:
شكرا لمساعدتك القيمة ومرورك العطر :abc_023: