المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تأخر الملف التنفيذي ( exe ) أثناء التشغيل


الجارف
21-07-2014, 09:08 PM
السلام عليكم

واجهتني مشكلة فجأة

الملف التنفيذي ( exe ) بمجرد الضغط عليه مرتين يفتح مباشرة

في غضون ( 2 ) ثانية تقريبًا

ونفس الملف تفاجأت أنه يستغرق وقتًا للتشغيل

( 11 ) ثنية بالضبط .. حسبتها بالساعة

وهذا يجعل المستخدم يقوم بتشغيل الملف مرتين أو أكثر ولا ينتظر



هل صادفكم مثل هذا الشيء .. ؟

وهل من حل لديكم لهذه المشكلة ؟

النصل القاطع
21-07-2014, 09:47 PM
حسنا اخى
11 ثانية هى زمن طويل جدا جدا لفتح برنامج مصنوع بالأوتوبلاى

بداية ما هى طريقتك للتصدير
هارد ام ويب ؟

سأفترض مؤقتا انك تستخدم طريقة ويب و ان هناك العديد من العناصر تفك للتمب
منتظر ردك

علما بأنه من متابعة سؤالك السابق
http://www.abc4web.net/vb/showthread.php?t=29867
ارى انك لم تكن على اول الطريق الصحيح لحل مشكلتك
انت حاولت فى سؤالك السابق معالجة العرض و ليس المرض

انت الآن بصدد مناقشة علاج المرض و ليس العرض

الجارف
21-07-2014, 10:20 PM
أستاذي الكريم ..

أنا أصدر الملف بصيغة :

( Hard drive folder )

وبالنسبة للموضوع السابق : منع التشغيل أكثر من مرة

بسبب تأخر التشغيل توقعت أن هناك من يعيد التشغيل مرة أخرى

فمثل ما تفضلت أستاذي ..

فلو كان زمن التشغيل قياسيا طبيعيا فالمستخدم لن يقوم بالتشغيل مرتين

النصل القاطع
21-07-2014, 11:03 PM
حسنا
هل يقوم برنامجك عند بدء تشغيله بعمل أحد الأشياء الآتية :-
الإتصال بالإنترنت (إتصال بسيرفر مثلا)
جلب محتوى من النت
فك مضغوط
فك تشفير
و أخيرا
هل تستخدم الأفاست

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

الجارف
22-07-2014, 04:13 AM
نظام التشغيل لدي : ويندوز 7 ( 64 ) بت

برنامج المكافحة : Qihu 360 internet security

نعم البرنامج يفتح ملف مضغوط مع بدء التشغيل حجمه صغير جدا ( 45 ) كيلوبايت

لا يوجد أي شيء مشفر ..

ولا يجلب أي شيء من الأنترنت ..

ولا يطلب اتصال بالانترنت ..

النصل القاطع
22-07-2014, 09:38 AM
اخى الكريم
لا شيئ مما ذكرته لى يتسبب فى هذا البطء فى فتح التنفيذى
جرب بعض هذه الخيارات
http://im74.gulfup.com/l6JyUT.jpg

لكن انا افضل ان تجرب برنامجك على جهاز آخر

بالمناسبة
هل البطء فى هذا المشروع بعينه ام كافة المشاريع ؟؟

الجارف
22-07-2014, 04:25 PM
الخيارات مضبوطة كما بالصورة ..

وتمت التجربة على جهاز آخر ..

ولا زالت المشكلة قائمة !!

نعم البطء فى هذا المشروع بعينه دون باقي المشاريع

النصل القاطع
22-07-2014, 05:59 PM
طالما العيب فى هذا البرنامج فقط

فسننظر بإهتمام للملف الذى يتم فكه فى البدء
هل هو تنفيذى ؟؟
هل تعلم عنه كل التفاصيل ؟؟
هل يقوم بإستدعاء غيره

حدثنى عن طبيعة هذا الملف

ايضا اكواد بدء المشروع و أكواد الصفحة الأولى
هل بها حلقات ؟

لا أرغب فى أن أقول لك أدرج الكود فهذه خصوصيات
لكن أكوادك و ملفاتك بداخل المشروع لها نصيب كبير من السبب

الآن اذا لم تكن تريد وضع كود مشروعك فإستمع لتلك النصيحة

إقسم عدد أسطر الكود على 4 (تقؤيبا)
بعد كل ربع ضع رسالة ( و لتكن الإفتراضية) فقط تفادى وضع اى رسالة بداخل الحلقات

الآن راقب بنفسك و تعلم بنفسك و من نفسك أين البطء فى الكود

فلو فرضنا أنك وجدت أن البطء يسبق الرسالة الثانية
إحذف الثالثة و الرابعة

أعد تقسيم الأسطر مرة أخرى ل 4 أقسام (من بعد الرسالة الاولى و حتى الرسالة الثانية)

سؤال عابر
هل وضعت اى حلقات بداخل الحدث on timer ؟؟
ما طبيعة الأكواد الموجودة فى الحدث on timer ؟؟

اعتذر للإطالة و عدم التحديد
فأنا أعالج أمر لا أراه و أتعامل مع شجرة احتمالات ضخمة
خالص تمنياتى

الجارف
22-07-2014, 08:20 PM
أشكرك من أعمااااااااااااااق قلبي أستاذي الكريم

فحوارك أوصلني للمشكلة التي كنت أعانيها


كنت قد وضعت كودًا في بدء التشغيل

عن طريق الأمر ( File.Find )

حيث أنني أطلب من البرنامج أن يبحث عن ملف أثناء بدء التشغيل

وهذا هو سبب التأخير ..


جزاك الله خيرًا أستاذي وجعله الله في موازين حسناتك

عبود عبود
22-07-2014, 08:40 PM
عن طريق الأمر ( File.Find )

حيث أنني أطلب من البرنامج أن يبحث عن ملف أثناء بدء التشغيل



التأكد من وجود ملف يكون بـــــ File.DoesExist أفضــــــل .

:abc_152:

الجارف
22-07-2014, 09:07 PM
التأكد من وجود ملف يكون بـــــ File.DoesExist أفضــــــل .

:abc_152:

أنا عندما حذفت الكود السابق ذكره الذي به الأمر ( File.Find )

اشتغلت التجميعة بدون تأخير ..

هل إذا استخدمت الأمر ( File.DoesExist ) لا يكون فيه تأخير ؟؟

لأني بصراحة لم أنجح في صياغة الكود

النصل القاطع
22-07-2014, 09:38 PM
الآن راقب بنفسك و تعلم بنفسك و من نفسك أين البطء فى الكود


أشكرك من أعمااااااااااااااق قلبي أستاذي الكريم

فحوارك أوصلني للمشكلة التي كنت أعانيها


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



التأكد من وجود ملف يكون بـــــ File.DoesExist أفضــــــل .

:abc_152:

كلام سليم أخى عبود
لكن للضرورة أحكام
عندما لا يكون يعرف إسم الملف يضطر عندها للبحث

كل عام و انتم جميعا بخير
:abc_152: :abc_152: :abc_152:
:abc_152: :abc_152:
:abc_152:

النصل القاطع
22-07-2014, 10:59 PM
هل إذا استخدمت الأمر ( File.DoesExist ) لا يكون فيه تأخير ؟؟

لأني بصراحة لم أنجح في صياغة الكود

لن يكون هناك ذرة تأخير فى هذه الدالة و هى ترجع قيمة true لو وجدت الملف فى المسار المحدد
و ترجع false إذا لم تجده

لهذه الدالة شرط واحد
ان تكون تعرف إسم الملف و مساره

فقط لاحظ أنك قد تظن بالخطأ أنك لا تعرف المسار
مثلا ان يكون الملف فى my documents\user
أو فى المسار windows وتعتقد انها مجهولة لإختلاف قرص التنصيب أو إختلاف المستخدم
و تفترض انت انها مسارات مجهولة

فبالرغم من أن مثل هذه المسارات تبدو مجهولة
إلا أن إستخدام الدالة shell يجعلها معلومة

الجارف
23-07-2014, 02:34 AM
هذا هو الكود الذي استخدمت فيه الأمر ( File.Find ) :

result = File.Find( _WindowsFolder .. "\\Fonts", "\\Arial.ttf", false, false, nil, nil);


معلوم لدي إسم الملف و مساره

كيف يكون الكود مع الكود ( File.DoesExist ) ؟

أرجو المساعدة

عبود عبود
23-07-2014, 03:29 AM
هذا هو الكود الذي استخدمت فيه الأمر ( File.Find ) :

result = File.Find( _WindowsFolder .. "\\Fonts", "\\Arial.ttf", false, false, nil, nil);


معلوم لدي إسم الملف و مساره

كيف يكون الكود مع الكود ( File.DoesExist ) ؟

أرجو المساعدة

--
result = File.DoesExist(_WindowsFolder .. "\\Fonts", "\\Arial.ttf");
if result then
Dialog.Message("Notice", "Your message here.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end

الجارف
23-07-2014, 04:54 AM
--
result = file.doesexist(_windowsfolder .. "\\fonts", "\\arial.ttf");
if result then
dialog.message("notice", "your message here.", mb_ok, mb_iconinformation, mb_defbutton1);
end


تمت التجربة .. ولازال تشغيل الملف يتأخر

قمت بحذف الكود ..

اشتغل الملف بدون تأخير

عبود عبود
23-07-2014, 09:23 AM
ضعه فى أحداث الصفحة فى الحدث " On Preload " وليس فى " On StartUp " .


أما إذا كنت تريد وضعة فى " On StartUp " فيمكن بلا مشاكل شرط وضع كود التحقق ثم إعتماد النتيجة فيما بعد فى الحدث " On Preload "

النتيجة فقط أى الدالة الشرطية فقط أما كود التحقق فلا مشاكل أن يوضع .

:abc_138:

النصل القاطع
23-07-2014, 01:08 PM
إستخدم هذا الكود
result = File.DoesExist(_WindowsFolder .. "\\fonts".. "\\arial.ttf");

if result then
Dialog.Message("notice", "your message here.", mb_ok, mb_iconinformation, mb_defbutton1);
end

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

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

جواب الشرط عند تحقق الشرط بالإيجاب عندك يحوى خطأ لا نعلمه
راجع أكوادك
أو إطرح جواب الشرط لمراجعته

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

الجارف
23-07-2014, 04:47 PM
هذا الكود به الشرط وبه النتيجة

--
result = File.DoesExist(_WindowsFolder .. "\\Fonts", "\\arial.ttf");
if result then
File.Copy("AutoPlay\\Docs\\Arabic Font Pack\\arial.ttf", _WindowsFolder .. "\\Fonts", false);
System.RegisterFont(Shell.GetFolder(SHF_FONTS).."\\arial.ttf", "Arabic Font Pack", true);
end

النصل القاطع
24-07-2014, 05:13 AM
الكود الذى طرحته حوى 3 أخطاء
جرب هذا الكود
fonts_path = Shell.GetFolder(SHF_FONTS)
exist = File.DoesExist(fonts_path.."\\arial.ttf");
if not exist then
File.Copy("AutoPlay\\Docs\\Arabic Font Pack\\arial.ttf", fonts_path, false);
System.RegisterFont(fonts_path.."\\arial.ttf", "arial", true);
end

الجارف
24-07-2014, 06:28 AM
الكود الذى طرحته حوى 3 أخطاء
جرب هذا الكود
fonts_path = Shell.GetFolder(SHF_FONTS)
exist = File.DoesExist(fonts_path.."\\arial.ttf");
if not exist then
File.Copy("AutoPlay\\Docs\\Arabic Font Pack\\arial.ttf", fonts_path, false);
System.RegisterFont(fonts_path.."\\arial.ttf", "arial", true);
end

تمت التجربة :abc_051:

اشتغل الملف بنجاح دون أي تأخير
أشكرك أستاذي ..

هل لي أن أعرف الأخطاء الثلاثة التي وقعت بها في الكود السابق ؟!

إن سمحت لي :abc_138: