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 :

Remplacement de TProcess.CommandLine [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 94
    Par défaut Remplacement de TProcess.CommandLine
    Bonjour à tous.

    Débutant en Linux et en Lazarus j'ai le problème suivant
    lorsque j'exécute la petite procédure qui suit tout se passe bien quand j'utilise Process.CommandLine. (avertissement à la compilation : commande obsolète)
    lorsque j'exécute la même procédure MAIS en changeant VProcess.CommandLine par VProcess.Executable je récupère une remontrance : Executable not found: "'/bin/ls /media/jj/VERBATIM".

    J'ai le même résultat en supprimant /bin/ dans la commande

    Que faire :

    - ignorer l'avertissement du compilateur jusqu'à la mort de cette option
    - contourner le problème, mais comment ?

    Merci.

    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 TForm1.Button1Click(Sender: TObject);
    var
      VProcess: TProcess;
      VStrTemp: TStringList;
    begin
      VProcess := TProcess.Create(nil);
      VStrTemp := TStringList.Create;
      try
        VProcess.CommandLine := '/bin/ls /media/jj/VERBATIM';
    //  VProcess.Executable := '/bin/ls /media/jj/VERBATIM';
        VProcess.Options := [poWaitOnExit, poUsePipes];
        VProcess.Execute;
        VStrTemp.LoadFromStream(VProcess.Output);
        Memo1.Clear;
        Memo1.Text := VStrTemp.Text;
      finally
      end;
      VStrTemp.free;
    end;

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 166
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Il faut faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      VProcess.Executable := '/bin/ls';
      VProcess.Parameters.Add('/media/jj/VERBATIM');

  3. #3
    Membre actif
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 94
    Par défaut
    @ Roland Chastain
    Merci, je viens de tester, tout est ok.
    je vais pouvoir aller me coucher et passer une bonne nuit
    Et bonne nuit à vous aussi

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 196
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      VProcess.Executable := '/bin/ls';
      VProcess.Parameters.Add('/media/jj/VERBATIM');
    Merci pour cet utile rappel. J'archive ce fil dans mes marque-pages, parce que, comme je perds un temps fou chaque fois que je veux recourir à la nouvelle méthode, j'ai encore tendance à me rabattre sur l'ancienne.

    Ce sont sûrement de sérieuses et subtiles raisons qui ont conduit à faire écrire en deux lignes ce qui fonctionnait en une ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Applet signee mais s'execute qd meme avec un cancel
    Par nazimb dans le forum Applets
    Réponses: 0
    Dernier message: 28/11/2008, 01h45
  2. Process inconnu que je ne parviens pas à killer
    Par HNT dans le forum Administration système
    Réponses: 5
    Dernier message: 06/07/2006, 16h55
  3. Réponses: 6
    Dernier message: 04/07/2006, 10h36
  4. [Process]Execution de process dans un thread
    Par devjava dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 18/06/2004, 10h34

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