تقدم هذه المقالة بالتفصيل أسماء واستخدامات الكلمات الرئيسية المختلفة شائعة الاستخدام في دلفي للرجوع إليها في عملية البرمجة. التفاصيل هي كما يلي:
مطلق:
// يمكّنك من إنشاء متغير جديد، وعنوان البداية للمتغير هو نفس متغير آخر. var Str: string[32]; و Str Same.// بما أن الموضع 0 للسلسلة يخزن طول السلسلة، فإن قيمة StrLen هي طول السلسلة.beginStr := 'abc';Edit1.Text := IntToStr(StrLen);end;
خلاصة:
// يسمح لك بإنشاء طرق مجردة، بما في ذلك الفئات ذات الأساليب المجردة التي تسمى الفئات المجردة. // يجب استخدام الكلمة الأساسية المجردة مع الكلمات الرئيسية الافتراضية أو الديناميكية، لأنه يجب تجاوز الأساليب المجردة // لا يمكن إنشاء مثيل للفئات المجردة تحتوي على نصوص الطريقة TDemo = الإجراء المحمي الخاص بالفئة X؛ إنشاء المنشئ العام؛
و:
//1. التعبير المنطقي AND إذا كان (a>0) و(b>0) ثم //2. عند التعبير عن المنطق، يجب وضع التعبيرات حول "و" بين قوسين لتجنب تعارض الشروط. // على سبيل المثال: إذا كان a>0 و b>0 ثم // قد يفهمها المترجم على النحو التالي: if a>( 0 and b) >0 ثم // أو: إذا (a>0) و (b>0) إذن // ولكن عند التجميع فعليًا، سيولد المترجم تعارضًا ويبلغ عن خطأ. // وقد يتضمن الأول شكل a>b>c، الموجود في دلفي غير مدعومة.// لذلك يجب استخدام الأقواس عند استخدام عامل التشغيل And للتمييز بين الظروف اليسرى واليمنى.// عند التعبير عن عمليات البت، يجب أيضًا إضافة الأقواس لإحاطة معاملات And واليسار واليمين.
صفيف:
// يتم استخدام المصفوفة لتمثيل المصفوفات، ويمكن الإعلان عن أي كائن كمصفوفة. تنقسم المصفوفات إلى نوعين: ثابت وديناميكي. ، لأن عدد العناصر غير معروف في وقت الإعلان، لذلك يجب تعيين حجم المصفوفة لاحقًا باستخدام طريقة SetLength varArr2: array of Integer;// عند استخدام المصفوفة كمعلمة، حجم لا يمكن تمرير المصفوفة. يمكنك فقط تمرير اسم الصفيف، ثم استخدام أسلوب الطول للحصول على عدد العناصر في دالة الصفيف X(A: array of Integer): Integer;vari: Integer;beginResult := 0;for i := 0 to length(A)-1 doResult := Result + A[i];end;
مثل:
// كما يتم استخدامه لتحويل كائن إلى إجراء كائن آخر BtnClick(Sender:TObject);begin (Sender as TButton).Caption := 'Clicked';end;// لتحويل واجهة تعبئة الكائن، كما يجب أن يكون مستخدم (HTTPRIO as IExp).GetConnection;// بما أنه لا يمكن استخدامه لتحويل نوع البيانات، فإن الكود التالي خاطئ: vari: Integer;s: string;begins := (i as string);end;// الطريقة الصحيحة لكتابتها هي: s := string(i);
أسم:
// يتم استخدام الكلمة الأساسية Asm لإدراج رمز التجميع. عند استخدام رمز التجميع، يجب عليك استخدام البنية asm...end بدلاً من begin...end;function IntToHex(Value: Integer; Digits: Integer): string; asm CMP EDX، 32 JBE @A1 xor EDX، EDX @A1: PUSH ESI MOV ESI، ESP SUB ESP، 32 PUSH ECX MOV ECX، 16 CALL CvtInt MOV EDX, ESI POP EAX CALL System.@LStrFromPCharLen ADD ESP, 32 POP ESIend;
المجمع:
// يتم استخدام الكلمة الأساسية Assembler لدعم التجميع المبكر، مثل 80386، وما إلى ذلك. // الفرق بينها وبين Asm: يسمح Asm بتجميع Win32، بينما يسمح Assembler فقط بتجميع 80x86، ولا يسمح بوظيفة Invocation (القيمة: Int64): سلسلة؛
الآلي:
// يتم استخدام محدد الوصول الآلي لوصف العضو المكتوب تلقائيًا، والذي يمكن أن يجعل إصدار البرنامج متوافقًا مع الإصدارات السابقة // لا يمكن للأعضاء ومثيلاتهم في وحدة ComObj استخدام Automated Access specifier.type TDemo = class automist Str:WideString end; // في الإصدار التالي من البرنامج، يتم تعديل Str ويصبح typeTDemo = classautomatedStr: AnsiString;end// يمكن للإصدار الجديد من متغير Str قبول الإصدار القديم من بيانات نوع WideString، ويتم تحويله تلقائيًا إلى AnsiString.// في التطوير الفعلي، إذا لم تكن هناك حاجة خاصة، فلا يتم استخدام فاصل الوصول الآلي بشكل عام.
يبدأ:
// تُستخدم الكلمة الأساسية start للإشارة إلى بداية البرنامج أو البنية، ويجب أن تنتهي بإجراء الكلمة الأساسية end. تحتاج أيضًا إلى استخدام الكلمة الأساسية begin لتحديد نقطة البداية للبنية لـ i:=1 to 100 dobeginsum := sum + i;if sum > 1000 ثم Break;end;
قضية:
// يتم استخدام بيان الحالة لإكمال التحديد الشرطي. يجب أن يكون الكائن المحدد في بيان الحالة من النوع المرتب، بما في ذلك النوع الصحيح، ونوع التعداد، ونوع الحرف، وما إلى ذلك. // يجب إنهاء بيان الحالة بنهاية، إذا لم يكن هناك مطابقة. عنصر التحديد، وإلا يمكن إضافته لإجراء اختيار عام. GetDays(AYear,AMonth: Integer): Integer;begin case AMonth of 1,3,5,7,8,10,12: النتيجة:= 31; 4,6,9,11: النتيجة := 30;
كديكل:
//Cdecl هو نوع من اتفاقية استدعاء الوظائف، والذي ينص على القواعد التي يجب اتباعها عند استدعاء الوظائف من DLL مكتوبة بلغة C أو C++. // يمكنه تحويل أنواع البيانات في C أو C++ إلى دلفي.// على سبيل المثال Code في C++: int X(int i){ return i*2;}// تم تجميع هذه الوظيفة في Demo.dll، عند الاتصال باستخدام دلفي، يجب عليك استخدام: function 'Demo.dll';
فصل:
// يتم استخدام الكلمة الأساسية للفئة للإعلان عن فئة ما أو وراثتها، أو يمكن وراثة الفئة والواجهة في نفس الوقت. // بالإضافة إلى ذلك، يمكن أيضًا استخدام الكلمة الأساسية للفئة للإعلان عن الطرق الشائعة للفئة، بحيث يمكن يمكن للفئة الأصلية الوصول إلى أساليب الفئة الفرعية من داخل الفئة.type ClassDemo = class(TObject) public public buildor Create;// إذا تم الإعلان عن طريقة مع الفئة، فيمكن استخدام الطريقة في الفئة والفئات ذات الصلة على سبيل المثال: typeClassA = classprivatepublicprocedure Y;end;typeClassB = طريقة إجراء class(ClassA)privatepublicclass للاتصال.
ثابت:
// يتم استخدام الكلمة الأساسية Const للإعلان عن الثوابت، ولا يمكن تغيير البيانات المعلنة باستخدام const في البرنامج // ويمكن استخدامها أيضًا للإعلان عن معلمات الوظيفة = 'Delphi ';const MyInteger = 100;// عند الإعلان عن ثابت باستخدام Const، لا تحتاج إلى الإشارة إلى نوع بياناته، وسيقوم النظام تلقائيًا بتحديد النوع وإجراء التعديلات التلقائية.// يمكنك استخدام const للإعلان عن أنه غير قابل للتغيير المعلمات في دالة دالة X(const i: Integer): string;// في هذا الوقت، لا يمكن تغيير قيمة i أثناء تشغيل الوظيفة.
منشئ:
// يتم استخدام الكلمة الأساسية للمنشئ للإعلان عن مُنشئ الفصل، عند إنشاء مثيل للفئة، يتم استدعاء هذه الوظيفة أولاً. // يمكن ربط طريقة الإنشاء بطريقة CreateWnd الموجودة في class.type ClassDemo = class( TObject) public fValue: Integer public builder Create; end;constructor ClassDemo.Create;beginfValue := 0;end;
يتضمن:
// تشير الكلمة الأساسية "يحتوي على" إلى ما إذا كانت الحزمة (الحزمة) تحتوي على ملف معين. // يجب إضافة الملفات المقدمة مع "المحتوى" إلى ملف الحزمة، مما قد يؤدي إلى تجنب فقدان المراجع إلى الملفات الرئيسية. package DATAX; يحتوي على Db، DBLocal، DBXpress؛end.
تقصير:
// يتم استخدام الكلمة الأساسية الافتراضية للإشارة إلى القيمة الافتراضية للخاصية // تسمح خصائص النوع المرتبة فقط بوجود قيم افتراضية، وإلا يجب تهيئة قيمة الخاصية في المنشئ type ClassDemo = class public fValue: Integer property Value; : عدد صحيح يقرأ fValue يكتب fValue default 0;// يمكن أن يشير أيضًا إلى الخاصية الافتراضية لخاصية الفئة strings[Index: Integer]: string read GetString putString Default;
المدمر:
// يتم استخدام المدمر لتحديد المدمر، والذي يتم استدعاؤه تلقائيًا عند إصدار الفئة // يُسمح فقط بالكتابة فوق المدمر، ولا يُسمح بالتحميل الزائد class( TComponent) public destructor Destroy;override; end;// نظرًا لأن فئة TComponent تحتوي أيضًا على طريقة تدمير، فيجب إعادة كتابتها// ولكن إذا كنت تريد التحميل الزائد على المدمر، فهذا غير مسموح به : المدمرة تدمير الزائد.
تخلص:
// يتم استخدام الكلمة الأساسية DispId في واجهة DispInterface لتحديد رقم تسلسلي محدد للتكيف // في واجهة DispInterface، يجب أن يكون الرقم التسلسلي للتكيف فريدًا // إذا لم يتم تحديد DispId، فسيقوم النظام تلقائيًا بتعيين التكيف يتم إعطاء الرقم التسلسلي لكل طريقة في الواجهة // يمكنك الوصول إلى الطرق في واجهة DispInterface من خلال الرقم التسلسلي للتكيف IStringsDisp = dispinterface ['{EE05DFE2-5549-11D0-9EA9-0020AF3D82DA}'] خاصية ControlDefault[Index: Integer]: Olevariant dispid 0; function Count: Integer 1; إزالة (الفهرس: عدد صحيح 3)؛ الإجراء واضح؛ 4؛ وظيفة إضافة (العنصر: Olevariant): عدد صحيح 5؛ وظيفة _NewEnum: IUnknown؛
واجهة التوزيع:
// يتم استخدام DispInterface للإعلان عن واجهة محول محددة. يمكن لهذا المحول قبول البيانات الواردة والصادرة في واجهة النظام القياسية. // لا يمكن وراثة الواجهة المعلنة باستخدام DispInterface ويمكن الرجوع إليها فقط // تم استدعاؤه ويجب أن يكون مرتبطًا ديناميكيًا. // يمكنك استخدام DispId لتعيين رقم تسلسلي للتكيف للواجهة. // لا يمكن استخدام DispInterface إلا على نظام Windows الأساسي. بعد ذلك، سيتم حظر هذه الكلمة الرئيسية تلقائيًا بواسطة النظام. // عادةً، لا يتم استخدام DispInterface. // للحصول على أمثلة، راجع DispId
شعبة:
// يتم استخدام Div للعثور على حاصل عدد صحيح لعددين. يجب أن تكون القيمتان المستخدمتان في عملية Div أعدادًا صحيحة، وتكون نتائج العملية أيضًا أعدادًا صحيحة var a, b, c: Integer begin a := 20; ب := 3;
يفعل:
// يتم استخدام الكلمة الأساسية Do في عبارات For، while، On، With لتشكيل بنية محددة //For البيان: for i := 1 to 100 do sum:=sum+i;// بينما البيان: while i < 100 dobegin sum := sum + i; Inc(i);end;// في البيان (معالجة الاستثناء):try i := StrToInt(s); باستثناء الاستثناء do ShowMessage('Error!');end;//With بيان: مع مذكرة 1. تبدأ الخطوط بمسح ('abc');
نزولاً إلى:
// يتم استخدام الكلمة الأساسية DownTo في عبارة For للإشارة إلى انخفاض متغير الحلقة لـ i := 100 وصولاً إلى 1 doListBox1.Items.Add(IntToStr(i));// في عبارة For، يتم استخدام الكلمة الأساسية To. لزيادة متغير الحلقة، استخدم الكلمة الأساسية DownTo للتقليل.
متحرك:
// يتم استخدام الديناميكية للإعلان عن طريقة ديناميكية. // يمكن تجاوز الأساليب الديناميكية ويمكنها تقليل حجم الكود قدر الإمكان (يختلف عن Virtual).procedure X(i: Integer);
آخر:
يتم استخدام // else لتوجيه اتجاه تشغيل البرنامج. ويمكن استخدامه جنبًا إلى جنب مع عبارات If و Case و On. عندما لا يتم استيفاء الشرط، انتقل إلى عبارة else للتشغيل // If (في عبارة If ، لا يُسمح بأي نقاط قبل else No.):if a > b thenc := aelsec:=b;//بيان الحالة: case Tag Of1:Result:=1;2:Result:=2;3:Result:=3;elseResult:=0;end;//بيان التشغيل (معالجة الاستثناء):tryi := StrToInt(s);Excpeton EZeroDivide do Result: = 1;في EOverflow قم بالنتيجة := 2;elseResult := 0;end;
نهاية:
// يتم استخدام النهاية لإنهاء كتلة بيان أو وحدة. // يمكن أن تتطابق مع البداية، والحالة، والفئة، والواجهة، وAsm، والوحدة، والحزمة، وما إلى ذلك. // بالنسبة لكتل البيانات (النهاية المحلية)، يجب إضافة النهاية بعد ذلك. فاصلة منقوطة.//بالنسبة للوحدات أو الحزم (النهاية العامة)، يجب إضافة فترة بعد النهاية.//لا يُسمح بالرموز بعد النهاية قبل الكلمة الرئيسية الأخرى في عبارة If التي تبدأ بالزر 1 إذا بدأ Button1 ثم Button1.Caption := 'Hinted' else Button1.Caption := 'Not Hinted'; end;// استخدم End في الحزمة للإنهاء: الحزمة DATAX;requiresrtl,clx;contains Db, DBLocal, DBXpress;end.
يستثني:
// يتم استخدام الكلمة الأساسية باستثناء لمعالجة الاستثناءات ويجب استخدامها في عبارة المحاولة في حالة حدوث استثناء، يتم تنفيذ العبارة بعد الاستثناء Try i := StrToInt(s);except ShowMessage('Error!');end;
يصدّر:
// يشير التصدير إلى بروتوكول استدعاء الوظيفة، مما يشير إلى أنه يمكن تصدير الوظيفة، ويمكن استدعاء الوظيفة المصدرة محليًا أو عن بعد. // يمكن للبرامج الأخرى استدعاء الوظائف في البرنامج في شكل dll، وهي وظيفة متوافقة مع الإصدارات السابقة Add( a,b: Integer): Integer Export;// إذا تم تجميع هذا البرنامج كـ Demo.exe، ويحتاج برنامج آخر إلى استدعاء هذه الوظيفة، فيمكنك استخدام وظيفة العبارة التالية Add(a,b: Integer): عدد صحيح؛ "Demo.exe";
صادرات:
// يتم استخدام الصادرات لإخراج الكائنات. يجب استخدامها بين الواجهة والتنفيذ. يمكن إخراج عناصر متعددة في نفس الوقت، مفصولة بفواصل :=IntToStr(i);end;exports X(i: Integer): overload; stdcall;begin Result := IntToStr(i);end;function X(s: string): عدد صحيح; (i: عدد صحيح) الاسم 'x1'،X(s: سلسلة) الاسم 'x2'؛beginend.
خارجي:
// يتم استخدام الكلمة الأساسية الخارجية للإشارة إلى خارجي أو أسلوب داخل OBJ.{$L Demo.OBJ} الإجراء X(i:Integer);external;// إذا تمت الإشارة إليه من ملف dll أو برنامج خارجي، فيمكن استخدامه الكود التالي: function A(FileName: string): string; External 'Demo.dll';// إذا كانت الوظيفة المشار إليها مثقلة، فيجب تحديد الاسم المشار إليه بالإضافة إلى ذلك function A(Name: string): string; stdcall اسم "Demo.dll" الخارجي "A1" ؛// عند استخدام الكلمة الأساسية الخارجية، يجب الانتباه لهذه القضية، وإلا سيحدث خطأ.
بعيد:
// يشير Far إلى بروتوكول استدعاء الوظيفة، مما يشير إلى أنه يمكن استدعاء الوظيفة عن بعد // يمكن للبرامج الأخرى استدعاء الوظائف في البرنامج في شكل dll وهو متوافق مع الإصدارات السابقة functionAdd(a,b: Integer): Integer; Far ;// إذا تم تجميع هذا البرنامج في Demo.exe، ويحتاج برنامج آخر على كمبيوتر آخر إلى استدعاء هذه الوظيفة، فيمكنك استخدام العبارة التالية: function Add(a,b: Integer): Integer stdcall External "Demo.exe";
ملف:
// تشير الكلمة الأساسية للملف إلى نوع عملية الملف. يجب الإعلان عن الملف كملف // إذا تم إلحاق نوع الملف بعد الملف، فيمكن تعريف الملف لقراءة وكتابة نوع البيانات المحدد. PName: سلسلة [32]؛ الصفحة: عدد صحيح؛ var PFile: ملف TPerson؛
وضع اللمسات الأخيرة:
// تحدد الكلمة الأساسية للإنهاء الطريقة التي سيتم استدعاؤها عند إصدار الوحدة // عادةً ما تقوم بتحرير كائنات في الوحدة لا يمكن تحريرها تلقائيًا // الحالة الأكثر استخدامًا للإنهاء هي de - تهيئة كائنات OLE ActiveX.OleInitialize(nil);finalization ActiveX.OleUninitialize;
أخيراً:
// تشير الكلمة الأساسية أخيرًا إلى الطريقة الأخيرة التي يجب استدعاؤها في معالجة الاستثناءات // بغض النظر عما إذا حدث استثناء، فسيتم دائمًا تنفيذ العبارة التالية في نهاية عبارة المحاولة Try Node := Node.GetNext; .Text := Node.Text;أخيرًا Node := nil;end;
ل:
// تؤدي الكلمة الرئيسية إلى بنية الحلقة For، والتي يتم استخدامها لتنفيذ عدد محدد من الحلقات for i := 1 to 100 dosum := sum + i;// إذا تم تقليل متغير الحلقة، يمكنك استخدام الكلمة الأساسية DownTo لـ i: = 100 وصولاً إلى 1 do Inc(sum);
إلى الأمام:
// يتم استخدام الكلمة الأساسية للأمام للتعريف الأمامي للطرق. قم فقط بتحديد إعلان الطريقة، ثم قم بتنفيذ الطريقة لاحقًا في البرنامج. // وهذا مفيد لسهولة قراءة التعليمات البرمجية، ويمكن تجميع جميع الإعلانات معًا ضع جميع التطبيقات معًا. الدالة X(i: Integer): Integer; Y;beginWriteLn(s);end;// لا تحتاج الطرق المعلنة مسبقًا إلى إدخال المعلمات وإرجاع قيم الطريقة عند تنفيذها، فقط استخدم اسم الطريقة مباشرة.
وظيفة:
// تُستخدم الوظيفة للإعلان عن وظيفة الوظائف، بالنسبة لاسم الوظيفة، ما عليك سوى الإشارة إلى المعلمات ونوع الإرجاع، ويمكن ربط اسم الوظيفة المحدد لاحقًا.
انتقل إلى:
// يتم استخدام عبارة Goto للانتقال إلى رقم السطر، والذي يمكن أن ينتقل إلى أي موضع في طبقة البنية الحالية // يجب الإعلان عن رقم السطر باستخدام الكلمة الأساسية للتسمية في الإعلان // نظرًا لأن عبارة Goto ستدمر بنية البرنامج، لا ينصح باستخدامه .var a,b: Integer;label X,Y;ابدأ إذا a > b ثم انتقل إلى X وإلا انتقل إلى Y;X: WriteLn('a > b'); Y: WriteLn('b > a');end;
لو:
// إذا أدت الكلمة الأساسية إلى عبارة If الشرطية، والتي تُستخدم للحكم على الحالة. var a,b: Integer;begin a := 2; if a>b ثم WriteLn('a=' + IntToStr( a )) else WriteLn('b=' + IntToStr(b));end;// البنية المعتادة لعبارة If هي If...ثم...else، وعبارة else اختيارية.//إذا كان هناك هو أي في بيان إذا عبارات فرعية متعددة، ثم يجب عليك استخدام بنية البدء...النهاية للتمييز إذا كانت a > b ثم تبدأ WriteLn('a>b'); ب) );Endelse WriteLn('b>a');
تطبيق:
// يحدد التنفيذ جزء التنفيذ من الوحدة. الهيكل الأساسي للوحدة هو: //Unit...Interface...implementation...end.// يجب كتابة نص الوظيفة ونص العملية وما إلى ذلك بعد الكلمة الأساسية للتنفيذ./ / إذا تمت الإشارة إلى الكائن بعد التنفيذ، يكون الكائن غير عام ولا يمكن استخدامه إلا بواسطة الوحدة نفسها. يستخدم التنفيذ frmAbout;begin FormAbout.Show;end;// يجب أن يكون للوحدة الكاملة تطبيق. جزء.
تنفذ:
// تشير التطبيقات إلى أن الخاصية موروثة من الواجهة، ويتم تحويل الخاصية إلى كائن واجهة. نهاية TMyImplclass = إجراء الفئة P2؛ TMyclass = class(TInterfacedObject, IMyInterface) FMyImplClass: خاصية TMyImplClass: قراءة TMyImplclass FMyImplclass بتنفيذ IMyInterface; الإجراء IMyInterface.P1 = MyP1; الإجراء MyP1; end;// بعد الإعلان من خلال التطبيقات، يمكنك الإشارة إلى كيان الطريقة في الواجهة عند الإعلان عن الفئة، كما في المثال أعلاه: الإجراء IMyInterface. P1 = MyP1؛
في:
// يُستخدم لتحديد ما إذا كانت المجموعة تحتوي على عنصر أم لا. يجب أن يكون المحتوى الذي سيتم تحديده عبارة عن عنصر مجموعة واحد ومثيل لمجموعة من النوع TCol = (cA,cB,cC); Cols: TCols;begin Cols := [cA,cB]; إذا كان cA في Cols ثم ShowMessage('cA in Cols') else ShowMessage('cA not in Cols');end;// يُستخدم In أيضًا في ملفات المشروع، يُستخدم لتحديد ما إذا كان المشروع قد تمت الإشارة إليه أم لا. يستخدم Unit1 في 'Unit1.pas'؛ // يمكن استخدامه في عبارة For لتكرار العناصر في المجموعة. .. for s In sl do begin ShowMessage(s); end;
فِهرِس:
// يتم استخدام الفهرس لتحديد الرقم التسلسلي في السمة بحيث يمكن استخدام نفس طريقة السمة (Get، Set) لتشغيل سمات مختلفة type TForm1 = class(TForm) وظيفة خاصة GetInfo(const Index: Integer): Longint ؛ الإجراء SetInfo (مؤشر const: عدد صحيح؛ قيمة const: Longint الملكية العامة iLeft: مؤشر Longint 0 قراءة GetInfo خاصية iTop: Longint Index 1). GetInfo يكتب SetInfo؛ خاصية iWidth: مؤشر Longint 2 يقرأ GetInfo يكتب SetInfo؛ الخاصية iHeight: مؤشر Longint 3 يقرأ GetInfo يكتب SetInfo؛ وظيفة TForm1.GetInfo(const Index: Integer): Longint؛ self.Left 1: النتيجة := self.Top 2: النتيجة := self.Width 3: النتيجة := self.Height; end;end;// تُستخدم الكلمة الأساسية للفهرس أيضًا للإشارة إلى عناصر متعددة في الخصائص، على سبيل المثال: الخاصية Selected[Index: Integer]: قراءة منطقية GetSelected write SetSelected;
ورثت:
// يتم استخدام الموروث لاستدعاء طريقة الفئة الأصلية. نوع TDemo = class(TComponent) public buildor Create(AOwner: TComponent); end;constructor TDemo.Create(AOwner: TComponent);begin inherited Create(AOwner);end // إذا كنت تستدعي طريقة بنفس الاسم، فيمكنك أيضًا حذف اسم الطريقة ومعلماتها، على سبيل المثال، الموروثة في المثال أعلاه Create(AOwner);// يمكن تغييره إلى:موروثة;
التهيئة:
// تحدد الكلمة الأساسية للتهيئة الطريقة التي سيتم استدعاؤها عند تحميل الوحدة // يتم استخدامها عادةً لتهيئة بعض الكائنات التي لا يمكن تهيئتها تلقائيًا، ولكنها لا تحتاج إلى استخدامها // الحالة الأكثر استخدامًا التهيئة هي تهيئة كائنات OLE ActiveX OleInitialize(nil);finalization ActiveX.OleUninitialize;
مضمنة:
// يتم استخدام الكلمة الأساسية InLine في بنية Asm أو المجمّع، // يتم استخدامها للإشارة إلى أن بيان التجميع متوافق مع الأسفل وليس له أي تأثير على تجميع البرنامج IntToStr(Value: Integer): string; asm InLine، PUSH ESI MOV ESI، ESP SUB ESP، 16 xor ECX، ECX PUSH EDX xor EDX، EDX CALL CvtInt MOV EDX، ESI POP EAX CALL؛ System.@LStrFromPCharLen ADD ESP, 16 POP ESIend;
واجهة:
// تحدد الواجهة جزء الواجهة في الوحدة. الهيكل الأساسي للوحدة هو: //Unit...Interface...implementation...end.//يجب كتابة إعلانات الوظائف والإجراءات وما إلى ذلك بعد Interface الكلمة الأساسية./ / إذا تمت الإشارة إلى الكائن بعد الواجهة، فلن يكون للكائن مثيل ويجب إنشاء مثيل له عند استخدامه. تستخدم الواجهة frmAbout;var FAbout: TFormAbout;begin FAbout := TFormAbout.Create(Self); FAbout.Show;end;// يجب أن تحتوي الوحدة الكاملة على جزء واجهة.// يمكن أيضًا استخدام الواجهة كإعلان عن واجهة. نوع IMalloc = واجهة (IInterface) ['{00000002-0000-0000-C000-000000000046 }'] وظيفة Alloc(الحجم: عدد صحيح): المؤشر stdcall؛ عدد صحيح): إجراء استدعاء قياسي مجاني (P: مؤشر)؛ وظيفة GetSize(P: مؤشر): عدد صحيح؛
يكون:
// يتم استخدام الكلمة الأساسية للحكم على الكائنات، في بعض الحالات، يمكن استخدامها أيضًا كـ "As".var Comp: TComponent;begin ... إذا كان Comp هو TEdit، (Comp as TEdit).Text := 'Edit ' ؛نهاية؛
ملصق:
يتم استخدام الكلمة الأساسية //label للإعلان عن تسمية رقم السطر بحيث يمكن استخدام Goto للتوجيه، ولا يوصى باستخدامها.var a,b: Integer;label X,Y;begin if a > b ثم goto X else goto. Y;X: WriteLn( 'a>b');Y: WriteLn('b>a');end;
مكتبة:
// تُستخدم الكلمة الأساسية للمكتبة للإشارة إلى أن المشروع عبارة عن مكتبة فئة. تقوم مكتبة الفصل بإنشاء ملف DLL بعد التجميع، والذي يمكن استدعاؤه بواسطة برامج أخرى تم الاسم، إدراج اسم إدراج نص، اسم حذف التحديد، حذف، تنسيق التحديد، اسم طباعة تحديد الطباعة، SetErrorHandler؛ بدء InitLibrary؛ نهاية.
رسالة:
// يتم استخدام الكلمة الأساسية للرسالة للإعلان عن طرق الرسالة. // يجب أن تشير الطريقة مع الرسالة إلى نوع الرسالة المستلمة وتمرير الرسالة إلى الطريقة حسب المرجع للمعالجة.procedure Refresh(var Msg: TMessageRecordtype); messageID_REFRESH; Refresh(var Msg: TMessageRecordtype);beginif Chr(Msg.Code) = #13 ثم...elseinherited;end;// يمكن للمستخدمين تخصيص الرسائل، يمكن أيضًا استلام الرسائل المخصصة عن طريق أحداث الرسائل وتشغيلها.
تعديل:
// يتم استخدام Mod للعثور على المعامل الصحيح لعددين، أي الباقي. يجب أن تكون القيمتان المستخدمتان في عملية Mod أعدادًا صحيحة، ويجب أن تكون نتائج العمليات أيضًا أعدادًا صحيحة , b, c: عدد صحيح يبدأ أ := 20;
اسم:
// يتم استخدام الكلمة الأساسية "الاسم" للإشارة إلى الاسم المستعار للطريقة // للإشارة إلى الطريقة خارجيًا، يوصى باستخدام الاسم لتقديم طلب للحصول على اسم مستعار للطريقة لمنع البرامج الخارجية من تغيير محتوى كيان الطريقة. // عند الإشارة إلى طريقة من الخارج، إذا كانت الطريقة تحتوي على اسم مستعار، فيجب تحديدها بواسطة وظيفة Name.MessageBox(HWnd: Integer; Text, Caption: PChar; Flags: Integer): Integer External 'user32; اسم .dll "MessageBoxA" ؛
قريب:
// يشير بالقرب إلى بروتوكول استدعاء الوظيفة، مما يشير إلى أنه يمكن استدعاء الوظيفة محليًا // يمكن للبرامج الأخرى استدعاء الوظائف في البرنامج في شكل dll، وهو متوافق مع الإصدارات السابقة function Add(a,b: Integer): Integer near;// إذا تم تجميع هذا البرنامج في Demo.exe، ويحتاج برنامج محلي آخر إلى استدعاء هذه الوظيفة، فيمكنك استخدام العبارة التالية: function Add(a,b: Integer): Integer stdcall; "Demo.exe";
لا شيء:
// يُستخدم Nil لتمثيل مؤشر فارغ أو كائن بدون مثيل بينما Node <> nil dobegin ListBox1.Items.Add(Node.Text);= Node.GetNext;end;
العقدة الافتراضية:
// تشير الكلمة الأساسية NoDefault إلى أن الخاصية لا تسمح بالقيمة الافتراضية، والتي تُستخدم عادةً في الميراث. type TClassA = class public fValue: Integer property Value: Integer read fValue default 0; TClassA ) قيمة الخاصية المنشورة: عدد صحيح يقرأ fValue يكتب fValue nodefault end;// كما يتبين من المثال أعلاه، القيمة الافتراضية في TClassA هي 0، // يرث TClassB TClassA، لذلك يرث أيضًا قيمته الافتراضية. استخدم NoDefault لإزالة القيمة الافتراضية هنا.
لا:
// لا يتم استخدامه للنفي، فهو يلغي النتيجة الأصلية على سبيل المثال: إذا كانت a > b إذن// يمكن كتابتها على النحو التالي: إذا لم تكن (a < b) إذن// عادةً ما يتم استخدام الكلمة الأساسية Not لتبديل القيمة المنطقية. إجراء السمة Button1Click (Sender: TObject);begin StatusBar1.Visible := not StatusBar1.Visible;end;
هدف:
// يتم استخدام الكائن للإعلان عن كائن. يمكن أن يكون هذا الكائن عشوائيًا ومتوافقًا مع الإصدارات السابقة. لا يمكن وراثة الكائن إلا عن طريق Object Object end; ) ل object;// يمكن ربط الوظيفة أو الإجراء المعلن بواسطة الكائن ديناميكيًا بجسم الوظيفة المحدد، أو ربطه بحدث التحكم.
ل:
// يتم استخدام المفتاح لتشكيل بنية محددة مع كلمات رئيسية أخرى. يمكن استخدام Of مع الحالة، الفئة، المصفوفة، الملف، المجموعة، الكائن : النتيجة := 'b';end;// بيان الفئة: اكتب TDemo = فئة TComponent;// بنية الصفيف: var MyInt: صفيف عدد صحيح;// بنية الملف: var MyFile: ملف of Byte;// بيان المجموعة: اكتب TCol = (cA,cB,cC);
على:
// يتم استخدام الكلمة الأساسية لمعالجة الاستثناءات والإشارة إلى الاستثناء الذي حدث والحصول على معلومات الاستثناء حاول i := StrToInt(s); باستثناء E: Exception do ShowMessage(E.Message);end;
أو:
//1. Express منطقي أو إذا (a>0) أو (b>0) ثم//2. عند التعبير عن المنطق، يجب وضع التعبيرات حول Or بين قوسين لتجنب التعارض مع الشروط // إذا كنت تستخدم Or في عبارة شرطية، فلن يعرف المحرر ما يفعله المستخدم بـ Or، على سبيل المثال: إذا كان a>0 أو ب>0 ثم// قد يفهمها المترجم على النحو التالي: إذا كان a>(0 أو b)>0 ثم//أو إذا كان (a>0) أو (b>0) إذن// ولكن عند التجميع فعليًا، سيولد المترجم تعارضًا ، أبلغ عن خطأ // وقد يحتوي الأول على النموذج a>b>c، وهو غير مدعوم في دلفي // لذا يجب عليك استخدام الأقواس عند استخدام عامل التشغيل Or للتمييز بين الشرطين الأيسر والأيمن. // يشير إلى البت العمليات يجب أيضًا إضافة الأقواس عندما أرفق Or والمعلمات اليمنى واليسرى.
خارج:
// تصف الكلمة الأساسية طريقة الإخراج لمعلمات الطريقة. يمكن أن يكون للوظيفة العامة قيمة إرجاع واحدة فقط // استخدم Out لإرجاع نتائج متعددة في دالة تقوم بإرجاع المعلمات، وvar هو عنوان الإجراء الذي يتم إدخاله مباشرة TForm1.Button1Click(Sender: TObject);var i: Integer;
الزائد:
// تشير الكلمة الأساسية للتحميل الزائد إلى الطريقة المستخدمة للتحميل الزائد. ويعني التحميل الزائد أن اسم الطريقة هو نفسه، // لكن عدد المعلمات أو نوعها أو ترتيبها مختلف، إذا تم استيفاء هذا الشرط، فإنها تشكل دالة تحميل زائد X(. i: Integer): string; overload;function يجب استيفاء متطلبات التحميل الزائد. نوع TDemo = class(TComponent) الإجراء العام CreateWnd(AOwner: TWinControl overload;// كما في المثال أعلاه، الطريقة التي تملكها الفئة الفرعية هي: الإجراء CreateWnd {Inherited fromparent class}procedure CreateWnd(AOwner: TWinControl); {إعلان الفئة الفرعية }// هناك طريقتان لـ CreateWnd.// إذا لم يتم استخدام التحميل الزائد، فيمكن تجاوز طريقة الفئة الأصلية في الفئة الفرعية.
تجاوز:
// يتم استخدام التجاوز لتجاوز الطريقة الافتراضية أو الديناميكية. // عند التجاوز، يجب استخدام إعلان الطريقة المتجاوزة، ولا يُسمح بتعديل المعلمات ونوع الإرجاع للطريقة الأصلية Create(AOwner: TComponent);// يتم استخدام التجاوز في الغالب للميراث، وذلك باستخدام الفئات الفرعية لتجاوز أساليب الفئة الأصلية. // كما في المثال أعلاه، الطريقة التي تملكها الفئة الفرعية هي: الإجراء X {تم تجاوزه من الفئة الأصلية}// الطريقة التي تملكها الفئة الأصلية هي: بيان الإجراء، // أو إذا كانت هناك حاجة لتعديل المعلمات، فيجب تجاوزها باستخدام إعادة تقديم الكلمة الرئيسية.
طَرد:
// تُستخدم الكلمة الأساسية للحزمة للإشارة إلى أن المشروع عبارة عن مكتبة تحكم. // تقوم مكتبة التحكم بإنشاء ملف BPL بعد التجميع، والذي يمكن تثبيته في مكتبة تحكم دلفي بحيث يمكن استخدام عنصر التحكم في التطوير المستقبلي لحزمة DATAX ؛ يتطلب rtl، clx ؛ يحتوي على MyUnit في 'C:/MyProject/MyUnit.pas';end.
معبأة:
// يتم استخدام الكلمة الأساسية المعبأة لتعبئة سجلات البنية أو المصفوفات، ويمكن تقليل حجم الكائن المعبأ بشكل كبير. type TPerson =packed Record PName: string[32]; بيشار؛
باسكال:
// يشير Pascal إلى بروتوكول استدعاء الوظيفة، // يشير إلى أن الوظيفة تتبع Pascal عند الاتصال، أي تهيئة جميع المتغيرات أولاً، // يتجنب الأخطاء الناجمة عن استدعاءات الخيط غير المتزامنة، وهي وظيفة X (i: Integer ): عدد صحيح؛ نتيجة البداية := i * 2;end;
خاص:
// يشير "خاص" إلى أذونات تمايز الوصول للعناصر داخل الفئة. لا يمكن الوصول إلى العناصر المميزة بـ "خاص" إلا داخل هذه الفئة.
إجراء:
// يتم استخدام الإجراء للإعلان عن إجراء الإجراء، ما عليك سوى الإشارة إلى المعلمات، ويمكن ربط اسم الإجراء المحدد لاحقًا.
برنامج:
// تُستخدم الكلمة الأساسية للبرنامج للإشارة إلى أن المشروع هو تطبيق. يتم إنشاء ملف exe بعد تجميع مكتبة التحكم، ويمكن تنفيذ البرنامج مباشرةً Project1;uses Forms, Unit1 في 'Unit1.pas';{$R *.res} application.initialize ؛
ملكية:
//يتم استخدام الكلمة الرئيسية للعلامة على خصائص وخصائص صريحة. : integr intear (المرسل: كائن).
محمية:
// يشير المحمية إلى أذونات الوصول للعناصر داخل الفصل.
عام:
// يشير الجمهور إلى أذونات تمايز الوصول للعناصر داخل الفصل.
تم النشر:
// المنشورة تشير إلى أذونات الوصول للعناصر داخل الفصل. عارض الكائن.
يرفع:
// يتم استخدام بيان الارتفاع لرمي الاستثناءات. : string ؛ ابدأ إذا كنت <0 ثم ارفع استثناءً ('integer لا يمكن أن يكون أصغر من 0') ؛ strtoint (s) ؛ باستثناء e: استثناء لا يرفع استثناء. إنشاء (e.message) ؛ النهاية ؛
يقرأ:
// تُستخدم القراءة لتحديد العضو أو الأسلوب المستخدمة لقراءة الممتلكات.
قراءة:
// يتم استخدام الكلمة الرئيسية للقراءة لتحديد ما إذا كان الكائن هو القراءة فقط.
سِجِلّ:
// يتم استخدام الكلمة الرئيسية لإعلان سجل الهيكل ؛ نهاية ؛
يسجل:
// يسجل بروتوكول استدعاء الوظيفة ، مما يشير إلى أن الوظيفة يمكن أن تتركها في السجل. سجل عناصر التحكم أو أدوات الخبراء مع مكتبة التحكم أو IDE.Procedure Register ؛ ابدأ التسجيل ("العينة" ، [TDEMO]) ؛ النهاية ؛
إعادة الإدخال:
// يتم استخدام إعادة النشر لإعادة نشر الأساليب ، عادة عند الوراثة. . عدد صحيح) ؛
يكرر:
//يتم استخدام الكلمة الرئيسية لإدخال بنية حلقة التكرار SUM: = SUM + I ؛
يتطلب:
// تشير الكلمة الرئيسية إلى الشروط اللازمة لتجميع الحزمة.
الموارد:
//يتم استخدام Resourcestring لإعلان سلاسل الموارد ، والتي يمكن استخدامها داخل الهيكل المعلن "Borland Rocks" ؛
Safecall:
// Safecall هو نوع من اتفاقية استدعاء الوظائف ، والتي تنص على القواعد التي تسمى COM يجب أن تلتزم بها. ؛
تعيين:
// يتم استخدام الكلمة الرئيسية لإعلان فئة التجميع ، والتي تسمح باستخدام مشغلات مجموعة ، وما إلى ذلك. أثناء التشغيل لإضافة أو حذف عنصر تجميع VAR COLS: TCOLs ؛ ابدأ COLS: = Cols + [CA ، CB] ؛ END ؛
SHL:
// SHL يعني الانتقال إلى اليسار.
SHR:
// يعني التحول إلى اليمين.
stdcall:
// STDCALL هو نوع من اتفاقية استدعاء الوظائف ، والتي تنص على القواعد التي يمكن أن يطلق عليها البرنامج وظيفة الاتصال Callee: وظيفة مكتبة X (I: Integer) عدد صحيح): عدد صحيح ؛
تخزين:
// يتم استخدامه للإشارة إلى ما إذا كان يمكن تحديد قيمة الخاصية.
خيط:
// String هو نوع بيانات ، يمثل string.var str: string ؛
ثم:
// يتم استخدام الكلمة الرئيسية في البيان IF. )؛ نهاية؛
ThreadVar:
// threadvar يحدد متغيرًا تم إنشاؤه عند بدء تشغيل الخيط. '' ؛ // s: = '' ؛
ل:
// يتم استخدام الكلمة الرئيسية في البيان للإشارة إلى أن متغير الحلقة قد تم زيادة تستخدم لزيادة الكلمات المتغيرة حلقة ، استخدم الكلمة الرئيسية للانخفاض.
يحاول:
//يتم استخدام بيان المحاولة للتعامل مع الاستثناءات التي قد تسبب استثناءات تحت بنية المحاولة لتوفير حماية الاستثناء.
يكتب:
// يتم استخدام الكلمة الرئيسية لإعلان الكائنات المختلفة. CA ، CB ، CC) ؛
وحدة:
// تحدد الوحدة بداية الوحدة. بداية.
حتى:
//يتم استخدام الكلمة الرئيسية لتحديد حالة حلقة التكرار. = sum + i ؛
الاستخدامات:
//يستخدم الاستخدامات للرجوع إلى وحدة خارجية ويمكن استخدامها عادةً في واجهة.
var:
/يتم استخدام الكلمة الرئيسية VAR لإعلان متغير أو كائن ، ويتم إقرار المتغير مع VAR. (var i: integer): integer ؛ // يتم تمرير المعلمة i في الوظيفة أعلاه بالرجوع إليها ، ويمكن تغيير قيمتها عند تنفيذ الوظيفة وإعادتها إلى وظيفة الاتصال.
فارارجس:
/ الكود من مكتبة فئة C ++ ، تتم الرجوع إلى وظيفة printf ويسمح للمعلمات بتمريرها بالرجوع إليها.
افتراضي:
// يتم استخدام Virtual لإعلان طريقة افتراضية.
بينما:
//يتم استخدام الكلمة الرئيسية لإدخال بيان الحلقة. INC (I) ؛ END ؛
مع:
//مع الكلمة الرئيسية ، يمكن أن يتجهز الكائنات نفسها للمعالجة. إلحاق (def ') ؛ يبدو من الضروري جدًا نسخ المحتوى إلى رمز الحافظة: form1.memo1.lines.clear ؛ form1.memo1.lines.append ('abc') ؛ form1.memo1.lines.append ('def') ؛ form1.memo1. lines.savetofile ('c: /demo.txt') ؛
يكتب:
//يتم استخدام الكتابة لتحديد العضو المستخدم في الممتلكات.
اكتب فقط:
// يتم استخدام الكلمة الرئيسية للكتابة لتحديد ما إذا كان الكائن هو الكتابة فقط.
xor:
// يتم استخدام XOR للحصرية أو A XOR B ثم Writeln ('a xor b') else orteln ('a not xor b') ؛ end ؛ // xor يستخدم أيضًا لحساب الكتاب الحصري أو القيمة (inttostr (3 xor 5)) ؛