Delphi 7: comment exécuter une commande shell et vérifier le résultat?
Je suis l'aide de Delphi 7 et ne peut pas prédire la cible de la version de Windows.
J'ai besoin de créer une base de données (probablement MySql, mais pourrait être autre chose) et de définir des structures de la table. Je n'ai pas besoin de remplir toutes les données. Malheureusement, tous les composants ADO semblent attendre à ce que la base de données existe déjà et ils vous permettra de la manipuler.
Donc, puisque c'est seulement quelques commandes simples, j'ai pensé que je pourrais aussi bien utiliser ShellExectute().
D'accord? En désaccord?
Quelqu'un peut-il me donner un exemple de code qui va tenter de l'exécuter "MySql --version" et laissez-moi vérifier le résultat? Après, je devrais être capable de comprendre par moi-même. Merci.
[modifier]
Aucune infraction, mais je ne sais comment google. C'est juste que je ne trouve pas de résultats utiles. C'est de ma faute pour ne pas être explicite dans cette question, de sorte s'il vous plaît accepter mes excuses - ce que j'ai besoin d'un exemple de code, pas juste le nom d'un composant.
Désolé (et merci pour les réponses pour l'instant (qui sont toutes des +1))
[modifier]
Les liens qui Robert donne de faire le travail (procédure RunDosInMemo() fait le truc) ... B U T vous Devez n'oubliez pas d'inclure un .extension exe (donc, notepad.exe', pas seulement le 'bloc-notes', et ge un chemin d'accès complet si votre commande n'est pas sur le chemin.
- Êtes-vous pour demander des conseils sur la façon de créer une base de données à partir de zéro, ou demandez-vous comment exécuter une commande de capture et de sa sortie? (Si votre réponse est à la fois, alors vous devriez avoir demandé à deux questions distinctes.)
- Rob, je vais prendre soit. Ligne de fond est que j'ai besoin de créer une base de données et des tables, mais pas de remplir toutes les données. Plusieurs gens dans diufferent questions ont essayé d'aider mby faisant mention de l'oiseau de feu ou d'ado, mais ces gens ne donnent pas de détails sur la façon de créer par programmation de la base de données avec ces outils - et je ne vois pas comment. Donc, puisque je sais que la ligne de commande pour créer une base de données et de table, j'ai pensé que je pourrais exécuter une commande shell à la place. Ligne de fond, je n'aime pas la façon dont il descend, mais quelqu'un peut-il me montrer comment créer une base de données MySql avec une table unique à partir de Delphi?
Vous devez vous connecter pour publier un commentaire.
Voici un article qui explique en détail
La Capture de la sortie d'un DOS (commande/console) de la Fenêtre
Mais en bref, vous devez Créer deux tuyaux à lire et à écrire la sortie. Ensuite, vous devez définir StdInput et StdOutput dans le TStartUpInfo structure, puis transmettre cette structure à la La fonction CreateProcess() appel.
Ici est un autre article qui montre comment Attendre la fin du processus.
Utilisation DSiExecuteAndCapture de DSiWin32:
Je me demande pourquoi tout le monde qui veut lancer un nouveau processus a tendance à utiliser ShellExecute au lieu de cela, qui est conçu pour ouvrir le fichier dans l'application associée?
Vous voulez que les nouveaux processus? Ensuite, utilisez la fonction CreateProcess. Fin de l'histoire.
CreateProcess vous permet de vous attendre pour processus, pour obtenir son code de sortie, à lire sa sortie de la console et beaucoup plus.
Ce que vous cherchez, sans doute, est une base de données intégrée. Quelques options:
Soit avec des bases de données approprié et des composants d'accès aux données (pas sûr de la prise en charge ADO pour l'embarqué FB et MySQL), vous serez en mesure de:
J'ai sauvé ce à partir d'un message de groupe de discussion il y a longtemps, je ne sais pas qui originall écrit-il, mais.
Ce code vous permet d'exécuter une application DOS et capturer la sortie dans un TMemo. Vous pouvez alors tirer ce dont vous avez besoin de la note, avec un petit essai et d'erreur lors de l'analyse des lignes.
RawByteString
paru dans D2009 et j'ai D7.J'ai écrit une unité et un ensemble de composants pour gérer la redirection de la console en delphi il y a très longtemps:
http://www.fulgan.com/delphi/dospipes15.zip
Mais au-delà, vous ne devriez pas avoir à passer par là: utilisation de la connexion ADO composant simplement pour se connecter à la base de données du catalogue par défaut et ensuite utiliser la méthode "execute" pour créer quelle que soit la base de données et le schéma dont vous avez besoin. Le SERVEUR de base de données doivent être correctement installés et en cours d'exécution pour que cela fonctionne, mais, au moins avec MSSQL, il n'y a pas de problème avec la création de nouvelles bases de données de cette façon. le exacte de la chaîne de connexion à utiliser peut changer en fonction de la cible DB, cependant.