IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Bouton qui lance une commande Linux


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Bouton qui lance une commande Linux
    Bonjour,

    Je suis sur la dernière version de Lazarus.

    Je suis tout nouveau et je connais pas trop ce langage ; j'ai réussi a faire le "hello world" et un bouton Quitter.

    En attendant d'acheter des livres sur Lazarus Free Pascal, je voudrais savoir quel code il faut mettre dans l'objet bouton entre begin et end pour lancer un ping avec son terminal sous Linux.

    Pouvez-vous aussi me conseiller pour débutant pour des livres Lazarus en français ; le but est de pouvoir réaliser des GUI pour Linux.

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par codefree Voir le message
    (...) je voudrais savoir quel code il faut mettre dans l'objet bouton entre begin et end pour lancer un ping avec son terminal dans un linux.

    Pouvez-vous aussi me conseiller pour débutant pour des livres lazarus en français le but est de pouvoir réaliser des gui pour linux.

    Merci !
    Pour le code à mettre, je vais plutôt te conseiller d'étudier l'objet TProcess et cette page, et pour le bouquin je n'ai pas la moindre idée.

    Bon courage,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 34
    Points : 59
    Points
    59
    Par défaut
    Bonjour,
    Effectivement, il faut utiliser la classe Tprocess. Il y'a également moyen de récupérer la message de sortie suite à la ligne de commande "poUsePipes" ainsi que les messages d'erreur "poStderrToOutPut". J'ai un petit code pour exécuter une requête SQL en utilisant PSQL qui est le client en ligne de commande de PostreSQL. J’espère que cela t'aidera et pourra te donner des idées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    procedure TMainForm.ExecuteSQL(const aSQL, aOutputFileName : string);
    var
       aProcess    : TProcess;
       aStringList : TStringList;
     begin
       aProcess    := TProcess.Create(nil);
       aStringList := TStringList.Create;
       // Initialiser ta ligne de commande
       AProcess.CommandLine :=
         'psql -d DB_MOSAIC -U postgres -h 196.217.240.103 -w motdepasse -c '''
         +aSQL+'''';
       // Demander d'attendre la fin d'execution et lire le retour
       aProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];//, poStderrToOutPut];
       // Executer le process
       aProcess.Execute;
       // Récupérer le flux de données
       aStringList.LoadFromStream(AProcess.Output);
       // Sauvegarde de la sortie dans un fichier
       aStringList.SaveToFile(aOutputFileName);
       //Libérer les instances d'objets
       aStringList.Free;
       aProcess.Free;
    end;
    Dans ton cas, il faudra modifier la ligne 10 comme suit pout pinger 10 fois sur l'adresse IP '192.168.0.23':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      AProcess.CommandLine := 'ping 192.168.0.23 -c 10';
    Puis il faut ensuite parser le fichier sortant et l'afficher dans une tStringGrid selon tes besoin. Un exemple d'affichage de base. A toi de broder.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    procedure TMainForm.LoadOutputFile( const aFileName: TFileName;
                                        aGrid: TStringGrid);
    var
      RowStrings : TStringList;
      rowLoop    : Integer;
    begin
      RowStrings := TStringList.Create;
      try
        RowStrings.LoadFromFile(aFileName);             // Charger le fichier
        aGrid.RowCount := RowStrings.Count;             // Modifie nb lignes de la grille
        for rowLoop := 0 to Pred(RowStrings.Count) do   // Boucle sur le nb de lignes
        begin
            aGrid.Cells[1, rowLoop] := rowstring[colLoop];
        end;
      finally
        ColStrings.Free;
        RowStrings.Free;
      end;
    end;
    Pour ce qui est du bouquin, voici des liens http://wiki.freepascal.org/Lazarus_Documentation/fr
    Bon courage.
    Salim.

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par codefree Voir le message
    En attendant d'acheter des livres sur Lazarus Free Pascal, je voudrais savoir quel code il faut mettre dans l'objet bouton entre begin et end pour lancer un ping avec son terminal sous Linux.
    Après testé TProcess et la récupération des informations retournées par la commande système Ping, vous pourrez vous entrainez à faire cela en utilisant des composants, ceux de la bibliothèque Indy par exemple...
    Le composant TIdIcmpClient répond à ce besoin.

    Mais attention, il faudra auparavant étudier comment on installe des composants sous Lazarus : Rien de bien compliqué comme le dit tintinux dans la discussion Installation de composants sous Linux
    Philippe.

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/05/2010, 15h54
  2. Bouton qui lance une appli
    Par lapinoufly dans le forum Simulink
    Réponses: 4
    Dernier message: 10/03/2010, 14h47
  3. Réponses: 8
    Dernier message: 17/12/2008, 11h10
  4. Fichier .bat qui lance une commande "executer"
    Par Mut dans le forum Windows XP
    Réponses: 5
    Dernier message: 23/10/2007, 15h52
  5. bouton qui lance une apllication via un script
    Par yamnetouaga dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 26/02/2007, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo