![]() |
| |||||||
| S'inscrire | FAQ | Membres | Calendrier | Recherche | Messages du jour | Marquer les forums comme lus |
![]() |
| LinkBack | Outils de la discussion | Modes d'affichage |
| |||
| Bonjour. Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, puis à relire le résultat pour l'écrire dans un TMemo. Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le bon contenu, mais l'ouverture de ce fichier échoue la première fois. Si je reclique sur le bouton lançant l'ensemble (le fichier tempo.txt existe donc déjà) tout se passe bien. Si je comprends bien, je ne peux pas lire le fichier juste créé. Je n'arrive pas à comprendre pourquoi. Mon code : if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, SW_HIDE) >=32 then begin //lecture du fichier tempo.txt et affichage dans resultat resultat.Lines.clear; AssignFile(f,'c:\tempo.txt'); {$I-} reset(f); {$I+} if IOResult = 0 then begin while not eof(f) do begin readln( f,s); resultat.Lines.add(s); end; closefile(f); end else MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); end Si vous avez un idée, je suis preneur. L'erreur est sans doute grossière, mais je ne suis qu'un amateur autodidacte. Merci. Didier. |
| | ||||
| ||||
| |
| |||
| Je suis un peu novice aussi, mais ton problème ne viendrait-il pas que lors de la création de ton fichier, tu ne le fermes pas et donc étant encore ouvert en écriture tu ne peux le lire ? "Didier" <nospam***nospamfree.fr.invalid> a écrit dans le message de news: 4698fdbc$0$25906$ba4acef3***news.orange.fr... > Bonjour. > Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, > puis à relire le résultat pour l'écrire dans un TMemo. > Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le bon > contenu, mais l'ouverture de ce fichier échoue la première fois. Si je > reclique sur le bouton lançant l'ensemble (le fichier tempo.txt existe > donc déjà) tout se passe bien. > Si je comprends bien, je ne peux pas lire le fichier juste créé. > Je n'arrive pas à comprendre pourquoi. > Mon code : > > if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, > SW_HIDE) >=32 then > begin > //lecture du fichier tempo.txt et affichage dans resultat > resultat.Lines.clear; > AssignFile(f,'c:\tempo.txt'); > {$I-} > reset(f); > {$I+} > if IOResult = 0 then > begin > while not eof(f) do > begin > readln( f,s); > resultat.Lines.add(s); > end; > closefile(f); > end > else > MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); > end > > Si vous avez un idée, je suis preneur. > L'erreur est sans doute grossière, mais je ne suis qu'un amateur > autodidacte. > Merci. > Didier. |
| |||
| Je suis un peu novice aussi, mais ton problème ne viendrait-il pas que lors de la création de ton fichier, tu ne le fermes pas et donc étant encore ouvert en écriture tu ne peux le lire ? "Didier" <nospam***nospamfree.fr.invalid> a écrit dans le message de news: 4698fdbc$0$25906$ba4acef3***news.orange.fr... > Bonjour. > Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, > puis à relire le résultat pour l'écrire dans un TMemo. > Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le bon > contenu, mais l'ouverture de ce fichier échoue la première fois. Si je > reclique sur le bouton lançant l'ensemble (le fichier tempo.txt existe > donc déjà) tout se passe bien. > Si je comprends bien, je ne peux pas lire le fichier juste créé. > Je n'arrive pas à comprendre pourquoi. > Mon code : > > if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, > SW_HIDE) >=32 then > begin > //lecture du fichier tempo.txt et affichage dans resultat > resultat.Lines.clear; > AssignFile(f,'c:\tempo.txt'); > {$I-} > reset(f); > {$I+} > if IOResult = 0 then > begin > while not eof(f) do > begin > readln( f,s); > resultat.Lines.add(s); > end; > closefile(f); > end > else > MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); > end > > Si vous avez un idée, je suis preneur. > L'erreur est sans doute grossière, mais je ne suis qu'un amateur > autodidacte. > Merci. > Didier. |
| |||
| Jeff a écrit : > Je suis un peu novice aussi, mais ton problème ne viendrait-il pas que lors > de la création de ton fichier, tu ne le fermes pas et donc étant encore > ouvert en écriture tu ne peux le lire ? > > "Didier" <nospam***nospamfree.fr.invalid> a écrit dans le message de news: > 4698fdbc$0$25906$ba4acef3***news.orange.fr... > >>Bonjour. >>Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, >>puis à relire le résultat pour l'écrire dans un TMemo. >>Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le bon >>contenu, mais l'ouverture de ce fichier échoue la première fois. Si je >>reclique sur le bouton lançant l'ensemble (le fichier tempo.txt existe >>donc déjà) tout se passe bien. >>Si je comprends bien, je ne peux pas lire le fichier juste créé. >>Je n'arrive pas à comprendre pourquoi. >>Mon code : >> >>if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, >>SW_HIDE) >=32 then >> begin >> //lecture du fichier tempo.txt et affichage dans resultat >> resultat.Lines.clear; >> AssignFile(f,'c:\tempo.txt'); >> {$I-} >> reset(f); >> {$I+} >> if IOResult = 0 then >> begin >> while not eof(f) do >> begin >> readln( f,s); >> resultat.Lines.add(s); >> end; >> closefile(f); >> end >> else >> MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); >> end >> >>Si vous avez un idée, je suis preneur. >>L'erreur est sans doute grossière, mais je ne suis qu'un amateur >>autodidacte. >>Merci. >>Didier. > > > Oui, j'y ai bien pensé, et c'est peut-être le problème. Pour le créer, j'utilise la redirection de la commande ipconfig /all vers le fichier : ipconfig /all > c:\tempo.txt. Donc, en pascal, je ne l'ouvre pas. Si je rajoute un assign et un closefile, j'ai une erreur aussi. Merci de ta réponse. Didier. |
| |||
| Jeff a écrit : > Je suis un peu novice aussi, mais ton problème ne viendrait-il pas que lors > de la création de ton fichier, tu ne le fermes pas et donc étant encore > ouvert en écriture tu ne peux le lire ? > > "Didier" <nospam***nospamfree.fr.invalid> a écrit dans le message de news: > 4698fdbc$0$25906$ba4acef3***news.orange.fr... > >>Bonjour. >>Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, >>puis à relire le résultat pour l'écrire dans un TMemo. >>Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le bon >>contenu, mais l'ouverture de ce fichier échoue la première fois. Si je >>reclique sur le bouton lançant l'ensemble (le fichier tempo.txt existe >>donc déjà) tout se passe bien. >>Si je comprends bien, je ne peux pas lire le fichier juste créé. >>Je n'arrive pas à comprendre pourquoi. >>Mon code : >> >>if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, >>SW_HIDE) >=32 then >> begin >> //lecture du fichier tempo.txt et affichage dans resultat >> resultat.Lines.clear; >> AssignFile(f,'c:\tempo.txt'); >> {$I-} >> reset(f); >> {$I+} >> if IOResult = 0 then >> begin >> while not eof(f) do >> begin >> readln( f,s); >> resultat.Lines.add(s); >> end; >> closefile(f); >> end >> else >> MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); >> end >> >>Si vous avez un idée, je suis preneur. >>L'erreur est sans doute grossière, mais je ne suis qu'un amateur >>autodidacte. >>Merci. >>Didier. > > > Oui, j'y ai bien pensé, et c'est peut-être le problème. Pour le créer, j'utilise la redirection de la commande ipconfig /all vers le fichier : ipconfig /all > c:\tempo.txt. Donc, en pascal, je ne l'ouvre pas. Si je rajoute un assign et un closefile, j'ai une erreur aussi. Merci de ta réponse. Didier. |
| |||
| > Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, > puis à relire le résultat pour l'écrire dans un TMemo. Au lieu de lancer l'interpéteur de commandes avec une redirection des sorties, pourquoi ne pas lancer directement IpConfig.exe en redirigeant ses sortie ? Voici un exemple: http://laurent-dardenne.developpez.c...ionConsole.zip Tu en trouveras d'autres ici: http://www.google.be/search?q=delphi...le+redirection PS: Pour une réponse plus rapide, utilise plutôt le forum: news://news.delphinaute.be/delphi -- Contribuez à l'effort SSL pour ICS. Visitez http://www.overbyte.be/eng/ssl.html -- francois.piette***overbyte.be Auteur du freeware ICS - Internet Component Suite Auteur du freeware MidWare - Multi-tiers framework http://www.overbyte.be "Didier" <nospam***nospamfree.fr.invalid> a écrit dans le message de news:4698fdbc$0$25906$ba4acef3***news.orange.fr... > Bonjour. > Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, > puis à relire le résultat pour l'écrire dans un TMemo. > Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le > bon contenu, mais l'ouverture de ce fichier échoue la première fois. Si > je reclique sur le bouton lançant l'ensemble (le fichier tempo.txt > existe donc déjà) tout se passe bien. > Si je comprends bien, je ne peux pas lire le fichier juste créé. > Je n'arrive pas à comprendre pourquoi. > Mon code : > > if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, > SW_HIDE) >=32 then > begin > //lecture du fichier tempo.txt et affichage dans resultat > resultat.Lines.clear; > AssignFile(f,'c:\tempo.txt'); > {$I-} > reset(f); > {$I+} > if IOResult = 0 then > begin > while not eof(f) do > begin > readln( f,s); > resultat.Lines.add(s); > end; > closefile(f); > end > else > MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); > end > > Si vous avez un idée, je suis preneur. > L'erreur est sans doute grossière, mais je ne suis qu'un amateur > autodidacte. > Merci. > Didier. |
| |||
| > Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, > puis à relire le résultat pour l'écrire dans un TMemo. Au lieu de lancer l'interpéteur de commandes avec une redirection des sorties, pourquoi ne pas lancer directement IpConfig.exe en redirigeant ses sortie ? Voici un exemple: http://laurent-dardenne.developpez.c...ionConsole.zip Tu en trouveras d'autres ici: http://www.google.be/search?q=delphi...le+redirection PS: Pour une réponse plus rapide, utilise plutôt le forum: news://news.delphinaute.be/delphi -- Contribuez à l'effort SSL pour ICS. Visitez http://www.overbyte.be/eng/ssl.html -- francois.piette***overbyte.be Auteur du freeware ICS - Internet Component Suite Auteur du freeware MidWare - Multi-tiers framework http://www.overbyte.be "Didier" <nospam***nospamfree.fr.invalid> a écrit dans le message de news:4698fdbc$0$25906$ba4acef3***news.orange.fr... > Bonjour. > Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, > puis à relire le résultat pour l'écrire dans un TMemo. > Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le > bon contenu, mais l'ouverture de ce fichier échoue la première fois. Si > je reclique sur le bouton lançant l'ensemble (le fichier tempo.txt > existe donc déjà) tout se passe bien. > Si je comprends bien, je ne peux pas lire le fichier juste créé. > Je n'arrive pas à comprendre pourquoi. > Mon code : > > if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, > SW_HIDE) >=32 then > begin > //lecture du fichier tempo.txt et affichage dans resultat > resultat.Lines.clear; > AssignFile(f,'c:\tempo.txt'); > {$I-} > reset(f); > {$I+} > if IOResult = 0 then > begin > while not eof(f) do > begin > readln( f,s); > resultat.Lines.add(s); > end; > closefile(f); > end > else > MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); > end > > Si vous avez un idée, je suis preneur. > L'erreur est sans doute grossière, mais je ne suis qu'un amateur > autodidacte. > Merci. > Didier. |
| |||
| Didier a utilisé son clavier pour écrire : > Bonjour. > Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, puis > à relire le résultat pour l'écrire dans un TMemo. > Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le bon > contenu, mais l'ouverture de ce fichier échoue la première fois. Si je > reclique sur le bouton lançant l'ensemble (le fichier tempo.txt existe donc > déjà) tout se passe bien. > Si je comprends bien, je ne peux pas lire le fichier juste créé. > Je n'arrive pas à comprendre pourquoi. > Mon code : > > if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, > SW_HIDE) >=32 then > begin > //lecture du fichier tempo.txt et affichage dans resultat > resultat.Lines.clear; > AssignFile(f,'c:\tempo.txt'); > {$I-} > reset(f); > {$I+} > if IOResult = 0 then > begin > while not eof(f) do > begin > readln( f,s); > resultat.Lines.add(s); > end; > closefile(f); > end > else > MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); > end > > Si vous avez un idée, je suis preneur. > L'erreur est sans doute grossière, mais je ne suis qu'un amateur autodidacte. > Merci. > Didier. ShellExecute est asynchrone. il faut attendre la fin du process avant de lire le résultat. |
| |||
| Didier a utilisé son clavier pour écrire : > Bonjour. > Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > tempo.txt, puis > à relire le résultat pour l'écrire dans un TMemo. > Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le bon > contenu, mais l'ouverture de ce fichier échoue la première fois. Si je > reclique sur le bouton lançant l'ensemble (le fichier tempo.txt existe donc > déjà) tout se passe bien. > Si je comprends bien, je ne peux pas lire le fichier juste créé. > Je n'arrive pas à comprendre pourquoi. > Mon code : > > if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, > SW_HIDE) >=32 then > begin > //lecture du fichier tempo.txt et affichage dans resultat > resultat.Lines.clear; > AssignFile(f,'c:\tempo.txt'); > {$I-} > reset(f); > {$I+} > if IOResult = 0 then > begin > while not eof(f) do > begin > readln( f,s); > resultat.Lines.add(s); > end; > closefile(f); > end > else > MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); > end > > Si vous avez un idée, je suis preneur. > L'erreur est sans doute grossière, mais je ne suis qu'un amateur autodidacte. > Merci. > Didier. ShellExecute est asynchrone. il faut attendre la fin du process avant de lire le résultat. |
| |||
| JDB a écrit : > Didier a utilisé son clavier pour écrire : > >> Bonjour. >> Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > >> tempo.txt, puis à relire le résultat pour l'écrire dans un TMemo. >> Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le >> bon contenu, mais l'ouverture de ce fichier échoue la première fois. >> Si je reclique sur le bouton lançant l'ensemble (le fichier tempo.txt >> existe donc déjà) tout se passe bien. >> Si je comprends bien, je ne peux pas lire le fichier juste créé. >> Je n'arrive pas à comprendre pourquoi. >> Mon code : >> >> if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, >> SW_HIDE) >=32 then >> begin >> //lecture du fichier tempo.txt et affichage dans resultat >> resultat.Lines.clear; >> AssignFile(f,'c:\tempo.txt'); >> {$I-} >> reset(f); >> {$I+} >> if IOResult = 0 then >> begin >> while not eof(f) do >> begin >> readln( f,s); >> resultat.Lines.add(s); >> end; >> closefile(f); >> end >> else >> MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); >> end >> >> Si vous avez un idée, je suis preneur. >> L'erreur est sans doute grossière, mais je ne suis qu'un amateur >> autodidacte. >> Merci. >> Didier. > > > ShellExecute est asynchrone. il faut attendre la fin du process avant de > lire le résultat. > > J'ai mis une boucle while not FileExists('c:\tempo.txt') do; aussotiôt après le ShellExecute , avec un affichage à chaque passage, il faut environ 20 passages dans la boucle pour que la fonction FileExists trouve le fichier. Je sors alors de la boucle, et rebelote, erreur d'entrée/sortie sur le fichier au moment du reset(f). Je craque un peu là. Didier. |
| |||
| JDB a écrit : > Didier a utilisé son clavier pour écrire : > >> Bonjour. >> Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > >> tempo.txt, puis à relire le résultat pour l'écrire dans un TMemo. >> Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le >> bon contenu, mais l'ouverture de ce fichier échoue la première fois. >> Si je reclique sur le bouton lançant l'ensemble (le fichier tempo.txt >> existe donc déjà) tout se passe bien. >> Si je comprends bien, je ne peux pas lire le fichier juste créé. >> Je n'arrive pas à comprendre pourquoi. >> Mon code : >> >> if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, >> SW_HIDE) >=32 then >> begin >> //lecture du fichier tempo.txt et affichage dans resultat >> resultat.Lines.clear; >> AssignFile(f,'c:\tempo.txt'); >> {$I-} >> reset(f); >> {$I+} >> if IOResult = 0 then >> begin >> while not eof(f) do >> begin >> readln( f,s); >> resultat.Lines.add(s); >> end; >> closefile(f); >> end >> else >> MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); >> end >> >> Si vous avez un idée, je suis preneur. >> L'erreur est sans doute grossière, mais je ne suis qu'un amateur >> autodidacte. >> Merci. >> Didier. > > > ShellExecute est asynchrone. il faut attendre la fin du process avant de > lire le résultat. > > J'ai mis une boucle while not FileExists('c:\tempo.txt') do; aussotiôt après le ShellExecute , avec un affichage à chaque passage, il faut environ 20 passages dans la boucle pour que la fonction FileExists trouve le fichier. Je sors alors de la boucle, et rebelote, erreur d'entrée/sortie sur le fichier au moment du reset(f). Je craque un peu là. Didier. |
| |||
| Il faut attendre que le ShellExecute se termine. Ca prend un certain temps. Attende que le fichier existe puis y accéder conduit à une erreur car il est encore en cours d'utilisation pas IPConfig. Je pense avoir répondu par email privé avec un bout de code qui utilise ShellExecuteEx and WaitForSingleObject. PS: Pour de meilleures réponse, utiliser un forum plus fréquenté que celui ci ! Par exemple: news://news.delphinaute.be/delphi -- francois.piette***overbyte.be Auteur du freeware ICS - Internet Component Suite Auteur du freeware MidWare - Multi-tiers framework http://www.overbyte.be http://francois-piette.blogspot.com "Didier" <nospam***nospamfree.fr.invalid> a écrit dans le message de news:46a277a2$0$5114$ba4acef3***news.orange.fr... > JDB a écrit : > > Didier a utilisé son clavier pour écrire : > > > >> Bonjour. > >> Je cherche, en Delphi 6, à exécuter : cmd /k ipconfig /all > > >> tempo.txt, puis à relire le résultat pour l'écrire dans un TMemo. > >> Ma commande s'exécute bien, le fichier tempo.txt est bien créé avec le > >> bon contenu, mais l'ouverture de ce fichier échoue la première fois. > >> Si je reclique sur le bouton lançant l'ensemble (le fichier tempo.txt > >> existe donc déjà) tout se passe bien. > >> Si je comprends bien, je ne peux pas lire le fichier juste créé. > >> Je n'arrive pas à comprendre pourquoi. > >> Mon code : > >> > >> if ShellExecute(0,'open','cmd',' /k ipconfig /all > c:\tempo.txt',nil, > >> SW_HIDE) >=32 then > >> begin > >> //lecture du fichier tempo.txt et affichage dans resultat > >> resultat.Lines.clear; > >> AssignFile(f,'c:\tempo.txt'); > >> {$I-} > >> reset(f); > >> {$I+} > >> if IOResult = 0 then > >> begin > >> while not eof(f) do > >> begin > >> readln( f,s); > >> resultat.Lines.add(s); > >> end; > >> closefile(f); > >> end > >> else > >> MessageDlg('Fichier non créé', mtWarning, [mbOk], 0); > >> end > >> > >> Si vous avez un idée, je suis preneur. > >> L'erreur est sans doute grossière, mais je ne suis qu'un amateur > >> autodidacte. > >> Merci. > >> Didier. > > > > > > ShellExecute est asynchrone. il faut attendre la fin du process avant de > > lire le résultat. > > > > > J'ai mis une boucle while not FileExists('c:\tempo.txt') do; aussotiôt > après le ShellExecute , avec un affichage à chaque passage, il faut > environ 20 passages dans la boucle pour que la fonction FileExists > trouve le fichier. > Je sors alors de la boucle, et rebelote, erreur d'entrée/sortie sur le > fichier au moment du reset(f). > Je craque un peu là. > Didier. |
| |
| |
![]() |
| Tags: commande, quotdosquot, shellexecute |
| Outils de la discussion | |
| Modes d'affichage | |
| |
| ||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Pas de commande "Aide et Support" dans le menu "Démarrer" | rick22560 | Newsgroup microsoft.public.fr.windowsxp.installation | 5 | 12/05/2008 11h55 |
| Où est passé la commande "Insérer > une formule de politesse" ? | é¨`^ | Newsgroup microsoft.public.fr.word | 9 | 28/02/2008 05h44 |
| commande top et champ "sy" pour programme parallele | Matlerouge | Newsgroup fr.comp.os.linux.configuration | 0 | 10/01/2008 23h02 |
| [ Tiger ] Commande Finder "diaporama" lance Automator... | ric zito | Newsgroup fr.comp.os.mac-os.x | 3 | 03/01/2008 20h00 |
| IE7 beta : enlever une commande du menu "tools" | jcg | Newsgroup microsoft.public.fr.ie | 0 | 05/06/2006 22h51 |