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

Langage Delphi Discussion :

Function Goto Batch ne marche pas avec ShellExecute Delphi


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 142
    Points : 80
    Points
    80
    Par défaut Function Goto Batch ne marche pas avec ShellExecute Delphi
    Bonsoir a tous,

    Voila je viens de me rendre compte que la fonction Goto Batch ne marche pas avec se Code
    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
    function ConstructorBatch(Batch: TMemo): String;
    const
     Sub = '&&';
    var
      I: Integer;
      Cmd: String;
    begin
      Result := '';
      for I := 0 to Batch.Lines.Count - 1 do
       begin
         Cmd := Cmd + Batch.Lines.Strings[I] + Sub;
       end;
       Result := Copy(Cmd,0, Length(Cmd) -2);
    end;
     
    procedure TForm1.btn_ExecuterClick(Sender: TObject);
     Var aCmdLine : PChar;
    begin
    aCmdLine := PChar(cmdSwitch + ConstructorBatch(Batch));
    StatusBar1.SimpleText := aCmdLine;
      Case cb_FenetreDos.Checked of
        True :ShellExecute(Handle, nil, 'CMD', aCmdLine, nil, sw_ShowNormal);
        False :ShellExecute(Handle, nil, 'CMD', aCmdLine, nil, sw_Hide);
      end;
    end;
     
    procedure TForm1.RadioButton1Click(Sender: TObject);
    begin
     CmdSwitch := CmdSwitchs[TRadioButton(Sender).tag] ;
      if RadioButton2.Checked Then
      With cb_FenetreDos do
      Begin
        Checked := True;
        Enabled := False;
      End
      Else cb_FenetreDos.Enabled := True;
    end;
     
    procedure TForm1.FormShow(Sender: TObject);
    begin
    RadioButton2.Checked := True;
    end;
    Exemple se code Batch (Inséré dans le (MEMO = 'Bach') (Probléme ":boucle")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @title << Batch >>
    @set t=0
    :boucle
    cls
    @color %t%
    @echo ------------------
    @echo ---- CADRE ------
    @echo ------------------
    echo %t%
    @set /a t = t + 1
    if %t%==99 goto fin
    goto boucle
    :fin
    pause
    Erreur de la console : la syntax du nom de fichier de repertoire ou de volume est incorrecte.

    Alors j'ai tester se code batch directement dans un fichier *.bat est la marche

    Auriez vous une idée doux pourrai venir le problème ?

    Merci de votre réponse & Bonne fête de fin d'année
    Il n'existe guère de problèmes sans solution, et parfois l'absence de solution décourage le problème

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    moi j'ai une idée douce oui

    si je comprend bien tu construis la commande "CMD @title << BATCH >> && @set t=0 && :boucle ...

    et bien ce n'est pas une commande valide, d'une part car "<" et ">" sont des redirecteurs qu'il faut préfixer par un "^", et d'autre part car les commandes utilisées ne fonctionnent pas en direct à ma connaissance.

    Memo.SavetoFile('fichier.cmd');
    puis exécution du .CMD (ou .BAT)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 142
    Points : 80
    Points
    80
    Par défaut Tout d’abord merci d'avoir prêter attention a mon sujet
    Bonjour Paul TOTH,
    Tout d’abord merci d'avoir prêter attention a mon sujet

    Je viens de tester se bout de code avec la fonction ("ConstructorBatch") qui a pour bute de construire la commande CMD dans les règle de l’ars
    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
    @echo off
    echo Addition
    set /a add = 5+5
    echo %add%
    echo.
    echo Soustraction
    set /a sous = 10-5
    echo %sous%
    echo.
    echo Division
    set /a div = 10/2
    echo %div%
    echo.
    echo Multiplication
    set /a mult = 10*2
    echo % mult%
    pause
    Bon rien de bien compliquer (Addition , Soustraction , Division , Multiplication) mais cella marche dans le programme sans l'enregistrer

    Autre Exemple la bouche FOR en Batch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR %A IN (1 2) DO FOR %A IN (A B) DO ECHO %A
    Cella marche dans le programme sans l'enregistrer

    Certaine commande marche est d'autre non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
    , Maintenant pourquoi certaine CMD marche est d'autre non, elle devrai toute marcher le compilateur de commande lui ne change pas CMD.exe qui traite tout les commandes BAT ou CMD , J'ai tu mal a comprendre le POURQUOI (Si je l'enregistre sa marche Exemple avec le Donc si j'ai bien compris le BAT est compiler l'or de son exécution Double clic , Donc la Méthode est la même que le BAT est enregistré ou PAS les informations (Commandes) sons traiter de la même façon par le compilateur CMD.exe Dans cette logique sa devrait marcher mais sa ne marche pas
    Il n'existe guère de problèmes sans solution, et parfois l'absence de solution décourage le problème

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/02/2010, 16h13
  2. [VB6] TypeOf ne marche pas avec les Label ?
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 21/04/2006, 13h36
  3. [CSS] Bug IE avec height ne marche pas avec les %
    Par El Riiico dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/06/2005, 17h11
  4. [xhtml][css] bouton du form ne marche pas avec IE6
    Par chinouk dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 14/06/2005, 14h00
  5. Rollback ne marche pas avec interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/03/2004, 08h39

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