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

ترقيم حروف وارقام

بدأه zop2010 في 25 مارس 2014 · 11 رد · 910 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عند الوصول الي A99 يتم التنقل الي B01

وعند الوصول الي B99 يتم النقل الي C01  ثم C02 - تم - C03

وعند الوصول الي Z99 يتم الانتقال الي AA01 

 

ارجو الافادة 

#2

يا جماعة محدش عارف يفيد باي معلومه  

ارجو الافادة في اسرع وقت

#3

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

محدش عارف يرد علي السوال

#4

ما هو الحد الاقي للترقيم او اقصي عدد للحروف

#5

شكرا علي الرد 

الحد الاقصي للاعداد 1- 99  

الحد الاقصي للحروف  

الي ZZ99

تم تعديل هذه المشاركة بواسطة zop2010 في 26 مارس 2014 في 01:24

#6

العملية بسيطة بحاجة لبعض التحليل، حيث أن الصيغة المولدة تتألف من عدة أقسام:

1. القسم الرقمي 1 - 99

2. قسمين للأحرف:

      أ. قسم حرفي بالنسبة للصيغ تحت Z99 

      ب. قسم حرفي يضاف بعد تجاوز Z99

3. قسم حرفي يضاف في حال الرقم أصغر من 10 مثل A01

 

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

 

عند الوصول لأعظم قيمة، يقوم هذا Class برمي Exception خاص.

 

حاول قراءة محتوى الـ Class، وحاول ربط المفاهيم المذكورة مع الصورة.

    public class NumberingFormat
    {
        int number = 0;  // Number to Increase
        int code1 = 65;  // First char next to the number
        int code2 = 65;  // Second char next to first char, When Z99
        bool up = false; // Move to Up level

        public int Number
        {
            get
            {
                if (number == 99) 
                {
                    number = 0; 
                    code1++;     // A99  -> B01
                    if (up)      // if Z99
                    {
                        if (code1 == 91) // AZ99  ->  BA01
                        {
                            code1 = 65;                  // Z  -> A  
                            code2++;                     // A  - B
                            if (code2 == 91)
                                throw new Exception("No more formats can be generated");
                        }
                    }
                    if (code1 == 91) // We are in the first level
                    {
                        code1 = 65;
                        up = true;
                    }
                }

                return ++number;
            }
            set { number = value; }
        }

        public String Code
        {
            get
            {
                if (up)
                    return string.Format("{0}{1}", (char)code2, (char)code1); // If we are in Up Level ex: AC90
                return ((char)code1).ToString(); // If we are in the first level ex: D88

            }
        }

        public string GetNextFormat()
        {
            string format = "";
            int n = Number;
            if (n < 10) // Check if the number is less than 10, then append 0
                format += "0";
            return string.Format("{0}{1}{2}", Code, format, n);
        }
    }

نلاحظ في الصورة، قمنا بتحديد رقم معين، لبدء العد من عنده.

 

I9C5Vza.png

 

بالتوفيق،،،

NumberingSystem.rar

1

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#7

شكرا علي المجهود والحل الرائع 

Eng.Tareq Jehad
#8

اكرمك الله الكود جميل ولكن به مشكله for (int i = 0; i < times; i++) اتمني ان تتخلص منها بقراءه القيمة السابقة من التيجة وليس for هتي النتيجة الجديدة

مجرد فكره قم باخذ الرقم الاخير ثم يتم تفكيكه ثم تحليلة وتكمله العملية كما هي

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 26 مارس 2014 في 15:23

#9

اخي الكريم كريم

الواجهة عبارة عن توضيح فقط. ما يهمنا هو NumberingFormay class.

ومع ذلك اذا كان بالامكان ان تكتب الحل الذي تفضلت به. ليستفيد منه الاخوة لاحقا.

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#10

اكرمك الله اخي Eng.Tareq Jehad علي الكود

وتعديل  بسيط الكود الخاص بك

اولا في الكلاس

    public string GetNextFormat(string sCode)
        {
            if (sCode.Length == 3)
            {
                number = Convert.ToInt16(sCode.Substring(1));
                code1 = Char.ConvertToUtf32(sCode, 0);
                up = false;
            }
            else
            {
                number = Convert.ToInt16(sCode.Substring(2));
                code1 = Char.ConvertToUtf32(sCode, 1);
                code2 = Char.ConvertToUtf32(sCode, 0);
                    up = true;
            }
            string format = "";
            int n = Number;
            if (n < 10) // Check if the number is less than 10, then append 0
                format += "0";
            return string.Format("{0}{1}{2}", Code, format, n);
        }

ثانيا في استعاء الوظيفة

if (LASTCODE.Text.Length == 3 || .Text.Length == 4)
        {
            NumberingFormat F = new NumberingFormat();
            NEWCODE.Text = F.GetNextFormat(LASTCODE.Text);
        }

وبقية الكلاس كما هو هذا يوفر الكثير

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 27 مارس 2014 في 00:25

#11

try this

class NumbersLetterCounter
    {
        int number = 0;
        int fChar = 65;
        int sChar = 10;
        bool up = false;
        public string GetNext()
        {
            number++;
            if (number <= 99) { return string.Format("{0}{1}{2}", (char)sChar, (char)fChar, number.ToString("00")); }
            number=1;
            fChar++;
            if (fChar <= 90) { return string.Format("{0}{1}{2}", (char)sChar, (char)fChar, number.ToString("00")); }
             fChar = 65;

          if (!up ) { sChar = 64; }
            sChar++;
            number = 1;
            up = true;
            if (sChar <= 90) {       
                return string.Format("{0}{1}{2}", (char)sChar, (char)fChar, number.ToString("00")); }

            // Here Rise Exption
            fChar = 100;
            number = 100;
            return "out of range:";
        }
    }

تم تعديل هذه المشاركة بواسطة SOLO.NET في 27 مارس 2014 في 06:31

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#12

ممكن طلب صغير اريد ان اجعل الحقل يكون علي النحو التالي 

1. القسم الرقمي 1 - 999

2. قسمين للأحرف:

      أ. قسم حرفي بالنسبة للصيغ تحت Z999 

      ب. قسم حرفي يضاف بعد تجاوز Z999

3. قسم حرفي يضاف في حال الرقم أصغر من 100 مثل A001

 

 

* كما  اريد الاستعلام عن اكبر قيمة موجوده في قاعدة البيانات حتي يتم عمل التالي من خلال القيم الموجوده في قاعدة البيانات

تم تعديل هذه المشاركة بواسطة zop2010 في 31 مارس 2014 في 17:16

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