إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

تنصيب دفعة من الخطوط مرة واحدة

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • تنصيب دفعة من الخطوط مرة واحدة

    السلام عليكم ورحمة الله وبركاته
    بسم الله الرحمن الرحيم
    كيفكم ياشباب ان شاء الله تكونوا بالف صحة
    عندى استفسار بسيط
    هل يمكن تنصيب دفعة من الخطوط مرة واحدة
    لنقل ان هذا الملف يحتوى 400 خط
    Docs\\Fonts
    وانا اريد تنصيبهم دفعة واحدة فانا لا اريد تكرار امر System.RegisterFont ل 400 مرة
    ففكرت انى اضيف هذ الكود وهو فى الاصل كود الاخ هيثم فى نسخ الملفات ففكرت بتعديل امر النسخ لامر تسجيل الخط
    كود:
    fonts = File.Find("AutoPlay\\Docs\\Fonts\English", "*.*", true, true, nil, nil);
    for x,y in pairs (fonts) do
    
    System.RegisterFont(Shell.GetFolder(SHF_FONTS).."\\"..y.."", y, true);
    
    
    Label.SetText("current_num", x);
    
    Progress.SetCurrentPos("Progress1", x * 100 / count);
    
    end
    المشكلة عند تطبيق الامر يقوم باعطائى خطأ
    ونصه
    كود:
    error: bad argument #1 to 'Pairs' (table expected, got nil)
    stack traceback:
    1: [Fonts Pack -> Button2 -> On Click] Line: 2 in Main chunk

  • #2
    أضف تصنيف ما يتم البحث عنة بمعنى إمتداد الشيئ المبحوث عنة لآنك تتعامل مع ملفات files

    فلا يصح أن تبحث عن كل ما هو موجود فى فولدر English بدون ما تذكر إمتدادة .

    و أضف شرط لتنفيذ التكرار فى حالة العثور على الملفات المطلوبة .

    فكر قليلا كيف يتم ذلك أو ضع ملف مفتوح للتعديل علية

    تعليق


    • #3
      بعد السطر الخاص بالنسخ .. ضع هذا الكود ( في نفس دالة التكرار الخاصه بعملية النسخ )


      كود:
      split = String.SplitPath(y);
      
      System.RegisterFont(Shell.GetFolder(SHF_FONTS), split.Filename..split.Extension, true);

      تعليق


      • #4
        المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
        أضف تصنيف ما يتم البحث عنة بمعنى إمتداد الشيئ المبحوث عنة لآنك تتعامل مع ملفات files

        فلا يصح أن تبحث عن كل ما هو موجود فى فولدر English بدون ما تذكر إمتدادة .

        و أضف شرط لتنفيذ التكرار فى حالة العثور على الملفات المطلوبة .

        فكر قليلا كيف يتم ذلك أو ضع ملف مفتوح للتعديل علية
        صحيح لابد اغير نمط البحث ليبحث عن ttf فقط

        تعليق


        • #5
          المشاركة الأصلية بواسطة Haitham.2012 مشاهدة المشاركة
          بعد السطر الخاص بالنسخ .. ضع هذا الكود ( في نفس دالة التكرار الخاصه بعملية النسخ )


          كود:
          split = String.SplitPath(y);
          
          System.RegisterFont(Shell.GetFolder(SHF_FONTS), split.Filename..split.Extension, true);
          تم يا اخ هيثم التعديل حسب ماقلتلى وما اشتغلت للاسف
          والملف المفتوح بالمرفقات


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

          تعليق


          • #6
            تم حل المشكلة جزاكم الله خيرا

            تعليق


            • #7
              ال split علشان نتطلع اسم الملف وامتداده ايا كان ... وكمان لأني خليت امر تسجيل الخط يكون من المكان الاصلي لملف الخط وهو مجلد ال Fonts و ليس مجلد اسطوانتك

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

              بالتوفيق

              تعليق


              • #8
                جزاك الله كل خير الخطأ كان بسب انى عند اضافة المسار فى اول كود
                لم ادرج // بل اضفت / واحدة فأدت الى تعطيل الكود
                -------------------------------------------------------------
                هناك مشكلة فليس هناك اخطأ الا عند تنصيب الخطوط فعند التنصيب يخبرنى بأنها انتهت ولكن عندما اتحقق من مجلد الخطوط لا اجد انه تم تنصيبهم
                الكود المستخدم فى الزر
                كود:
                fonts = File.Find("AutoPlay\\Docs\\Fonts\\English", "*.ttf", false, false, nil, nil);
                for i,y in pairs (fonts) do
                	split = String.SplitPath(y);
                	System.RegisterFont(Shell.GetFolder(SHF_FONTS), split.Filename..split.Extension, true);
                	Label.SetText("current_num", i);
                
                	end

                تعليق


                • #9
                  كيف يا أخى ؟ هل تعتقد أن الكود سوف ينفذ شيئ لم يطلب منة أصلا ؟

                  كيف سيقوم بالنسخ و أمر النسخ لم يوضع ؟

                  تعليق


                  • #10
                    المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
                    كيف يا أخى ؟ هل تعتقد أن الكود سوف ينفذ شيئ لم يطلب منة أصلا ؟

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

                    تعليق


                    • #11
                      من المفترض لكى تحدث عملية التنصيب ان يتم تنصيب الخط عبر هذا الامر
                      System.RegisterFont
                      ام انك تريد ان تنوه انه لن يمكن تنصيب الخطوط الا بعد نسخها الى النظام ؟

                      تعليق


                      • #12
                        المشاركة الأصلية بواسطة القنـاص المصرى مشاهدة المشاركة
                        من المفترض لكى تحدث عملية التنصيب ان يتم تنصيب الخط عبر هذا الامر
                        System.RegisterFont
                        السلام عليكم ورحمة الله وبركاته

                        يجب تحديد مسار مجلد خطوط الوندوز وتخزينه في متغير كما يلي :
                        كود:
                        FontsFolder = Shell.GetFolder(SHF_FONTS);
                        عملية تنصيب الخط تتم بالأمر التالي :

                        كود:
                        File.Copy("AutoPlay\\Docs\\اسم الخط.ttf", FontsFolder, false, false, false, true);
                        ملاحظة :

                        من المعلوم أن عملية تنصيب خطوط من التجميعة تختلف من نظام الى أخر فمثلا تنصيب خط بنظام اكس بي
                        أمر سهل لكن يختلف الأمر مع انظمة تشغيل فيستا فما فوق 7 و 8
                        أعتقد أنه اذا تم ادراج الاكواد السابقة بالطريقة الصحيحة لن ييتم نسخ الخطوط بما أن وندوز 7 يتطلب امتياز التشغيل
                        كمسؤول حتى ان قمت بتفغيل Require Administrator من الاعدادات المتقدمة للمشروع.

                        عموما أرفقت لك ملف مفتوح والكود مدرج بالزر لتنصيب خط اسمه abuhijlah bold للاستفادة وننتظر اخواننا
                        ان كانت هناك حلول اخرى .

                        وفقكم الله
                        الملفات المرفقة

                        تعليق


                        • #13
                          جزاك الله خيرا اخ عزيز
                          طيب واذا كنت ارغب بتنصيب عدة خطوط معا مثل 200 خط فليس من المعقول ان استخدم الكود 200 مرة
                          ياريت اذا كان بأمكانك التعديل على الكود لتنصيب اكثر من خط فى مسار معين اكون ممنون ليك وجزاك الله كل خير على مشاركتك الطيبة

                          تعليق


                          • #14
                            المشاركة الأصلية بواسطة azizsoft مشاهدة المشاركة


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

                            يجب تحديد مسار مجلد خطوط الوندوز وتخزينه في متغير كما يلي :
                            كود:
                            FontsFolder = Shell.GetFolder(SHF_FONTS);
                            عملية تنصيب الخط تتم بالأمر التالي :

                            كود:
                            File.Copy("AutoPlay\\Docs\\اسم الخط.ttf", FontsFolder, false, false, false, true);
                            ملاحظة :

                            من المعلوم أن عملية تنصيب خطوط من التجميعة تختلف من نظام الى أخر فمثلا تنصيب خط بنظام اكس بي
                            أمر سهل لكن يختلف الأمر مع انظمة تشغيل فيستا فما فوق 7 و 8
                            أعتقد أنه اذا تم ادراج الاكواد السابقة بالطريقة الصحيحة لن ييتم نسخ الخطوط بما أن وندوز 7 يتطلب امتياز التشغيل
                            كمسؤول حتى ان قمت بتفغيل Require Administrator من الاعدادات المتقدمة للمشروع.

                            عموما أرفقت لك ملف مفتوح والكود مدرج بالزر لتنصيب خط اسمه abuhijlah bold للاستفادة وننتظر اخواننا
                            ان كانت هناك حلول اخرى .

                            وفقكم الله
                            من المعلوم أن عملية تنصيب خطوط من التجميعة تختلف من نظام الى أخر فمثلا تنصيب خط بنظام اكس بي
                            أمر سهل لكن يختلف الأمر مع انظمة تشغيل فيستا فما فوق 7 و 8
                            يا استاذ عزيز كلامك صحيح اذا قمنا بتطبيقه على تنصيب مجموعة من الخطوط مرة واحدة بمعنى انى اضعله امر يسحب خطوط من مجلد
                            ويثبتها بالنظام تلقائيا
                            وكلام حضرتك خاطئ (مع احترامى لك) اذا اعتمدنا على نظام التثبيت الفردى اللى هو عبر الكود الاتى
                            كود:
                            font = "AutoPlay\\Docs\\FS_DIWANY.TTF"
                            System.RegisterFont(font, "FS Diwany", true);
                            Dialog.Message("Notice", "Done", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
                            وهذه هى المشكلة لان الطريقة واحدة فى التثبيت ولكن النظام لايقبله

                            تعليق


                            • #15
                              المشاركة الأصلية بواسطة القنـاص المصرى مشاهدة المشاركة
                              يا استاذ عزيز كلامك صحيح اذا قمنا بتطبيقه على تنصيب مجموعة من الخطوط مرة واحدة بمعنى انى اضعله امر يسحب خطوط من مجلد
                              ويثبتها بالنظام تلقائيا
                              وكلام حضرتك خاطئ (مع احترامى لك) اذا اعتمدنا على نظام التثبيت الفردى اللى هو عبر الكود الاتى
                              كود:
                              font = "AutoPlay\\Docs\\FS_DIWANY.TTF"
                              System.RegisterFont(font, "FS Diwany", true);
                              Dialog.Message("Notice", "Done", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
                              وهذه هى المشكلة لان الطريقة واحدة فى التثبيت ولكن النظام لايقبله

                              بسم الله الرحمن الرحيم

                              مرحبا

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

                              ثانيا أنت لم تفهم ما أقصد ؟

                              الكود الذي تبحث عنه الخاص بنسخ جملة من الخطوط الى مجلد الفونت بنظام التشغيل هو الاتي :

                              [HTML]
                              Dialog.Message("تنبيه", "سيتم تثبيت الخطوط في جهازك تلقائيا . خلال لحظات", MB_OK, MB_ICONQUESTION, MB_DEFBUTTON2);

                              fontFolder = Shell.GetFolder(SHF_FONTS);

                              find_fonts = File.Find("AutoPlay\\Docs\\Font", "*.ttf", true, true, nil, nil);

                              if find_fonts then

                              for x,y in pairs (find_fonts) do

                              get_font_name = String.SplitPath(y);

                              File.Copy(y, fontFolder, true, true, false, true, nil);

                              System.RegisterFont(fontFolder.."\\"..get_font_nam e.Filename..get_font_name.Extension, get_font_name.Filename, true);

                              end

                              end

                              Dialog.Message("تنبيه", "تـــــم تـثـبـيـــت الـخــطــــوط", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON2);

                              [/HTML]


                              ادرج هذا الكود بزر واضف جملة من الخطوط بمجلد Font بالمشروع وقم بالتجربة ثم تأكد من العملية
                              شخصيا قمت في السابق بتجربة هذا الأمر ولم تتم عملية النسخ الا بعد أن غيرت اعدادات اليوزر اكونت لنظام التشغيل 7
                              كما هو مبين بالصور وتم النسخ بعد ذلك .



                              وهذا ما أقصده سابقا .

                              بالتوفيق


                              تعليق

                              مواضيع تهمك

                              تقليص

                              المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                              المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                              المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                              المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                              المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                              يعمل...
                              X