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

 Delphi Discussion :

[D6][Windows 10] Utiliser un TEdit dans une instruction de commande


Sujet :

Delphi

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 191
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 191
    Points : 1 241
    Points
    1 241
    Par défaut [D6][Windows 10] Utiliser un TEdit dans une instruction de commande
    Bonjour à toutes et à tous,

    Avec ma commande de type string, je n'arrive pas à placer un TEdit pour avoir le choix d'inscrire le nom de mon film convertit.

    Ceci fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -preset veryfast -c:a copy -s 960x540 Conversion\converted.mp4';
    Et j'aimerai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -preset veryfast -c:a copy -s 960x540 Conversion\'"Ednom.text'"'.mp4';
    A mon avis je suis encore perdu avec les guillemets.

    Si quelqu'un avait une idée merci d'avance.

    Désolé, j'ai trouvé le problème, maintenant je peus choisir un nom pour mon film.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -preset veryfast -c:a copy -s 960x540 Conversion\'+Ednom.text+'.mp4';
    @ ShaiLeTroll, merci de ta réponse je l'ai vue après.

    @+,

    cincap

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 219
    Points : 21 554
    Points
    21 554
    Par défaut
    Format et %s
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    commande := '-preset veryfast -c:a copy -s 960x540 Conversion\'+Ednom.text+'.mp4';
    quelque chose comme ça non?

  4. #4
    Membre émérite
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 912
    Points : 2 741
    Points
    2 741
    Par défaut
    ou bien comme le préconise ShaiLeTroll :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande := Format('-preset veryfast -c:a copy -s 960x540 Conversion\%s.mp4',[Ednom.text]) ;
    A+
    Charly

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 191
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 191
    Points : 1 241
    Points
    1 241
    Par défaut
    @ papyvore, merci de ta réponse c'est bien cela tout s'est enchainé le topic peut-être fermé.

    Merci à tous,

    @+,

    cincap

  6. #6
    Membre émérite
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 912
    Points : 2 741
    Points
    2 741
    Par défaut
    Bonjour Cincap,

    quand on a une chaine avec une ou plusieurs variables la commande Format est préférable, elle est très rapide et facilite aussi la transformation d'une application en langue étrangère ou multilingue.
    De plus c'est souvent plus lisible dans le code.

    Mais, bien sûr, on peut aussi utiliser l'autre solution.

    Bonne journée

    A+
    Charly

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 191
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 191
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour à toutes et à tous, désolé de revenir sur ce sujet.

    Avec cette commande cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ShellExecute(Handle, nil, pchar(chappli + 'Test2.bat'), pchar('"'+Ednom.text+'"'), nil,SW_HIDE);
    Mais si j'utilise un fichier batch avec "%1" a la fin de ce fichier et que j'utilise :

    -preset veryfast -c:a copy -s 960x540 Conversion/%1.mp4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CreateProcess(Nil,PChar(chappli + 'Test2.bat'),Nil,Nil,False,0,Nil,Nil,StartInfo,ProcessInfo)
    Je n'arrive toujours pas à utiliser un Tedit et le placer pour indiquer le nom.

    Merci de l'aide éventuelle.

    @+,

    cincap

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    5 191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 5 191
    Points : 11 480
    Points
    11 480
    Par défaut
    La première chose est que CreateProcess n'est pas capable de retrouver l'application associée à une extension comme le fait ShellExecute. Il faut clairement spécifier l'exécutable, ici cmd.exe. Le chemin doit également être entièrement qualifié puisque CreateProcess ne traite pas les AppPaths de la base des registres ni même la variable PATH.

    La commande de base se présente donc ainsi (/c est obligatoire pour exécuter le batch) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    App := 'C:\Windows\System32\cmd.exe';
    Cmd := Format('/c "%s\Test2.bat"', [chappli]);
    CreateProcess(PChar(App), PChar(Cmd), ...)
    Pour passer des paramètres au batch il faut faire comprendre à cmd.exe qu'une suite de commandes ne forme qu'un seul argument. Et comme toujours, ça se fait avec des guillemets. On aura donc une imbrication de guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cmd := Format('/c ""%s\Test2.bat" "%s""', [chappli, Ednom.text]);

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 191
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 191
    Points : 1 241
    Points
    1 241
    Par défaut
    @ Andnotor, bonjour et merci pour l'explication et le code.

    Dans mon test malgré l'excellent code mon fichier se nomme s.mp4 malgré que Ednom.text indiquait "MonFilm" avec la commande dans mon batch.

    Conversion est le dossier créé avec mkdir dans Test2.bat !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @echo
    ffmpeg -i "concat:VTS_01_1.VOB|VTS_01_2.VOB|VTS_01_3.VOB" -vcodec libx264 -crf 27 -preset veryfast -c:a copy -s 960x540 Conversion/%s.mp4 
    done
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Cmd := Format('/c ""%s\Test2.bat" "%s""', [chappli, Ednom.text]);
    if CreateProcess(PChar(App), PChar(Cmd),Nil,Nil,False,0,Nil,Nil,StartInfo,ProcessInfo) then
      Begin
     .....
    .....
    Ou est mon erreur ?

    Je continue à tester.

    @+,

    cincap

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    5 191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 5 191
    Points : 11 480
    Points
    11 480
    Par défaut
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    ffmpeg -i "concat:VTS_01_1.VOB|VTS_01_2.VOB|VTS_01_3.VOB" -vcodec libx264 -crf 27 -preset veryfast -c:a copy -s 960x540 Conversion/%1.mp4

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 191
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 191
    Points : 1 241
    Points
    1 241
    Par défaut
    @ Andnotor, bien vu c'est super cela fonctionne, cela m'aurait étonné autrement.

    Par contre j'avais remarqué que je n'avais pas besoin de renseigné "App := 'C:\Windows\System32\cmd.exe';" avec mon code d'origine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if CreateProcess(PChar(App), PChar(Cmd),Nil,Nil,False,0,Nil,Nil,StartInfo,ProcessInfo) then...
    puisque j'utilise l'affichage de la console sur un Tpanel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while h=0 do
       h:=findwindow('ConsoleWindowClass',FileMSDos);   // ConsoleWindowClass
       Windows.SetParent(h,Panel2.handle);
    Encore un grand merci pour toutes ces explications et la solution.

    @+,

    cincap

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

Discussions similaires

  1. utilisation de getdate() dans une fonction ?
    Par devdev dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/03/2005, 17h40
  2. Utilisation de Getdate dans une fonction
    Par BaronSamdi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/11/2004, 10h12
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. [Applet]Utiliser plusieurs Applet dans une même classe
    Par BRAUKRIS dans le forum Applets
    Réponses: 5
    Dernier message: 11/06/2004, 15h27
  5. Réponses: 3
    Dernier message: 11/03/2004, 10h58

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