Bileşik dosya depolama
lxCompoundFile, Pascal akışları üzerinden Compound File Binary kapsayıcılarını okur ve yazar; buna iç içe depolama kapsamları, MiniFAT yükleri ve zincirli DIFAT sektörleri dahildir; yerel Classic BIFF8 çalışma kitabı API'leri Linux ve macOS'ta bu arka ucu kullanır
Hesap tablosu işleri için sıradan çalışma kitabı Open ve SaveAs çağrılarını kullanın; aşağıdaki daha alt düzey API'ler iç içe akışları incelemek, kapsayıcı oluşturmak ve depolama üst verisini korumak için işe yarar
Kapsayıcı okuma veya oluşturma
TlxCompoundFile.LoadFromStream(AStream, AOwnsStream) dizin ve tahsis üst verisini yükler; AOwnsStream varsayılan olarak False'tur ve arka plandaki akış, içeriği çıkarılırken kullanılabilir kalmalıdır
CreateNew(AStream, AOwnsStream) yeni bir kapsayıcı hazırlar, AddStorage ve AddStream içeriğini kuyruğa alır, Save ise gereken DIFAT uzatma sektörleriyle sürüm 3 bir kapsayıcı yazar
| Üye | Davranış |
|---|---|
RootIndex | Kök dizin girdisi kimliği; üst düzey depolama ve akışlar için ebeveyn olarak kullanılır |
AddStorage(Name, ParentIndex) | İç içe bir depolamayı kuyruğa alır ve alt öğe eklemek için dizin kimliğini döndürür |
AddStream(Name, Data) | Kök düzeyde bir bayt akışını kuyruğa alır |
AddStream(Name, Data, ParentIndex) | Seçilen ebeveyn kapsamına bir bayt akışı kuyruğa alır ve kimliğini döndürür |
OpenStream(Name), OpenStream(Name, ParentIndex) | Kök ya da kapsamlı akışı sahiplenilmiş bir TlxCfbStream içine çıkarır; olmayan akış nil döndürür |
OpenEntryStream(Index) | Bir dizin akışını kimlikle çıkarır; geçersiz ya da akış olmayan girdi nil döndürür |
HasStream(Name), HasStream(Name, ParentIndex) | Kök ya da seçilen ebeveyn kapsamında akış varlığını sınar |
FindStorage(Name, ParentIndex) | Seçilen ebeveynde bir depolama kimliği döndürür; eşleşen depolama yoksa -1 döner |
EntryCount, Entries(Index) | Yüklenen dizin girdilerini inceler; indeksler sıfır tabanlıdır ve geçerli olmalıdır |
SetEntryMetadata(Index, Entry) | Geçerli bir kuyruktaki girdiye ya da köke yalnızca sınıf kimliğini, durum bitlerini ve zaman damgalarını kopyalar; yapısal kimlikler ve yükler değişmeden kalır |
TlxCfbEntry kaydı Name, EntryType, StartSector, Size, LeftSibling, RightSibling, Child ve türetilmiş ParentIndex alanlarını açığa çıkarır; dizin bağlantıları indekstir ve -1 olmayan bir kimlik gösterir
Üst veri alanları ClassID, StateBits, CreationTime ve ModificationTime'dur; zaman damgaları yerelleştirilmiş bir tarih yerine 1601 UTC çağından ham FILETIME değerlerini korur
TlxCfbEntryType; cfbEmpty, cfbStorage, cfbStream ve cfbRoot değerlerini içerir; TlxCfbStream ise Name, Size, Data, Read, Seek ve CopyTo üyelerini açığa çıkarır
Çıkarılan akışlar koparılmış baytların sahibi olur ve çağıran tarafından serbest bırakılmalıdır; bozulma, eksik zincirler, geçersiz sahiplik ve döngüsel dizin ya da tahsis grafikleri kırpılmış yük döndürmek yerine reddeder
lxCfbCompareNames(A, B), sabitlenmiş basit BMP büyük harf eşlemesiyle Compound File Binary uzunluk-öncelikli sıralamasını uygular; yinelenen adlar ebeveyne göre kapsamlanır ve ayrı iç içe depolamalardaki özdeş adlar ayrı kalır
Yerel depolama arayüzleri
Windows dışı hedeflerde lxOLE, Classic çalışma kitabı yükleme ve kaydetmenin gerektirdiği depolama arayüzü uygulamasını sağlar; IStorage, IStream ve IEnumStatStg açık arayüz sahipliğini ve kopmuş yerel kapsayıcı durumunu korur
| Fabrika veya yardımcı | Sözleşme |
|---|---|
XlsOpenCompoundStorage(Source, Storage) | Akış ofseti sıfırdan başlayan salt okunur bir kapsayıcı yükler |
XlsOpenCompoundStorage(Source, Start, Storage) | Kapsayıcıyı belirtilen negatif olmayan ofsetten yükler |
XlsCreateCompoundStorage(Storage) | İç içe kapsamları ve akışlarıyla yazılabilir yerel depolama oluşturur |
XlsWriteCompoundStorage(Storage, Destination) | Yerel kök depolamayı verilen akışa serileştirir; yabancı uygulamalar ve kök olmayan depolama reddedilir |
XlsFreeCompoundStorageName(Name) | Depolama istatistiklerinin ya da numaralandırmanın döndürdüğü yerel adları serbest bırakır; nil kabul edilir |
Fabrikalar HResult döndürür; döndürülen arayüzü kullanmadan önce Succeeded(Result) sınayın ve işiniz bittiğinde arayüz referanslarını bırakın
Salt okunur değişiklik başarısız olur, kopyalanan akış imleçleri bağımsız konumları korur ve iç içe kopyalar ebeveyn kimliğini ile desteklenen üst veriyi yaşatır; doğrudan serileştirme daha üst düzey çalışma kitabı hedef işlem sözleşmesini sağlamaz
Kurallı çalışma kitabı tanımlayıcıları
lxStandard içindeki XlsIdentifierKeyText(const A: WideString): WideString, mevcut sabitlenmiş Unicode tanımlayıcı anahtarının UTF-16 metin gösterimini döndürür; böylece Classic tanımlı ad depolaması, kurallı eşitliği diğer çalışma kitabı motorlarıyla paylaşabilir
Bu anahtar gösterimi kimlik ve arama içindir, görüntülenen yazım için değil; girilen adlar değişmeden kalır ve CFB dizin karşılaştırıcısı biçimin zorladığı ayrı sıralamayı sürdürür
Yerel derleme gereksinimleri ve doğrulanmış BIFF8 çalışma kitabı sözleşmesi için Free Pascal desteği sayfasına, desteklenen şifreleme ve düz metin özellik akışı davranışı için Classic şifreleme sayfasına bakın