THPDFQuickJS.Eval

Unité : HPDFQuickJS

Déclaration

function Eval(const Script: string): THPDFQuickJSResult; overload;
function Eval(const Script: string; TimeoutMs: Cardinal;
  MaxInterruptChecks: NativeUInt): THPDFQuickJSResult; overload;

Comportement

Exécute du JavaScript dans le contexte du moteur et renvoie le succès, la valeur, le texte d'erreur et le statut

La surcharge d'origine utilise les limites du constructeur ; la surcharge additionnelle fournit des bornes de timeout et d'interruption par évaluation tout en conservant les limites de mémoire, de pile et de taille de script

Un timeout ou une limite d'interruption à zéro désactive la borne d'évaluation correspondante ; les appelants qui appliquent une échéance de transaction passent le temps restant au lieu de redémarrer un timeout complet

La session XFA utilise cette surcharge pour partager un seul budget de temps écoulé entre le replay et l'exécution courante

Les résultats et diagnostics Delphi utilisent des chaînes Unicode ; Free Pascal conserve les octets UTF-8 du pont et marque la chaîne managée comme UTF-8, ce qui évite la conversion via la page de codes ANSI du système

L'arithmétique JavaScript suit le comportement IEEE pour NaN, Infinity, l'overflow et l'underflow, même quand l'application appelante active les traps natifs en virgule flottante

Le moteur masque temporairement les exceptions en virgule flottante pendant l'initialisation et l'évaluation, nettoie les indicateurs produits par le moteur et restaure le masque d'exceptions d'origine du thread appelant avant de renvoyer un résultat ou de propager une exception ; les callbacks d'application invoqués après la suspension d'une requête XFA s'exécutent avec le masque natif restauré

API associées

TXFAJavaScriptSession, HPDFXFAExecuteJavaScriptEvent et Runtime interactif de widgets XFA dynamiques