PROCESS casse gueule

En exécutant un process 4D tags avec des formules, je me retrouve for dépourvu car 4D retourne sèchement au Finder. La raison est qu’une des formules retourne une image.

<code 4D>
C_COLLECTION($formule_c)
$formule_c:=New collection
$formule_c.push(“texteLire”) //$0 texte, ne plante pas
$formule_c.push(“blobLire”) //$0 blob, ne plante pas
$formule_c.push(“imageLire”) //$0 image, plante
For each ($formule_t;$formule_c)
$template_t:=""
PROCESS 4D TAGS($template_t;$result_t)
End for each
</code 4D>

Je pourrais me dire que ça ne se fait pas de mettre des images et des blobs dans du texte, mais comme je ne me fais pas crucifier avec le blob, je suis un peu le cul entre deux chaises, entre 4D qui sait gérer ma-connerie-blob et 4D qui ne sait pas gérer ma-connerie-image.

PROCESS 4D TAGS n’est pas plus “protégé” que ça ?

PS : le template passe mal, c’est :
“<”+"!–#4DTEXT “+$formule_t+”–"+">"

Bon, je décide que si la formule retourne une image, je la piétine, la ratatine et l’extrade :

<code 4D>
//lireTypeFormule (formule) -> type
c_longint($0)
c_objet($test)
$test:=New object
$test.zeFormule := new formula (formula from string (formule ) )
$test.zeResultat := test.zeFormule ()
$0 := value type ($test.zeResultat)
</code 4D>

Gloups, je ne peux rien extrader du tout, Formula from string n’est qu’en v18 :frowning:

En attendant mieux, un tourne autour pour obtenir le type retourné par une formule :
<code 4D>
//FormulaTypeGet (formule_t) -> long
C_TEXT($1)
C_OBJECT(try_o) //var process pour mode compilé
//_
$formule_t:=$1
try_o:=New object
error_l:=0
ON ERR CALL(“errCatch”)
EXECUTE FORMULA(“try_o.try:=”+$formule_t)
ON ERR CALL(“errCatch”)
If (error_l=0)
$0:=Value type(try_o.try)
Else
$0:=-1
End if
//_
</code 4D>
Exemple d’appel :
<code 4D>
$type_l:=FormulaTypeGet ($formule_t)
Case of
: ($type_l=-1)
: ($type_l=Is BLOB)
: ($type_l=Is collection)
: ($type_l=Is object)
: ($type_l=Is picture)
: ($type_l=Is pointer)
: ($type_l=Is undefined)
: ($type_l=Object array)
Else
$template_t:="< !–#4DTEXT “+$formule_t+”-- >" //espaces ajoutés pour affichage forum
PROCESS 4D TAGS($template_t;$result_t)
End case
</code 4D>
Pas terrible, mais ça m’évite un plantage serveur :-/