• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

محمد نسمان

الخبراء المعتمدون
  • عدد المشاركات

    992
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

0 عادي

عن محمد نسمان

  • الرتبة
    خبير دلفي

طرق الإتصال

معلومات الملف الشخصي

  • الدولة : فلسطين المحتلة
  1. Objet COM ASP

    أخي زكيري، كل عام وانت بخير اولاً بالنسبة لاضافة ال ASP هل تقصد فتح الملفات فقط؟, ام فتح الملفات وجعل دلفي يتعرف على كود ال asp وتلوينه؟؟؟ بالنسبة للخيار الأول اعتقد قمت بعرض كيف يتم ذلك، ام للخيار الثاني فلا اعتقد يمكن جعل دلفي يتعرف على كود ال asp بشكل تلقائي، لكن قد يمكن ذلك من خلال اضافة دعم له من خلال ال Tools API والتي تجعلك تخصص بيئة التطوير بالشكل الذي ترغب راجع هذا الرابط http://www.delphi-central.com/syntax_highlighting.aspx لكن المثال بسيط ولا يتطرق لعملية التعرف على كود معين، وكما هوا واضح منه يتم ذلك من خلال دعم IOTAHighlighter الخاصة ب Tools api ولو راجعت ملف ToolsApi.pas فسوف تجد ان كل ال Syntax Highlighter مذكورين بها بشكل مباشر أي لا يتم التعرف على غيرهم بدون اضافة الدعم بشكل خارجي من خلال ال IOTAHighlighter.
  2. عنصر يجعل الفورم كانه صفحة ويب

    Intraweb أو VCL for Web الذي يأتي مع دلفي، يمكنك من تصميم صفحات الويب بنفس نظام البرامج المكتبة، لكن يعمل من خلال الويب وبه دعم للأجاكس ايضاً لكن لن يقوم بتحويل النماذج الموجودة إلى ويب، بل عليك بدء برنامج من نوع VCL for Web.
  3. نسخة دلفي 2010 كانت بها تحسينات على المترجم تعتبر الأكبر منذ نسخة دلفي 2 ودلفي 2009، حيث طالت تلك النسخة دعم كبير للغة دلفي على مستوى المترجم وليس فقط تحسينات لبيئة التطوير والمكونات الموجودة. اليوم أمضيت بعض الوقت للبدء في تعلم ال Extended RTTI (Real Time Type Information التي أضيفت لدلفي، ورغم أن دلفي ومنذ بدايته كان به دعم جيد نوعاً ما لل RTTI، لكنه هذه الدعم كان محصور ضمن البيانات والطرق المعرفة ضمن جزء ال Published في أي صنف، وأيضا لم يكن على مستوى عالي مثل الموجود في الجافا ولغات الدوت نت في حيث ما يعرف ب Reflection. لكن مع دلفي 2010 تم زيادة هذا الدعم تحت مسمى Extended RTTI، بحيث أصبح بالإمكان التعامل مع جميع محتويات الصنف وليس ال Published فقط، ومع إضافة دعم ال Attributes للغة دلفي، أصبح بالإمكان الوصول للعديد من المميزات الموجودة في دوت نت وجافا ولكن بدون تضييع مستوى الآمان، حيث لا يمكن إرجاع الكود إلى أصله، وأيضاً يمكن توقيف توليد هذه المعلومات. يمكن الإطلاع على وحدة rtti.pas التي أضيفت إلى دلفي 2010 وبها TRTTIContext الذي يعتبر قلب التعامل مع ال RTTI، ورغم بساطته لكن يعتبر نقطة البداية في التعامل مع أي صنف من خلال ال RTTI. التكملة: دلفي 2010 والدعم المحسن لل RTTI
  4. التطبيقات متعددة الطبقات N-tier طريقة Data Access --> Business --> PresentationI

    السلام عليكم أسف لتأخري في المشاركة في الموضوع، لكن لظروف كثيرة لم أستطع المتابعة معكم. ونظرا لعدم مشاركتي في الموضوع بشكل متواصل فسوف أقوم بطرح مثال مبسط للويب سيرفس بدلاً من تعديل المثال الحالي، وفي حال وجدت بعض الوقت في الفترة القادمة سوف أحدث المثال، بالنسبة للويب سيرفس كما ذكرت سابقا حتى تستخدم أي صنف يجب ان تكون مشتقة من TRemotable، اما بالنسبة إذا أردت ان تقومو بإرجاع مجموعة من الصنف فلا يمكن إستخدام ال TList كما تم إستخدامها سابقاً، وأفضل طريقة هي إستخدام مصفوفة من نوع الصنف المراد إستخدامه، لنفترض أن لدي صنف خاص ببيانات موظف وأريد إرجاع موظف حسب رقمه أو قائمة بجميع الموظفين فيمكن ذلك كالتالي: 1. في ملف التعريف type TEmployee = class(TRemotable) private FEmpSalary: Double; FEmpAddr: string; FEmpName: string; FEmpID: Integer; published published property EmpID : Integer read FEmpID write FEmpID; property EmpName : string read FEmpName write FEmpName; property EmpAddr : string read FEmpAddr write FEmpAddr; property EmpSalary: Double read FEmpSalary write FEmpSalary; end; TEmployees = array of TEmployee; { Invokable interfaces must derive from IInvokable } IEmpService = interface(IInvokable) ['{C410A928-4696-4F0F-A154-169AD82C224E}'] function GetEmployee(EmpID:Integer):TEmployee;stdcall; function GetAllEmployees:TEmployees;stdcall; end; ومن ثم في ملف ال Implementation: { TEmpService } TEmpService = class(TInvokableClass, IEmpService) public function GetEmployee(EmpID:Integer):TEmployee;stdcall; function GetAllEmployees:TEmployees;stdcall; end; implementation { TEmpService } function TEmpService.GetAllEmployees: TEmployees; var Emp : TEmployee; begin // I want to return only two employees SetLength(Result,2); Emp := TEmployee.Create; Emp.EmpID := 1; Emp.EmpName := 'Mohammed'; Emp.EmpAddr := 'Palestine'; Emp.EmpSalary := 99.9; Result[0] := Emp; Emp := TEmployee.Create; Emp.EmpID := 2; Emp.EmpName := 'Ali'; Emp.EmpAddr := 'KSA'; Emp.EmpSalary := 199.9; Result[1] := Emp; end; function TEmpService.GetEmployee(EmpID: Integer): TEmployee; begin Result := TEmployee.Create; Result.EmpID := EmpID; Result.EmpName := 'Mohammed'; Result.EmpAddr := 'Palestine'; Result.EmpSalary := 99.9; end; وضمن برنامج العميل يمكن إستدعائهم كالتالي: procedure TForm5.btn1Click(Sender: TObject); var Emp: TEmployee; WS: IEmpService; begin Emp := TEmployee.Create; WS := GetIEmpService(); Emp := Ws.GetEmployee(1); lst1.Items.Add('Adding One Employee'); lst1.Items.Add(IntToStr(Emp.EmpID)); lst1.Items.Add(Emp.EmpName); lst1.Items.Add(Emp.EmpAddr); lst1.Items.Add(FloatToStr(Emp.EmpSalary)); end; procedure TForm5.btn2Click(Sender: TObject); var Emp: TEmployee; Employees: TEmployees; WS: IEmpService; I: Integer; begin lst1.Items.Add('Adding More Employees'); WS := GetIEmpService(); Employees := ws.GetAllEmployees; for I := low(Employees) to High(Employees) do // for I := 1 to 2 do begin Emp := TEmployee.Create; Emp := Employees[I]; lst1.Items.Add(IntToStr(Emp.EmpID)); lst1.Items.Add(Emp.EmpName); lst1.Items.Add(Emp.EmpAddr); lst1.Items.Add(FloatToStr(Emp.EmpSalary)); end; بالطبع الكود إستخدمت فيه قيم ثابتة وذلك لتسهيل المثال وكما ذكرت سابقاً أفضل إستخدام تقنية DataSnap وخاصة مع دلفي 2010 لإنها سوف توفر إطار عمل للبرامج متعددة الطبقات أفضل من الويب سيرفس، كذلك لو إستخدام RemObjects SDK فيمكن بناء برامج متعددة الطبقات أفضل من الدوت نت وحتى من ال WCF،
  5. التطبيقات متعددة الطبقات N-tier طريقة Data Access --> Business --> PresentationI

    السلام عليكم درس ممتاز أخي زكيري، لكن لي بعض الملاحظات إذا سمحت: 1. الصنف TPersoCollection حتى تستطيع إستخدامه في الويب سيرفس يجب ان يكون مشتق من نوع TRemotable، وأيضاً 2. حسب ملف ال WSDL المولد فالنوع المعرف ك Complex type هو TPersoCollection، ولا يوجد به اي حقول معرفة به حسب الأصناف القياسية للويب سيرفس. 3. لا يمكن استخدام الصنف TList لانه خاص بدلفي فقط، واعتقد لا يمكن عمل له Serlization، لكني سوف أتأكد من هذا لاحقاً. 4. عادة طبقة ال DAL تقوم بإخفاء معلومات التعامل مع قاعدة البيانات عن BOL، لذا يفضل ان لا تقوم بتمرير ADOQuery كمعامل، بل عل DAL ان تقوم بإنشائها بنفسها بشكل تلقائي وإرجاع البيانات، ايضا عند تغيريك لتقنية المستخدمة في الربط مع قاعدة البيانات من ADO الى dbExpress مثلا، سوف تضطر إلى تغيير الكود الموجود في DAL و BOL وهذا يضيع من فائدة إستخدام طبقة ال DAL في البرنامج. 5. احبذ استخدام تقنية DataSnap على الويب سيرفس لان بها مميزات اكبر لبناء برامج متعددة الطباقات وخاصة مع نسخة 2009 و2010، بالاضافة إلى أنه يمكنك استخدامها مع دلفي بريزم ايضا :). 6. ايضا لو تضع السورس كود للمشروع ملحق للمشاركة سوف يكون أسهل في التجربة من نسخه من كل المشاركات. سوف احاول المساعدة إن شاء الله خلال الإسبوع القادم لإن هذا الإسبوع مشغول بشكل كبير جداً.
  6. كل عام وأنتم بخير، جعلنا الله وأياكم من عتقاء شهر رمضان الكريم. دلفي 2010 سوف يصدر خلال هذا الإسبوع إن شاء الله، وبه مجموعة رائعة من التطويرات تشمل بيئة التطوير، قواعد البيانات المترجم وغيرها، مما يجعله بلا شك من أروع النسخ وأفضلها. قمت اليوم بكتابة مقالين عن مجموعة من المميزات الجديدة في بيئة التطوير سوف تجدوهم هنا: المميزات الجديدة في بيئة التطوير دلفي 2010 -1- المميزات الجديدة في بيئة التطوير دلفي 2010 -2- وكل عام وأنت بخير
  7. كما ذكرت سابقاً كل الكلام مبنى على وجهات نظر، ايضاً لا اعرف ليش كاتب المقال زعلان على شان استخدام سي# بدلا من لغات Open Source؟ ايضاً هناك العديد من المقالات التى نشرت حول قيام ميكروسوفت بإزالة الشكوك والعقبات حول الشركات التى سوف تطور وتستخدم مونو او بناء مترجم للسي# وCLR Microsoft removes a hurdle for Mono Microsoft issues patent promise, dispels Mono legal concerns
  8. كيف أحصل على Pk بعد عملية Insert

    الصفحة التى ذكرتها لا يوجد بها حل لكن بصفحة عامة يمكنك استراجاع قيمة عمود الترقيم التلقائي بعد الحفظ من خلال هذه الجملة Select @@Identity او select SCOPE_IDENTITY() وذلك بعد جملة الاضافة مباشرة
  9. هل هناك ما يميز دلفي نت عن سي شارب نت ؟ نعم هناك العديد من المزايا اضيفت لدلفي بريزم ولا تتوفر في سي# بعض منها سوف يضاف الى سي# 4 وهنا سوف تجد ملخص لها هنا Delphi Prism vs. CSharp هذا في السابق، دلفي دوت نت توقف وتوقفت معه مكتبة VCL.Net والان دلفي بريزم هوا الموجود ويعتمد على WinForms or WPF في البرامج المكتبية. عند بداية الاعلان عن دلفي بريزم كتبت مقالة مبسطة عنه، يمكنكم مراجعتها هنا http://www.mnasman.com/blog/?p=78
  10. سؤال في الدلفي Prism

    يمكن توليد برامج تعمل على الموبيل بدون مشاكل مثله مثل سي#، لكن لا يوجد مصمم نماذج خاص بالموبيل يمكن استخدامه مع دلفي بريزم، وهذه نفس مشكلة دلفي دوت نت السابقة، حيث ان ميكروسوفت تحتكره للغاتها فقط لكن مع MonoDevelop سوف يتغير الوضع
  11. لماذا؟ هل لأنه يجعل تقنيات ميكروسوفت مستخدمة في الانظمة الخاصة بهم؟ ايضا اخر نسخ اوبنتو ضمنت مونو في اصدراتها
  12. يمكن ذلك من خلال تحويل Net. Dll الى Com Dll وذلك عن طريق انشاء ملف type library tbl بإستخدام tlbexp.exe ومن ثم تسجيل المكتبة في نظام التشغيل عن طريق regasm.exe سوف تجد العديد من الشرح لو بحث بجوجل وايضا ابحث عن tblexp وRegasm في مكتبة MSDN وسوف تجد شرح تفصيلي لكل اداة
  13. التخوف من استخدام مونو، هي وجهات نظر لكتاب تلك المقالات، وليست واقع موجود، بالإضافة إلى أن ميكروسوفت أوضحت الأمور المتعلقة بالملكيات الخاصة بسي# وCLI على منصة مونو وغيرها. اعتقد ان IBM + Oracle + Sun + كل مطوري اللينكس + البرامج المفتوحة ضد ميكروسوفت وانا معك في كرهك للأوراكل رغم اني احترم اوراكل كقاعدة بيانات رغم كل التعقيد الذي بها.
  14. مونو مشروع مفتوح المصدر، وتقف خلفه شركة نوفل، كما ان مطوره الرئيسي هوا Miguel de Icaza، مطور ال GNome
  15. بالطبع اقصد المونو Mono Project، حيث قرأت مقالة عن Mono outpaces Java in Linux desktop development وتتحدث عن زيادة التطوير بإستخدام مونو على بيئة لينكس في وبدأت في تخطي لغة الجافا، وبالطبع في البرامج المكتبية، ولا اعتقد انه يتخطاها في كل شيء يلا ميزة لمبرمجي دلفي بريزم Delphi Prism، حيث بيجي معاها دعم لمشاريع مونو مباشرة و ابل كوكا :)