découpe ton script en morceau(a chaque fois que tu dois actualiser ta widget, tu fais un nouveau morceau)
la methode de snouffy est tout aussi valable mais plus difficile a mettre en place cela demande de faire un code asynchrone plus complexe pour les debutants.
si tu nous montrer carrement ton code ca serais plus simple !
@+
Salut,

Pour christina,

Je te donne un exemple :
Imaginons une commande qui s'exécute au moment où tu charge ta feuille :
PUBLIC SUB Form_Open()

  EXEC [ "tacommande", "tes", "parametres" ] FOR READ

END
Tu vas créer une procédure spéciale qui va récupérer le résultat et l'afficher dans une boite de texte par exemple :
PUBLIC SUB Process_Read()

  DIM sLine AS String

  LINE INPUT #LAST, sLine
  
  Content = Content & sLine & Chr(13) & Chr(10)
  ta.Text = Content

END
Comprends-tu tout le code ?
Sinon demande...

A plus.
daneel wrote:Salut,

Pour christina,

Je te donne un exemple :
Imaginons une commande qui s'exécute au moment où tu charge ta feuille :
PUBLIC SUB Form_Open()

  EXEC [ "tacommande", "tes", "parametres" ] FOR READ

END
Tu vas créer une procédure spéciale qui va récupérer le résultat et l'afficher dans une boite de texte par exemple :
PUBLIC SUB Process_Read()

  DIM sLine AS String

  LINE INPUT #LAST, sLine
  
  Content = Content & sLine & Chr(13) & Chr(10)
  ta.Text = Content

END
Comprends-tu tout le code ?
Sinon demande...

A plus.
voilà une partie de mon code
 EXEC ["/usr/local/share/snmp/traplog.pl"] FOR READ 

PUBLIC SUB Process_read()
  
  DIM Str AS String
  'WHILE NOT Eof (LAST)
  LINE INPUT #LAST, Str
  
   TA.Text=Str & Chr(13) & Chr(10)
END
et voilà mais le resultat s'affiche tjrs sur la console
Erreur au moment de la compilation:

"Not enough argumenys to (str) "
Salut,

J'analyse rapidement ton code :
EXEC ["/usr/local/share/snmp/traplog.pl"] FOR READ 

PUBLIC SUB Process_read()
  
  DIM Str AS String
  'WHILE NOT Eof (LAST)
  LINE INPUT #LAST, Str
  
   TA.Text=Str & Chr(13) & Chr(10)
END
Le EXEC semble correct.
Méfie toi le GAMBas est peut-être sensible à la casse je ne me rappelle plus : Process_read() -> Process_Read().
La déclaration de Str a l'air bien aussi.
Tu as du remarquer que le WHILE était inutile dans ce cas là, d'où le commentaire.
De même la capture de ligne parait efficace.

Je pense que nous arrivons au coeur su problème car si j'interprète le code qui est écris je vois que TA.Text prend une ligne de la sortie, donc à la fin de l'exécution TA.Text contient la dernière ligne de la sortie console.

Pour résoudre le problème tu pourrais faire :
TA.Text = TA.Text & Str & Chr(13) & Chr(10)
(Je n'ai pas testé ce code mais je pense que ça pourrais fonctionner).


Pour l'erreur de compilation je ne vois pas, tu n'as pas plus d'information ? (bout de code concerné, numéro de ligne,...).


A plus.
procédant autrement,

en fait le script "traplog.pl"sert à recuperer des logs dans un fichier "tralog.log".
donc au lieu d'afficher l'exectuion du script dans TA, je voudrais savoir comment faire pour afficher le contenu du fichier "traplog.log" ds TA biensur !!

merci
Salut,

Je pense que tu peux remplacer ta ligne d'EXEC par quelque chose comme :
EXEC ["cat", "traplog.log"] FOR READ
ou tu peux te documenter sur la fonction OPEN de GAMBas :
DIM Str AS String
file_id = OPEN "fichier" FOR READ
WHILE NOT Eof(file_id)
  LINE INPUT #file_id, Str
  TA.Text = TA.Text & Str & Chr(13) & Chr(10)
WEND
Deux liens :
http://www.gambasdoc.org/help/?fr
http://www.gambasforge.net/

A plus.
daneel wrote:Salut,

Je pense que tu peux remplacer ta ligne d'EXEC par quelque chose comme :
EXEC ["cat", "traplog.log"] FOR READ
ou tu peux te documenter sur la fonction OPEN de GAMBas :
DIM Str AS String
file_id = OPEN "fichier" FOR READ
WHILE NOT Eof(file_id)
  LINE INPUT #file_id, Str
  TA.Text = TA.Text & Str & Chr(13) & Chr(10)
WEND
Deux liens :
http://www.gambasdoc.org/help/?fr
http://www.gambasforge.net/

A plus.
merci daneel,

"cat" permet d'afficher le contenu ??
cat fichier.txt
affiche le contenu du fichier oui 😃
Temet wrote:
cat fichier.txt
affiche le contenu du fichier oui 😃
erreur de synatxe pour la ligne :

file_id = OPEN "/var/log/tarplog.log" FOR READ


stp si toi tu vois l'erreur !!!
Ah non, désolé, je parlais d'une bête commande bash.
Gambas, j'y ai jamais touché de ma vie. Toutes mes confuses.
En Qt encore j'aurais pu t'aider, en profiter pour lâchement essayer d'obtenir tes coordonnées en te proposant de l'aide à domicile... mais vu que c'est du Gambas, j'ai décidé de ne pas te harceler.
Ton jour de chance on dirait! :hammer:
Si j'en crois la doc de Gambas, faut d'abord déclarer file_id
Rajoute
DIM file_id AS File
avant
file_id = OPEN "/var/log/tarplog.log" FOR READ
EDIT : une petite lecture de cette page te serait bénéfique aussi : naming conventions
Oups oui très juste Temet, il faut bien déclarer "file_id" avant de l'utiliser (enfin c'est toujours mieux).
Bon les "naming conventions" ce serait l'idéal mais on peut comprendre quand même.

Le "cat fichier" que j'ai utilisé est bien la même commande que dans le shell, EXEC permet de l'utiliser comme les autres commandes de Linux.

Pour l'erreur de syntaxe regarde dans les liens que je t'ai donné je me suis peut-être trompé vu que je l'ai fait de tête.

Je ne sais pas pourquoi ton code avec EXEC ne marche pas, chez moi ça fonctionne au poil, c'est par ailleurs très pratique pour faire des GUI à certaines commandes.

A plus.
Temet wrote:Si j'en crois la doc de Gambas, faut d'abord déclarer file_id
Rajoute
DIM file_id AS File
avant
file_id = OPEN "/var/log/tarplog.log" FOR READ
EDIT : une petite lecture de cette page te serait bénéfique aussi : naming conventions
bonjour,
l'erreur n'a rien avoir avec la declaration!!

j'ai tjrs la meme erreur sur la meme ligne : "file_id=open ....."


merci
daneel (fan d'Asimov??), vu que tu as Gambas et que tu connais apparemment le fonctionnement, tu pourrais pas poster le petit code complet qui ouvre le fichier et tout ça?
Perso j'ai pas Gambas chez moi donc bon...
l'erreur est à partir de " OPEN = "/monfich..............." for read "

car j'ai enlevé file_id est j'ai tjrs la meme erreur
Salut,

Oui bien vu Temet...
Pour le problème en question il faut se rendre compte que la documentation est pour la version de développement, la page pour notre version (qui date un peu) est à peu près celle-ci (merci à boarf).

Donc le code peut être ainsi :
' Gambas class file

'Bouton d'ouverture
PUBLIC SUB Button1_Click()
    DIM fileid AS File
    DIM ligne AS String
    dialog.Title = "Ouvrir un fichier..."
    dialog.Filter = [ "Tous les fichiers (*)" ]
    dialog.OpenFile
    IF dialog.Path <> "" THEN
        form1.text = dialog.Path
        OPEN dialog.Path FOR READ AS fileid
        WHILE NOT Eof(fileid)
            LINE INPUT #fileid, ligne
            ta.text = ta.Text & ligne & Chr(13) & Chr (10)
        WEND
        CLOSE #fileid
    ENDIF
END

'Bouton d'effacement
PUBLIC SUB Button2_Click()
  ta.text = ""
  form1.text = "rien"
END

'Bouton de sortie
PUBLIC SUB Button3_Click()
  QUIT
END
Et normalement ça marche...

A plus.