Budgetar för formulärskript
Varje skriptutvärdering för formulär körs under stränga budgetar som täcker CPU-tid, minne, rekursionsdjup, antal satser och operationer samt den utdata ett skript får generera, så att en felande beräkning aldrig kan stoppa en omberäkningspass eller tömma minnet
THPDFScriptBudgets
THotPDF.FormScriptBudgets innehåller den budgetuppsättning som tillämpas av EvaluateLoadedFieldJavaScript och av varje omberäkningspass. Posten THPDFScriptBudgets exponerar MaxScriptLength, MaxStatements, MaxExpressionDepth, MaxOperations, MaxElapsedMilliseconds (väggklocka-CPU-gräns), MaxValueBytes (lock per enskilt värde), MaxTotalValueBytes (kumulativt minne) och MaxOutputBytes (lock för genererad utdata); noll i något fält lyfter just den specifika gränsen
var
Budgets: THPDFScriptBudgets;
begin
Budgets:= PDF.FormScriptBudgets;
Budgets.MaxElapsedMilliseconds:= 100;
Budgets.MaxTotalValueBytes:= 1024* 1024;
PDF.FormScriptBudgets:= Budgets;
end;
Tillämpning och telemetri
CPU-gränsen kontrolleras medan operationer och värdebyte ackumuleras, så skript kan inte kringgå den genom enbart allokering; den kumulativa minnesbudgeten fångar skript som allokerar och kastar bort många små värden. Ett brott misslyckas med utvärderingen med en beskrivande ErrorText, och resultatposten rapporterar ElapsedMilliseconds- och ValueBytes-telemetri tillsammans med antalet operationer
Standardbudgetarna behåller de historiska gränserna (skript på 8192 byte, 32 satser, djup 32, 1024 operationer, 256 KB per värde) och lägger till en CPU-gräns på 500 ms, en kumulativ minnesbudget på 4 MB och ett utdata-boklock på 64 KB