الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما رأيك بأن نضع حد لل binary file وأسلوب التعامل معه

مغلق
بدأه O.o.00 في 24 مايو 2007 · 6 رد · 1,645 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بخ للجميع

طبعاً أول مشاركة إلي بالمنتدى وحابب في هادا القسم نعمل في إشي بحيث إنو لما حدا يدخل الموقع يستفيد بجد , هوا طبعاً الموقع حلو وبيفيد بس في مشكلة إنو المواضبع زي السبحة المفرفطة والواحد صعب يدور على إلي بدو إياه

على شان هيك بدي أبدا معكوووو بهالموضوع وأنا حتابع الموضوع أول بأول ..

الموضوع إنو نحكي عن الباينري فايل وكل واحد يطلع إلي عندو ويكون في جو للمناقشة وفي نهاية هذا الموضوع بدنا نعمل برنامج صغير نحاول نقرأ ونكتب ونعمل ترتيب وديليت لأي سجل موجود داخل الباينري فايل

حلو ....

أبدا أنا .......................

في حدا بيعرف يقلي شو الباينري فايل .....

أنا أقلكو.....

عبارة عن ملف لو فتحتو عن طريق الدفتر بيطلع كلام عبارة عن رموز مش مفهومة وبتستطيع تقرأو عن طريق البرنامج إلي إنتا عاملو وإن شاء الله حنعرف كيف لأنو إن شاء الله حنصمم برنامج يوضح كل شي بناهية الموضوع .

إلى اللقاء في الحلقة القادمة وبكون حضرت أول موضوع

#2

شكرا لك على طرح هذا الموضوع :)

بالنسبة لي ، فانا اعرف طريقة واحدة للاستخدام ال Binary Files ، وهي ان اقوم اولاً بكتابة 100 سجل فارغ ( empty object ) طبعاً يكون كل object تتم كتابته في البداية له قيم افتراضية اكتبها في Default Constructor . وبعدها اقوم بفتح الملف في برنامج آخر .

سمعت ان هناك طريقة أخرى لا تحتاج الى كتابته 100 سجل فارغ في البداية ؟ ارجو ان يتم توضيحها وطريقة التعامل معها .

وايضاً هل استطيع كتابة سجلات مختلفة الحجم في ملف واحد ؟

#3

جميع الملفات في الكومبيوتر هي باينري .. حتى الملفات اللتي تسمى نصيه. و الحقيقة لا توجد اي قواعد معينة في كيفية تخزين الاشياء في الملف, فهي بالنسبة للجهاز مجرد سلسلة من البايتات .. يمكن تخزينها بأي طريقة تريد

ليس بالضرورة ان تكون سلسلة حقول او سجلات وراء بعضها .. بل يمكنك تقسيمها بأي شكل تشاء.

و حتى ما يسمى بالملفات النصية .. انا شخصيا لا اعرف لماذا يوجد هذا التفريق بين binary file و text file

و حتى لو فرضنا ان نظام التشغيل يتعامل بطرق مختلفة مع الملفات النصية لان تركيبتها بسيطة و كل حرف هو بايت واحد فقط, فهذا قد يكون صحيحا في السابق .. و لكن الان و مع ظهور اليونيكود لم يعد الامر كذلك.

#4

بخ للجميع

كيفكوووو

ما علينا المهم نخش في الموضوع على طول

أنا إقترحت طبعاً إنو يتم مناقشة الباينري فايل وطريقة التعال معاها

على شان هيك بدنا ندبا سوا............يلا

هل فكرت يوماً بعمل برنامج يقوم بعمل معين ولكنك تحتاج إلى البيانات الموجوده فيه مسبقاً و لا تريدها ان تضيع بمجرد إقفال البرنامج ؟

طبعاً بطبيعة الحال أكيد مش حينفع لأنو إنتا ما حفظتهم في ملف مثلاُ

يعني بالعربي على شان يصير البرنامج تبعك إلو فايدة بدنا نعملو فايل

وهاتو نعرف كيف نعمل فايل

طبعاً إنتا مش حتتعامل مع الملف بإسمو وعلى طول مباشرة تتعامل معو..... أكيد حتتعامل معو عن طريق مؤش

1-بنعرفو زي هيك:

FILE *file_pointer;

مع العلم ان كلمة FILE لابد ان تكون بالحروف الكبيره و file_pointer هي كلمة إختيارية تختارها أنت و لتكن مثلاً fp لسهولة الإستعمال و لكن لابد أن تسبق بالعلامة *

فقط في التعريف ( كما هو موضح في الأعلى ) أي أن المتغير سيكون مؤشر للملف.

فتح الملف :

لابد من فتح الملف قبل إستخدامة مثلة مثل فتح ( تشغيل ) الكمبيوتر قبل إستخدامة

ولفتح الملف سنستعمل الدالة التالية :

FILE *fopen ( const char *filename, const char *mode );

الـ filename هو إسم الملف الذي يكون ظاهر للمستخدم مثلاً Ahmad.uuu

و الـ mode هو طبيعة فتح الملف فهناك اكثر من صفة لفتح الملف سأذكرها بعد قليل

فلو كان لدينا هذا التعريف :

FILE *fp;

و نريد ان نفتح ملف إسمة Ahmad.uuu فسنفتحه بالطريقة التالية :

fp = fopen( "Ahmad.uuu", "wb" );

إذا لم يتمكن النظام من فتح الملف سنعيد في الـ fp قيمة NULL .

و لنرى الصفات التي تفتح عليها الملفات :

إذاً إذا أردنا أن نفتح ملف للقرائة منه ماذا نفعل ؟

الجواب هو كالتالي:

fp = fopen("Ahmad.uuu", "rb");

و إذا أردنا فتح الملف للقراءة و الكتابة معاً يمكننا ذلك بطرق أحدها

fp = fopen("Ahmad.uuu", "rb+");

. إغلاق الملف :

كما فتحنا الملف في البداية لابد من اإغلاقة عند الإنتهاء منه أليس كذلك !

بالتأكيد سنغلقة في حال إنتهينا من إستعمال الملف و الدالة المسؤلة عن إغلاق الملف هي:

int fclose(FILE *file_pointer );

هكذا فقط :) .

فلو كان عندنا التعريف التالي :

FILE *fp; 
fp = fopen("Ahmad.uuu", "wb");

سنغلق هذا الملف هكذا :

fclose ( fp );

فقط, هذا كل ما في الأمر. أليس هذا سهلاً ؟

وإذا لم ينفتح الملف لأي سبب من الأسباب كأمتلاء الذاكرة, ستعيد الدالة القيمة NULL

المرة الجاية إن شاء الله بكون قلتلكو كيف نكتب في الفايل ونقرأ منو :)

التوقيع قيد الإنشاء.....

تم تعديل هذه المشاركة بواسطة zahrah في 30 مايو 2007 في 18:20

#5

اخي الكريم هل يمكنك استخدام خاصية تنظيم الكود

code

و

/code

لكن ضعهما بين [ ] لتسهل قراءة الموضوع و جزاك الله خيرا

#6
hasan_aljudy كتب:

جميع الملفات في الكومبيوتر هي باينري .. حتى الملفات اللتي تسمى نصيه. و الحقيقة لا توجد اي قواعد معينة في كيفية تخزين الاشياء في الملف, فهي بالنسبة للجهاز مجرد سلسلة من البايتات .. يمكن تخزينها بأي طريقة تريد

ليس بالضرورة ان تكون سلسلة حقول او سجلات وراء بعضها .. بل يمكنك تقسيمها بأي شكل تشاء.

و حتى ما يسمى بالملفات النصية .. انا شخصيا لا اعرف لماذا يوجد هذا التفريق بين binary file و text file

و حتى لو فرضنا ان نظام التشغيل يتعامل بطرق مختلفة مع الملفات النصية لان تركيبتها بسيطة و كل حرف هو بايت واحد فقط, فهذا قد يكون صحيحا في السابق .. و لكن الان و مع ظهور اليونيكود لم يعد الامر كذلك.

التفرقة ليست من نظام التشغيل فنظام التشغيل يعامل كل شئ على إنه binary كما قلت, لكن تفسير محتويات الفايل (فى التطبيقات) هو المستوى الذى يحدث عنده هذا التفريق فمحتويات الملفات النصية يمكن تفسيرها على إنها حروف مقروؤة لكن الملفات البينارى لا تستطيع تفسير محتوياتها على هذا النحو.

#7

والله تعقدت مش راضي يزبت معي قصة تنظيم الكود مع إنتي بعملو left مش مشكلة إنتو بتنسخو في ملف دفتر وبتقرأو يعني مش صعبة أخي

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…