![]() |
|
الذكاء الصناعي والبرمجة - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : دروس دلفي للمبتدئين (https://delphi4arab.net/forum/forumdisplay.php?fid=13) +--- الموضوع : الذكاء الصناعي والبرمجة (/showthread.php?tid=12451) |
الذكاء الصناعي والبرمجة - Delphi4Us - 18-11-2023 السلام عليكم ورحمة الله كثيرا ما يوفر الذكاء الصناعي الكود اللازم لحل مشكلة واحيانا يطرح عليك فكرة تجعلك ترى من اين تبداء بالضبط واين يجب ان تبحث لنأخذ امثلة هنا وهذا المنشور سنجعله لكل اقتراحات الذكاء الصناعي في الحلول البرمجية مثلا السؤال للذكاء الصناعي بارد الخاص بقوقل إقتباس :باستخدام مكونات fireDac اذا كان عندي الحقول ID-mname-mdate-city-image واسم الجدول Employee اريد كود اضافة وتعديل وحذف بلغة الدلفي طبعا كلما كانت المعلومات اكثر التي تقدمها للذكاء الصناعي كانت الاجابة اكثر ذقة الاجابة كانت كود إضافة سجل كود : procedure AddRecord(ID: Integer; MName: string; MDate: TDateTime; City: string; Image: TBytes);
var
Employee: TFDQuery;
begin
// إنشاء كائن استعلام
Employee := TFDQuery.Create(nil);
// تعيين اسم الجدول
Employee.SQL.Text := 'INSERT INTO Employee (ID, MName, MDate, City, Image) VALUES (@ID, @MName, @MDate, @City, @Image)';
// تعيين القيم للحقول
Employee.Params.Assign('@ID', ID);
Employee.Params.Assign('@MName', MName);
Employee.Params.Assign('@MDate', MDate);
Employee.Params.Assign('@City', City);
Employee.Params.Assign('@Image', Image);
// تنفيذ الاستعلام
Employee.ExecSQL();
end;مثال على استخدام كود إضافة سجل كود : AddRecord(1, 'John Doe', '2023-11-18', 'Zintan', 'image.jpg');
كود تعديل سجل
procedure EditRecord(ID: Integer; MName: string; MDate: TDateTime; City: string; Image: TBytes);
var
Employee: TFDQuery;
begin
// إنشاء كائن استعلام
Employee := TFDQuery.Create(nil);
// تعيين اسم الجدول
Employee.SQL.Text := 'UPDATE Employee SET MName = @MName, MDate = @MDate, City = @City, Image = @Image WHERE ID = @ID';
// تعيين القيم للحقول
Employee.Params.Assign('@MName', MName);
Employee.Params.Assign('@MDate', MDate);
Employee.Params.Assign('@City', City);
Employee.Params.Assign('@Image', Image);
Employee.Params.Assign('@ID', ID);
// تنفيذ الاستعلام
Employee.ExecSQL();
end;مثال على استخدام كود تعديل سجل كود : EditRecord(1, 'Jane Doe', '2023-11-19', 'Tripoli', 'image2.jpg');كود حذف سجل كود : procedure DeleteRecord(ID: Integer);
var
Employee: TFDQuery;
begin
// إنشاء كائن استعلام
Employee := TFDQuery.Create(nil);
// تعيين اسم الجدول
Employee.SQL.Text := 'DELETE FROM Employee WHERE ID = @ID';
// تعيين القيم للحقول
Employee.Params.Assign('@ID', ID);
// تنفيذ الاستعلام
Employee.ExecSQL();
end;مثال على استخدام كود حذف سجل كود : DeleteRecord(1);ملاحظات قدمها في النهاية : يجب استبدال Employee باسم كائن الاستعلام الذي تستخدمه. يجب استبدال ID بقيمة معرف السجل الذي تريد إضافته أو تعديله أو حذفه. وفي كثير من الاحيان تحتاج الى ان تطلب تعديل بعض الاشياء فهنا مثلا لا يوجد توافق بين TBytes و image.jpg السؤال التالي كان إقتباس :هناك عدم توافق بين TBytes وبين image.jpg الاجابة كانت نعم، هناك عدم توافق بين TBytes وبين image.jpg. TBytes هو نوع بيانات يمثل تدفق بايت، بينما image.jpg هو ملف صورة. لمعالجة هذا الاختلاف، يجب عليك أولاً تحويل ملف الصورة إلى تدفق بايت. يمكنك القيام بذلك باستخدام مكتبة رسومية مثل VCL. على سبيل المثال، يمكنك استخدام الكود التالي لتحويل ملف صورة إلى تدفق بايت: كود : function ConvertToBytes(Image: TImage): TBytes;
var
MemoryStream: TMemoryStream;
begin
// إنشاء تيار بيانات
MemoryStream := TMemoryStream.Create();
// كتابة الصورة إلى تيار البيانات
Image.SaveToStream(MemoryStream);
// إغلاق تيار البيانات
MemoryStream.Close();
// إرجاع التدفق كنوع بيانات TBytes
Result := MemoryStream.Memory;
end;فاعطى كود تحويل الصورة الى بيانات ثنائية RE: الذكاء الصناعي والبرمجة - Delphi4Us - 19-11-2023 من الاجابات التي اعجبتني في موضوع استئصال وعلاج مرض وراثي رأيت دالة لاول مرة وبالتأكيد بدل من البحث في توثيق امبركاديرو السيئ سألت بارد إقتباس :ممكن شرح عن SetTextAlign في دوال ويندوز بالدلفي والجواب : بالتأكيد، SetTextAlign() هي دالة برمجية في بيئة برمجة Delphi تحدد محاذاة النص. يمكن استخدامها لضبط محاذاة النص في أي عنصر واجهة مستخدم، مثل علامة أو زر أو مربع نص. تأخذ الدالة SetTextAlign() ثلاثة معلمات:
كود : SetTextAlign(Edit1.Handle, TA_LEFT, Edit1.Text);سيؤدي هذا الكود إلى محاذاة النص في مربع النص Edit1 إلى اليسار. يمكنك أيضًا استخدام الدالة SetTextAlign() لضبط محاذاة النص في علامة. على سبيل المثال، لضبط محاذاة النص في علامة إلى الأعلى واليسار، يمكنك استخدام الكود التالي: كود : SetTextAlign(Label1.Handle, TA_LEFT | TA_TOP, Label1.Caption);سيؤدي هذا الكود إلى محاذاة النص في العلامة Label1 إلى اليسار والأعلى. فيما يلي بعض الأمثلة الأخرى لاستخدام الدالة SetTextAlign(): كود : // محاذاة النص في مربع نص إلى اليمين
SetTextAlign(Edit1.Handle, TA_RIGHT, Edit1.Text);
// محاذاة النص في مربع نص في المنتصف
SetTextAlign(Edit1.Handle, TA_CENTER, Edit1.Text);
// محاذاة النص في مربع نص إلى الأعلى
SetTextAlign(Edit1.Handle, TA_TOP, Edit1.Text);
// محاذاة النص في مربع نص إلى الأسفل
SetTextAlign(Edit1.Handle, TA_BOTTOM, Edit1.Text);
// محاذاة النص في مربع نص إلى خط الأساس
SetTextAlign(Edit1.Handle, TA_BASELINE, Edit1.Text);
// محاذاة النص في مربع نص في المنتصف رأسيًا
SetTextAlign(Edit1.Handle, TA_VCENTER, Edit1.Text);وبعدها السؤال التالي لمعرفة عمل معامل لم يقم بذكره هنا إقتباس :ماهو TA_NOUPDATECP اشرح باللغة العربية TA_NOUPDATECP هو رمز يُستخدم مع دالة SetTextAlign() في بيئة برمجة Delphi لمنع تحديث صفحة الترميز الحالية قبل رسم النص. يمكن استخدام هذا الرمز لتحسين الأداء عند رسم النص في حلقة، حيث يمكن أن يمنع تحديث صفحة الترميز بشكل غير ضروري. فيما يلي شرح أكثر تفصيلاً لرمز TA_NOUPDATECP:
كود : SetTextAlign(Canvas.Handle, TA_CENTER | TA_NOUPDATECP, Text);
|