Documentación de HotXLS / Referencia de la API

Almacenamiento de archivos compuestos

lxCompoundFile lee y escribe contenedores Compound File Binary a través de streams de Pascal, incluidos los ámbitos de almacenamiento anidados, las cargas MiniFAT y los sectores DIFAT encadenados; las APIs nativas de libros Classic BIFF8 usan este backend en Linux y macOS

Para el trabajo con hojas de cálculo use las llamadas ordinarias Open y SaveAs del libro; las APIs de nivel más bajo que aparecen abajo son útiles para inspeccionar streams anidados, construir contenedores y preservar metadatos de almacenamiento

Leer o construir un contenedor

TlxCompoundFile.LoadFromStream(AStream, AOwnsStream) carga los metadatos de directorio y de asignación; AOwnsStream tiene False como valor predeterminado, y el stream de respaldo debe permanecer disponible mientras se extrae su contenido

CreateNew(AStream, AOwnsStream) prepara un contenedor nuevo, AddStorage y AddStream ponen en cola su contenido, y Save escribe un contenedor versión 3 con los sectores de extensión DIFAT requeridos

MiembroComportamiento
RootIndexLa identidad de la entrada del directorio raíz, usada como padre para los almacenamientos y streams de nivel superior
AddStorage(Name, ParentIndex)Pone en cola un almacenamiento anidado y devuelve su identidad de directorio para agregar hijos
AddStream(Name, Data)Pone en cola un stream de bytes de nivel raíz
AddStream(Name, Data, ParentIndex)Pone en cola un stream de bytes en el ámbito padre seleccionado y devuelve su identidad
OpenStream(Name), OpenStream(Name, ParentIndex)Extraen un stream raíz o de ámbito a un TlxCfbStream de su propiedad; un stream ausente devuelve nil
OpenEntryStream(Index)Extrae un stream de directorio por identidad; una entrada inválida o que no sea stream devuelve nil
HasStream(Name), HasStream(Name, ParentIndex)Comprueban la presencia del stream en la raíz o en el ámbito padre seleccionado
FindStorage(Name, ParentIndex)Devuelve una identidad de almacenamiento en el padre seleccionado, o -1 cuando no existe un almacenamiento coincidente
EntryCount, Entries(Index)Inspeccionan las entradas del directorio cargado; los índices están basados en cero y deben ser válidos
SetEntryMetadata(Index, Entry)Copia solo el ID de clase, los bits de estado y las marcas de tiempo a una entrada en cola válida o a la raíz; las identidades estructurales y las cargas permanecen sin cambios

El registro TlxCfbEntry expone Name, EntryType, StartSector, Size, LeftSibling, RightSibling, Child y el ParentIndex derivado; los enlaces del directorio son índices, y -1 indica una identidad ausente

Sus campos de metadatos son ClassID, StateBits, CreationTime y ModificationTime; las marcas de tiempo conservan los ticks FILETIME crudos de la época UTC de 1601 en lugar de una fecha formateada según la configuración regional

TlxCfbEntryType incluye cfbEmpty, cfbStorage, cfbStream y cfbRoot; TlxCfbStream expone Name, Size, Data, Read, Seek y CopyTo

Los streams extraídos poseen bytes desacoplados y el llamador debe liberarlos; la corrupción, las cadenas incompletas, la propiedad inválida y los grafos de directorio o de asignación cíclicos provocan rechazo en lugar de devolver cargas truncadas

lxCfbCompareNames(A, B) aplica el ordenamiento de Compound File Binary por longitud primero, con un mapeo fijo a mayúsculas BMP simple; los nombres duplicados tienen el ámbito de su padre, y los nombres idénticos en almacenamientos anidados separados permanecen distintos

Interfaces de almacenamiento nativas

En los destinos que no son Windows, lxOLE aporta la implementación de la interfaz de almacenamiento que la carga y el guardado de libros Classic requieren; sus IStorage, IStream y IEnumStatStg conservan la propiedad explícita de interfaces y el estado nativo desacoplado del contenedor

Fábrica o ayudaContrato
XlsOpenCompoundStorage(Source, Storage)Carga un contenedor de solo lectura comenzando en el desplazamiento cero del stream
XlsOpenCompoundStorage(Source, Start, Storage)Carga el contenedor comenzando en el desplazamiento explícito no negativo
XlsCreateCompoundStorage(Storage)Crea almacenamiento nativo escribible con ámbitos y streams anidados
XlsWriteCompoundStorage(Storage, Destination)Serializa el almacenamiento raíz nativo al stream aportado; las implementaciones ajenas y el almacenamiento que no sea raíz provocan rechazo
XlsFreeCompoundStorageName(Name)Libera los nombres nativos devueltos por las estadísticas o la enumeración del almacenamiento; se acepta nil

Las fábricas devuelven HResult; pruebe Succeeded(Result) antes de usar la interfaz devuelta, y libere las referencias de interfaz al terminar

La mutación de solo lectura falla, los cursores de stream clonados conservan posiciones independientes, y las copias anidadas preservan la identidad del padre y los metadatos admitidos; la serialización directa no proporciona el contrato de transacción de destino del libro de nivel superior

Identificadores canónicos del libro

XlsIdentifierKeyText(const A: WideString): WideString en lxStandard devuelve la representación de texto UTF-16 de la clave de identificador Unicode fijada existente, lo que permite que el almacenamiento de nombres definidos Classic comparta igualdad canónica con los demás motores de libros

Esta representación de clave es para identidad y búsqueda, no para la ortografía mostrada; los nombres escritos permanecen sin cambios, y el comparador de directorios CFB conserva su ordenamiento separado exigido por el formato

Consulte el soporte de Free Pascal para conocer los requisitos de compilación nativa y el contrato verificado de libros BIFF8, y el cifrado Classic para conocer el comportamiento admitido de cifrado y de streams de propiedades en texto plano