نحن نقوم عادة بفتح الملف ووضعه في الذاكرة في متغير ثم التعامل معه لكن ماذا لو كان هذا الملف كبير 1000 ميغابايت مثلا السؤال هو كيف اقوم بفتح جزء منه واستخلاص المعلومات المطلوبة؟؟؟
مع تحياتي
نحن نقوم عادة بفتح الملف ووضعه في الذاكرة في متغير ثم التعامل معه لكن ماذا لو كان هذا الملف كبير 1000 ميغابايت مثلا السؤال هو كيف اقوم بفتح جزء منه واستخلاص المعلومات المطلوبة؟؟؟
مع تحياتي
اسم الشركه : mj7.org
صاحب الشركه : محمد جمال الذياب.
أداء الشركـــه : برمجة و تصميم و ادارة المواقع للمنشآت و الافراد
بريد الشركـــه : mj@mj7.org
هاتف الشركه : 00963991354290
الدعم الفنــــي :mjxp7@hotmail.com
بنفتحه على أجزاء , بأستخدام Get
إقرأ معى:
----
المثقفون العرب .. المزورون العرب: تأبين محمود درويش نموذجا
ماذا خسر العالم بانحطاط المسلمين ؟!! للعلامه: أبو الحسن الندوى (كتاب هام لكل مسلم).
المنهجية ومقدمات في الطلب (لطلاب العلم الشرعى)
شكرا لك اخي الكريم على طرح هذا السؤال
وانا بعد اواجه مشكلة في فتح الملف
استخدمت
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
اقتباسبنفتحه على أجزاء , بأستخدام Get
الرجاء التوضيح
أرجو ان تكون الفكرة وصلت لكم بالشكل الصحيح
عند فتح ملف عادة نقوم بتعريف متغير في الذاكرة ثم نقوم بوضع محتويات الملف به قب ان نعالج محتوياته
لكن ماذا لو كان حجم الملف أكبر من استيعاب الذاكرة؟؟؟؟
اسم الشركه : mj7.org
صاحب الشركه : محمد جمال الذياب.
أداء الشركـــه : برمجة و تصميم و ادارة المواقع للمنشآت و الافراد
بريد الشركـــه : mj@mj7.org
هاتف الشركه : 00963991354290
الدعم الفنــــي :mjxp7@hotmail.com
يبقى أستنى عليا يومين ( ممكن يوم ) عقبال أما أعملك مثال لأنى مسافر حاليا , صحيح معايا أسطوانة الـ VS بس مكسل , أتمنى انك متكونش مستعجل.
إقرأ معى:
----
المثقفون العرب .. المزورون العرب: تأبين محمود درويش نموذجا
ماذا خسر العالم بانحطاط المسلمين ؟!! للعلامه: أبو الحسن الندوى (كتاب هام لكل مسلم).
المنهجية ومقدمات في الطلب (لطلاب العلم الشرعى)
اذا ملف نصي جرب باستخدام FileSystemObject وهي سريعة جدا
Dim ff As Scripting.TextStream
Dim fs As New FileSystemObject
Set ff = fs.OpenTextFile("xxx.txt", ForReading)
'اقرأ 100 حرف
Debug.Print ff.Read(100)
اقرا الملف على اجزاء اى انك لا تقوم بتعبئة محتوياته كلها فى متغير لا الذاكرة لن تسع ذلك
مبارك لشعب تونس ![]()
سؤال اخر ما هو نوع الملف الذى تود قرائته ولماذا تريد قراءة ملف هاذا الحجم اذا لم يكن ملف ملتى ميديا
مبارك لشعب تونس ![]()
إستخدام Memory Mapped File سيفيد بشكل كبير
"First they ignore you, then they laugh at you, then they attack you, then you win"
===
اقتباسحُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا
هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا
الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا
القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ
لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ
البردوني "أبو تمام وعروبة اليوم" 1971
===
اقتباسعبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــمو تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم
ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم
أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟
ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا
البردوني "نحن و الحاكمون "
اخ msayed2004 شكرا لاهتماممك بالنسبة للوقت خذ راحتك المهم ان يعرف احد الجواب
أخ TareqVB وأخ cipher سأجرب الأكواد وإن شاء الله تنجح
أخ حريف برمجة
اقتباساقرا الملف على اجزاء اى انك لا تقوم بتعبئة محتوياته كلها فى متغير لا الذاكرة لن تسع ذلك
كيف؟؟؟؟؟؟؟؟؟؟؟
اقتباسسؤال اخر ما هو نوع الملف الذى تود قرائته ولماذا تريد قراءة ملف هاذا الحجم اذا لم يكن ملف ملتى ميديا
أي ملف ليس نوع محدد
شكرا لردودكم
اسم الشركه : mj7.org
صاحب الشركه : محمد جمال الذياب.
أداء الشركـــه : برمجة و تصميم و ادارة المواقع للمنشآت و الافراد
بريد الشركـــه : mj@mj7.org
هاتف الشركه : 00963991354290
الدعم الفنــــي :mjxp7@hotmail.com
السلام عليكم ورحمة الله وبركاته
كما ذكر الأخ 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
)
طبعا باضافة الكلاس المرفقة
بالتوفيق للجميع
تم تعديل هذه المشاركة بواسطة DreamNet في 3 يونيو 2007 في 15:35
الظاهر ان الاخوة لم يجربوا FileSystemObject لذا يتكلموا عن Memory Mapped File
FileSystemObject يمكن اضافته من خلال (scrrun.dll) Microsoft scripting Runtime وهو موجود مع الويندوز .
هذا الموضوع مغلق.