وثائق HotXLS / مرجع API

تخزين الملفات المركبة

يقرأ lxCompoundFile حاويات Compound File Binary ويكتبها عبر تدفقات Pascal، بما يشمل نطاقات التخزين المتداخلة وحمولات MiniFAT وقطاعات DIFAT المتسلسلة؛ وتستخدم واجهات مصنفات Classic BIFF8 الأصلية هذا الـ backend على Linux وmacOS

استخدم استدعاءات Open وSaveAs العادية للمصنف في عمل جداول البيانات؛ أما واجهات المستوى الأدنى أدناه فمفيدة لفحص التدفقات المتداخلة وبناء الحاويات وحفظ بيانات التخزين الوصفية

قراءة حاوية أو بناؤها

يحمّل TlxCompoundFile.LoadFromStream(AStream, AOwnsStream) بيانات الدليل والتخصيص الوصفية؛ وافتراضي AOwnsStream هو False، ويجب أن يظل التيار الداعم متاحًا أثناء استخراج محتوياته

يهيئ CreateNew(AStream, AOwnsStream) حاوية جديدة، وتضع AddStorage وAddStream محتوياتها في الطابور، وتكتب Save حاوية إصدار 3 مع قطاعات امتداد DIFAT المطلوبة

العضوالسلوك
RootIndexهوية مدخل الدليل الجذر، وتُستخدم أصلًا للتخزين والتدفقات العليا
AddStorage(Name, ParentIndex)يضع تخزينًا متداخلًا في الطابور ويعيد هويته الدليلية لإضافة أبناء إليه
AddStream(Name, Data)يضع تدفق بايتات على المستوى الجذري في الطابور
AddStream(Name, Data, ParentIndex)يضع تدفق بايتات في نطاق الأصل المختار في الطابور ويعيد هويته
OpenStream(Name), OpenStream(Name, ParentIndex)يستخرجان تدفقًا جذريًا أو مُنطَّقًا إلى TlxCfbStream مملوك؛ والتدفق المفقود يعيد nil
OpenEntryStream(Index)يستخرج تدفق دليلًا بالهوية؛ والمدخل غير الصالح أو غير التدفقي يعيد nil
HasStream(Name), HasStream(Name, ParentIndex)يختبران وجود التدفق في الجذر أو في نطاق الأصل المختار
FindStorage(Name, ParentIndex)يعيد هوية تخزين في الأصل المختار، أو ‎-1 عندما لا يوجد تخزين مطابق
EntryCount, Entries(Index)يفحصان مدخلات الدليل المحمّلة؛ والفهارس مبنية على الصفر ويجب أن تكون صالحة
SetEntryMetadata(Index, Entry)ينسخ معرّف الفئة وبتات الحالة والطوابع الزمنية فقط إلى مدخل أو جذر صالح في الطابور؛ وتبقى الهويات البنيوية والحمولات دون تغيير

يعرض السجل TlxCfbEntry‏ Name وEntryType وStartSector وSize وLeftSibling وRightSibling وChild وParentIndex المشتق؛ وروابط الدليل فهارس، وقيمة ‎-1 تعني هوية غائبة

حقوله الوصفية هي ClassID وStateBits وCreationTime وModificationTime؛ وتحفظ الطوابع الزمنية ندّات FILETIME الخام من حقبة 1601 UTC بدلًا من تاريخ منسق وفق الإعدادات المحلية

يشمل TlxCfbEntryType‏ cfbEmpty وcfbStorage وcfbStream وcfbRoot؛ ويعرض TlxCfbStream‏ Name وSize وData وRead وSeek وCopyTo

التدفقات المستخرجة تملك بايتات منفصلة ويجب أن يحررها المستدعي؛ والتلف والسلاسل الناقصة والملكية غير الصالحة ورسوم الدليل أو التخصيص الدورية تُرفض بدلًا من إرجاع حمولات مبتورة

يطبق lxCfbCompareNames(A, B) ترتيب Compound File Binary بطولٍ أولاً مع تعيين أحرف كبيرة BMP بسيط مثبَّت؛ وأسماء النسخ المكررة مُنطَّقة بأصلها، والأسماء المتطابقة في مخازن متداخلة منفصلة تبقى متمايزة

واجهات التخزين الأصلية

على الأهداف غير Windows، يزود lxOLE تنفيذ واجهة التخزين الذي يتطلبه تحميل مصنفات Classic وحفظها؛ وتحتفظ واجهاته IStorage وIStream وIEnumStatStg بملكية واجهات صريحة وحالة حاوية أصلية منفصلة

المصنع أو المساعدالعقد
XlsOpenCompoundStorage(Source, Storage)يحمّل حاوية للقراءة فقط بدءًا من إزاحة صفر في التدفق
XlsOpenCompoundStorage(Source, Start, Storage)يحمّل الحاوية بدءًا من الإزاحة غير السالبة الصريحة
XlsCreateCompoundStorage(Storage)ينشئ تخزينًا أصليًا قابلاً للكتابة بنطاقات متداخلة وتدفقات
XlsWriteCompoundStorage(Storage, Destination)يسلسل التخزين الجذري الأصلي إلى التدفق المزود؛ والتنفيذات الأجنبية والتخزين غير الجذري تُرفض
XlsFreeCompoundStorageName(Name)يحرر الأسماء الأصلية المعادة من إحصاءات التخزين أو التعداد؛ ويُقبل nil

تعيد المصانع قيمة HResult؛ فاختبر Succeeded(Result) قبل استخدام الواجهة المعادة، وحرّر مراجع الواجهات عند الانتهاء

يفشل التعديل في وضع القراءة فقط، وتحتفظ مؤشرات التيار المستنسخة بمواضع مستقلة، وتحفظ النسخ المتداخلة هوية الأصل والبيانات الوصفية المدعومة؛ ولا يوفر التسلسل المباشر عقدَ معاملة وجهة المصنف عالية المستوى

معرِّفات المصنف القيانية

تعيد الدالة XlsIdentifierKeyText(const A: WideString): WideString في lxStandard التمثيل النصي UTF-16 لمفتاح معرِّف Unicode المثبت القائم، بما يتيح لتخزين الأسماء المعرَّفة في Classic مشاركة المساواة القيانية مع محركات المصنفات الأخرى

تمثيل المفتاح هذا مخصص للهوية والبحث لا للتهجئة المعروضة؛ وتبقى الأسماء المكتوبة دون تغيير، ويحتفظ مقارن دليل CFB بترتيبه المنفصل المفروض من التنسيق

راجع دعم Free Pascal لمتطلبات البناء الأصلي وعقد مصنف BIFF8 المُتحقق منه، وتشفير Classic لسلوك التشفير المدعوم وتدفق خصائص النص الصريح