اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

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

أسعد الله أوقاتكم وبارك فيكم
الملف المرفق يحتوي علي

  • [ awsTimer ]  وهو [ CLass Module ] والموضوع الأساسي
  • [ awsStringBuilder]  وهو [ CLass Module ] و موضوع فرعي
  • [ awsSleepWait_MOD ]  وهو [ Module ] و موضوع فرعي
  • الباقي المواضيع الخاصة بهم بالمنتدي

[ awsSleepWait_MOD ] - ببساطة وظيفته هي إيقاف عمل الكود لبعض الوقت ولسهولة الاستخدام
                                   تم إضافة وحدات للوقت (الوحدة الافتراضية الثواني) و يستخدم هكذا :
                                    -  Call waitFor(500, wtMilliseconds)
                                    -  Call waitFor(5, wtSeconds)
                                    -  Call waitFor(1, wtMinutes)

 

[ awsStringBuilder ] - وظيفة هذه الأداة هو تكوين النصوص الكبيرة بسرعة أكبر بكثير تصل إلي 98 % من الطريقة العادية 
                               لن أطيل فالحديث عنها لأنني وصلت إليها حديثاً ووجدت مصادر عده ولكن أغلبها قديم ولم أفحص الموضوع بعناية كبيرة
                               لذا سأكتفي بمشاركة المصادر والوظيفة داخل الكود كما يوجد مثال Advanced_awsTimerTest
                               ملحوظة المديول هام للوظيفة الأساسية لأنه مستخدم لبناء التقرير (النص والـ HTML)

 

المصادر :
https://nolongerset.com/string-concatenation-in-vba/
https://nolongerset.com/clsconcat/
https://github.com/joyfullservice/msaccess-vcs-addin/blob/main/Version%20Control.accda.src/modules/clsConcat.cls

https://codereview.stackexchange.com/questions/67596/a-lightning-fast-stringbuilder/67600#67600
https://github.com/retailcoder/VBA-StringBuilder/blob/master/src/StringBuilder.cls

https://www.vbforums.com/showthread.php?847365-VB6-StringBuilder-Fast-string-concatenation&s=43cda60b1b8cb40b2feaa60b32df951d
https://github.com/dragokas/hijackthis/blob/devel/src/clsStringBuilder.cls  

نتائج التجربة :
Normal Test Starts ....
Normal String Length is : 944594
Normal Test Takes : 40.794s
Normal Test End.
SB Test Starts ....
String Builder Length is : 894294
sb Way Length is : 894294
awsString builder Test Takes : 638ms
sb Test End.
AWS StringBuilder is 98.43% faster than the normal way.

[ awsTimer ] - وهو موضوعنا الأساسي
الأستخدام التقليدي : هو لحساب وقت أي عملية ويستخدم هكذا
1- تهية الـ Class module  دخل الكود الخاص بك يتم بطريقتين أفضل الأولي

   

Sub initialize_awsTimer_1()
    Dim sTimer      As awsTimer
    
    Set sTimer = New awsTimer
    
    Set sTimer = Nothing
End Sub
Sub initialize_awsTimer_2()
    Dim sTimer      As New awsTimer
End Sub

بعد ذلك لبدأ حساب الوقت  sTimer.startTimer
image.png.c19ce28e2c47dd1c2214937713121112.png

بعد بدأ الوقت يمكنك معرفة الوقت ميلي ثانية في أي لحظة من خلال Debug.Print .elapsedMS
ويمكنك أيضاً الحصول علي الوقت منسق بالثواني والدقائق وهكذا من خلال Debug.Print .getFormattedTime(, tuSeconds)
كما يمكن استخدام نفس الوظيفة لتنسق اي ميلي ثانية
 Debug.Print .getFormattedTime(6042, tuMilliseconds)
Debug.Print .getFormattedTime(260, tuSeconds)
Debug.Print .getFormattedTime(13.15, tuMinutes)

ولإيقاف الوقت sTimer.stopTimer بعد إيقاف الوقت سيتوقف العد ولن تتمكن من بدأ او استكمل الحساب إلا بتهيئة جديدة

الأستخدام المطور :

مقدمة :  يوجد لدي بعض الإجراءات التي تحتاج الي ما يقارب الـ 4 ساعات وهي تضم عمل  العديد من الأكواد
ولمتابعة عمل الأكواد وتسجيل الاحداث ووقت كل عملية والأخطأ والمعلومات كنت أقوم بذلك لكل منها ومن ثم تحليل المعلومات
وذلك بشكل أساسي لتحسين وتسريع العملية وعليه فكرت في تطور مديول حساب الوقت ليتضمن الأتي
 - sTimer.pauseTimer وذلك لكي يتوقف عد الوقت ويستخدم عندما تريد إستثناء بعض الاجراءات مثال
   إذا اردت إستثناء وقت ظهور الرسالة للمستخدم وإنتظار إجابته عليها
 - sTimer.startTimer للبدأ  والإستكمال بعد التوقف المؤقت
 - sTimer.addStep "Step1" وذلك لإضافة مرحلة وتستخدم للتحليل فيمكن حساب فرق الوقت بين المراحل كما فالتقرير النهائي يتم تحليل جميع المراحل
 - sTimer.getStepDiff "Step1", "Step2" وذلك لمعرفة الفرق بين مرحلتين بالميلي ثانية
 - sTimer.addInfo "UserName", "Ahmos" وذلك لإضافة معلومات كأسم الوظيفة التس ستبدأ او اسم المستخدم 
 - sTimer.addError _   لإضافة الأخطاء أثناء عمل الأكواد
                "Source", _   مصدر الخطأ
                "error Number", _  رقم الخطأ
                "error Description"  وصف الخطأ
 - sTimer.getAwsTimerInfo للحصول علي كافة البيانات
 - sTimer..exportLog "filePath", txt لتصدير النتائج يوجد نوعين (TXT and HTML) 
كما يتم التعامل مع 3 مسارات
1- يسمح لك إضافة مسار ملف كامل مع إسم الملف وسيتم التحقق من المسار وإذا امكن إنشاء الملف سيتم الكتابة بداخلة
وإذا لم تدخل المسار سيتم اختيار مسار البرنامج وإذا نجح في إنشاء الملف بهذا المسار سيكتب بداخله وإذا فشل سيتم تصدير الملف لسطح المكتب

هناك بعض التفاصيل البسيطة 

مثال للناتج Basic_awsTimerTest داخل مديول awsTimer_Test_MOD
 

#-----------------------------------------------------------------------------------------------------------#
¦                                               AWS TIMER LOG                                               ¦
¦                                     Generated: 27/11/2024 05:52:41 PM                                     ¦
#-----------------------------------------------------------------------------------------------------------#

#-----------------------------------------------------------------------------------------------------------#
¦                                           COLLECTED INFORMATION                                           ¦
#-----------------------------------------------------------------------------------------------------------¦
¦Key                     ¦ Value                                                                            ¦
#-----------------------------------------------------------------------------------------------------------¦
¦initializedAt           ¦ 27/11/2024 05:52:36 PM                                                           ¦
¦currentPath             ¦ D:\FOLDER\awsTimer\                                                   ¦
¦User                    ¦ UserName                                                                         ¦
¦startedAt               ¦ 27/11/2024 05:52:36 PM                                                           ¦
¦isoStart                ¦ 2024-11-27T17:52:36.000                                                          ¦
¦startTime               ¦ 0.0316                                                                           ¦
¦pausedAt                ¦ 27/11/2024 05:52:37 PM                                                           ¦
¦pausedTime              ¦ 1013.422                                                                         ¦
¦pausedFormatted         ¦ 1.013s                                                                           ¦
¦resumedAt               ¦ 27/11/2024 05:52:38 PM                                                           ¦
¦RunSub1                 ¦ 1013.5207                                                                        ¦
¦RunSub2                 ¦ 2024.4509                                                                        ¦
¦Step                    ¦ 3040.6271                                                                        ¦
¦endTime                 ¦ 3047.2817                                                                        ¦
¦stoppedAt               ¦ 27/11/2024 05:52:40 PM                                                           ¦
¦isoEnd                  ¦ 2024-11-27T17:52:40.000                                                          ¦
¦totalTime               ¦ 3.047s                                                                           ¦
¦filePath                ¦ D:\FOLDER\awsTimer\awsTimerLog_27.11.2024_05.52.41_PM.txt             ¦
¦folderPath              ¦ D:\FOLDER\awsTimer\                                                   ¦
¦exportedAt              ¦ 27/11/2024 05:52:41 PM                                                           ¦
¦filePath_1              ¦ D:\FOLDER\awsTimer\awsTimerLog_27.11.2024_05.52.41_PM.html            ¦
¦folderPath_1            ¦ D:\FOLDER\awsTimer\                                                   ¦
¦exportedAt_1            ¦ 27/11/2024 05:52:41 PM                                                           ¦
#-----------------------------------------------------------------------------------------------------------#

#-----------------------------------------------------------------------------------------------------------#
¦                                           STEP TIMING ANALYSIS                                            ¦
#-----------------------------------------------------------------------------------------------------------¦
¦Start Step              ¦ End Step                ¦ Duration                                               ¦
#-----------------------------------------------------------------------------------------------------------¦
¦startTime               ¦ RunSub1                 ¦ 1.013s                                                 ¦
¦RunSub1                 ¦ RunSub2                 ¦ 1.010s                                                 ¦
¦RunSub2                 ¦ Step                    ¦ 1.016s                                                 ¦
¦Step                    ¦ endTime                 ¦ 6ms                                                    ¦
¦startTime               ¦ endTime                 ¦ 3.047s                                                 ¦
#-----------------------------------------------------------------------------------------------------------#

#-----------------------------------------------------------------------------------------------------------#
¦                                            ERRORS ENCOUNTERED                                             ¦
#-----------------------------------------------------------------------------------------------------------¦
¦Location                ¦ Error Details                                                                    ¦
#-----------------------------------------------------------------------------------------------------------¦
¦Source                  ¦ 12345_Testing add an error._27/11/2024 05:52:41 PM                               ¦
#-----------------------------------------------------------------------------------------------------------#


تعديلاتكم وإضافاتكم واستفساراتكم محل ترحيب.
بالتوفيق!
بالتوفيق


 

awsTimerApi_V2_FN.zip

  • Like 1
قام بنشر
59 دقائق مضت, Ahmos said:

تعديلاتكم وإضافاتكم واستفساراتكم محل ترحيب.

الاستاذ/ @Ahmos

ياحبذا لو يطبق هذا على جداول ونماذج لكى نعرف فائدة هذه المديولات ـ وكيف نستفيد منها فى برامجنا  أن امكن 

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information