【SpiderBasic 2.00】 est disponible

Rubriques generale concernant SpiderBasic
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: 【SpiderBasic 2.00】 est disponible

Message par blendman »

Ar-S a écrit :Peut être que ton avast ( :roll: ) a viré un fichier nécessaire ou a bloqué son execution.
Tu devrais peut être réinstaller SB dans un auter dossier et avant celà, exclure ce dossier de la zone de recherche d'avast.
c'est ce que j'ai fait et ça ne change rien, hélas ^^.

je vais devoir l'utiliser sur un autre ordi (heureusement, j'ai un petit portable dont je me sers de temps en temps (le T100 d'ASus)).
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: 【SpiderBasic 2.00】 est disponible

Message par falsam »

Réponse tardive
Blendman a écrit :avast m'a trouvé en mars 2017 un virus sur spiderbasic, dans ce fichier : spiedrbasic/compilers/sbmongoose.exe. C'est un fichier de spiderbasic ?
Oui. C'est un web serveur local léger (ne gère pas PHP) permettant de visualiser le résultat d'une compilation.

Pour ton souci d'installation.

Désactive provisoirement Avast
Rendez vous dans ton dossier c:\Users\TonNomUtisateur\AppData\Roaming
Supprime le dossier SpiderBasic
Installe à nouveau SpiderBasic.

Active à nouveau Avast si vraiment tu le souhaites.

J'ai essayé sur un pc ayant Avast comme antivirus et je n'ai eu aucune alerte.

SpiderBasic fonctionne correctement.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: 【SpiderBasic 2.00】 est disponible

Message par blendman »

salut

Merci pour les infos.
J'ai beaucoup testé spiderbasic ces derniers temps, pour réaliser des applications "un peu médicales" (pour du sevrage de médicament), et je trouve que c'est vraiment top !

J'ai 2 questions :

1) peut-on récupérer les données qu'on récolte (ex du texte) d'une callback ? J'ai essayé avec une variable globale, mais ça ne marche pas.
En gros, je voudrais proposer une application en français et en anglais et pour ça, je dois lire le fichier , mais je ne parviens pas à passer l'info (le texte) entre 2 procédures.

2) Puis-je ouvrir une page internet à partir d'un menuitem ou d'un gadget ? Si oui, comment ?

Je voudrais un truc très simple : genre : je clique sur un bouton ou un menuItem et la page web s'ouvre dans firefox par exemple.

j'ai essayé comme ça, mais ça ne marche point :

Code : Tout sélectionner

Procedure MenuHandler()
  
  Select EventMenu()                                    
    Case #Menu_OutilPlan
      OpenFile(#PB_Any, "http://electrotracks.free.fr/aide/index.html", @Callback)
      
    Case #Menu_BenzoConvert
       OpenFile(#PB_Any, "http://electrotracks.free.fr/aide/benzo_equivalence/index.html", @Callback)
   EndSelect
   
EndProcedure
la calback est la même que dans l'exemple

Code : Tout sélectionner

Procedure Callback(Status, Filename$, File, SizeRead)
    Select Status
      Case #PB_Status_Loaded
        ; File correctly loaded
        Message("ok","ok")
      Case #PB_Status_Saved
        ; File correctly saved
        
      Case #PB_Status_Progress
        ; File loading in progress, use FileProgress() get the current progress

      Case #PB_Status_Error
        ; File loading has failed
         Message("Error","mince ça marche po...")
    EndSelect
EndProcedure
Edit :
pour le 2), je suis passé par un hyperlink avec la méthode de falsam trouvée ici :
http://forums.spiderbasic.com/viewtopic ... +url#p2717

J'imagine que ça marche aussi pour le menu ou n'importe quel gadget en fait (en modifiant bien sûr la procedure runprogram()).
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: 【SpiderBasic 2.00】 est disponible

Message par Marc56 »

Je vais peut-être dire n'importe quoi (ce ne sera pas la première fois :mrgreen: )

Mais OpenFile() c'est pour les fichiers locaux.
Donc:

Code : Tout sélectionner

OpenFile(#PB_Any, "http://electrotracks.free.fr/aide/index.html", @Callback)
Ne fonctionne sans doute pas car le protocole HTTP n'est pas un protocole connecté,
le programme ne peut donc pas maintenir un handle sur le fichier,
ce qui est nécessaire pour les commandes Open qui sont suivies d'un read ou write puis un Close
(pareil en PB)

Dixit la doc de SB sur OpenFile()
http://www.spiderbasic.com/documentatio ... nfile.html
Open an existing file for read and write operations
Fichier de type #PB_LocalFile ou #PB_GoogleDriveFile


Il faut donc que tu télécharges d'abord ton fichier (dans le cache ou le dossier temporaire ?)
HTTPRequest()
http://www.spiderbasic.com/documentatio ... quest.html

:wink:
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: 【SpiderBasic 2.00】 est disponible

Message par blendman »

on ne peut pas ouvrir simplement un fichier texte, charger les infos et ensuite définir les gadgets avec la langue choisi en fonction de ce fichier texte ?
SpiderBasic génére du JavaScript hors avec JavaScript il n'est pas possible d'ouvrir un fichier en modification sur un serveur.

La solution consiste à exécuter un script PHP avec la fonction HTTPRequest() avec passage de paramètres.

HTTPRequest(Type, URL$, Parameters, Callback [, UserData [, Headers()]])

https://www.spiderbasic.com/documentati ... quest.html
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: 【SpiderBasic 2.00】 est disponible

Message par Marc56 »

Javascript est un langage qui s’exécute sur le poste client (dans le navigateur) et communique par HTTP avec le serveur.
Ce n'est donc pas lui (javascript) qui impose la restriction d'accès en écriture sur le serveur mais bien le protocole HTTP.
(Heureusement qu'un simple langage client ne peut pas écrire sur un serveur web)

HTTPRequest() est une fonction SpiderBasic, pas besoin de PHP

Si on a accès à PHP donc au côté serveur, autant tout écrire en PHP, c'est plus simple.
Les utilisateurs pourront ainsi utiliser l'application même avec javascript désactivé.

:wink:
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: 【SpiderBasic 2.00】 est disponible

Message par falsam »

Marc56 a écrit :HTTPRequest() est une fonction SpiderBasic, pas besoin de PHP
HTTPRequest() cest bien aussi ce que j'ai précisé par contre tu envoies une url (en général un script php) pour par exemple modifier un fichier ou mettre à jour une base de données.

Bien évidement, le script php doit être codifier de telle manière qu'il ne puisse pas être exécuter en ligne de commande depuis un navigateur.

Je suis curieux de voir comment tu comptes avec la commande HTTPRequest() mettre à jour un fichier txt par exemple sans faire appel à un script PHP ou ASP ou autres.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: 【SpiderBasic 2.00】 est disponible

Message par Marc56 »

Je n'irais pas plus loin dans mes essais car je n'utilise pas (pour l'instant) :wink:
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: 【SpiderBasic 2.00】 est disponible

Message par blendman »

Falsam : tu as édité mon message au lieu d'y répondre, résultat, il manque la moitié des informations...

Je répète donc :
est-il possible d'ouvrir un fichier texte (situé sur le serveur), de lire les informations de ce fichier (par exemple pour la langue) et ensuite de modifier notre page (par exemple, mettre les gadgets en français).

Je sais qu'avec un fichier local on peut le faire, alors, il faut que je transfère le fichier de langue sur le poste client puis que je l'ouvre et que je change les paramètres de ma page (langue) ?
ou existe-t-il un autre moyen de faire ça :
- ouvrir un fichier du serveur
- et se servir de ces informations pour modifier par exemple le texte de mes gadgets

Je ne comprends pas comment faire avec httprequest()
je dois utiliser get ou post ?

:)
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: 【SpiderBasic 2.00】 est disponible

Message par MetalOS »

Salut les gars. Quelqu'un aurai un exemple d'application Android fait avec SpiderBasic, voir même sur le playstore histoire de voir ce que ça donne.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: 【SpiderBasic 2.00】 est disponible

Message par djes »

Blendman> Sans avoir pratiqué sb, je pense qu'il faut pratiquer la logique client/serveur, à savoir que tu établis un dialogue à partir du client qui dise au serveur qu'il doit modifier certaines chaînes. Tu imagines bien que ce dialogue ne doit pas pouvoir être fait par n'importe qui, et qu'il faut bien carèner le tout pour éviter des intrusions. Il faut par exemple s'assurer de la validité des chaînes de caractères, limiter le nombre de modifications par seconde (pour éviter les attaques type déni de service), et, évidemment pour moi, prévoir un minimum d'authentification.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: 【SpiderBasic 2.00】 est disponible

Message par blendman »

OUi, djes, je comprends bien ;)

Mais en fait, ce que je recherche c'est simplement un changement de langue, par exemple avec un combobox, tu change la langue et ça change alors la langue sur la page.
Je sais faire en php mais je n'arrive pas à ouvrir un fichier txt situé sur le serveur et qui changerait alors la langue si on change la langue via le combobx du site.
- je suis sur la page du site
- je clique sur la combobox
- je choisis Fr ou eng
- et la page met à jour la langue, en allant chercher sur le serveur la langue dans un fichier texte

Je sais tout faire, sauf que quand j'ouvre le fichier texte, ensuite, je ne sais pas comment garder le texte "lu" dans ce fichier, une variable global ne semble pas marcher.
c'est quand même ballot ^^
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: 【SpiderBasic 2.00】 est disponible

Message par djes »

Difficile de dire ce qui ne fonctionne pas, en tous cas il me semble qu'il faut une variable de session ou un cookie. Je ne sais pas comment c'est géré en SB.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: 【SpiderBasic 2.00】 est disponible

Message par falsam »

Sans PHP et avec la fonction HTTPRequest(), tu récupéres un fichier JSON contenant l'ensemble des tes libelles, message, etc ... en anglais et français par exemple.

Les fonctionnalités JSON vont te permettre de basculer le contenu de ton JSON dans une structure ou une liste ou une map.

Petit exemple à suivre.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: 【SpiderBasic 2.00】 est disponible

Message par falsam »

L'exemple que je vous propose

- Affichage d'une fenêtre full-screen (utilisation du flag #PB_Window_Background)
- Cette fenêtre contient 3 gadgets : Message de bienvenu, un bouton qui ne sert à rien et un combo choix de la langue Français ou Anglais.

:arrow: Demo : http://falsam.com/sbtest/readfile0.html

La configuration de langue est définie dans une structure.

Code : Tout sélectionner

Structure NewSetup
  Array t0.s(1) ;Message de bienvenue  = "Bienvenu invité !","Welcome guest !"
  Array t1.s(1) ;Bouton qui ne sert à rien = "Cliquez moi","Click me"
EndStructure
Global Config.NewSetup
Le fichier JSON a été généré avec un code PureBasic. Le résultat de ce fichier est
config.json a écrit :{"t0":["Bienvenu invité !","Welcome guest !"],"t1":["Cliquez moi","Click me"]}
Comment est lu le fichier config.
Le fichier config est un fichier au format JSON se trouvant sur le serveur est lu avec la commande HTTPRequest() faisant appel à un callback

Code : Tout sélectionner

HTTPRequest(#PB_HTTP_Get, "data/config.json", "", @HttpOnRead())

Que fait le callback ?
Cette procédure callback va extraire le contenu JSON vers la structure

Code : Tout sélectionner

ExtractJSONStructure(JSONValue(0), @config, NewSetup)
Code.

Code : Tout sélectionner

Enumeration
  #FontH1
  
  #mf
  #mfLang
  #mfWelcome
  #mfValid
EndEnumeration

;Setup 
Structure NewSetup
  Array t0.s(1)
  Array t1.s(1)
EndStructure
Global Config.NewSetup

;Summary
Declare Start()
Declare HttpOnRead(Success, Result$, UserData)
Declare UpdateLang()
Declare Resize()

Start()

Procedure Start()
  LoadFont(#FontH1, "", 18)
  
  OpenWindow(#mf, 0, 0, 0, 0, "", #PB_Window_Background)
  
  TextGadget(#mfWelcome, 10, 10, 200, 22, "")
  SetGadgetFont(#mfWelcome, FontID(#FontH1))
  
  ButtonGadget(#mfValid, 0, 10, 80, 22, "")
  
  ComboBoxGadget(#mfLang, 0, 0, 80, 24)
  AddGadgetItem(#mfLang, -1, "Français")
  AddGadgetItem(#mfLang, -1, "English")
  SetGadgetState(#mfLang, 0)
  
  Resize()
  
  ;Trigger
  BindGadgetEvent(#mfLang, @UpdateLang())
  BindEvent(#PB_Event_SizeDesktop, @Resize())
  
  ;Import and Read JSON file
  HTTPRequest(#PB_HTTP_Get, "data/config.json", "", @HttpOnRead())
EndProcedure

Procedure HttpOnRead(Success, Result$, UserData)
  If Success    
    ;Extract to structure config.NewSetup
    ParseJSON(0, Result$)
    ExtractJSONStructure(JSONValue(0), @config, NewSetup)
    
    UpdateLang()
  Else
    Debug "HTTPRequest(): Error"   
  EndIf
EndProcedure

Procedure UpdateLang()
  Protected Lang = GetGadgetState(#mfLang)
  
  SetGadgetText( #mfWelcome, config\t0(Lang) )  
  SetGadgetText( #mfValid, config\t1(Lang) )    
EndProcedure

Procedure Resize()
  Protected Width = DesktopWidth(#mf)
  Protected Height = DesktopHeight(#mf)
  
  ResizeGadget(#mfValid, Width - 100, #PB_Ignore, #PB_Ignore, #PB_Ignore)
  ResizeGadget(#mfLang, Width - 100, Height - 50, #PB_Ignore, #PB_Ignore)
EndProcedure
Remarque. la fonction HTTPRequest() ne fonctionne pas si vous testez le code depuis l'IDE de SpiderBasic. Il faut générer la web-application sur votre serveur local ou distant.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre