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

Composants VCL Delphi Discussion :

Compo RedirectionConsole : Problème étonnant


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 893
    Par défaut Compo RedirectionConsole : Problème étonnant
    bonjour

    j'ai installé ce compo, qui m'a été conseillé par un membre du forum

    j'avous qu'il est sympa et qu'il répond plus ou moins à ce que je voulais faire

    mais il y a un prob que je ne comprends pas du tout ...

    déjà voilà l'adresse pour le dl :
    http://delphi.developpez.com/sources...rectionConsole

    (il y a un pti exemple dedans)

    j'ai donc créé une nouvelle appli delphi :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DosCommand;
     
    type
      TForm1 = class(TForm)
        DosCommand1: TDosCommand;
        Memo1: TMemo;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure Edit1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    DosCommand1.CommandLine := 'cmd.exe';
    DosCommand1.OutputLines := Memo1.Lines;
    DosCommand1.Execute;
    end;
     
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      If Key = VK_Return then begin
          If LowerCase(Edit1.Text) = 'exit' then begin
          Doscommand1.SendLine('exit',true);
          sleep(10);
          Application.Terminate;
          end;
        DosCommand1.SendLine(Edit1.Text,True);
        Edit1.Clear;
      end;
    end;
     
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    Doscommand1.SendLine('exit',true);
    sleep(10);
    end;
     
    end.

    je n'ai aucun problème, le prog fonctionne parfaitement ...

    SAUF que maintenant j'ai rajouté autre chose et c'est là que je ne comprends pas :

    après avoir envoyé chaque commande dos je reçois les résultats dans un mémo mais j'aimerais exécuter d'autre commande comme par ex savetofile ou n'importe quoi d'autre ...

    donc je met le "savetofile" (ou autre code) après ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DosCommand1.SendLine(Edit1.Text,True);
    Edit1.Clear;
    et là ... rien ne se passe ...
    tout ce que je mettrai après ce code ne sera pas exécuté

    j'ai trouvé un moyen de faire le code se trouvant à la suite s'exécuter : il faut ajouter un showmessage (et donc après avoir clické sur ok le code sera exécuté)

    c'est la syntaxe qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DosCommand1.SendLine(Edit1.Text,True);
    Edit1.Clear;
    showmessage('bla bla bla bla');
    memo1.savetofile...... / ou autre code
    inutile de vous dire que ça soule un mac de devoir valider la messagebox tout le temps ...

    donc j'aimerais savoir quoi faire pour pouvoir exécuter du code à la suite OU ENCORE s'il y a moyen de "tricher" en ajoutant autre chose à la place du showmessage qui ne soulera ...

  2. #2
    Membre Expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Par défaut
    Salut,

    Je ne connais pas ce composant...

    Mais as-tu essayé avec un application.ProcessMessages ou un sleep ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 893
    Par défaut
    j'ai essayé et ça ne fonctionne pas ...

    mais c'est bizzard .. vraiment je ne comprends rien

    je pense qu'il faut installer et tester pour y croire !

    à mon avis il faudrait faire un truc qui remplacera le showmessage mais en "hiden" cad qui cochera vite la case ok

    enfin je ne comprends pas trop et ça m'énerve grave

  4. #4
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    Et si tu mets un point d'arrêt sur la ligne Edit1.clear que tu appuye ensuite sur F7, il va où ? (dans ton code ou il n'y a pas de ShowMessage) si la ligne Edit1.clear s'execute, rien n'empeche le reste de s'exécuter, par contre peut être que ton composant garde la main et qu'il faut le libérer, le fermer ou lui dire de rendre la main, à voir dans la doc du composant lui même.

    bon courage !

Discussions similaires

  1. fftw - problème étonnant
    Par richard dev dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 28/01/2012, 17h40
  2. Problème de privilège étonnant !
    Par alex_972 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 18/11/2011, 22h54
  3. Problème de variable contenant un nom composé
    Par kstou2001 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 06/09/2011, 16h47
  4. Réponses: 6
    Dernier message: 18/04/2011, 14h40
  5. Réponses: 5
    Dernier message: 26/03/2007, 01h30

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