maybe good to signal to carl
GerardJ2-Oct-2007/5:03:14+2:00
The folowwing code:
if error? err: try[Write/lines join my-folder-path my-file my-data][...]
generates an error as the return of try does not give any value (i.e. the operation is properly completed)
Another small problem:
if the condition bracket is:
err: disarm err
inform layout[
h1 "Central Backup has failed!
h2 err/id
button "ok" [hide-popup]
]
does not give what is expected.
one must write:
h2 to-string err/id
Didec2-Oct-2007/9:16:16+2:00
Pour ton 1er problème, la solution est :
if error? set/any 'err try [Write/lines join my-folder-path my-file my-data][...]

Le 'set/any permet de gérer tous les cas de valeurs de retour, y compris le cas ou unset! est renvoyé (pas de valeur).

Quand au 2ème pb, err/id n'est pas un string!, mais un word!.
>> err: disarm try [1 / 0]
>> probe err
make object! [
    code: 400
    type: 'math
    id: 'zero-divide
    arg1: none
    arg2: none
    arg3: none
    near: [1 / 0]
    where: 'halt-view
]
>> type? err/id
== word!

Donc il est normal que le dialecte VID ne l'utilise pas dans comme le texte du H2, puisque ce n'est pas un texte (et VID se base sur le datatype de chaque valeur pour l'interpréter.

Tu peux utiliser 'to-string, mais le plus souvent on utilise 'form.
err: disarm err
inform layout[
    h1 "Central Backup has failed!
    h2 form err/id
    button "ok" [hide-popup]
]
guest22-Oct-2007/19:46:32+2:00
La fonction attempt remplit ce rôle également.

attempt: func [
    {Tries to evaluate and returns result or NONE on error.}
    value
][
    if not error? set/any 'value try :value [get/any 'value]
]

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2