HotXLS Belgeleri

Düzenli ifade arka ucu API'si

lxRegex; hesaplayıcının düzenli ifade işlevlerinin kullandığı durumlu arka uç olan TXLSRegex'i açığa çıkarır; sıradan çalışma kitabı çağıranları bağlamsal formül değerlendirmesi sayfasında anlatılan formül API'lerini kullanabilir

Arka uç; UTF modlu, otomatik bütçe callout'lu ve JIT'siz paketlenmiş PCRE2 10.49 16 bit derlemesini kullanır; Delphi ve C++Builder Windows hedefleri ile desteklenen FPC Linux x64 ya da macOS ARM64 hedefleri için statik nesnelerle gelir; desteklenmeyen arka uç hedefleri xrsUnavailable bildirir

Her örnek; derlenmiş desenine, tahsisçisine ve eşleşme bağlamlarına sahiptir; her eşzamanlı işlem için ayrı bir örnek oluşturun ve bütçe geri çağırısının sahibini örnek serbest bırakılana dek canlı tutun

Genel bildirimSözleşme
TXLSRegex.Create(ABudget: TXLSRegexBudget)Arka uç bağlamlarını ayırır ve isteğe bağlı geri çağırıyı tutar; çağıran bütçesi olmasın diye nil geçirin, sonra işlem sonuçlarını ve Status değerini inceleyin
TXLSRegex.DestroyDerlenmiş deseni, eşleşme verisini ve bağlamları serbest bırakır; çağıranlar normalde finally bloğunda Free çağırır
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanUTF-16 bir deseni derler ve yakalama deposunu hazırlar, önceki deseni değiştirir; IgnoreCase PCRE2 büyük/küçük harfe duyarsız eşleştirmeyi etkinleştirir, False eşleştirmeyi büyük/küçük harfe duyarlı bırakır
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): BooleanBaşarılı bir derleme ister, sıfır tabanlı UTF-16 ofsetinden arar ve koparılmış yakalama ofsetleri döndürür; NonemptyAtStart=True, tam o ofsette çapalı, boş olmayan bir eşleşme ister; bu, boş bir eşleşmenin üzerinden ilerlemeyi destekler
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): BooleanBaşarılı bir derleme ister ve numaralı ile adlandırılmış yakalama atıfları dahil PCRE2 değiştirme söz dizimini kullanır; sıfır tüm eşleşmeleri seçer, pozitif değer baştan sayılan 1 tabanlı oluşumu seçer, negatif değer ise sondan sayar
TXLSRegex.Check(AWork, AExtraBytes): BooleanBütçe geri çağırısını; güncel iş artışı, yerleşik arka uç baytları artı AdditionalBytes ve önerilen ek baytlarla çağırır; negatif bayt muhasebesi, tamsayı taşması ya da kilitlenmiş sonlu bir durum False döndürür
TXLSRegex.Status: TXLSRegexStatusSon işlem ya da sonlu bütçe/arka uç durumu için salt okunur durum; bir işlem False döndürdükten sonra eksik eşleşmeyi başarısızlıktan ayırmak için kullanın
TXLSRegex.CaptureCount: CardinalEn son derlenen deseni bildirdiği, tüm eşleşme yuvası hariç açık yakalama gruplarının salt okunur sayısı; Compile başarılı olduktan sonra kullanın
TXLSRegex.AdditionalBytes: Int64Her bütçe denetimine katılması gereken çağıranın sahibi olduğu geçici tamponlar için oku/yaz muhasebe; varsayılanı sıfırdır ve kendisi bellek ayırmaz

Ofsetler, çıktı ve değiştirme davranışı

TXLSRegexOffsets, yuva başına iki öğeli bir NativeUInt dinamik dizisidir; sıfır numaralı yuva tüm eşleşmeyi içerir, ardından bildirim sırasıyla açık yakalama grupları gelir

Her çift, Delphi'nin 1 tabanlı dize indekslerinden ya da Unicode skaler konumlarından farklı olarak, UTF-16 kod birimleriyle ölçülen sıfır tabanlı başlangıç ve dışlayıcı bitiştir; atanmamış isteğe bağlı bir yakalama her iki uç için High(NativeUInt) kullanır

Match her denemeden önce çıktı dizisini temizler; Replace başlamadan önce çıktısını temizler ve seçili oluşum olmadan başarılı bir değiştirme, özgün metni xrsOk ile döndürür

Değiştirme atıfları $1 ve ${name} gibi PCRE2'nin dolar gösterimini kullanır; atanmamış bir katılımcı yakalama boş dize katkılar, geçersiz bir değiştirme atfı ise xrsInvalidReplacement bildirir

Eşleştirmeden ya da değiştirmeden önce Compile'ı başarıyla çağırın; hazırlanmış deseni olmayan bir çağrı False döndürür ve uydurma bir desen hata durumu üretmez

Bütçe geri çağırısı

TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object; biriktirilecek iş artışını ve çağıranın sınırıyla karşılaştırılacak güncel bayt tahminini alır; ABytes bir tahsis deltası değildir

Denetimler; desen hazırlığı, arka uç tahsisleri, eşleşme callout'ları, sonuç ofseti ayırması ve değiştirme sırasında gerçekleşir; çağıran, süreç genelinde değiştirilebilir bir bütçeye güvenmek yerine iptal ve kota ilkesini sağlar

Geri çağırıdan False döndürmek ya da istisna fırlatmak işlemi xrsAborted ile durdurur; geri çağırı istisnaları yerel arka uçtan dışarı sızmaz

xrsResourceLimit, xrsAborted ve xrsUnavailable o örnek için sonludur; bu koşullardan sonra yeniden denemek için başka bir örnek oluşturun; geçersiz desen ya da metin hataları o sonlu kilidi dayatmaz

Durum değerleri

TXLSRegexStatus değeriAnlam
xrsOkArka uç işlemi başarıyla tamamlandı
xrsNoMatchGüncel eşleşme araması eşleşme bulamadı
xrsInvalidPatternDesen derlenemedi; geçersiz desen kodlaması dahildir
xrsInvalidReplacementDeğiştirme ifadesi reddedildi ya da bir arka uç hatası açık durum eşlemelerinin dışında kaldı
xrsInvalidTextEşleştirme ya da değiştirme, açıkça sınıflandırılmış bir UTF-16 girdi ya da karakter sınırı hatasıyla karşılaştı
xrsResourceLimitBir arka uç tahsisi, iç eşleştirme sınırı ya da bayt muhasebesi sınırı tamamlamayı engelledi
xrsAbortedBütçe geri çağırısı işlemi durdurdu, geri çağırısı istisna fırlattı ya da yerel bir callout eşleştirmeyi durdurdu
xrsUnavailableHedefte desteklenen paketlenmiş statik arka uç yok

Hesaplayıcı bu arka uç durumlarını kendi formül hatalarına ve değerlendirme tanılamalarına eşler; bu doğrudan arka uç API'leri Excel hata varyantları döndürmez