Set-Net not provided
djo10128-Apr-2008/14:15:22+2:00
Bonjour,

j'ai le message "Set-Net not provided" quand j'utilise le programme suivant seulement s'il est compilé :

rebol []

set-net [
toto@machin.fr
smtp.machin.fr
pop.machin.fr
]

send toto@machin.fr rejoin ["titre" newline "corps"]

Si ce programme n'est pas compilé, il n'y a aucun problème.

Quelqu'un aurait-il une solution ?

Merci d'avance
A+
DJO
Philippe29-Apr-2008/22:18:47+2:00
Salut,

question : tu le compiles avec quoi ? enbase, enface, enpro ou autre ?

===Philippe
DJOHL11-May-2008/23:04:09+2:00
Bonjour,

que ce soit enbase, enface ou enpro, c'est tout pareil !

A+
DJO
Didec13-May-2008/9:15+2:00
Le message indique que la fonction 'set-net n'est pas disponible dans un script "encapé" (Rebol ne peut être compilé).

Mais si tu regarde le source de la fonction 'set-net, tu verras qu'elle ne fait que stocker les infos fournies dans différents objets. Il te suffit de remplacer ta ligne 'set-net [...] par l'init directe des membres des objets en question avec leur valeur.
djo10119-May-2008/11:58:56+2:00
Bonjour et merci Didec, mais j'ai pas tout compris...

ceci convient-il ?

system/user/email: "toto@free.fr"
system/schemes/default/host: "smtp.free.fr"

Pourquoi "set-net" fait partie des fonctions du dictionnaire mais ne peut pas être utilisé ? (c'est une question stupide, je sais, mais parfois, je baigne pas...)

A+
DJO
Didec19-May-2008/16:51:41+2:00
C'est un peu sioux.

'set-net est une fonction du Desktop Rebol.
En fait Rebol/view est un interpréteur gratuit, mais aussi une application : le Desktop (qui permet de naviguer dans les Rebsite).
'set-net est une fonction qui, comme 'upgrade, concerne le Desktop plutôt que l'interpréteur.
En effet le %user.r (où sont mémorisés les paramètres de 'set-net) est chargé par le desktop, pas par l'interpréteur en soi.

Une application encappé étant par principe autre chose que le Desktop (et plus un interpréteur : voir la licence), il n'a pas de raison de charger %user.r pour utiliser initialiser les paramètres du Desktop qui n'est plus là.

Voir les sources de Rebol et l'emplacement de la définition de la fonction 'set-net.
djo10123-May-2008/12:44:52+2:00
Bonjour Didec,

j'ai compris tes explications qui sont transparentes...
Cependant, voici le source Rebol dont je dispose et j'avoue ne pas comprendre ce que je dois y trouver...
J'ai compris comment marche cette fonction, mais pas ce que je dois faire.
Dois-je la recopier telle quelle dans mon propre source ?

Désolé d'être aussi peu à la hauteur.
Merci d'avance si tu peux m'éclairer un peu plus.

set-net: func [
   "Network setup. All values after default are optional. Words OK for server names."
   settings [block!] "[email-addr default-server pop-server proxy-server proxy-port-id proxy-type esmtp-user esmtp-pass]"
   /local actions item
][
   actions: [
      [system/user/email: item]
      [system/schemes/default/host: item]
      [system/schemes/pop/host: item]
      [system/schemes/default/proxy/host: item]
      [system/schemes/default/proxy/port-id: item]
      [system/schemes/default/proxy/type: item]
      [system/schemes/esmtp/user: item]
      [system/schemes/esmtp/pass: item]
   ]
   forall settings [
      if (item: first settings) = 'none [item: none]
      if word? item [item: form item]
      do first actions
      if tail? actions: next actions [break]
   ]
   if string? system/schemes/default/proxy/type [
      system/schemes/default/proxy/type: to-word system/schemes/default/proxy/type
   ]
   if all [system/schemes/default/proxy/host none? system/schemes/default/proxy/type] [
      system/schemes/default/proxy/type: 'socks
   ]
   if system/user/email [
      system/schemes/ftp/pass: system/user/email
   ]
   ; create functions to ask for proxy authentication if needed and not given
   all [
      none? get in system/schemes/default/proxy 'user
      system/schemes/default/proxy/user: func [] [
         system/schemes/default/proxy/user:
         ask "Enter proxy authentication username: "
      ]
   ]
   all [
      none? get in system/schemes/default/proxy 'pass
      system/schemes/default/proxy/pass: func [] [
         system/schemes/default/proxy/pass:
         ask/hide "Enter proxy authentication password: "
      ]
   ]
   if 'ask = pick head settings 7 [
      system/schemes/esmtp/user: func [] [
         system/schemes/esmtp/user:
         ask "Enter ESMTP authentication username: "
      ]
      system/schemes/esmtp/pass: func [] [
         system/schemes/esmtp/pass:
         ask/hide "Enter ESMTP authentication password: "
      ]
   ]
   exit
]
Didec23-May-2008/16:26:54+2:00
Quand je disais "Voir les sources de Rebol et l'emplacement de la définition de la fonction 'set-net", je voulais dire les sources livrées avec ton SDK.

Elle contiennent entre autre les sources du Desktop, et donc de 'set-net. Tu verras ainsi où elle est définie. Il te restera à juger si tu dois inclure tous le fichier dans ton appli (avec un #include) ou simplement recopier le source de la fonction dans tes propres sources.
djo1016-Jun-2008/11:31:56+2:00
Bonjour Didec,

merci pour ta réponse, mais je reste sur ma faim.

Le listing de mon message précédent fait partie des sources fournis avec mon SDK... (fichier : prot-setnet.r)...

En incluant ce fichier, la compilation se fait, mais à l'exécution, il y a le message :
invalid path value : ftp
near: system/schemes/ftp/pass: system/user/email

ce qui me laisse perplexe...

En chechant, j'ai fini par inclure :
prot-root.r
prot-setnet.r
prot-utils.r
prot-pop.r

sans pour autant regler les problèmes, je passe plutôt d'une erreur à une autre sans en voir le bout...

De plus, parmis les sources, je ne vois pas trop à quoi correspondent vraiment les fichiers qui commencent par :
pro-
mezz-
ni ce que je dois en faire, ni ce que je peux en tirer...

Quand aux sources du Desktop, je suppose que tu parles des sources placés dans le sous-répertoire viewtop.
Mais on y trouve pas grand chose.

Mais peut-être que je ne suis pas sur la bonne voie !

Qu'en penses-tu ?
djo1016-Jun-2008/16:14:59+2:00
Bonjour Didec,

suite de mon précédent message avec cette autre information.

Dans la source de set-net, on trouve les premières valeurs obligatoire :

system/user/email
system/schemes/default/host
system/schemes/pop/host

j'ai recopié dans un fichier le contenu de system/schemes et j'obtiens :

non compilé (un peu plus de 124000 octets) :
on y trouve default, pop, imap, smtp, etc...
avec les valeurs par défaut du desktop

compilé (un peu moins de 1000 octets) :
on y trouve seulement default, sans aucune valeur...

J'en déduit qu'il suffit que j'y mette les bonnes valeurs.
Il faut donc initialiser :
system/user/email:
system/schemes/default/host:
mais aussi
system/schemes/pop/host:
sauf que je ne peux pas faire ce dernier... car j'ai le message à l'exécution :
invalid path value pop

Et si j'ignore ce dernier point, le prog compilé me dit :
send as no value

Pourquoi system/schemes/pop disparaît-il ?

Je cherche encore, mais si tu as une idée...
merci d'avance.
Didec9-Jun-2008/9:44:22+2:00
Les scripts prot-* contiennent le code des différents PROTocoles de rebol ou des fonctions utilitaires utilisés par ces protocoles.

prot-pop.r conteint donc le code nécessaire au protocole POP et donc, fort logiquement, la définition de l'objet system/schemes/pop qui te manque.

Rebol/View est en majorité écrit en Rebol.
Encap, Enview, etc... sont en fait des rebol/core ou rebol/view sans tout le code écrit en Rebol.

Il te faut trouver dans les sources, les scripts que tu dois inclure pour reproduire les fonctionnalités de View que tu connais et que tu veux utiliser dans ton script. De plus, il faut les inclure dans le bon ordre !!

Je n'ai pas les sources à dispo en ce moment et je ne peux pas te dire exactement quoi.

Mais si tu veux envoyer des mails ou en recevoir, il te faut du SMTP (probalement prot-smtp.r), du POP (prot-pop.r) et les sources des fonctions communes utilisées par les protocoles.

pour commencer, il doit te falloir :
prot-root.r (le protocole de base : root = racine)
prot-utils.r (fonctions utilitaires)
prot-pop.r (POP)
prot-smtp.r (SMTP)

Enfin, soit tu inclus prot-setnet.r pour utiliser la fonction, soit tu reproduis dans ton code les bouts de code de cette fonction dont tu as besoin.

Bon courage
djo1019-Jun-2008/16:26:09+2:00
Bonjour,

c'est juste pour envoyer des mails depuis un programme de surveillance d'une autre application...

j'ai donc ajouté ce que tu dis (root, utils, pop, ftp et setnet) (prot-ftp.r est réclamé)

Il n'y a plus d'erreur à la compile mais au moment du send, il dit :
send as no value !

A+
DJO
Didec9-Jun-2008/18:36:30+2:00
Il faut trouver dans quel fichier source est définie la fonction 'send et inclure ce fichier également.
djo10110-Jun-2008/8:51:39+2:00
Bonjour Didec,

merci pour tes conseils et encouragements...

Donc il faut absolument inclure les sources suivants :

#include %../../../source/prot-root.r
#include %../../../source/prot-utils.r
#include %../../../source/prot-pop.r
#include %../../../source/prot-ftp.r
#include %../../../source/prot-esmtp.r
#include %../../../source/prot-setnet.r
#include %../../../source/prot-send.r

et maintenant, compilé par enbase, cela marche !

Merci encore
A+
DJO
djo10110-Jun-2008/8:56:47+2:00
J'ajoute qu'il y a un truc que je n'avais point vu...

En fait, il suffit de faire :

#include %../../../source/prot.r

qui inclut tout le reste !

J'suis'con...
A+
DJO

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2