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

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

مسااااعدة عااجلة رجااء لأصحاب الخبرة في الأوتوبلاي - مشكلة صعبة !

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

  • مسااااعدة عااجلة رجااء لأصحاب الخبرة في الأوتوبلاي - مشكلة صعبة !

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

    ها أنا ذا أعود لحضراتكم بعدما واجهتني مشكلة عويصة نوعا ما وهي شاائعة على حسب ما لاحظت من استفسارات الأعضاء.
    المشكلة تتلخص في كوني قمت بعمل برنامج تعليمي بواسطة الأوتوبلاي وقد أوليت اهتماما كبيرا لجانب التصميم حيث قمت بالكتابة بخطوط كثيرة ومختلفة وغالبا لا توجد عند أغلب المستخدمين. لذا فقد قمت بإضافة كود يقوم بنسخ الخطوط التي أرفقتها في مجلد Docs الموجود بالبرنامج إلى مجلد الخطوط Fonts بالويندوز. لكن المشكلة هي في نسخ الخطوط حيث قمت في الأول بعمل كود بسيط File.Copy والذي يقوم بتحديد الملف وإسمه وامتداده ثم نسخه وبعد ذلك كود آخر لتسجيل الخط في الويندوز. لكن هذه الطريق لم تنجح للأسف بعد تجربتها على عدة أجهزة، وكملاحظة على ذلك فإن الخطأ لا يكمن في نظام التشغيل كما سيعتقد البعض منكم، حيث قمت بتجربة الكود على نظام Windows XP ولم تفلح أيضا.
    لذ قمت بتعديل بسيط حيث أضفت الكود السابق إلى دالة عادية من صنعي ووضعت الكود في Global Functions ثم قمت بالإعلان عنها في Project في الحدث On Startup لكن النتيحة ظلت كما هي.

    لذا فإنني أطلب من الخبراء أن يعطوني كودا قوياً لأتمكن من خلاله من نسخ الخطوط مهما كانت وأين ما كان مجلد الخطوط وكيفما كان نظام التشغيل.

    ملاحظة : لقد قمت بتجربة كود Get.Folder لكن بدون أية فائدة أيضاً ..

    المرجو مساعدتي في أقرب وقت ممكن لأنني قد أضطر إلى إعادة تصميم البرنامج بالكامل، والكتابة بالفوتوشوب على الصور ..

    شكراُ مقدماُ والسلام عليكم ورحمة الله وبركاته

  • #2
    اذا كانت المشكله في عدم النسخ فهناك مواضيع كثيره في المنتدى توضح عملية نسخ الخطوط

    أما اذا كانت المشكله هي عدم ظهور الخطوط في البرنامج عند تشغيله في جهاز آخر .. فيكون الحل في الاغلب حاجة الويندوز لعمل إعادة تشغيل بعد إجراء عملية نسخ الخطوط الجديده

    تعليق


    • #3
      اليك يا غالى الحل انا واجهت نفس المشكلة مع احد مشارعى فى تنصيب الخطوط
      والحل النهائى اللى توصلتله كان هذا الكود
      كود:
      Fpath = Shell.GetFolder(SHF_FONTS);
      fonts = File.Find(_SourceFolder.."AutoPlay\\Docs\\Fonts\\Arabic", "*.ttf", false, false, nil, nil);
      for i,y in pairs (fonts) do
      File.Copy(y, Fpath, false, false, false, true);
      split = String.SplitPath(y);
      File.Copy(y, Fpath, true, true, false, true, nil);
      System.RegisterFont(Shell.GetFolder(SHF_FONTS), split.Filename..split.Extension, true);

      وعيبه الوحيد هو انه لا يعمل مع ويندوز 7 و فيستا و 8 الا بعتد تغيير User Account Settings
      وقد ارفقتها لك فى المشاركة فى ملف ورد
      الملفات المرفقة

      تعليق


      • #4
        من قال انه لا ينجح مع ويندوز 7 او 8 ؟؟

        فقط اضبط برنامجك على وضعية Require Administrartor

        من project > settings > advanced

        تعليق


        • #5
          المشاركة الأصلية بواسطة Haitham.2012 مشاهدة المشاركة
          من قال انه لا ينجح مع ويندوز 7 او 8 ؟؟

          فقط اضبط برنامجك على وضعية Require Administrartor

          من project > settings > advanced

          ينجح مع ويندوز فيستا و 7 بأعدادات Require Administrator
          عندما يتم تنصيب الخطوط خط خط وليس فى طريقة جلبهم من ملف ووضعهم فى جدول وتنصيبهم مثل الطريقة التى قمت بأرفاقها
          فانا عانيت ومن اشار الى بهذا التعديل هو الاستاذ عزيز سوفت
          اما اذا كان المبرمج ينوى تنصيب 1-10 خطوط واستعمل امر System.RegisterFont لكل خط مرة واحدة وفعل خاصية التشغير كمسؤل
          فستعمل على جميع الاصدارات سواء فيستا او سيفن او ايت او اكس بى
          وهذ العيب الحالى فى البرنامج وهو عدم القدرة على استخدام هذه الميزة فى التعامل مع الجداول

          تعليق


          • #6
            المشاركة الأصلية بواسطة القنـاص المصرى مشاهدة المشاركة
            ينجح مع ويندوز فيستا و 7 بأعدادات Require Administrator
            عندما يتم تنصيب الخطوط خط خط وليس فى طريقة جلبهم من ملف ووضعهم فى جدول وتنصيبهم مثل الطريقة التى قمت بأرفاقها
            فانا عانيت ومن اشار الى بهذا التعديل هو الاستاذ عزيز سوفت
            اما اذا كان المبرمج ينوى تنصيب 1-10 خطوط واستعمل امر System.RegisterFont لكل خط مرة واحدة وفعل خاصية التشغير كمسؤل
            فستعمل على جميع الاصدارات سواء فيستا او سيفن او ايت او اكس بى
            وهذ العيب الحالى فى البرنامج وهو عدم القدرة على استخدام هذه الميزة فى التعامل مع الجداول
            وربما يكون العيب فى أكوادك و ليس فى البرنامج

            من قال أنة يوجد مشكلة فى تعامل البرنامج مع الجداول ؟ ربما أخى عدم توظيف الأكواد بشكل صحيح من المبرمج هو المشكلة .

            ---------------

            المشاركة الأصلية بواسطة Haitham.2012 مشاهدة المشاركة
            من قال انه لا ينجح مع ويندوز 7 او 8 ؟؟

            فقط اضبط برنامجك على وضعية Require Administrartor

            من project > settings > advanced

            طبعا كلام صحيح و فعال 100% مع التوظيف الصحيح للأكواد



            تحياتى لكم .............. وبالتوفيق

            تعليق


            • #7
              يا اخوانى

              اليكم هذا الكود على سبيل المثال فما الخطأ اللذى ارتكبه المبرمج فيه

              كود:
              ar_selected = CheckBox.GetChecked("ar");
              en_selected = CheckBox.GetChecked("en");
              os = System.GetOSName();
              Fpath = Shell.GetFolder(SHF_FONTS);
              -- ÌãíÚ ÍÇáÇÊ ÇáÇÎÊíÇÑÇÊ
              -- First Case if User wants to setup en & ar fonts
              if ar_selected == true and en_selected == true then
              	ar_t = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\Fonts\\Arabic", "*.ttf", false, false, nil, nil);
              	en_t = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\Fonts\\English", "*.ttf", false, false, nil, nil);
              	all_t = {}
              	all_t = ar_t
              	total_size = 0
              	for a,z in pairs (en_t) do
              		Table.Insert(all_t, a, z);
              	end
              	count = Table.Count(all_t);
              	Label.SetText("all", count);
              	total_size = 0
              	for i,y in pairs (all_t) do
              		get_size = File.GetSize(y);
              		total_size = total_size + get_size
              		end
              		total_size = String.GetFormattedSize(total_size, FMTSIZE_AUTOMATIC, true);
              		Label.SetText("sz", total_size);
              	--------------------------------
              	for i,y in pairs (all_t) do
              		File.Copy(y, Fpath, false, false, false, true);
              		split = String.SplitPath(y);
              		File.Copy(y, Fpath, true, true, false, true, nil);
              		System.RegisterFont(Shell.GetFolder(SHF_FONTS), split.Filename..split.Extension, true);
              		Label.SetText("current_num", i);
              		Progress.SetCurrentPos("Progress1", i * 100 / count);
              end
              فعيب الكود هو مثل ماقلت لابد من تغيير ال User Account Control

              وارجو ان تلفى نظرة على مشاركة الاخ عزيز سوفت هنا
              http://sites.ienajah.com/vb2/showthread.php?t=27619&page=2

              تعليق


              • #8
                يا أخى الحبيـــــــب إذا كنت تريد تعليقات على كودك فالتعليقات على ما أعتقد سوف تكون كثيرة منها على سبيل المثال :

                كود PHP:
                    all_t = {}
                    
                all_t ar_t
                    total_size 
                0
                    
                for a,z in pairs (en_t) do
                        
                Table.Insert(all_taz);
                    
                end 

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

                ما هو الـــ a , الـــ z فى التكرار السابق ؟

                هل يمكنك أن تحاول إلقاء نظرة على شرح المصفوفات ربما تعرف الخطأ من الشرح للمصفوفات .
                هو أنا بــــ أشرح لنفسى فى قسم الدروس و الشروحات ؟ ههههههههه

                تحياتى

                تعليق


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

                  شكرا جزيلاُ إخواني الكرام على التفاعل مع مشكلتي . وقد قرأت كل التعليقات .
                  لقد إرتأيت أن أوريكم الكود ال\ي استعملته في نسخ الخطوط دفعة واحدة .

                  هذا الكود قمت بكتابته في Global Functions :

                  كود:
                  -- On Global Functions --
                  
                  function Copy_Fonts ()
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\AdvertisingExtraBold.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\AdvertisingExtraBold.TTF", "AdvertisingExtraBold.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\Army.ttf", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\Army.ttf", "Army.ttf", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\BAHAMASN.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\BAHAMASN.TTF", "BAHAMASN.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\BARBE4.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\BARBE4.TTF", "BARBE4.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\BERKE15.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\BERKE15.TTF", "BERKE15.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\BRSHFLR.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\BRSHFLR.TTF", "BRSHFLR.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\CASCD09.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\CASCD09.TTF", "CASCD09.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\CROISNTN.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\CROISNTN.TTF", "CROISNTN.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\FORTE.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\FORTE.TTF", "FORTE.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\FRHND471.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\FRHND471.TTF", "FRHND471.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\FRKFRTHN.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\FRKFRTHN.TTF", "FRKFRTHN.TTF", true);
                  
                  File.Copy("AutoPlay\\Docs\\Fonts\\TT0806M.TTF", _WindowsFolder .. "\\Fonts", true);
                  System.RegisterFont("AutoPlay\\Docs\\Fonts\\TT0806M.TTF", "TT0806M.TTF", true);
                  
                  end
                  وهذ الكود قمت بكتابته في الحدث On Stratup للمشروع بحيث أقوم من خلاله الدالة السابقة والمسؤولة عن نسخ الخطوط :

                  كود:
                  -- On Project Startup Event --
                  
                  Copy_Fonts ();
                  - ملاحظة : الهدف الذي أريده من هذا كله هو نسخ الخطوط أثناء تحميل البرنامج أي في الخلفية دون استعمال أية أزرار أو نوافذ منبثقة، يعني لا أريد أن أزعج المستخدم بهذا الأمر الذي قد لا يفهمه بعض المستخدمين العاديين جدا للبرنامج !

                  المرجو إلقاء نظرة على الكود الذي أدرجته في الأعلى وإعطائي نصائحكم حوله لتحسينه.

                  ملاحظة أخرى : لاحظت أن بعض الخطوط تُنب في مجلد الخطوط والأخرى لا تُنب وبالتالي لا تظهر أثناء تشغيل البرنامج.

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

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

                  تعليق


                  • #10
                    كود:
                    fonts_path = Shell.GetFolder(SHF_FONTS);
                    
                    fonts = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\Fonts\\", "*.TTF", true, true, nil, nil);
                    
                    for x,y in pairs (fonts) do
                    
                    File.Copy(y, fonts_path, false, false, false, true);
                    
                    end

                    هذا الكود كافي بإتمام المهمه .. أما عن كود ...

                    كود:
                    System.RegisterFont
                    فأعتقد ان ليس له فائده كبيره ... انا لا استخدمه ابدا وتعمل الخطوط جيدا فقط تحتاج لعملية اعادة تشغيل الويندوز بعد النسخ ( طبعا في المره الأولى فقط ) وليس دائما

                    تعليق


                    • #11
                      المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
                      يا أخى الحبيـــــــب إذا كنت تريد تعليقات على كودك فالتعليقات على ما أعتقد سوف تكون كثيرة منها على سبيل المثال :

                      كود PHP:
                          all_t = {}
                          
                      all_t ar_t
                          total_size 
                      0
                          
                      for a,z in pairs (en_t) do
                              
                      Table.Insert(all_taz);
                          
                      end 

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

                      ما هو الـــ a , الـــ z فى التكرار السابق ؟

                      هل يمكنك أن تحاول إلقاء نظرة على شرح المصفوفات ربما تعرف الخطأ من الشرح للمصفوفات .
                      هو أنا بــــ أشرح لنفسى فى قسم الدروس و الشروحات ؟ ههههههههه

                      تحياتى
                      على فكرة انا متابع معاك شروحات المصفوفات والله يا اخ عبود وافادتنى كتير
                      ولكن اللى عدل على الكود واضاف هذا الجزء هو الاخ النصل القاطع
                      والكود يعمل بشكل جيد
                      وليس العيب هنا ان كنت تريد شرح العيب
                      قم بادراج ملف داخل التجميعه ولتضع به مثلا 10 خطوط ثم استخدم الامر File.Find لجلبهم فى جدول ثم قم بأستدعائهم للتنصيب عبر
                      For i,x in pairs (Fonts) do
                      system.registerfonts....
                      واضف اليها ماتشاء من تعديلات ستجد ان الطريقة لن تعمل الا عند عدم التعامل مع البيانات بشكل قاعدة
                      وعانى بذلك الطريقة الخاص بتنصيب كل خط على حدا
                      اما عن a-z
                      a وهو رقم العنصر فى الجدول ويساوى Index لذلك نجد ان معظم المبرمجين فى هذه الحالة يكتبه
                      i حتى لاينسى
                      اما z فهو العنصر نفسه مثال توضيحي (( عشان ابين لحضرتك اني فاهم ))
                      لو قلنا ان عندنا مصفوفة اسمها Programs
                      وفي اهذه المصفوفة 5 مسارات لبرامج
                      ولتكن
                      c:\program files\program1.exe
                      c:\program files\program2.exe
                      c:\program files\program3.exe
                      c:\program files\program4.exe
                      c:\program files\program5.exe
                      وقمن بوضعهم فى مصفوفة مثلا
                      كود:
                      programs = {}
                      programs[1] = "c:\program files\program1.exe"
                      programs[2] = "c:\program files\program2.exe"
                      programs[3] = "c:\program files\program3.exe"
                      programs[4] = "c:\program files\program4.exe"
                      programs[5] = "c:\program files\program5.exe"
                      تمام انا الان اريد استدعاء جميع عناصر المجموعة مدرج قبلها رقم العنصر فى الجدول ومفصول بينهما بـ -- فى رسالة سيكون الامر
                      كود:
                      for i,y in pairs (programs) do
                      Dialog.Message("Notice",i.."--"..y)
                      end
                      التجربة ستؤدى الى ظهور كل عنصر مع رقمه فى رسالة انفرادية اى اننا بدل منستدعى كل عنصر على حده بكوده قمنا بوضعهم فى مصفوفة او جدول وقمنا بأدراج الكود الذى يتم تكراره على جميع عناصر المجموعة

                      تعليق


                      • #12
                        جيد الآن عرفت أنك فهمت جزءا من التعامل مع الجداول

                        نجحت فى الإختبار و نجح معك الإختبار لترسيخ شيئ معين وهو الوصول إلى المعلومة إن لم تكن تعرفها مسبقا

                        شكرا

                        تعليق


                        • #13
                          المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
                          جيد الآن عرفت أنك فهمت جزءا من التعامل مع الجداول

                          نجحت فى الإختبار و نجح معك الإختبار لترسيخ شيئ معين وهو الوصول إلى المعلومة إن لم تكن تعرفها مسبقا

                          شكرا

                          كم هو شرف لى ان انجح فى اختبار احد اعمدة الـams جزاك الله خيرا اخ عبود

                          تعليق


                          • #14
                            المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
                            جيد الآن عرفت أنك فهمت جزءا من التعامل مع الجداول

                            نجحت فى الإختبار و نجح معك الإختبار لترسيخ شيئ معين وهو الوصول إلى المعلومة إن لم تكن تعرفها مسبقا

                            شكرا

                            أخى العزيز الأستاذ عبود

                            هنا الغلطة عندك
                            و هى أنك لم تشرح بعد الفرق بين حلقات for do و حلقات for in do

                            فى حلقات for do علينا وضع حدى الحلقة for ووضع متغير العداد الذى يشار غالبا له ب i
                            أما حلقات for in do فلا يتم وضع حدى الحلقة for و لا يكون علينا وضع متغير للعداد. و بمجرد وضع أي حرفين
                            يكون الأول هو الرقم بالفهرس و يكون الثانى العنصر المقابل

                            (ليس شرح بل مجرد توضيح)

                            سلامى للجميع

                            تعليق


                            • #15
                              المشاركة الأصلية بواسطة القنـاص المصرى مشاهدة المشاركة
                              ع
                              اللى عدل على الكود واضاف هذا الجزء هو الاخ النصل القاطع
                              والكود يعمل بشكل جيد
                              وليس العيب هنا ان كنت تريد شرح العيب
                              قم بادراج ملف داخل التجميعه ولتضع به مثلا 10 خطوط ثم استخدم الامر File.Find لجلبهم فى جدول ثم قم بأستدعائهم للتنصيب عبر
                              For i,x in pairs (Fonts) do
                              system.registerfonts....
                              ا
                              ضع مباشرة بعد كود تسجيل الخط التعليمة sleep بقيمة 100 مللى
                              ضع بعد كود نسخ الخط فى الحلقة أيضا و مباشرة sleep بقيمة 100 مللى

                              لاحظ أن 100 مللى تساوى واحد على عشرة من الثانية
                              عشران من الثانية ليسا مؤثران فى سرعة الكود و يكادا يكونان غير محسوسان

                              تعليق

                              مواضيع تهمك

                              تقليص

                              المنتدى: القسم العام نشرت بواسطة: ماريا عبد الله الوقت: 06-08-2025 الساعة 11:33 PM
                              المنتدى: القسم العام نشرت بواسطة: ماريا عبد الله الوقت: 06-04-2025 الساعة 05:29 PM
                              المنتدى: القسم العام نشرت بواسطة: ماريا عبد الله الوقت: 05-31-2025 الساعة 10:07 PM
                              المنتدى: القسم العام نشرت بواسطة: ماريا عبد الله الوقت: 05-30-2025 الساعة 11:48 PM
                              المنتدى: التصنيع والانتاج نشرت بواسطة: HaMooooDi الوقت: 05-30-2025 الساعة 09:36 AM
                              يعمل...
                              X