Double Commander

2.15.سيناريو Lua

المحتوى

1. مقدمة
2. DLL المطلوبة
3. مكتبة Double Commander
3.1. DC مكتبة
3.1.1. DC.ExecuteCommand أمثلة على استخدام
3.2. مستودع النظم
3.2.1. SysUils.FileGetAttr إرجاع تفاصيل القيمة
3.2.2. SysUils.FileGetAttr مثال على استخدام
3.2.3. أمثلة ل استخدام FindFirst وFindNext وFindCose
3.3. حزمة الحافظة
3.3.1. أمثلة على استخدام مكتبة الحافظة
3.4. إطار الحوار
3.4.1. الأزرار المعروضة في Dialogs.MessageBox
3.4.2. أنماط نوافذ Dialogs.MessageBox
3.4.3. زر النشاط الافتراضي في Dialogs.MessageBox
3.4.4. Dialogs.MessageBox قيمة إرجاع
3.4.5. Dialogs.MessageBox أمثلة على استخدام
3.4.6. مثال على استخدام Dialogs.InputQuery
3.5. مكتبة UTF-8
3.6. مكتبة الأحرف
3.7. مكتبة نظم التشغيل
4. ف هرس

1.مقدمة

ل مزيد من المعلومات حول لغة البرمجة البرمجة البرمجية لوا ، يرجى زيارةموقع Lua الإلكتروني.

يمكن لـ Double Commander تنفيذ برنامج لوا النصي ب واسطة الأمرcm ExecuteScript.
يجب تمرير المعلمات النصية ك ما هي دون حاجة إلى الهروب (ب دون اقتباس أو "\") ، ل ذلك نحتاج إلى استخدام٪ "0 المتغير: على سبيل المثال ، ل استخدام الملفات تحت المؤشر%"0%p0 و ليس%p0من أجل استخدام القائمة الحالية%"0%D و ليس%D。خلاف ذلك ، إذا قام Double Commander ب إضافة علامات اقتباس تلقائيًا ، ف س يتم تمرير ها ك جزء من المعلمة ، و س يتعين علي ك التفكير في ذلك.
ل لحصول على قائمة ب جميع الملفات المحددة ، يمكن نا استخدامالمتغيرات (%LU%FU أو%RUأو الأوامر الداخلية (cm SaveSelectionToFileأوcm SaveFileDetailsToFile أوcm CopyFullNamesToClip أوcm CopyFileDetailsToClip). على سبيل المثال ، يمكن نا استخدام%pفي هذه الحالة ، يقوم Double Commander ب تمرير أسماء جميع الملفات المحددة في سطر واحد ، مع فصل الأسماء ب مسافة.

يمكن ك أيضًا كتابة المكونات الإضافية ل ل محتوى ب استخدام البرنامج النصي لوا ، و يمكن العثور على أمثلة في مجلد البرنامج(plugins/wdx/sccripts). هناك صفحة على Wiki مخصصة ل كتابة المكونات الإضافية. القيود: يدعم فقط أنواع البيانات التالية

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


فيما يتعلق ب رموز النصوص

تقبل جميع الدالات الإضافية الموضحة أدنا ه و س يطات السلسلة المشفرة UTF-8 و تُرجع السلسلة المشفرة (ب استثناء الدالةLazUtf8. ConvertEncoding).

تم استبدال بعض الدالات الموجودة في مكتبة Lua القياسية (أو تم كتابة وظائف جديدة) بدالة مزدوج Commander أو Free Pascal/Lazarus ، و التي توفر دعم UTF-8.

عند كتابة المكون الإضافي ، يجب أن نستخدم UTF-8(ft multiplechoice وftstring وftfulltext) ل ل بيانات النصية.

عند حفظ البرنامج النصي ، استخدم ترميز UTF-8 ب دون BOM.


ملاحظات

هناك إمكانية كبيرة ل لتشغيل الآلي ب استخدام Lua ، و لكن في بعض الحالات قد تحتاج إلى الانتباه إلى بعض التفاصيل.دعو نا نحاول جمع هذه الأشياء في هذا القسم الفرعي.

1.إذا تم تمكين خيارالتحديث التلقائي وتحميل قائمة الملفات في خيوط منفصلة ، س تعمل وظيفة التحديث ب شكل غير متزامن.في الوقت نفس ه ، يتم تنفيذ البرنامج النصي في الخيط الرئيسي لـ Double Commander ، ل ذلك في بعض الحالات ، قد يؤثر كل هذا على تشغيل البرنامج النصي الخاص بك.على سبيل المثال ، قد لا يعمل التنفيذ المستمر لأوامر التنقل في بعض الأحيان(على سبيل المثال ، دليل كبير ، قرص بطيئ) ، و في هذه الحالة ، حاول تعطيلتحميل قائمة الملفات في موضوع منفصل أو البحث عن حل بديل.

إذا قام البرنامج النصي الخاص بك ب إنشاء ملف جديد أو إعادة تسمية ملف موجود في اللوحة الحالية ، و لكن لم يتم إكمال و تنفيذ بعض الإجراءات الإضافية (على سبيل المثال ، تحديد ملف أو مؤشر تحريك) ، ف لن تعمل هذه الإجراءات في بعض الحالات: قد لا تكون جميع الملفات موجودة ب الفعل في اللوحة ، و س تحتاج إلى استدعاء الأمرcm Refreshأولاً.في ظل الشروط المذكورة ، س يتم تشغيلcm Refresh ب شكلغير متزامن ، و قد لا يكون لدى Double Commander وقت ل تحديث قائمة الملفات ب الكامل بعد التغييرات التي أجريت.

يعد التحديث التلقائي و تحميل قائمة الملفات في موضوع منفصل ميزة مريحة ل مدير الملفات ، ل ذلك تم العثور على طريقة عمل مستقرة من خلال التجربة ، أي إعادة التحكم إلى البرنامج مؤقتًا و السماح بقائمة الملفات ب تحديث ها ب الكامل:

DC.ExecuteCommand("cm_Refresh")
i = 10
while i > 0 do
  SysUtils.Sleep(10)
  DC.ExecuteCommand("")
  i = i - 1
end

2.دالة Luaio.open استخدام الدالة C القياسيةfopenفي وضع النص ، يمكن ل هذه الدالة تحويل نوع ذيل السطر (CRLF أو LF أو CR) أثناء القراءة و الكتابة ، م ما قد يؤدي إلى نتائج غير مقصودة.إذا واجهت ملفات ذات أنواع مختلفة من النهاية أو كنت تكتب نصاً نصياً عبر منصات ، ف يجب أن تأخذ ذلك في الاعتبار ، أو أن النهج العملي الأكثر تفضيلًا ل لوضع الثنائي.

3.في Linux و أنظمة التشغيل Unix الأخرى ، استدعاء مربع حوارخصائص الملفاتContentGetValue مع الوظيفةCONTENT_DELAYIFSLOW علامة (المعلمة الرابعة ، القيمة 1) ، و التي تتجنب التأخير عند فتح النافذة: إذا كان استرجاع البيانات بطيئاً ، يمكن نا التحقق من خلال إضافة قيمة رمز و إرجاع هذه الحقول أو المكونات الإضافية ب بساطةnil استبعاد هذه البيانات.

4.إذا كان يجب على المكون الإضافي إرجاع سلسلة فارغة ، يتم تمرير هاnil أكثر من نقل"" أسرع.

2. DLL المطلوبة

ل تكون قادرة على تفسير ملفات لوا النصية ، نحتاج إلى ملف DLL لوا ، مع دعم Double Commander الإصدار 5.1-5.4.

يمكن نا استخدام ملفات DLL منمشروع LuaJIT.يجمع LuaJIT بين مترجم عالي السرعة مكتوب مع تجميع و مترجم JIT متقدم.ب الإضافة إلى ذلك ، حصلنا على مكتبة FFI ، و التي تسمح ب استدعاء وظائف C الخارجية من رمز Lua النقي و استخدام بنية بيانات C.

يحتوي DC ل إصدار Windows ب شكل افتراضي على DLL لوا (من مشروع LuaJIT في DC 0.9.7 و الإصدارات الأحدث) و في حالات أخرى ، يمكن نا العثور علي ه و تثبيت ه من خلال مدير الحزمة أو تجميع ها ب نفس ك.إذا كنا نستخدم إصدار 64 بت من DC ، ف يجب أن يكون DLL أيضًا إصدار 64 بت.

ب شكل افتراضي ، تبحث DC عن ملفات تحتاسمlua5. 1. dll (Windows) ، أوliblua5. 1. so. 0 (Unix أو GNU/Linux) أوliblua5. 1. dylib (macOS) في دليل ها و كتالوج النظام.يمكن نا تغيير اسم الملف (و المسار) في معلماتملف مكتبة Lua التي نريد استخدام ها.

3.مكتبة Double Commander

يوفر Double Commander بعض مكتبات الوظائف ل برنامج Lua الخاص ب نا.

و فيما يلي قائمة ب هذه المكتبات.

UTF-8
قائمة المكتبة
اسمالمكتبةوصف موجز
DCDouble Commander
SysUilsمختلف وظائف النظام
Clipbrdتوفر وظيفة الحافظة الخارجية
Dialogsتفاعلات مع المستخدمين
دالة سلسلةLazUtf8
Char للحصول على معلومات الحرف
OSالدالات المتعلقة ب نظام التشغيل

3.1. DC مكتبة

تحتوي المكتبة على وظائف مزدوجة Commander.

إن ها فيDC يتم تقديم جميع الوظائف في الجدول.

DC مكتبة
اسمالوصف

DC.LogWrite(sMessage, iMsgType, bForce, blogFile)

اكتب رسالة إلى نافذة السجل:

  • sMessage: نص الرسائل.
  • iMsgType: نوع الرسالة: 0 -معلومات ، 1 -نجاح ، 2 -أخطاء.
  • bForce: قيمة البور ، إذا كانت true ، تظهر عند ما لا تكون نافذة السجل مرئية.
  • blogFile: قيمة البول ، إذا كانت true ، ف س تكتب الرسالة أيضًا في ملف السجل.

iPanel = DC.CurrentPanel ()

احصل على لوحة نشاط: قم ب إرجاع 0 إذا كانت اللوحة اليسرى نشطة ، و إلا قم ب إرجاع 1.

DC. Current Panel (iPanel)

إعداد لوحة النشاط: iPadel يساوي اللوحة اليسرى عند 0 و اللوحة اليمنى عند 1.

DC.ExecuteCommand(sCommand, Param1, Param2,..., ParamX)

هذا يسمح ل لبرنامج النصي ب استدعاءالأوامر الداخليةل لضابط Double Commander.

sCommandهو اسم الأوامر الداخلية الفعلي.

يمكن نا توفير أي عدد من البارام المدعومة ب الأوامر... (ج) البارامترات.

ب الإضافة إلى الأوامر الداخلية ، يمكن نا أيضًا استخدام الأمر الخاصcm ExecuteToolBarItemفي البرنامج النصي ، و الذي يسمح ب استدعاء زر شريط الأدوات من خلال المعرف (في البرنامج ، توفر هذه الميزة وظيفة استخدام اختصارات ل أزرار شريط الأدوات).يستخدم هذا الأمر ب طريقة مماثلة ل ل أوامر الداخلية العادية (انظر المثال أدنا ه) و يحتوي على المعلمات التالية:

البارامترات القيمة الوصف
ToolBarID TfrmOptionsToolbar زر شريط الأدوات الرئيسي
TfrmOptionsToolbarMiddle زر شريط الأدوات الوسطى
(غير موجودة) زر شريط الأدوات الرئيسية
ToolIemID الهوية معرف الزر الوحيد

المعرّف الوحيد المخزّن فيID في علامة التبويب ، لدي نا عدة طرق ل لحصول علي ها: يمكن ك العثور على زر في ملفdoublecmd. xmlأو ملف النسخ الاحتياطي ل شريط الأدوات ، أو ب بساطة نسخ الزر إلى الحافظة و لصق رمز ها في محرر النص.

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

3.1.1.أمثلة على استخدام DC.ExecuteCommand

في هذا المثال ، قمنا ب كتابة نص بسيط من شأن ه أن يقوم ب ما يلي:

  1. التركيز على الجهة اليمنى
  2. أغلق جميع علامات التبويب المفتوحة
  3. التبديل إلى مجلد محدد
  4. التركيز على اللوحة اليسرى
  5. أغلق كافة علامات التبويب المفتوحة
  6. التبديل إلى مجلد محدد
  7. افتح علامة تبويب جديدة
  8. التبديل إلى مجلد محدد
-- 1. 聚焦到右侧面板。
DC.ExecuteCommand("cm_FocusSwap", "side=right")

-- 2. 关闭所有标签页。
DC.ExecuteCommand("cm_CloseAllTabs")

-- 3. 切换到特定目录。
DC.ExecuteCommand("cm_ChangeDir", "E:\\FakeKey\\Documents\\Music")

-- 4. 聚焦到左侧面板。
DC.ExecuteCommand("cm_FocusSwap", "side=left")

-- 5. 关闭所有标签页。
DC.ExecuteCommand("cm_CloseAllTabs")

-- 6. 切换到特定目录。
DC.ExecuteCommand("cm_ChangeDir", "C:\\Users\\Public\\Music")

-- 7. 打开新标签页。
DC.ExecuteCommand("cm_NewTab")

-- 8. 切换到特定目录。
DC.ExecuteCommand("cm_ChangeDir", "E:\\VirtualMachines\\ShareFolder")

ب استخدام الأمر الداخليcm ExecuteScript ، يمكن نا تكوين زر شريط الأدوات ل تنفيذ البرامج النصية لدي نا.

ل نفترض أن هذا الملف النصي هوE:\scripts\lua\music.luaيمكن نا تكوين الزر على هذا النحو:

从工具栏调用 Lua 脚本

ب الإضافة إلى ذلك ، يمكن نا استخدام محرر Double Commander الداخلي ل تحرير النصوص.إذا كان اسم الملف موجوداً.lua الملحق ، الذي س يتعرف علي ه المحرر الداخلي و يوفر تمييزًا قواعد اللغة لغة Lua:

使用内部编辑器进行 Lua 语法高亮显示

3.2.مستودع النظم

تحتوي المكتبة على وظائف نظام مختلفة.

إن ها فيSysUtils يتم توفير جميع الوظائف في الجدول.

مستودع النظم
اسمالوصف

SysUils.Sleep(iMilliseconds)

إيقاف البرنامج النصي ل تنفيذ عدد مللي ثانية محددةمن iMilliseconds.
بعد الوقت المحدد ، س يتواصل تنفيذ البرنامج النصي.

SysUils.GetTickCount ()

إرجاع عدد الساعات المتزايدة.يمكن استخدام ه ل قياس الوقت ، و لكن لا ينبغي افتراض الفترات الفاصلة بين الدقائق.

bExists = SysUils.FileExists(sFame)

تحقق من وجود ملفات محددة في نظام الملفات.

إذا كان هناك ملفيسمىsFNameعلى القرص ، يتم إرجاع القيمة فيbExiststrueو إلا العودةfalse

bExists = SysUils.DirectoryExists(sDirectory)

تحقق م ما إذاكان sDirectoryموجودًا في نظام الملفات و أن ه دليل.

إذا كان الأمر ك ذلك ، ف س ترجع الدالة قيمة فيbExiststrueو إلا العودةfalse

iATr = SysUils.FileGetAttr(sFileFile)

إرجاع إعدادات خصائص الملفsNameفيiAtr.

ل لحصول على وصف مفصل ل قيمة الإرجاع ، يرجى الرجوعهنا.

Handle, FindData = SysUils.FindFirst(sPath)

ابحث عن الملفات التي تتطابقمعsPath ، وعادةً ما تستخدم أحرف البدل.

إذا لم يتم العثور على ملف ، ف س يقومHandlenil

عند العثور على عنصر واحد على الأقل ، يمكن استخدامHandleالعائد ل لمتابعةSysUtils.FindNext استدعاء ل لعثور على تطابقات أخرى في نفس النمط.

يحتوي جدولFindDataعلى معلومات عن ملف أو دليل تم العثور علي ه.

فيما يلي الحقول في جدولFindData:

  • الاسم: اسم الملف (ب استثناء المسار).
  • Attr: خصائص الملف (انظرهنا ل مزيد من التفاصيل).
  • Size: حجم الملف (ب البايت).
  • Time: الطابع الزمني ل ل ملفات (عدد الثوان منذ 1 يناير 1970).

Result, FindData = SysUils.FindNext(Handle)

عن طريق إعادة استخدامHandleالتي سبق إرجاع ها ، ابحث عنFindFirst بدء المطابقة التالية في سلسلة البحث.

إذا تم العثور على وثيقة أو فهرس ،ف إن النتيجةالتي يتم إرجاع ها لن تكون فارغة ، و إلا ف إنnil

معSysUtils.FindFirst و ينطبق نفس الملاحظات هنا.

ملاحظة: آخر مرةSysUtils.FindNext يجب أن تتبع دائمًا المكالمات ب استخدام نفسHandle.SysUtils.FindClose النقل.و إلا ف إن ذلك س يؤدي إلى تسرب الذاكرة.

SysUils. FindCose (Handle)

إنهاء سلسلةSysUtils.FindFirst/SysUtils.FindNext النقل.

الإفراج عن أي ذاكرة تستخدم ها هذه المكالمات.

من الضروري تماما إجراء هذه المكالمة ، و إلا ف قد يؤدي ذلك إلى تسرب الذاكرة.

bult = SysUils.CreateDirectory(sDirectory)

قم ب إنشاء سلسلة من الكتالوجات ، وsDirectory هو المسار الكامل ل لدليل.

إذاكان sDirectory موجودًا ب الفعل أو تم إنشاؤ ه ب نجاح ، ف سوف يتم إرجاع هاtrue。إذا فشل إنشاء أي جزء ، ف سوف ترجعfalse

bult = SysUils.CreateHardLink(sFile, sLinkName)

إنشاء رابط صلبsLinkName ل ملفsName.

إذا نجحوا في العودةtrueو إلا العودةfalse

bult = SysUils.CreateSymbolicLink(sFile, sLinkName)

إنشاء رابط رمزيsLinkName ل لملف أو الدليلsFile.

إذا نجحوا في العودةtrueو إلا العودةfalse

sTarget = SysUils.ReadSymbolicLink(sLinkName, bRecursive)

قراءة الرمز الرابط إلىsLinkName الهدف.

إذاكان bRecursivetrue و إذا كان الارتباط يشير إلى ارتباط آخر ، ف إن التحليل متكرر حتى يتم العثور على اسم ملف غير مرتبط صالح.

إرجاع المسار الذي يشير إلي هالرابط الرمزي sLinkName، أو إذا كان الارتباط غير صحيح أو الملف الذي يشير إلي ه غير موجود وbRecursivetrue عند إرجاع سلسلة فارغة.

sName = SysUils. ExtracFile (sFileMile)

استخراج قسم اسم الملف من اسم الملف في المسار الكامل.

يتكون اسم الملف من آخر حرف فاصل الدليل ("/"أو "\") أو جميع الأحرف بعد حرف محرك الأقراص.

sExt = SysUils. ExtctFileExt (sFileFileFile)

إرجاع امتداد اسم الملف (الآخر "..."بعد (نقطة) جميع الأحرف ، ب ما في ذلك "..."حرف).

sPath = SysUils. ExtracFilePath (sFileFile)

استخراج المسار من اسم الملف (ب ما في ذلك حرف محرك الأقراص).

يتكون المسار من جميع الأحرف التي تسبق آخر حرف فاصل الدليل ("/"أو "\") ، ب ما في ذلك الفاصل الدليل نفس ه.

sDir = SysUils.ExtracTFileDir(sFileFile)

استخراج أجزاء الدليل منsFileFileفقط ، ب ما في ذلك حرف محرك الأقراص.

اسم الدليل ليس ل ه نهاية الفصل ، و هذا معSysUtils.ExtractFilePath الاختلاف.

sDrive = SysUils. ExtracFileDrive (sFileFile)

استخراج جزء محرك الأقراص من اسم الملف.

لاحظ أن بعض أنظمة التشغيل لا تدعم أحرف محرك الأقراص.

sName = SysUils. GetAsolutePath (sFame, sBaseDirectory)

إرجاع المسار المطلق (الكامل) ل ل ملف:

  • sFame: اسم الملف مع مسار نسبي.
  • sBaseDirectory: دليل يستخدم ك دليل أساسيلـ sName.

إذا تعذر الحصول على المسار المطلق ، ف س ترجع الدالة قيمةsName.

sName = SysUils.GetRelativePath(sFile, sBaseDirectory)

إرجاع اسم الملف ب النسبة إلى الدليل المحدد:

  • sName: اسم الملف الكامل (المطلق).
  • sBaseDirectory: س يتم استخدام الدليل الأساسيلـ sName.

إذا كانsFile وsBaseDirectory يحتويان على نفس القيمة ، ف س تُرجع الدالة سلسلة فارغة ("").إذا تعذر الحصول على اسم الملف مع مسار نسبي ، ف س تُرجع الدالة قيمةsName.

bult = SysUils.MatchesMask(sFile, sMask, iMask Options)

إذا تطابقsName مع القناعsMaskالممر ، يتم إرجاع هاtrue

يتم تعيين iMaskOptions(المعلمات الاختيارية ، افتراضيا 0) إلى مجموع القيم التالية:

القيمة الوصف
1
تمييز الأحرف
2
تجاهل الرموز و الروابط
4
فلتر نمط Windows: "*"أيضًا مطابقة الملفات التي لا تحتوي على امتدادات.
8
تمكين دعم الكتابيين (س يستخدم ملفpinyin.tbl)

bult = SysUils.MatchesMaskList(sFile, smaskList, sSeparator, iMaskOptions)

إذاتطابق sFile مع واحد على الأقل من قناع التمريدsMaskList الذي يتمتفصيل ه ب و اسطةsSeparator (التي هي افتراضية"؛") ، يتم إرجاعtrue

sSeparatorوiMaskOptions (انظر أعلا ه) هي المعلمات الاختيارية.

sTempName = SysUils.GetTempName ()

س يتم إرجاع اسم ملف يستخدم كاسم ملف مؤقت (في دليل الملفات المؤقتة ل ل نظام) على غرار الدالةos.tmpname، و لكن س يتم إنشاء الملف في دليل فرعي يتم حذف ه تلقائيًا عند إيقاف تشغيل Double Commander.
إذا لم تتمكن الدالة من إنشاء اسم فريد ، ف س تُرجع سلسلة فارغة.

SysUtils.PathDelim

يستخدم نظام التشغيل الحالي ل فصل أحرف اسم الدليل في اسم الملف الكامل.

في نظام Unix/Linux ، س يكون الفاصل الدليل "/"و في Windows س يكون "\".

3.2.1. SysUils.FileGetAttr إرجاع تفاصيل القيمة

FileGetAttr إرجاع إعدادات خصائص الملفsName.

الخصائص هي مزيجORمن الثوابت التالية:

SysUils.FileGetAttr إرجاع الثوابت المستخدمة في القيم
معنىالقيمة
0x00000001
fa ReadOnly
الوثائق متاحة ل لقراءة فقط
0x0000002
faHidden
الوثائق مخفية.
في Unix/Linux ، يعني هذا أن اسم الملف يبدأ ب نقطة.
0x0000004
faSysFile
الوثائق هي وثائق نظام.
في Unix/Linux ، و هذا يعني أن الملف هو حرف أو جهاز كتلة تسمية خط الأنابيب (FIFO).
0x0000008
faVolumeId
الشمس.
يعمل فقط على أنظمة الملفات FAT العادية (غير VFAT أو FAT32) على DOS/Windows.
0x00000010
faDirectory
الوثيقة هي قائمة.
0x00000020
faArchive
و حُفظت الوثائق.
مستحيل في Unix/Linux.
0x0000400
faSymLink
الملف عبارة عن رابط رمزي.
ملاحظة: في حالة حدوث خطأ ، س يتم إرجاع-1.

يرجى الاطلاع على أمثلة فيالقسم التالي.

3.2.2. SysUils.FileGetAttr مثال على استخدام

السيناريو التالي هوSysUtils.FileGetAttr مثال على الاستخدام.

عند ما يتم اكتشاف المعلمة ك دليل ، ف إن ه يفتح علامة تبويب جديدة في لوحة النشاط و يتحول إلى الدليل.

local params = {...}
local iAttr

if #params == 1 then -- 我们至少得到了一个参数?
  iAttr = SysUtils.FileGetAttr(params[1])
  if iAttr > 0 then -- 我们得到了一个有效的属性?
    if math.floor(iAttr / 0x00000010) % 2 ~= 0 then
      -- 第4位被设置?所以它是一个目录。
      DC.ExecuteCommand("cm_NewTab")
      DC.ExecuteCommand("cm_ChangeDir", params[1])
    end
  end
end

في المثال أعلا ه ،params[1] هي المعلمة الأولى التي تمرير ها إلى البرنامج النصي.

عند استخدام الأمر الداخليcm ExecuteScript ، س تكون الوسيطة الأولى التي يتم تمرير ها بعد اسم الملف النصي.

ل ذلك ، في مثال نا ، يمكن نا تكوين زر شريط الأدوات على النحو التالي:

使用 cm_ExecuteScript 的参数

في هذا المثال ، المعلمات%"0%p و س يتم تمرير ها إلى السيناريو.يمثل هذا اسم ملف العنصر المحدد في لوحة النشاط الحالية غير المعلنة علامة اقتباس.

3.2.3.أمثلة ل استخدام FindFirst وFindNext وFindCose

في المثال النصي التالي ، س نقوم ب مسح محتوى الدليل الذي تم تلقي ه في الوسيطة و نخزن بيانات النتائج في ملف نصي ب اسم الملف الذي تم تم تمرير ه ب الوسيطة الثانية.

و هذا س يعطي نا ف هما جيدا.FindFirstFindNext وFindClose الاستخدام.

local params = {...}

if #params == 2 then -- 我们得到了两个参数?
  local Result = nil
  local hOutputFile = nil

  hOutputFile = io.output(params[2])

  local Handle, FindData = SysUtils.FindFirst(params[1] .. "\\*")
  if Handle ~= nil then
    repeat
      io.write(FindData.Name .. "\r")
      io.write(FindData.Size .. "\r")
      io.write("---------------\r")

      Result, FindData = SysUtils.FindNext(Handle)
    until Result == nil

    SysUtils.FindClose(Handle)
    io.close(hOutputFile)
  end
end

في المثال أعلا ه ، نحتاج إلى تمرير اثنين من المعلمات إلى البرنامج النصي:

  1. params[1]-دليل المحتوى الذي نريد
  2. params[2]-اسم ملف الإخراج المستخدم ل تخزين النتائج

ل ذلك ، من السهل استخدام الأمر الداخليcm ExecuteScript ل تكوين زر شريط الأدوات و تمرير المعلمات ل لقيام ب كل شيء.

使用 cm_ExecuteScript 的参数

في هذا المثال ، المعلمات%"0%Ds و س يتم تمرير ها إلى البرنامج النصي كوسيطة أولى.يمثل هذا الدليل الذي يظهر في لوحة النشاط غير المقتبسة.

3.3.حزمة الحافظة

يوفر Double Commander وظيفة الحافظة الخارجية ل لبرنامج النصي لوا.

و يبين الجدول التالي الوظائف ذات الصلة:

حزمة الحافظة
اسمالوصف

Clipbrd.Clear ()

إزالة محتوى الحافظة.

sVar = Clipbrd.GetAsText ()

احصل على محتوى النص الحالي ل لحافظة و تعيين ه إلىsVar.إذا كانت الحافظة لا تحتوي على نص ، ف س ترجع الدالة سلسلة فارغة.

Clipbrd.SetAsText(sVar)

قم ب تخزين محتوى النص منsVarفي الحافظة.

Clipbrd.SetAsHtml(sHtml)

إضافة النص ب تنسيق HTMLsHtml إلى الحافظة (CF_HTML شكل الحافظة).

س يتم إدراج هذا المحتوى في التطبيقات التي تدعم تنسيق الحافظة هذا ، مثل MS Word وWriter LO و غير ها.

الاستخدامClipbrd.SetAsText وClipbrd.SetAsHtml تخزين البيانات ب شكل صحيح.عند ما نلصق ، س يستخدم التطبيق أفضل تنسيق يدعم ه.

على سبيل المثال ، قد يكون لدي نا ما يلي:

  • Clipbrd.SetAsText("欢迎使用 Double Commander!")
  • Clipbrd.SetAsHtml("欢迎使用 <b>Double Commander</b>!")

إذا قمنا ب التبديل إلى دفتر المفكرة في محاولة ل صق شيء ما ، ف س يتم ل صق نص عادي ل نا.Clipbrd.SetAsText نسخ من الرسائل.و لكن إذا قمنا ب التبديل إلى Microsoft Word و لصق شيء ما ، ف س يتم ل صق العنصر الثاني ، الذي يظهرDouble Commanderب الخط الداكن ، ل أن Microsoft Word يتعرف على نوع محتوى الحافظة و يدعم ه.

3.3.1.أمثلة على استخدام مكتبة الحافظة

يستخدم المثال التالي ثلاث وظائف مرتبطة ب الحافظة:ClearGetAsText وSetAsText

هذا برنامج نصي طويل نسبيًا ، لكن ه يجمع ب شكل جيد بعض الوظائف التي رأيت أعلا ه.

يفترض أن لوحة النشاط لدي نا موجودة حاليًا في دليل يحتوي على العديد من الملفات النصية المصدرية.

كما يفترض أن لدي نا كلمة واحدة حاليًا في الحافظة ، و سوف يتلقى مجلد النشاط الحالي كوسيطة واحدة.

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

بعد ذلك ، س يتم وضع اسم الملف الذي يحتوي على سطر واحد على الأقل من هذه الكلمة في الحافظة.

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

ب الإضافة إلى ذلك ، في النهاية ، س نعيد الكلمات الأصلية التي نحتاج إلى البحث عن ها إلى الحافظة.

local params = {...}
local Result = nil
local iAttr
local bFound = false
local sCompleteFilename = ""
local hInputFile = nil
local sLine = ""
local iPosS
local iPosE
local sFileToSelect = ""
local sSearchString = ""

if #params == 1 then -- 我们得到了参数?
  sSearchString = Clipbrd.GetAsText() -- 获取要搜索的表达式。
  Clipbrd.Clear() -- 确保剪贴板中没有任何内容。
  DC.ExecuteCommand("cm_MarkUnmarkAll") -- 确保没有选中任何内容。

  -- 让我们逐个扫描目录中的所有文件。
  local Handle, FindData = SysUtils.FindFirst(params[1] .. "\\*")
  if Handle ~= nil then
    repeat
      sCompleteFilename = params[1] .. "\\" .. FindData.Name
      iAttr = SysUtils.FileGetAttr(sCompleteFilename)
      if iAttr > 0 then -- 我们得到了一个有效的属性?
        -- 我们需要文件,而不是目录!
        if math.floor(iAttr / 0x00000010) % 2 == 0 then

          -- 现在让我们逐行读取文件,直到结束或找到。
          hInputFile = io.open(sCompleteFilename, "r")
          bFound = false

          while bFound == false do
            sLine = hInputFile:read()
            if sLine == nil then break end
            iPosS, iPosE = string.find(sLine, sSearchString)
            if iPosS ~= nil then bFound = true end
          end

          if bFound == true then
            sFileToSelect = sFileToSelect .. FindData.Name .. "\n"
          end

          io.close(hInputFile)
        end
      end
      Result, FindData = SysUtils.FindNext(Handle)
    until Result == nil

    SysUtils.FindClose(Handle)
  end

  -- 如果我们找到了什么,就选中它!
  if sFileToSelect ~= "" then
    Clipbrd.SetAsText(sFileToSelect)
    DC.ExecuteCommand("cm_LoadSelectionFromClip")
  end

  Clipbrd.SetAsText(sSearchString) -- 恢复我们在剪贴板中的内容。
end

3.4.إطار الحوار

تسمح المكتبة ل لبرمجة النصية ب التفاعل مع المستخدمين و عرض الرسائل و المطالبات ب إدخال الإجابات و ما إلى ذلك.

و يبين الجدول التالي الوظائف ذات الصلة:

إطار الحوار
اسمالوصف

iTel = Dialogs.MessageBox(sMessage, sButton, iFlags)

عرض مربع رسالة يطلب من المستخدمين النقر على زر يتم إرجاع ه ب واسطة وظيفة:

  • sMessage:نص في مربع الرسائل.
  • s Title: عنوان مربع المعلومات.
  • iFlags: البت أو القيمة الثابتة التي تستخدم ل تحديد الأزرار المعروضة و نمط النافذة و الأزرار الافتراضية.راجع الجدول أدنا ه ل معرفةالأزرار المعروضة أونمط النافذة أوالزر الافتراضي.
  • iButton: يتم إرجاع القيمة التي تشير إلى أن المستخدم اضغط على الزر (راجعهذا الجدول).

b Result, snswer = Dialogs.InputQuery(s Title, sMessage, bMask, sDefault)

عرض مربع طلب حيث يمكن ل لمستخدم إدخال سلسلة:

  • s Title: عنوان إطار الطلب.
  • sMessage: النص الموجود في مربع الطلب.
  • bMask: قيمة البول ، تظهر "النجمة" ل إخفاء الأحرف عند true.
  • sDefault: النص المقترح افتراضيًا ، و يمكن ل لمستخدم إجراء تعديلات حسب الحاجة.
  • bResult: يتم إرجاع قيمة البول التي تشير إلى ما إذا كان المستخدم قد أدخل المحتوى ب الفعل.
  • sAnswer: يتم إرجاع السلسلة عند ما يقوم المستخدم ب إدخال المحتوى و النقر على موافق.

sItem, iItem = Dialogs.InputListBox(s Title, sessage, a Items, sDefault)

عرض مربع حوار يسمح ل لمستخدمين ب الاختيار من قائمة المشاريع:

  • s Title: عنوان مربع الحوار.
  • sMessage:نص في مربع الحوار.
  • aItems: جدول لوا حيث يجب أن يكون كل عنصر في الجدول سلسلة نصية.
  • sDefault:العناصر المحددة افتراضيًا في القائمة.
  • sItem: إرجاع العناصر المحددة ك سلسلة ، و إرجاع ها إذا تم إلغاء مربع الحوارnil
  • iItem: حدد فهرس العناصر (يبدأ العد من 1 ، وفقاً ل عادات جدول Lua).

3.4.1.الأزرار المعروضة في Dialogs.MessageBox

Dialogs.MessageBox يتم التحكم في الأزرار التي تظهر ها الدالة ب واسطة بت أو قيم الثابت التالي:

من اليسار إلى اليمين
Dialogs.MessageBox يعرض الثابت ButFlags على زر
تظهرالقيمة الثابتة زرًا
0x0000
MB OK
按钮 OK
0x0001
MB OKCANCEL
按钮 OK 按钮 CANCEL
0x0002
MB ABORTTRYIGNORE
按钮 ABORT 按钮 RETRY 按钮 IGNORE
0x0003
MB YESNOCCANCEL
按钮 YES 按钮 NO 按钮 CANCEL
0x0004
MB YESNO
按钮 YES 按钮 NO
0x0005
MB RETRYCANCEL
按钮 RETRY 按钮 CANCEL

3.4.2.أنماط نوافذ Dialogs.MessageBox

Dialogs.MessageBox يتم التحكم في نمط النافذة الذي تظهر ه الدالة ب واسطة بت أو قيم الثوابت التالية:

Dialogs.MessageBox ثابت ButFlags ل أيقونات و أنماط
نمطالنافذة الثابتة
0x0040
MB ICONINFORMATION
图标 INFORMATION نافذة المعلومات
0x0030
MB ICONWARNING
图标 WARNING نافذة التحذير
0x0020
MB ICONQUESTION
图标 QUESTION تأكيد النافذة
0x0010
MB ICONERROR
图标 ERROR نافذة خاطئة

3.4.3.زر النشاط الافتراضي في Dialogs.MessageBox

Dialogs.MessageBox يتم التحكم في زر النشاط الافتراضي الذي تظهر ه الدالة ب واسطة بت أو قيمة الثوابت التالية:

Dialogs.MessageBox الثابت ButFlags على زر افتراضي
القيمة الثابتةزر افتراضي
0x0000
FB DEUTTON1
الزر الأول على اليسار
0 x0100
FB DEUTTON2
الزر الثاني على اليسار
0x0200
FB DEUTTON3
الزر الثالث على اليسار.

3.4.4. Dialogs.MessageBox قيمة إرجاع

Dialogs.MessageBox تشير الأرقام التي تُرجع ها الدالة إلى الزر الذي يضغط علي ه المستخدم ، ك ما يلي:

Dialogs.MessageBox قيمة ButPressed التي يتم إرجاع ها عند الضغط على الزر
الضغط على الزرالثابت
0x0000
mrNone
لم يضغط على أي زر
0x0001
mrOK
结果 OK
0x0002
MRCancel
结果 CANCEL
0x0003
mrAbort
结果 ABORT
0x0004
mrRetry
结果 RETRY
0x0005
mrIgnore
结果 IGNORE
0x0006
mrYes
结果 YES
0x00007
mrNo
结果 NO

ملاحظة: إذا اضغط على "x" في الزاوية اليمنى السفلى أو اضغط علىEsc قم ب إغلاق النافذة ، ب إرجاع قيمة الزر "إلغاء".

3.4.5. Dialogs.MessageBox أمثلة ل استخدام

و فيما يلي استخدامDialogs.MessageBox البرامج النصية الصغيرة و ك ذلك النتائج التي سوف تظهر في نافذة:

-- 显示的按钮
MB_OK = 0x0000
MB_OKCANCEL = 0x0001
MB_ABORTRETRYIGNORE = 0x0002
MB_YESNOCANCEL = 0x0003
MB_YESNO = 0x0004
MB_RETRYCANCEL = 0x0005

-- 窗口样式
MB_ICONINFORMATION = 0x0040
MB_ICONWARNING = 0x0030
MB_ICONQUESTION = 0x0020
MB_ICONERROR = 0x0010

-- 默认按钮
MB_DEFBUTTON1 = 0x0000
MB_DEFBUTTON2 = 0x0100
MB_DEFBUTTON3 = 0x0200

-- 返回按下的按钮
mrNone = 0x0000
mrOK = 0x0001
mrCancel = 0x0002
mrAbort = 0x0003
mrRetry = 0x0004
mrIgnore = 0x0005
mrYes = 0x0006
mrNo = 0x0007

iFlags = MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2
iButton = Dialogs.MessageBox("您想要退出吗?", "问题", iFlags)

if iButton == mrYes then
  DC.ExecuteCommand("cm_Exit")
end

Dialogs.MessageBox 使用示例

3.4.6.مثال على استخدام Dialogs.InputQuery

و فيما يلي استخدامDialogs.InputQuery البرامج النصية الصغيرة و ك ذلك النتائج التي سوف تظهر في نافذة:

bResult, sAnswer = Dialogs.InputQuery("身份验证", "请输入您的姓名:", false, "约翰")

if bResult == true then
  Dialogs.MessageBox("您好 " .. sAnswer .. "!", "欢迎!", 0x0040)
end

Dialogs.InputQuery 使用示例

3.5.مكتبة UTF-8

توفر هذه المكتبة الدعم الأساسي ل ترميز UTF-8.

إن ها فيLazUtf8 يتم تقديم جميع الوظائف في الجدول.

مكتبة UTF-8
اسمالوصف

iResult = LazUtf8. Pos (SearchText, SourceText, Offset)

ابدأ ب البحث عن سلسلة فرعية من موقع محدد في السلسلة.البحث يميز الأحرف الكبيرة.

إرجاع المكان الذي ظهرت في ه السلسلة الفرعيةSearchText ل أول مرة فيSourceText ،و بدأ البحث منالموقعOffset

إذا لم يظهرSearchTextفيSourceText بعد

LazUtf8. Next (String)

وظيفة مكرر تقوم ب إرجاع الحرف التالي فيString فيكل مرة يتم استدعاء ها و مكان بدء الحرف (ب البايتات).

مثال:

-- 以 "位置 : 字符" 的形式打印值对
for iPos, sChar in LazUtf8.Next(String) do
  DC.LogWrite(iPos .. " : " .. sChar)
end

sult = LazUtf8. Copy (String, iIndex, iCount)

نسخ جزء من سلسلة النص.

يعيد Copy سلسلة نصية هي نسخة من حرفiCount فيString يبدأمنموقع iIndex.

إذاكان iCount أكبر من طولسلسلة String، ف س يتم اقتطاع النتيجة.إذاكان iIndex أكبر منطول سلسلة String ، يتم إرجاع سلسلة فارغة.

iResult = LazUtf8. Length (String)

إرجاع عدد أحرف UTF-8 في السلسلة.

sult = LazUtf8. UpperCase (String)

تلقي سلسلة نصية و إرجاع نسخة من السلسلة حيث تم تغيير جميع الأحرف الصغيرة إلى أحرف كبيرة.

sResult = LazUtf8. LowerCase (String)

تلقي سلسلة نصية و إرجاع نسخة من السلسلة حيث تم تغيير جميع الأحرف الكبيرة إلى أحرف صغيرة.

sult = LazUtf8. ConvertEncoding (String, FromEnc, ToEnc)

تحويل ترميزStringمنFromEnc إلىToEnc.

قائمة قيم الترميز المدعومة:

  • الترميز الافتراضي ل ل نظام (اعتماداً على إعدادات منطقة النظام):"default".
  • الترميز الافتراضي ANSI (Windows)(اعتمادا على إعدادات منطقة النظام):"ANSI".
  • الترميز الافتراضي OEM (DOS)(اعتمادا على إعدادات منطقة النظام):"oem".
  • Unicode: utf8 و utf8bom و ucs2le و ucs2be.
  • ANSI (Windows):"cp1250" ، "cp1251" ، "cp1252" ، "cp1253" ، "cp1254" ، "cp1255" ، "cp1256" ، "cp1257" ، "cp1258".
  • OEM (DOS): cp437 ، cp850 ، cp852 ، cp865 ، cp866 ، cp874 ، c932 ، cp936 ، c94950.
  • ISO 8859:"iso88591" ، "iso88592" ، "iso88593" ، "iso88594" ، "iso88595" ، "iso88597" ، "iso88599" ، "iso885910" ، "iso885913" ، "iso885914" ، "iso885915" ، "iso885916".
  • أخرى:"macintosh" ، "koi 8r" ، "koi 8u" ، "koi 8ru".
معنى الترميز الخاص (مثال).

في Windows (الإنجليزية أو الروسية):
  • "default" -CP1252 أو cp1251
  • "anssi" -cp1252 أو cp1251
  • "oem" -cp850 أو cp866
في Linux (الإنجليزية أو الروسية):
  • "default" - utf8
  • "anssi" -cp1252 أو cp1251
  • "oem" -cp850 أو cp866

sEnc = LazUtf8. DetectEncoding (String)

إرجاع قيمة الترميز ل لنص المنقول.
قائمة الرموز التي تدعم وLazUtf8.ConvertEncoding الرموز المستخدمة في الوظيفة مشابهة.

3.6.مكتبة الأحرف

تحتوي المكتبة على وظائف ل لتحقق م ما إذا كانت الأحرف تنتمي إلى فئة Unicode معينة ، فضلاً عن وظائف ل لحصول على فئات الأحرف.

قائمة ب الدالات المتاحة في المكتبة:

مكتبة الأحرف
اسمالوظيفة

iResult = Char. GetUnicodeCaracter)

عودة الحرفCharacter فئة Unicode ، واحدة من القيم التالية:

سطرًا (Zl)
وصفالقيم
  الحروف:
0حروف كبيرة (Lu)
1حروف صغيرة (Ll)
2حروف العنوان (Lt)
3الحروف التعديلية (Lm)
4حروف أخرى (Lo)
  الوسم:
5علامات غير متباعدة (Mn)
6علامات التباعد (Mc)
7علامة مغلقة (Me)
  الأرقام:
8أرقام عشرية (Nd)
9الأبجدية (Nl)
10أرقام أخرى (لا)
  علامات الترقيم:
11علامة الموصل (Pc)
12علامة علامة (Pd)
13نقطة فتح العطاءات (P)
14علامة مغلقة (Pe)
15علامة الترقيم الأولية (Pi)
16الترقيم النهائي (Pf)
17علامات أخرى (Po)
  الرمز:
18رموز الرياضيات (Sm)
19رموز العملة (Sc)
20رمز المعدل (Sk)
21رموز أخرى (So)
  الفاصل:
22فاصل المسافات (Zs)
فاصل23
24الفاصل بين الفقرات (Zp)
  مسائل أخرى:
25التحكم (C)
26الشكل (Cf)
27وكلاء (Cs)
28مخصصة (Co)
29غير موزعة

bult = Char.IsDigit(Caracter)

إذا كان حرفCharacter في فئةNd، يتم إرجاع هtrue

bult = Char.IsLetter(Caracter)

إذا كان حرفCharacter في فئةLu أوL أوLt أوLm أوLo ، فس يتم إرجاع حرف Charactertrue

bult = Char.IsLetterOrDigit(Caracter)

إذا كانت أحرفCharacterموجودة في فئةLu أوL أوLt أوLm أوLoأوNd أوNl ، فtrue

bult = Char.IsLower(Caracter)

إذا كان حرفCharacter في فئةLl، يتم إرجاع الحرفtrue

bult = Char.IsUpper(Caracter)

إذا كان حرفCharacter في فئةLu، يتم إرجاع هtrue

ب الإضافة إلى ذلك ، تدعم هذه الوظائف استخدام وسيطتين: يمكن نا تحديد مكان السلسلة و مكان الأحرف في تلك السلسلة بدلاً من الأحرف الفردية.

3.7.مكتبة نظم التشغيل

تحتوي المكتبة على وظائف مرتبطة ب نظام التشغيل الذي يعمل في ه Double Commander.

فيما يلي قائمة ب الدالات المتوفرة في المكتبة:

مكتبة نظم التشغيل
اسمالوظيفة

iResultCode = os.execute(sCommand)

س يتمتشغيل sCommand ك ما لو أدخل في سطر الأوامر ، و إرجاع رمز النتيجة ل لعملية.

يمكن أن تكونsCommand:

  • الأوامر الطرفية مثلos.execute("dir > all.txt")
  • وثائق قابلة ل لتنفيذ ، مثلos.execute("C:\\Windows\\System32\\calc.exe")
  • الوثائق القابلة ل لتنفيذ مع ب ارامترات:
    os.execute("C:\\Utils\\fsum.exe -md5 test.bin > md5.txt")

sTempName = os.tmpname ()

س يتم إرجاع اسم ملف يستخدم كاسم ملف مؤقت (في فهرس الملفات المؤقت ل ل نظام).
إذا لم تتمكن الدالة من إنشاء اسم فريد ، ف س تُرجع سلسلة فارغة.

b Result, sError, iError = os.remove(sFName)

س يتم حذف الملفات أو الدليلات التيتسمىsName.

إذا نجحت ، ف إن الوظيفة تعودtrue

إذا فشلت الدالة ، تُرجع ثلاثة أشياء:

  1. nil إظهار الفشل
  2. SErrorيصف رسالة الخطأ
  3. iErrorهو رمز الخطأ

bult, sError, iError = os.rename(sOldName, newsName)

س يتم إعادة تسميةالملف sOldNameب اسم جديدsNewName.

ملاحظة: إذا كان الملف الذي يحمل اسم NewsName موجودًا ب الفعل ، س يتم استبدال ه!

إذا نجحت ، ف إن الوظيفة تعودtrue

إذا فشلت الدالة ، تُرجع ثلاثة أشياء:

  1. nil إظهار الفشل
  2. SErrorيصف رسالة الخطأ
  3. iErrorهو رمز الخطأ

Value = os.getenv(VariableName)

س يتم إرجاعقيمةالمتغيرVariableNameالذي يتم تمرير هفي الوسيطة.
إذا لم يكن هناك متغير ل هذا الاسم ، ف س يتم إرجاع ه.nil

os.setenv(VariableName, Value)

إضافة أو تغيير متغيرات بيئةVariableName.في حالة حدوث خطأ ، ترجع الدالة-1

os.unsetenv(VariableName)

قم ب إزالة متغيرات بيئةVariableName.في حالة حدوث خطأ ، ترجع الدالة-1

4.ف هرس

DC مكتبة

DC.CurrentPanel
DC.ExecuteCommand
DC.LogWrite


مستودع النظم

SysUtils.CreateDirectory
SysUtils.CreateHardLink
SysUtils.CreateSymbolicLink
SysUtils.DirectoryExists
SysUtils.ExtractFileDir
SysUtils.ExtractFileDrive
SysUtils.ExtractFileExt
SysUtils.ExtractFileName
SysUtils.ExtractFilePath
SysUtils.FileExists
SysUtils.FileGetAttr
SysUtils.FindClose
SysUtils.FindFirst
SysUtils.FindNext
SysUtils.GetAbsolutePath
SysUtils.GetRelativePath
SysUtils.GetTempName
SysUtils.GetTickCount
SysUtils.MatchesMask
SysUtils.MatchesMaskList
SysUtils.PathDelim
SysUtils.ReadSymbolicLink
SysUtils.Sleep


حزمة الحافظة

Clipbrd.Clear
Clipbrd.GetAsText
Clipbrd.SetAsHtml
Clipbrd.SetAsText


إطار الحوار

Dialogs.InputListBox
Dialogs.InputQuery
Dialogs.MessageBox


مكتبة UTF-8

LazUtf8.ConvertEncoding
LazUtf8.Copy
LazUtf8.DetectEncoding
LazUtf8.Length
LazUtf8.LowerCase
LazUtf8.Next
LazUtf8.Pos
LazUtf8.UpperCase


مكتبة الأحرف

Char.GetUnicodeCategory
Char.IsDigit
Char.IsLetter
Char.IsLetterOrDigit
Char.IsLower
Char.IsUpper


مكتبة نظم التشغيل

os.execute
os.getenv
os.remove
os.rename
os.setenv
os.tmpname
os.unsetenv


Valid HTML 4.0 Transitional CSS Valid!