include files in the application تضمين الملفات بالتطبيق
السلام عليكم أجمعين
هل يوجد أحد يعرف كيفية تضمين الملفات داخل التطبيق ثم اعادة فكها على القرص الصلب من جديد ( أي بطريقة مشابهة لبرنامج WinZip تقريبا )
و جزاكم الله عنا و عنكم ألف خير
include files in the application تضمين الملفات بالتطبيق
السلام عليكم أجمعين
هل يوجد أحد يعرف كيفية تضمين الملفات داخل التطبيق ثم اعادة فكها على القرص الصلب من جديد ( أي بطريقة مشابهة لبرنامج WinZip تقريبا )
و جزاكم الله عنا و عنكم ألف خير
مدونتي
السلام عليكم ,,,
أهلين أخي الكريم بشير ,, إن شاء الله تمام ,,,
لحل مشكلتك عليك فورا بملف ال setup ,, فهو سيد الموقف هنا ,,
يمكنك انشاء ملف ال Setup بواسطة البرنامج Instal Shield الذي يأتي مع رزمة ال Visual Studio ,,,
البرنامج ,, ثم اذهب ال Help ,, وستجد بعض الدروس ستضعك في الطريق الصحيح ,,
بالتوفيق ,,
السلام عليكم,
كا تكرم الأخ HGB يمكنك استعمال الطريقة التي دكرها وهي الأسهل.
وإدا كنت تريد أن تحرق رأسك يمكنك مثلا جمع مختلف الملفات في ملف بايناري وتكون أنت قد عرفت أين يبدأ ويتم كل واحد منهم وتعمل لك برنامج يقوم بإعادة انشاء كل ملف من جديد وتسجيله على القرص الصلب. أو يمكنك أن تصنع برنامجا وتضيف ملفاتك على شكل Resource إلى برنامجك.
هده هي شكل الطريقة البدائية ويمكن أن تستعملها كما يبدو لك.
إلى اللقاء.
السلام عليكم
الى أعز صديقين.... شلون أحوالكم..... و سلام خاص لأخي HGB
الأخ HGB:
هدفي من تضمين الملفات داخل التطبيق ليس كما فهمت مني ( حزم الملفات لانشاء SETUP ) و لكن الغاية منها عمل Resource داخل التطبيق ثم فكه من جديد
بصراحة لدي محاولات بعمل برنامج ضغط بدائي شبيه بـ WinRar و لكن حتى الآن هي فكرة شبه نظرية لأنني بينما كنت أتصفح موقع لبرنامج 3D STUDIO MAX حملت ملف دعاية لشركة تصمم بيئات ثلاثية البعد و كان هذا الملف عبارة عن تطبيق يحوي ملف AVI يقوم بفكه عل الذاكرة ثم عرضه لكن المذهل في الموضوع أن حجم الملف قبل الفك كان حوالي 300 كيلوبايت بالرغم من أن طول AVI حوالي النصف ساعة و بدقة عالية ذلك دفعني الى فتح هذا الملف بواسطة برنامج هاكر او لذي مكنني من فك التطبيق المضغوط الذي يحوي AVI و كانت المفاجئة أن حجم ال AVI أصبح بعد الفك 20 ميغابايت بعد الفك و هذا منطقي مقارنة مع دقة عرض الAVI و طول الفترة الزمنية ......... و منه استنتجت أن هذه الشركة عملت تطبيق يضغط الملفات بطريقة أكبر من برامج الضغط الكلاسيكية مثل WinRAR , WinZIP ...... الخ
طولت عليك ما هيك
الأخ chik :
لقد أصبت بيت القصيد PPPPPPLLLLLLEEEEAAAASSSEEEE دلني على طريقة فك الResource من التطبيق
تم تعديل هذه المشاركة بواسطة C&DEL في 10 ديسمبر 2003 في 03:13
مدونتي
السلام عليكم,
يمكن أن نضم إلى Resource أي شيء نريده. هناك فعلا Resource التي يمكن أن نسميها كلاسيكية مثل الإيقونات وغيرها إلا أنه يمكن أن نضيف أي نوع على شكل بايناري. وحين نضيفه سنعطيه اسم النوع واسم Resource وحين نريد استخدام Resource في البرنامج يمكن أن نستعمل الدوال FindResource و LoadResource لكي نحمل المعطيات إلى الداكرة وحي تكون عندنا هنا يمكن أن نفعل بها ما نشاء.
وأريد أن أضيف أنع فيما يخص الملفات من نوع Multimedia عموما أو الأفلام بالخصوص لها طريقة خاصة للضغط ولا تعتمد على نفس الألغوريثم مثل الملفات العادية الأخرى وحسب معلوماتي الأخيرة فمثلا الضغط من نوع DivX وأضن أنه في نسخته السادسة يعطي ضغطا كبيرا مثل ما دكرت ويمكنك أن تجرب أشياءا بسيطة مثلا أن تسجل قطعة موسيقية في الأول على شكل wav نقول تكون في حدود 40 ميغا وإدا ضغطتها بطريقة MP3 قد ترجع في حدود 4 إلى 6 ميغا .وهده ألغوريثمات تختص بملفات الميلتيميديا وكما قلت ليست كالتي تستعملها WinZip أو WinRar .
هدا بخلاصة وأتمنى أن يكون في هدا إفادة.
إلى اللقاء.
السلام عليكم ,,
أخي بشير للتحميل من ال Resource عليك بالتالي ,,
اضغط بالزر الايمن على مجلد Resources في مشروعك ,, ثم import ثم اختر ملف ال JPG أو أي نوع اخر من الملفات ,, ثم سيطلب منك أن تكتب اسمها ,, اكتب JPG وبعدها ستجد أنه قام بانشاء فرع جديد يسمى JPG به Resource اسمه IDR_JPG به بيانات صورتك ,, بعد ذلك قم بالاتي ,, ("المعلومات التالية نظرية "),,
HGLOBAL hGlobal = NULL; HRSRC hSource = NULL; LPVOID lpVoid = NULL;
هذه هي المتغيرات الرئيسية المطلوبة ,,
hSource = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(ResourceName), ResourceType);
هكذا نقوم بتحميل بيانات ال Resource في بنية HRSRC ليتم تمريرها للدالة LoadResource وهي المطلوبة هنا ,, كالتالي :
hGlobal = LoadResource(AfxGetResourceHandle(), hSource);
المتحولة hGlobal بها ال Buffer الخاص بصورة ال Jpg من ال Resource !!
يمكنك الان أن تنسخ هذه البيانات الى ملف في القرص بامتداد Jpg ,, وستجد صورتك عادية تماما,,
بالطبع يمكنك بعدها أن تقوم بفتح الصورة باستخدام مكتبتك الخاصة,,
لكن أمر سيء أن تنسخ الصورة الى الهاردسك ,, لأنك بذلك ستخطو خطوة الى الوراء ,, لأن الصورة الان في الذاكرة وبالطبع هذا الافضل لمعالجتها مباشرة ,, لذا عليك أن تبحث في المكتبة الخاصة بك عن المتغير الذي يحوي ال Buffer المحمل من الملف ,, وتنسخ بيانات ال Buffer بالطريقة أعلاه ,, لتصبح في الذاكرة عندك ,,
لكن كل هذا وجع رأس ,, في المرفق مثال به مكتبة اسمها CPicture ,, رائعة ,, بها دالتين لتحميل الصورة ,, واحد من Resource والثانية من ملف ,, يمكنك استخدام دالة ال Resource مباشرة بحيث تدخر جهدك ووقتك ,, الا اذا أحببت المغامرة ,, وأحذرك مرة أخرى الفئة Cpicture معقدة نوعا ما ,,
ولك الخيار ,,
مشكور أخي هيثم
الكلاس الذي أرفقته سابقا يحتوى كل الميزات الموجودة في الملف المرفق الأخير الذي أرسلته أنت ....... و مع ذلك مشكور كتير كتير للاهتمام
و لكن ألم تلاحظ أننا خرجنا من صلب الموضوع نوعا ما !!!!
لذلك أرجو أن أن تنظر في المشروع المرفق و الذي يصف ماأريده ..
مع العلم أن الكود خطأ 99.99999 %
و عذرا لعدم مشاركتي بمواضيع أخرى لقلة الوقت
مدونتي
السلام عليكم ,,
أخي بشير كودك صح بنسبة 90 % ,, فقط بعض الاضافات عدلتها لك ,, لاحظها وستفهم ماحدث ,,
بالتوفيق ,,
السلام عليكم ,,,
هل تم حل المشكلة ,, لأن المثال يعمل عندي بدون أي مشاكل ,,ويقوم بنسخ الملف المرفق في Resource الى Drive c ,,
بالتوفيق ,,
هذا الموضوع مغلق.