Dinamik FormCalc Eval

Eval(source), dinamik olarak verilen bir hesaplamayı native FormCalc derleyicisiyle derler ve EnableJavaScript etkin olduğunda genel olay host'u üzerinden yürütür

Kaynak, ifadeleri, koşulları, döngüleri, değişken bildirimlerini, yerel olarak bildirilen fonksiyonları ve alan mutasyonlarını içerebilir; son ifade sonuçtur ve gömülü adlar büyük/küçük harfe duyarsızdır

var source = "target + other"
target = Eval(source)
target = Eval("var n=2 for i=1 upto 4 do n=n*i endfor n")

Kapsam ve nesneler

Ref ve referans ataması, değerlendirilen hesaplamaların içinde erişilebilirdir; çağıran olay ile aynı açık tanıtıcı ve sıradan değer-kopyalama kurallarını kullanır

Her değerlendirilen hesaplamanın kendi değişkenleri ve fonksiyonları vardır; çağıran hesaplama tarafından bildirilen değişkenleri veya fonksiyonları okuyamaz

Güncel alan, göreli form nesneleri, $form, $host ve $event erişilebilir kalır; Eval(null) null döndürür ve diğer scalar argümanlar kaynak metne dönüşür

Bir SOM predicate içinde aday, güncel alan veya subform bağlamını sağlar ve iç içe Eval o bağlamı devralır

Örneğin var secret=9 Eval("secret+1"), secret adlı form nesnesi yokken başarısız olurken Eval("var secret=2 secret+1") 3 döndürür

Transaction'lar ve replay

Bir kaynağın ilk kullanımı, yürütmeyi askıya alır; böylece native derleyici JavaScript'ini üretebilir; host, olay-öncesi script durumunu geri yükler, derlenmiş yanıtı sağlar ve hesaplamayı yeniden dener

Kaydedilmiş transport ve locale yanıtları, yeniden deneme sırasında tüketilir; böylece iç içe bir derleme harici transport callback'lerini tekrar etmez

Yalnızca nihai başarılı değerlendirme, script journal'ına girer; sözdizimi hataları, runtime hataları ve bütçe hataları, alan değerlerini, instance durumunu ve script durumunu runtime transaction'ı üzerinden geri yükler

Eval, gerçek calculated alanların ve validation script'lerinin içinde de çalışır; SaveToBytes, taahhüt edilmiş belge değerlerini korur

Bütçeler

Her olay, en fazla 64 farklı dinamik kaynağa, sekiz iç içe Eval çağrısına ve toplam dinamik kaynak artı derlenmiş yanıt baytları 2 MiB'ye izin verir; bu sınırlar, yapılandırılmış script girdisi, işlem, bellek, stack, journal ve geçen-süre sınırlarıyla birlikte uygulanır

Yapılandırılmış bir stack veya geçen-süre sınırı, adanmış iç içe geçme veya istek sınırından önce başarısız olabilir; derleme yeniden denemeleri olay son teslim süresini paylaşır

Özel bir JavaScript evaluator, native dinamik derleme isteklerine hizmet edemez; gemicik QuickJS yürütme yolunu kullanın

İlgili API'ler

HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, FormCalc Functions ve Interactive XFA Runtime