دالة تعيد أسماء ملفات عشوائية

دالة تعيد أسماء ملفات عشوائية

في هذا المقال أقدم لك دالة تعيد اسم ملف عشوائي عند كل استدعاء لها
الدالة تأخذ ثلاثة بارمترات parameters:

  • نص بداية الاسم prefix (في حال أردت أن تبدأ أسماء الملفات بنص معين).
  • طول النص العشوائي RandomLength.
  • لاحقة الملف extension (في حال أردت تحديد نوع الملف).
الدالة تحتاج تضمين فضاء العنونة  System.Text
مع العلم أنه يمكن استخدام الدالة لتوليد نصوص عشوائية (يكفي فقط أن ترسل بداية النص ونوع الملف كنصوص فارغة).

كود الدالة في سي شارب #C

public static string RandomFileName(string prefix, byte randomLength, string extension)
{
Random R = new Random();
StringBuilder RandomString = new StringBuilder(prefix);
char[] chars = {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’};

for (int i = 1; i <= randomLength; i++)
{
RandomString.Append(chars[R.Next(0, chars.Length)]);
}

if(extension.Trim() != “”)
RandomString.Append(“.” + extension);

return RandomString.ToString();
}

كود الدالة في فجوال باسيك VB.Net

Public Shared Function RandomFileName(prefix As String, randomLength As Byte, extension As String) As String
Dim R As New Random()
Dim RandomString As New StringBuilder(prefix)
Dim chars As Char() = {“0″c, “1”c, “2”c, “3”c, “4”c, “5”c,
“6”c, “7”c, “8”c, “9”c, “a”c, “b”c,
“c”c, “d”c, “e”c, “f”c, “g”c, “h”c,
“i”c, “j”c, “k”c, “l”c, “m”c, “n”c,
“o”c, “p”c, “q”c, “r”c, “s”c, “t”c,
“u”c, “v”c, “w”c, “x”c, “y”c, “z”c}

For i As Integer = 1 To randomLength
RandomString.Append(chars(R.[Next](0, chars.Length)))
Next

If extension.Trim() <> “” Then
RandomString.Append(“.” & extension)
End If

Return RandomString.ToString()
End Function

قائمة مقترحات اكمال تلقائي في فجوال باسيك
تحميل المشروع – سي شارب
قائمة مقترحات اكمال تلقائي في فجوال باسيك
تحميل المشروع – فجوال باسيك

 

حفظ مخطط قاعدة البيانات Database Diagram في SQL Server browser

حفظ مخطط قاعدة البيانات Database Diagram
في SQL Server browser

عند تصميم قاعدة بيانات لأي مشروع باستخدام SQL Server Browser
و وضع جميع العلاقات بين الجداول عن طريق إضافة مخطط  Database Diagram
قد نحتاج لصورة واضحة لهذا المخطط لحفظها أو حتى طباعتها

في واجهة تصميم المخطط
يمكن الضغط بزر الفأرة الأيمن Right Click
وضغط خيار Copy Diagram to Clipboard
ثم لصق هذه الصورة في أي برنامج لتحرير الصور، كبرنامج الرسام Paint مثلاً

SQL Server browser حفظ مخطط قاعدة البيانات
نسخ تصميم قاعدة البيانات

الفرق بين الإجراءات المجردة والإجراءات الافتراضية

الفرق بين الإجراءات المجردة والإجراءات الافتراضية

Virtual Methods & Abstract Methods

سنتعرف هنا على مفهوم من مفاهيم البرمجة كائنية التوجه OOP
و هو الفرق بين الإجراء الافتراضي Virtual Method
و الإجراء المجرد Abstract Method
ويتعلق كل من المفهومين بمفهوم الوراثة في البرمجة Inheritance

عندما يكون لدينا صنف (أب) Class
و أصناف أخرى (أبناء) تربط بينهما علاقة وراثة برمجية
قد يكون هناك إجراء في الصنف الأب، و نحن نريد أن نجبر أو نضمن وجود نفس الإجراء في الأصناف الأبناء
نريد أن نجبر المبرمج على إضافة هذا الإجراء بما يتناسب مع الصنف الابن

لعمل هذا يمكننا استخدام الإجراءات المجردة Abstract

في أحيان أخرى، يمكن أن نكون متساهلين أكثر
بأن نوفر إجراء افتراضي في الصنف الأب Virtual
يمكن للأبناء استخدامه كما هو، أو تغييره في حال كانت هناك حاجة لذلك

إذاً:

  • الإجراء الافتراضي هو إجراء يصرح عنه في الصنف الأب، يمكن لأي صنف ابن استخدامه كما هو، أو تجاوزه وتعريف نسخة خاصة به من الإجراء عن طريق عمل Overriding
  • الإجراء المجرد هو إجراء لايحتوي أي كود (إجراء بدون جسد)، يصرح عنه في الصنف الأب (لكن هنا يجب أن يكون الصنف الأب أيضاً  مجرد)، و يجب على كل صنف ابن تعريف نسخة خاصة به من الإجراء عن طريق عمل Overriding

مثال:

لدينا صنف أب يمثل شكل منتظم (أبعاده متساوية)
و لدينا صنف ابن يمثل مربع
الصنف الأب له صفتان (خاصيتان): طول البعد (الضلع) و اللون

class Shape

 int Dimension
Color Clr

وفيه إجراءان
إجراء لعرض مساحة الشكل
إجراء لعرض لون الشكل
إجراء مجرد إظهار المساحة بدون تعريف الطريقة

ShowSpace()

ShowColor()

الصنف الابن يرث هذه الصفات و الإجراءات

class Square : Shape

نلاحظ أنه يمكننا استخدام الإجراء الخاص بالصنف الأب عندما نريد عرض لون المربع
إذاً لاداعي أن نجبر المبرمج على تعريف طريقة جديدة لعرض اللون عندما يريد أن ينشىء شكل جديد
أي شكل منتظم يرث صفاته من الصنف الأب سيكون له لون بنفس الطريقة.
مع ذلك، نترك للمبرمج حرية الاختيار في حال أراد أو احتاج لاظهار اللون بطريقة جديدة.

لكن ماذا عن مساحة الشكل؟
مساحة المربع تحسب بطريقة مختلفة عن مساحة أشكال أخرى، ولا يمكن حساب مساحة الصنف الأب بدون معرفة طبيعته
هنا نفهم الحاجة لوجود الإجراءات المجردة، بحيث يكفي أن نصرح أن الصنف الأب (الشكل المنتظم) يمكن حساب مساحته.
و نجبر المبرمج على برمجة طريقة حساب هذه المساحة لكل صنف ابن.
في لغة سي شارب
نحدد ما إذا كان الإجراء مجرد أو افتراضي عن طريقة إضافة كلمة
Virtual أو Abstract
قبل نوع الإجراء

public abstract class Shape {

public int Dimension;
public Color Clr;

public Shape(int D,Color C) {
Dimension = D;
Clr = C;
}

public abstract void ShowSpace();

public virtual void ShowColor() {
MessageBox.Show(Clr.Name);
}

}

public class Square : Shape {

public Square(int D,Color C) : base(D,C) {
}

public override void ShowSpace() {
MessageBox.Show((Dimension * Dimension).ToString());
}

}

تحميل المشروع كامل مع تعليقات توضيحية

قائمة مقترحات اكمال تلقائي في فجوال باسيك
تحميل

استخدام خاصية الإكمال التلقائي لجعل أداة TextBox تقترح نصوص في Visual Studio

استخدام خاصية الإكمال التلقائي
لجعل أداة TextBox تقترح نصوص في Visual Studio

 في هذا الدرس سنتعلم كيف نفعّل خاصية الإكمال التلقائي لأداة TextBox لإعطائها بعض الذكاء و جعلها تقترح كلمات و عبارات أثناء الكتابة بشكل مشابه للإكمال التلقائي الذي يوفره موقع ( Google )

استخدام خاصية الإكمال التلقائي لجعل أداة TextBox تقترح نصوص في Visual Studioلكن في هذا الدرس لن يكون هناك قاعدة بيانات و إنما سنخزن البيانات ضمن المشروع ..
.. الفكرة بسيطة و لا تحتاج لكتابة أي كود برمجي

 يمكن القيام بذلك برمجيا ًعند الحاجة ..example45890584

لنبدأ ..

ننشئ مشروع جديد من نوع Windows Forms Application

(سي شارب #C أو فجوال باسيك VB.Net الطريقة نفسها)

Windows Forms Application مدونة أكواد

و نضيف أداة مربع نص TextBox من مربع الأدوات سيكون اسمها الافتراضي ( textBox1 )
الآن نتبع الخطوات البسيطة التالية:
1. نحدد الأداة فتظهر خصائصها في نافذة الخصائص Properties

استخدام خاصية الإكمال التلقائي لجعل أداة TextBox تقترح نصوص في Visual Studio2. نجعل الخاصية CustomSource = AutoCompleteSource
أي أن مصدر بيانات الإكمال التلقائي هو مصدر مخصص، سنقوم بتخصيصه ضمن المشروع ( ليس قاعدة بيانات على سبيل المثال )
3. الآن سنقوم بإضافة البيانات و ذلك عن طريق الخاصية AutoCompleteCustomSource
نضغط على الزر الصغير بجانبها كما في الصورة:

ac1فتظهر نافذة String Collection Editor
نكتب فيها البيانات ( نكتب كل كلمة أو عبارة مستقلة بسطر منفصل )
سأفترض هنا أن مستخدم البرنامج عليه أن يكتب اسم لون ما باللغة الانكليزية
و لذلك سأوفر عليه بعض الجهد باقتراح أسماء الألوان الأساسية و التي يتوقع أن يتم استخدامها بكثرة

ac2نضغط على موافق OK
الأن و أخيراً علينا إعطاء قيمة للخاصية AutoCompleteMode بحيث لا تكون None
هذه الخاصية تحدد أسلوب الإكمال التلقائي للأداة
و هنا لدينا ثلاثة وضعيات أو أساليب و هي:
Suggest
Append
SuggestAppend

ac3فعند اختيار Suggest و تشغيل البرنامج و بدء الكتابة ضمن الأداة، سيتم عرض قائمة بالاقتراحات المناسبة و يكفي أن نضغط على أحد الاقتراحات لاستخدامه

Suggestأما عند اختيار Append لن يتم عرض هذه القائمة و إنما سيتم إكمال النص مع إعطاء مرونة لتغييره

Appendو أخيرا ً عند اختيار SuggestAppend سيتم دمج الوضعين السابقين معا ً و بالتالي إعطاء حرية أكبر
حيث سيتم عرض القائمة و إكمال النص بنفس الوقت و ترك حرية التصرف للمستخدم

SuggestAppend

أتمنى أن يكون الدرس مفيدا ً ..

لا تنسى مشاركة الدرس مع أصدقاءك أو التفاعل عن الطريق التعليق ..

يمكنك تحميل الامثلة من هنا :

استخدام خاصية الإكمال التلقائي لجعل أداة TEXTBOX تقترح نصوص في VISUAL STUDIO
C# Project
استخدام خاصية الإكمال التلقائي لجعل أداة TEXTBOX تقترح نصوص في VISUAL STUDIO
VB.Net Project

كما يمكنك الاحتفاظ بهذا الدرس كملف PDF:

pdf
الدرس على شكل كتاب الكتروني

حفظ محتوى الفورم Form كصورة بواسطة فجوال بيسيك VB.Net أو سي شارب #C

حفظ محتوى الفورم Form كصورة بواسطة فجوال بيسيك VB.Net أو سي شارب #C

نحتاج في بعض الأحيان لطباعة واجهة معينة بكل محتوياتها أو حفظها كصورة على القرص الصلب

إحدى الطرق البسيطة و السريعة لعمل ذلك ضمن بيئة .Net هي استخدام الدالة DrawToBitmap

حيث تحول لنا هذه الدالة الواجهة بمحتوياتها لصورة

تأخذ هذه الدالة بارمترين Parameters :

البارمتر الأول هو عبارة عن كائن صورة من نوع Bitmap يتم تخزين الصورة المرسومة فيه

البارمتر الثاني هو كائن من نوع مستطيل Rectangle يحدد أبعاد المساحة (المنطقة) التي نريد رسمها من الواجهة

و يكون كود التنفيذ كما يلي:

الكود بلغة سي شارب C#:

        string Path = @"D:\FileName.png"; // مسار ملف الصورة
        Bitmap B = new Bitmap(this.Width, this.Height);
        this.DrawToBitmap(B, new Rectangle(0, 0, this.Width, this.Height));
        B.Save(Path);


الكود بلغة فجوال باسيك VB.Net:

        Dim Path As String = "D:\FileName.png" ' مسار ملف الصورة
        Dim B As New Bitmap(Me.Width, Me.Height)
        Me.DrawToBitmap(B, New Rectangle(0, 0, Me.Width, Me.Height))
        B.Save(Path)

يعمل هذا الكود كما هو من أجل أي مشروع لأنه يتعامل مع this و Me ليصل لخصائص الفورم

و يقوم بحفظ الصورة في المسار المحدد بالمتحول Path

حفظ محتوى الفورم Form كصورة بواسطة VB.Net أو #C

يمكنك الاكتفاء بنسخ الاكواد و الاستفادة منها

كما يمكنك تحميل هذا الدرس على شكل كتاب الكتروني PDF:

كتاب PDF حفظ محتوى الفورم Form كصورة بواسطة VB.Net أو C#

أرجو أن الشرح كان واضحا ً و مفيدا ً

لا تتردد عن التعليق، تقييم الدرس، ابداء رأيك أو طرح استفساراتك عبر التعليقات 🙂

مواضيع أخرى قد تهمك:

تغيير شكل النموذج ( الفورم ) في الفيجوال ستديو

تغيير الخلفية باستخدام لغة #C

تغيير الخلفية باستخدام لغة VB.Net

تحميل شاشة توقف الماتركس

مصفوفة الأدوات في سي شارب #C

مصفوفة الأدوات في سي شارب #C

(1)

ما هي مصفوفة الأدوات Controls Array ؟

مصفوفة الأدوات هي مصفوفة ببعد واحد تمثل مجموعة أدوات متماثلة لها نفس الاسم البرمجي Name نضيفها لواجهة البرنامج الفورم Form

هذا المفهوم مشهور لدى مبرمجي Visual Basic 6

example45890584

مثال : مجموعة من الأزرار Buttons

لماذا مصفوفة الأدوات ؟

يكون مفهوم مصفوفة الأدوات مفيدا ً عندما نريد أن نضيف أدوات لواجهة معينة أثناء تنفيذ البرنامج و بعدد محدود أو غير محدود

example45890584
مثال: فتح تبويبات جديدة Tabs في متصفح ويب

سنصمم مشروع بسيط يسمح لنا بإضافة أزرار  Buttons للواجهة أثناء تنفيذ البرنامج بالاعتماد على مفهوم مصفوفة الأدوات

Noteo05439589024
يمكن طبعاً إنشاء مصفوفة أدوات لـ TextBox أيضاً أو أي أداة نختارها وفق المبدأ نفسه

لنبدأ الخطوات:

لننشئ مشروعا ً جديدا ً من نوع Windows Forms Application

نضيف زر Button و مربعي نص  TextBox و لنسمي مربعي النص X,Y

أي نعدل الخاصية Name لكل من أداتي TextBox ليصبح اسم الأولى X و الثانية Y

كلما أردنا إضافة زر جديد Button ندخل إحداثيات مكان ظهوره (X,Y) ثم نضغط زر التنفيذ

controls array form 001

الأزرار الجديدة المضافة هي عبارة عن عناصر لمصفوفة الأدوات ( مصفوفة أزرار ) التي سنصرح عنها

بالتالي نجد أن عدد عناصر المصفوفة هو العدد المسموح به من الأزرار

Noteo05439589024
يمكن أن تكون مصفوفتنا بعدد عناصر لا نهائي لكن لن نغطي هذه الفكرة في هذا الدرس

الآن لننتقل لكتابة الكود :

على المستوى العام للمشروع نصرح عن مصفوفة من النوع Button بالشكل التالي :

Button[] Btns = new Button[50];

هنا حددت عدد عناصر المصفوفة يساوي 50 أي يمكن إنشاء 50 زر كحد أقصى !!

نعرف أيضاً متحول عام من النوع Int يستخدم كعداد و ليكن اسمه i

int i = 0;

هذا المتحول ( العداد ) يبدأ من الصفر، أي يبدأ عند رقم دليل أول عنصر في المصفوفة

عند كل إضافة جديدة علينا أن نزيد العداد i بمقدار واحد لنخبر البرنامج بأننا أضفنا زر جديد أخذ مكانه في المصفوفة

حيث سيتم التعامل مع كل زر من الأزرار المضافة عن طريق رقم دليله في المصفوفة، تماماً كما يحدث مع المصفوفات العادية

الآن كل ما بقي هو كود التنفيذ و الذي يتضمن:

1. إنشاء زر جديد كأحد عناصر المصفوفة التي صرحنا عنها

2. تحديد أبعاد الزر الجديد و إحداثياته باستخدام الدالة SetBounds
( سيتم أخذ الإحداثيات من مربعي النص ) ( سنحدد عرض و طول الزر الجديد ضمن الكود كثوابت 100,80 )

Noteo05439589024
لاحظ أننا سنستخدم Convert لتحويل الإحداثيات المدخلة من نوع نص string لأعداد صحيحة integer

3. نضيف الزر الجديد لواجهتنا

4. نزيد العداد i بمقدار واحد كما اتفقنا للانتقال لرقم الدليل التالي في المصفوفة

Btns[i] = new Button();
 Btns[i].SetBounds(Convert.ToInt32(X.Text), Convert.ToInt32(Y.Text), 100, 80);
 this.Controls.Add(Btns[i]);
 i++;

controls array code 1

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

يمكن نسخ الأكواد من الدرس أو تحميل المشروع من هنا :

مشروع مصفوفة الأدوات في سي شارب C# [1]
تحميل

إن أحببت الدرس أو كان لديك آراء أو تعليقات يمكنك التعليق في الأسفل كما يمكنك مشاركة الدرس مع أصدقاءك عبر شبكات التواصل الاجتماعية

مواضيع مشابهة قد تعجبك:

تغيير حجم المصفوفات في فيجوال ستديو

إيجاد منقول مصفوفة

تغيير حجم المصفوفات في فيجوال ستديو

تغيير حجم المصفوفات في فيجوال ستديو

المقال يتحدث عن تغيير حجم المصفوفات باستخدام فيجوال باسيك و سي شارب و يفترض أنك تعرف و لو القليل عن برمجة المصفوفات

نحن مجتمع المبرمجين – مهما كانت اللغة التي نجيدها – خلال حياتنا البرمجية لابد من استخدام المصفوفات ضمن أكواد البرامج التي نكتبها، و عند الحديث عن المصفوفات نجد أن أغلب المراجع و صفحات الانترنت تبتعد عن تغيير حجم المصفوفات عند استخدامها ضمن الأمثلة.

يمكننا طبعاً أن نستخدم الصنف ArrayList كبديل عن المصفوفات كونها تتصف بأنها ذات حجم متغير ديناميكي، لكن المشكلة أن عناصر الصنف ArrayList عبارة عن كائنات Objects و ليست من نوع واحد كما في المصفوفات.

إذاً كيف نغير حجم مصفوفة برمجياً في الفيجوال ستديو و ضمن بيئة الدوت نيت NET.؟

يوجد كائن في دوت نيت يوفر لنا العديد من الدوال المفيدة حول المصفوفات و هو الكائن Array

عن طريق هذا الكائن يمكن تغيير حجم أي مصفوفة عن طريق الدالة Resize

تغيير حجم المصفوفة في لغة #C :

Array.Resize (ref ArrayName, NewSize);

تغيير حجم المصفوفة في لغة فيجوال باسيك :

Array.Resize (ArrayName, NewSize)

عند زيادة حجم المصفوفة سيتم الحفاظ على عناصر المصفوفة الموجودة مسبقاً، أما عند إنقاص حجم المصفوفة سيتم حذف العناصر من آخر المصفوفة

 حمّل المثال من هنا :

تغيير حجم المصفوفات في فجوال ستديو
تحميل المشروع