لماذا/كيف عملت برنامج "مستخلص أسماء الملفات"؟
مقدمة:
كثير من الأوقات تكون لدينا مهام بسيطة نود عملها في الحاسب لكننا نفاجأ بعد ذلك بمدى تعقيد خطواتها. فيسأل أحدنا "لماذا هذا التعقيد فأنا لا أريد إلا الشيء اليسير، أو لماذا يجب علي أن أتعلم الصعب حتى أعمل شيء من البديهيات؟".
و هذا فعلا ما حيرني عندما أردت أن أسرد ما لدي من برامج، فعوضًا عن كتابتها جميعا يدويا أريد أن آخذها كلها ثم احذفها في الnotepad.
طبعا هذا لم يحدث، جربت عن طريق الWindows explorer و word و Find فلم أجد طريقة لذلك، فأصبحت أبحث عن طرق أخرى في الويندوز لكن لا فائدة "أهذا معقول؟"، حتى قلت خلاص.. سأستخدم الCommand prompt و قد عمل اللازم، لكن هناك أمر آخر.
ماذا عن الذي لا يعرف استخدام الcommand prompt أو من هو غير متمرس في استخدام الحاسب؟
لذلك قلت لابد من محاولة كتابة برنامج يسهل هذه العملية.
المحتوى:
يعتبر هذا الموضوع مثال بسيط لكتابة برنامج للإستخدام الشخصي و من ثم تغييره ليتناسب مع المستخدمين الآخرين على اختلاف احتياجاتهم.
و ما يلي استعراض الإصدارات التي نزلتها و أسباب برمجتها بالإضافة الي المشاكل التي حصلت مع حلولها.
البداية (1.0.0-1.2.0)
كانت فكرتي أن أجعل البرنامج يعمل مباشرة من الFolder الذي هو فيه و يقوم -تلقائيا- بإنشاء ملف txt به (أسماء) جميع المجلدات و الملفات الحالية (من دون ملفات الSubfolders)، بالإضافة إلى خيار انه اذا أردت الملفات مع الامتداد (Extension type) أم لا
المزايا: سريع، واجهة مباشرة و غير معقدة
العيوب: عملية نقل ملف التشغيل (البرنامج نفسه) إلى كل مجلد كانت متعبة.
الملاحظ من الصورة أنه لا يوجد هناك مكان لتحديد المجلد، فهو فقط يعرض الملفات الموجودة من المجلد الذي هو فيه (البرنامج)
(1.3.0-1.6.4)حتى تسهُل امكانية
استخدام البرنامج أضفت خاصية اختيار المجلد - Choose a folder، و أيضا إضافة خاصية حفظ ملف الtxt لأي مكان يحدده المستخدم
المزايا: البرنامج يؤدي الوظيفة بشكل جيد
العيوب: يعتبر البرنامج بسيط جدا و محدود الاستخدام (فقط يعرض "جميع الملفات" في مجلد معين لا أكثر و لا أقل)
يقوم المستخدم باختيار المجلد ثم يضغط على الزر المخصص لكتابة ملف الText
(1.7.0-1.9.0)لكي يكون البرنامج أكثر فاعلية، قمت بإضافة صندوق (text) لإظهار الملفات (عرضها و/أو تغيير محتواها في البرنامج قبل حفظها).
إضافة خاصية الفلترة (filter) و هي البحث عن أحرف أو كلمة محددة لاسم الملف
إضافة خاصية اختيار البحث للمجلدات فقط أو الملفات أو كلاهما
أيضا خاصية إظهار ناتج عدد الملفات و التاريخ و مسار المجلد
المشاكل التي واجهتني:
كيفية فصل الملفات عن المجلدات
كيفية حذف امتداد الملفات عند عرضها مع المجلدات (إذ يجب معرفة الملف من المجلد حتى أحذف امتداده)
و حللت ما فات بطريقة البحث أولا عن المجلدات و من ثم البحث عن الملفات و عندها أستطيع التحكم بعرض امتداداتها
المزايا: خواص جديدة تجعل البرنامج أكثر فائدة و محببة أكثر للمستخدم
العيوب: تظل مشكلة إظهار ملفات لمجلد واحد فقط
الشكل الجديد للبرنامج
2.0.0-2.0.6التحول هنا كانت مثير و صعب في نفس الوقت، فقد أضفت ميزة البحث داخل المجلدات Subfolders (و غيرت محرك البحث المستخدَم)، بالإضافة إلى قائمة اختيار المجلدات فبالإمكان الذهاب إلى المجلد الذي قبله أو المجلدات المتفرعة منه
و أيضا خاصية استعراض المجلد الحالي بالWindows Explorer
المشاكل التي واجهتني:
- البطء الحاصل عن استعراض ملفات كثيرة جدا، ما اضطرني إلى تغيير أساس البرنامج في عملية البحث إلى ايجاد طريقة أفضل، عملت مقارنة بين طرق البحث المتوفرة (في موقع الAutoit) جربت معظمها و أخذت الأسرع
- كيفية التحكم بالملفات و كيف أظهرها هل بإسمها الكامل أو المختصر أو حسب مكانها من المجلد العادي، فجعلت ذلك على المستخدم أيها يختار.
- طريقة البحث الجديدة تعمل بكفاءة عالية، و إن استخدمت نفس الطريقة السابقة بعرض المجلدات أولا ثم الملفات قد يقلل من كفاءتها. فغيرت الطريقة إلى أنه يتم الاستعراض بشكل طبيعي و أضع علامة تميز الملفات من المجلدات حتى أستفيد من خاصية امتداد الملفات
- حصلت لي مشكلة أخرى ألا و هي عدم امكانية عرض أسماء الملفات الغير oem فالذي يظهر فقط الأحرف و الأرقام الانجليزية (مع رموز غريبة)، أي أن الأحرف العربية لا تظهر، و الحمدلله وجدت طريقة في الويندوز (Dll file) تحل هذه المشكلة بترجمة الoem إلى الansi
المزايا: طرق أكثر في كيفية عرض أسماء الملفات، و التغيير الآني في عرض الملفات قبل حفظها لملف text، و عملية البحث أصبحت أسرع الآن
الشكل الأخير للبرنامج
الخلاصةمر هذا البرنامج على أربعة مراحل تغيير، و ما يزال يؤدي نفس الوظيفة لكن بخصائص أكثر
و ذلك بسبب إضافة مزايا جديدة و جعله محببا أكثر للمستخدم من ناحية الشكل و السهولة
و في الختام يجب ألا أنسى جميع من ساعدني و شجعني لإظهار هذا البرنامج بهذه الصورة. فشكرا لهم و لكم على القراءة :)
----------------
وصلات- طرق البحث التي جربتها Recursive و FileListToArrayEx و FileSearchSshrum و Larry's FileSearch (المستخدمة في البرنامج منذ نوفمبر 2005) و أسرعها (حتى july 2009) كان FileListToArrayEx