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

لماذا for تجعل الجهاز يهنق مع الارقام الكبيرة

مغلق
بدأه smsm3650 في 11 سبتمبر 2005 · 22 رد · 1,571 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لماذا for تجعل الجهاز يهنق مع الارقام الكبيرة

مثلا نفترض ان لدينا ملف abc

يحتوي بداخله على ملفات صور bmp

يفصلها عن بعضها العبارة *OSAMA*

وتم ربطهم باستخدام العبارة Join

ولفكها نستخدم هذا الكود ولكنه يجعل الجهاز يتوقف عن العمل إذا كان عدد الصور كثير

واعتقد ان هذا بسبب FOR

dim mf

dim SsS As String

Private Sub Command1_Click()

Mf = FreeFile

Open "C:\abc.Join" For Binary As #Mf

SsS = Space(LOF(Mf))

Get Mf, , SsS

X = Split(SsS, "*OSAMA*")

For iCounter = 0 To UBound(X)

Mf = FreeFile

Open ("C:\" & iCounter & ".Bmp") For Binary As #Mf

Put Mf, , X(iCounter)

Close #Mf

Next

End Sub

فحاولت تطوير الكود قليلا .. فوضعته في Timer

ليخفف الحمل قيلا عن الجهاز ولكن بلا فائدة

Private Sub Timer3_Timer()

On Error Resume Next

Mf = FreeFile

Open "C:\abc.Join" For Binary As #Mf

SsSs = Space(LOF(Mf))

Get Mf, , SsSs

X = Split(SsSs, "*OSAMA*")

iCounter = iCounter + 1

Mff = FreeFile

Open ("C:\" & iCounter & ".Bmp") For Binary As #Mff

Put Mff, , X(iCounter)

Close #Mff

Close Mf

If iCounter = UBound(X) Then End

End Sub

فما الحل .. ارجوا المساعدة وجازاكم الله خير

#2

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

استخدم الجملة DoEvents اسفل بداية الحلقة For :rolleyes:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

عليكم و رحمة الله

أخي الكريم كما قال لك الشبح ضع doevents لكن doevents تتيح للمستخدم عمل الحدث مرة أخرة و حتى و لو لم ينهي لذلك

أما أستخدم refresh أو ألغي تفعيل الز بع الضغط بكون أحسن

#4

يجماعه الموضوع مش موضوع خطأ فى الكود ولكن السبب هو أن عندما يكون عدد الصور الموجوده بالملف كبير وتريد ان تحملها كلها فى متغير واحد String هذا يجعل الذاكره تمتلئ والجهاز لا يجد مساحه كافيه عليها حتى يقوم بوظائفه كامله وهذا يجعله يهنج

;) ;) :rolleyes:

#5

ربما حجم البيانات التي تقرأها من الملف كبير جدا حيث ان الذاكرة لديك لا تتحمل .

الإنسان الذي يقول بأنه لا يمكن عمل شيء يجب ألا يعيق مطلقاً الإنسان الذي يقوم بعمل ذلك الشيء.

إن تخطئ فأنت إنسان ... أما أن تلوم جهازك الكمبيوتر على خطأك فهذا أكثر إنسانية.

#6

أضف جملة

debug.print i

في حلقة التكرار وانظر إلى الرقم الذي يصل إليه التكرار،،، هل تنتهي الحلقة؟؟ هل دخل في الحلقة؟؟ ابحث عن مصدر التجمد بالضبط!!

بالتوفيق!

#7
اقتباس
عندما يكون عدد الصور الموجوده بالملف كبير وتريد ان تحملها كلها فى متغير واحد String هذا يجعل الذاكره تمتلئ والجهاز لا يجد مساحه كافيه عليها حتى يقوم بوظائفه كامله وهذا يجعله يهنج

هذا أمر طبيعي لأن المتغير String له سعة محددة اذا تجاوزتها سيحدث خطأ في البرنامج

و من أجل تتبع الكود حاول ان تضع BreakPoint و ترى في أي جزء يحدث الخطأ و ترى حتى قيم المتغيرات لتعرف هل تجاوزت حدها المسموح أم لا

#8

لانها ماهى إلا process بتستنى دورها وتبدأ فى التنفيذ ولكن عند مرحلة الRunning يكتشف الos أنها كبيرة جدا يعنى ضخمة كما قلتم وبالتالى

كما لو ان الشخص وقع فى بركة ومعرفش يطلع منها وبالتالى يستوقف الجهاز

دا وجهة نظرى والله أعلم

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#9

وجهة النظر صحيحه 100%

#11

يا أخواني الكود صحيح 100% ولكن المشكلة ان الجهاز لا يستطيع تنفيذ عبارة Open للملف والبحث بداخله عن الكلمة *OSAMA* إذا كان حجم الملف كبير .. مثلا 100 ميجا او اكثر

فكيف ننظم طريقة تعامل البرنامج مع الميموري بحث لا يستخدم الفائض من المميموري كله مما يجعل الجهاز يهنق؟؟؟؟؟؟؟؟؟

#12

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

هل لك أن تجرب تصغير الملف قليلا وتختبر النتائج؟

بالمناسبة، لا أدري، لكن حاول فتح الملف باستخدام أنواع أخرى لا أتذكرها، مثلا:

Open File for Random as #1

Open FIle for Input as #1

#13

يا جماعة اى جمل تكرارية جوا الفيجوال بيزك 6 بتاخد resources كتير جدا من الذاكرة وممكن تهنج الجهاز . وانا واجهت المشكلة دى وعرضتها هنا ومحدش فادنى فيها مع برنامج database transaction البرنامج شغال عادى بس اول ما بيوصل لجملة while loop بياخد اكتر من 50% من ال resources والأخ محمد المهدى شاف المشكلة دى بنفسه ومش معقول هنحط الحلقلات التكرارية بدل اى loop عندنا . ياريت نشوف الموضوع من وجهة تانية

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

#14

الاخ Misiny_forever كلامه مظبوط

وردا على كلام بعض الاخوه فإنه بالنسبة للبرنامج اللي انا مصممه فلا يمكن فتح الملف على إنه Output او Input

يجب ان يكون Binary

ولكني لاحطت انه في بعض المشاريع .. يستخدم جمله For ويبين حالتها في ProsessBar ولا تؤثر على الجهاز مطلقاً حتى مع الارقام الكبيرة جدا

يبدوا ان هناك طريقة لتحسين التعامل مع الميموري

#15

!!!!!

هل تقصد أن واجهتك الرسومية تتجمد فترة من الزمن؟؟

هل تقصد أن لديك عملية طويلة تأخذ وقتا لتنفيذها وتريد أن تجعلها في الخلفية؟

إذا كان كذلك فاستخدم التوازي أو الخيوط أو Threading! كما قال حازوم!

#16

طيب أزاى نقدر نستخدم ال threading مع الفى بى 6 وكيفية الاستعانه به بدلا من جمل ال loop

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

#17

:rolleyes: طبعا محدش أدى المشكلة إهتمام لانها مش قواعد بيانات . كويس جدا اننا نفضل نشتغل مع التواريخ واشكال الفورمز وقواعد البيانات بس فعلا هيبقى لينا مستقبل رائع يا أخونا . الله الموفق :lol:

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

#18

يا أخي ابحث عن Threading in VB،، الله يعينك،، وإن عرفت الحل فأدرجه في المنتدى، وبهذا تصبح أنت الخبير!

هذه وصلة

http://www.google.com.sa/search?q=Threadin...:en-US:official

ربما المشكلة تستطيع حلها من غير Threading لكننا لم نر الشفرة!! ربما توجد مشكلة أخرى!

لكن إن أردت أرسل الملف إلى أحد من تثق به واجعله يحاول القراءة منه بأي لغة كانت وانظر إلى النتائج.

وإن أردت كيفية تطبيق Threading في أي لغة شيئية التوجه فنحن بالخدمة!

بالتوفيق!

#19

بالمناسبة هل تحتاج إلى قراءة الملف كاملا؟؟ لماذا لا تقرأه قليلا قليلا؟ حسب الحاجة..

ماهي نوع المعلومات التي في الملف؟ هل يمكن تجزيئها،، اشرح المعضلة كاملا..

#20
اقتباس
طبعا محدش أدى المشكلة إهتمام لانها مش قواعد بيانات . كويس جدا اننا نفضل نشتغل مع التواريخ واشكال الفورمز وقواعد البيانات بس فعلا هيبقى لينا مستقبل رائع يا أخونا . الله الموفق

مش مصدق انك انت يامحمد اللى تتكلم بالاسلوب ده :(

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#21

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

وسورى يا جماعه بس واللهى انا بقول كده عشان نفسى نبقى حاجه

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

#22

ايدى على كتفك , ياللا ابدأ بالبرنامج اياه اللى انت لسه ماشغتهوش عندك :lol:

اكيد عرفته :lol:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#23
اقتباس
ايدى على كتفك , ياللا ابدأ بالبرنامج اياه اللى انت لسه ماشغتهوش عندك

اكيد عرفته

أكيد :lol:

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

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

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

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

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

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

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