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

سؤال عن فتح الملفات يزيد حجمها عن 1000 ميجابايت

مغلق
بدأه mjxp7 في 28 مايو 2007 · 11 رد · 959 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

نحن نقوم عادة بفتح الملف ووضعه في الذاكرة في متغير ثم التعامل معه لكن ماذا لو كان هذا الملف كبير 1000 ميغابايت مثلا السؤال هو كيف اقوم بفتح جزء منه واستخلاص المعلومات المطلوبة؟؟؟

مع تحياتي

اسم الشركه : mj7.org
صاحب الشركه : محمد جمال الذياب.
أداء الشركـــه : برمجة و تصميم و ادارة المواقع للمنشآت و الافراد
بريد الشركـــه : mj@mj7.org
هاتف الشركه : 00963991354290
الدعم الفنــــي :mjxp7@hotmail.com

#2

بنفتحه على أجزاء , بأستخدام Get

#3

شكرا لك اخي الكريم على طرح هذا السؤال

وانا بعد اواجه مشكلة في فتح الملف

استخدمت

input#1,var

الداتا الموجودة عندي مسيفة على هيئة array in 2D

عملت لووب

For i = 1 To Picture1.ScaleHeight
	For j = 1 To Picture1.ScaleWidth
Input #2, Color
[code] R = Color Mod 256
 G = (Color \ 256) Mod 256
 B = (Color \ 256 \ 256) Mod 256

Picture2.PSet (i, j), R

Next
Next

ولما استخدم هذا الكود بحيث اني اقرا ويندو من 3*3

يعني 3 اسطر وثلاث اعمدة

حيث اقرا من السطر الاول 1,2,3

ثم انتقل للسطر الثاني واقرأ1,2,3

ثم السطر الثالث واقرأ 1,2,3

وهكذا قرأت قرأت ويندو 3*3

ثم اكرر العملية بحيث انتقل للعمود 4 و 5 و 6

وهكذا

For m = 1 To Picture1.ScaleHeight - 2
For k = 1 To Picture1.ScaleWidth - 2

	For i = m To m + 2
	For j = k To k + 2

	Input #4, Color

		Picture2.PSet (i, j), Color

   Next
   Next

k = k + 2
Next

m = m + 2
Next

الكود الاخير يطبع الصورة مكررة ثلاث مرات ويكون سايزها اصغر من الاصل

فما العلة في هذا الكووود؟؟؟؟

ولكم مني جزيل الشكر

لكن الصورة الي تنطبع تطلع مقطوعة

تم تعديل هذه المشاركة بواسطة bayana في 28 مايو 2007 في 20:07

#4
اقتباس
بنفتحه على أجزاء , بأستخدام Get

الرجاء التوضيح

أرجو ان تكون الفكرة وصلت لكم بالشكل الصحيح

عند فتح ملف عادة نقوم بتعريف متغير في الذاكرة ثم نقوم بوضع محتويات الملف به قب ان نعالج محتوياته

لكن ماذا لو كان حجم الملف أكبر من استيعاب الذاكرة؟؟؟؟

اسم الشركه : mj7.org
صاحب الشركه : محمد جمال الذياب.
أداء الشركـــه : برمجة و تصميم و ادارة المواقع للمنشآت و الافراد
بريد الشركـــه : mj@mj7.org
هاتف الشركه : 00963991354290
الدعم الفنــــي :mjxp7@hotmail.com

#5

يبقى أستنى عليا يومين ( ممكن يوم ) عقبال أما أعملك مثال لأنى مسافر حاليا , صحيح معايا أسطوانة الـ VS بس مكسل , أتمنى انك متكونش مستعجل.

#6

اذا ملف نصي جرب باستخدام FileSystemObject وهي سريعة جدا

Dim ff As Scripting.TextStream

Dim fs As New FileSystemObject

Set ff = fs.OpenTextFile("xxx.txt", ForReading)

'اقرأ 100 حرف

Debug.Print ff.Read(100)

#7

اقرا الملف على اجزاء اى انك لا تقوم بتعبئة محتوياته كلها فى متغير لا الذاكرة لن تسع ذلك

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#8

سؤال اخر ما هو نوع الملف الذى تود قرائته ولماذا تريد قراءة ملف هاذا الحجم اذا لم يكن ملف ملتى ميديا

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#9

إستخدام Memory Mapped File سيفيد بشكل كبير

/index.php?showtopic=7959

/index.ph...=99286&st=0

/index.ph...l=Mapped+memory

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#10

اخ msayed2004 شكرا لاهتماممك بالنسبة للوقت خذ راحتك المهم ان يعرف احد الجواب

أخ TareqVB وأخ cipher سأجرب الأكواد وإن شاء الله تنجح

أخ حريف برمجة

اقتباس
اقرا الملف على اجزاء اى انك لا تقوم بتعبئة محتوياته كلها فى متغير لا الذاكرة لن تسع ذلك

كيف؟؟؟؟؟؟؟؟؟؟؟

اقتباس
سؤال اخر ما هو نوع الملف الذى تود قرائته ولماذا تريد قراءة ملف هاذا الحجم اذا لم يكن ملف ملتى ميديا

أي ملف ليس نوع محدد

شكرا لردودكم

اسم الشركه : mj7.org
صاحب الشركه : محمد جمال الذياب.
أداء الشركـــه : برمجة و تصميم و ادارة المواقع للمنشآت و الافراد
بريد الشركـــه : mj@mj7.org
هاتف الشركه : 00963991354290
الدعم الفنــــي :mjxp7@hotmail.com

#11

السلام عليكم ورحمة الله وبركاته

كما ذكر الأخ cipher فالحل الوحيد في مثل هذه الحالات هو استعمال Memory Mapped File

عملية الفتح باستخدام OpenFile ستكون مجدية فقط مع الملفات الصغيرة لذلك يجب التفكير في استخدام دوال الApi لتمكين قراءة مقطع من الملف دون اللجوء الى فتحه كليا

في الملف المرفق كلاس تسهل استعمال هذه الطريقة

يمكن قراءة جزء من الملف باستعمال الكود التالي

Dim mfile As ClassMapFile
Dim Buffer() As Byte
Set mfile = New ClassMapFile
mfile.MapFile "E:\xp.iso"
ReDim Buffer(0 To 1) As Byte
mfile.GetRng VarPtr(Buffer(0)), 0, 2
Debug.Print StrConv(Buffer, vbUnicode

)

طبعا باضافة الكلاس المرفقة

بالتوفيق للجميع

ClassMapFile.zip

تم تعديل هذه المشاركة بواسطة DreamNet في 3 يونيو 2007 في 15:35

#12

الظاهر ان الاخوة لم يجربوا FileSystemObject لذا يتكلموا عن Memory Mapped File

FileSystemObject يمكن اضافته من خلال (scrrun.dll) Microsoft scripting Runtime وهو موجود مع الويندوز .

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

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