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 :

Delphi 6 et pipe


Sujet :

Langage Delphi

  1. #1
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut Delphi 6 et pipe
    Bonjour,

    je me suis mis depuis peux à Delphi 6, je suis donc un grand débutant.

    je cherche à faire une appli console, donc mon premier soucis est de manager les arguments et les entrées pipes. J'ai réussit pour les arguments, pas de problèmes, j'ai même trouvé comment manipuler des expressions régulières pour filtrer, c'est ok.

    Par contre pour les pipes, je galère. Le code sur la FAQ de developpez.com proposé est celui-ci (adapté par mes soins) :

    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
     
    //-----------------------------------------------------------------------    
    Procedure ReadPipedDatas;
    //-----------------------------------------------------------------------  
    var
    	Arguments: String;
    	NbArgs: integer;
    Begin
    	NbArgs:=0;
    	try 
    		Assign(INPUT,'');
    		Reset(INPUT);
    		Assign(OUTPUT,'');
    		Rewrite(OUTPUT);
    		While not(Eof) do begin 
    			Readln(INPUT,Arguments);
    			Writeln(OUTPUT,Arguments);
    		end
    	Finally 
    		Close(INPUT);
    		Close(OUTPUT); 
    	end;
    End;
    Ca marche trés bien avec ce genre de chose, en console, vous faites un dir /b >MaListe.txt sur une arboresence puis vous lisez le fichier et vous rediriger le flux dans votre programme comme suit : type MaListe.txt | Mon_ProgrammeConsoleEnDelphiQuiEstSenseDechirer.exe

    Sauf que, si j'exécute maintenant mon programme sans rien envoyer dedans, et bien il attends indéfiniment un eof qui ne viendra pas, il faudra faire Ctrl C pour sortir du programme. Et ça c'est très gênant. Une application comme grep.exe ne pose pas ce genre de problème, il est donc certainement possible de s'en sortir.

    Question, comment ?

    Qui peux me donner la solution, si possible le code en entier pour que je puisse faire un copier coller dans un nouveau projet et tester.

    Merci.

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

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    si tu ajoute dans la boucle, cela peut résoudre ton problème, d'ailleurs, la boucle est-elle obligatoire ? existe-il un tampon (~4Ko) comme avec CreateProcess\CreatePipe en mode Windows ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Arguments = '' then
      Break;
    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
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    merci pour la réponse, ça à l'air pas mal et j 'aurai pu le trouver tellement ça semble évident.

    Pourtant, ça ne marche pas. Ca bloque indéfiniement à la ligne contenant Eof .

    Le code suivant en donne une illustration :

    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
     
    program Project1;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils;
    var
    	Arguments: String;
     
    Begin
      writeln('debut');
    	try
    		Assign(INPUT,'');
    		Reset(INPUT);
    		Assign(OUTPUT,'');
    		Rewrite(OUTPUT);
    		While not(Eof) do begin
          writeln('mark 1');
    			Readln(INPUT,Arguments);
    			Writeln(OUTPUT,Arguments);
    		end
    	Finally 
    		Close(INPUT);
    		Close(OUTPUT); 
    	end;
    writeln('fin');
    End.
    echo test | Project1.exe

    Affiche :

    debut
    mark 1
    test
    fin


    Project1.exe

    Affiche indéfiniement :


    debut

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

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		repeat
    			Readln(INPUT,Arguments);
    			Writeln(OUTPUT,Arguments);
    		until Eof or (Arguments = '')
    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

  5. #5
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Ne marche pas. La fonction readln appelle indéfiniment un keystroke ou un EOF. avant, elle ne veux rien savoir...

    Petit code d'implémentation :

    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
     
    program Project1;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils;
    var
    	Arguments: String;
     
    Begin
      writeln('debuts');
    	try
    		Assign(INPUT,'');
    		Reset(INPUT);
    		Assign(OUTPUT,'');
    		Rewrite(OUTPUT);
        repeat
    			Readln(INPUT,Arguments);
          if (Arguments = '') then break;
    			Writeln(OUTPUT,Arguments);
    		until Eof or (Arguments = '')
    	Finally
    		Close(INPUT);
    		Close(OUTPUT); 
    	end;
    writeln('fin');
    End.

  6. #6
    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
    je ne sais pas si tu peux t'en sortir avec juste INPUT et OUTPUT...regarde du côté de GetStdHandle(STD_INPUT_HANDLE) dans l'API Windows
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par john.fender
    Sauf que, si j'exécute maintenant mon programme sans rien envoyer dedans, et bien il attends indéfiniment un eof qui ne viendra pas, il faudra faire Ctrl C pour sortir du programme.
    Oui c'est le comportement normal car ici du gére un device. A l'origine sous TP on pouvait piloter d'autres device que le clavier.
    En même temps d'utiliser un pipe pour ne rien y envoyer, ce n'est pas courant .
    Citation Envoyé par john.fender
    Et ça c'est très gênant. Une application comme grep.exe ne pose pas ce genre de problème, il est donc certainement possible de s'en sortir.
    Cela laisse supposer que c'est le destinataire du pipe qui prend la décision de terminer la liaison, c'est peu probable tant que le process émetteur est en cours d'exécution.
    A mon avis, faudrait regarder le code source, il y a de grande chance qu'il surveille la fin du process émetteur, un peu comme ce composant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      #code de TDosCommand
     while ((i < bread) and not (Terminated)) do

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par john.fender Voir le message
    La fonction readln appelle indéfiniment un keystroke ou EOF
    Je dirais que Readln attend un Carriage Return ou un EOF...

    Bon...pour ton problème c'est tiré par les cheveux mais je vois pas mieux...

    L'idée est d'essayer de lire le FileSize de INPUT....
    lorsqu'il y a une redirection, FileSize nous retourne hummm... n'importe quoi...

    Mais si il n'y a pas de redirection, et que INPUT est le clavier,
    ceci provoque une erreur....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      Try
        Assign(INPUT, '');
        Reset(INPUT);
        Assign(OUTPUT, '');
        Rewrite(OUTPUT);
     
        {$I-}
        FileSize(INPUT); //Lecture bidon du size of file
                         //Provoque IOResult=6 si INPUT est le clavier
        If IOResult <> 0 Then halt(0); //Sortie du programme.
        {$I+}
    Testé ici avec D5 sur XP.

    Bonne Programmation...
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Tu peux aussi consulter cette entrée de la FAQ Delphi.

  10. #10
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Le code suivant...

    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
     
    program Pipe;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils;
     
    	procedure PimpMyPipe;
    	var
    		PipedDatas:string;
    		PipeTest:integer;
    	begin
    		Try
    			Assign(INPUT, '');
    			Reset(INPUT);
    			Assign(OUTPUT, '');
    			Rewrite(OUTPUT);
    			PipeTest:=FileSize(INPUT);
    			writeln('vous avez ecrit :');
    			While not(Eof) do begin 
    				Readln(INPUT,PipedDatas);
    				Writeln(OUTPUT,PipedDatas);
    			end			
    		except
    			writeln('vous n''avez rien ecrit');
    			//halt(1);
    		end;
    	end;
     
    begin
    	writeln('Lecture de l''entree pipe...');
    	PimpMyPipe;
    	writeln('Fin du programme');
    end.
    ...Donne en console...

    Pipe.exe
    Lecture de l'entree pipe...
    vous n'avez rien ecrit
    Fin du programme

    echo test | Pipe.exe
    Lecture de l'entree pipe...
    vous avez ecrit :
    test
    Fin du programme


    ... et marche parfaitement !

    Un GRAND merci à vous tous et surout à Eric Boisvert, sans qui je n'aurai certainement pas trouvé.

    Nb : testé avec Delphi 6 enterprise sous W7 MUI 32 bits.
    Nb2 : Est il possible d'ajouter cette astuce dans la FAQ ?

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par john.fender Voir le message
    Nb : testé avec Delphi 6 enterprise sous W7 MUI 32 bits.
    Nb2 : Est il possible d'ajouter cette astuce dans la FAQ ?
    Pourtant, le lien que donne Laurent vers la FAQ aurait du fonctionner...
    Mais j'avoue ne pas l'avoir testé...
    Citation Envoyé par Laurent Dardenne
    Tu peux aussi consulter cette entrée de la FAQ Delphi.
    et c'est selon moi bien mieux à long terme que ma bidouille avec FileSize(INPUT)...

    Si j'étais toi, je re-écrirais dans le sens proposé dans la FAQ....
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  12. #12
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je n'ai pas utilisé le code de la FAQ parce que dans la liste des tests proposé dans l'article en question, j'ai vu :

    Set PrgName=%DirPrgName%TestIO.exe
    ...
    %PrgName%
    %PrgName%>Result1.txt
    %PrgName%|more
    %PrgName%|more>Result2.txt
    %PrgName%<Result1.txt
    %PrgName%<Result1.txt>Result3.txt


    mais pas ce qui m'intéresse, en l'occurence :

    echo test | %PrgName%

    De plus la phrase :
    "Il est parfois utile de savoir si l'éxécution d'une application console redirige ou non ses entrée/sortie standard"
    prête à confusion puisqu'il est ici question de rediriger un flux, pas d'en recevoir un.

    Et effectivement, le code suivant...

    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
     
    program TestIO;
     
    {$APPTYPE CONSOLE}
     
    uses sysutils, Windows;
     
    var
      ConsoleHandle : THandle;
     
    Function GetHandleType(Handle:THandle): String;
    begin
      case GetFileType(Handle)of
       FILE_TYPE_UNKNOWN : Result:='type inconnu ou erreur.';
       FILE_TYPE_DISK    : Result:='fichier disque.';
       FILE_TYPE_CHAR    : Result:='fichier caractere.';
       FILE_TYPE_PIPE    : Result:='socket, un pipe nommee, ou un pipe anonyme.';
       //FILE_TYPE_REMOTE inutilisee
      end;
    end;
     
    begin
    	writeln('Lecture de l''entree pipe...');
    	ConsoleHandle := GetStdHandle(STD_OUTPUT_HANDLE);
    	WriteLn('Sortie standard : '+ GetHandleType(ConsoleHandle));
    	//Readln;
    	ConsoleHandle := GetStdHandle(STD_INPUT_HANDLE);
    	WriteLn('Entree standard : '+ GetHandleType(ConsoleHandle));
    	writeln('Fin du programme');
    end.
    ...fonctionne parfaitement comme le montre l'entrée ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    echo test | pipe2.exe
    Lecture de l'entree pipe...
    Sortie standard : fichier caractere.
    Entree standard : socket, un pipe nommee, ou un pipe anonyme.
    Fin du programme
    
    pipe2.exe
    Lecture de l'entree pipe...
    Sortie standard : fichier caractere.
    Entree standard : fichier caractere.
    Fin du programme
    Je propose donc de mettre à jour la FAQ pour les prochains cas et afin de contribuer un peu je vous propose trés simplement les updates suivantes :

    Remplacer

    "Il est parfois utile de savoir si l'éxécution d'une application console redirige ou non ses entrée/sortie standard" prête à confusion puisqu'il est ici question de rediriger un flux, pas d'en recevoir un."

    Par

    "Il est parfois utile de savoir si une application console reçoit ou redirige des flux sur ses entrée/sortie standard."

    Ainsi qu'ajouter dans la liste des exemples proposés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Echo Test avec : echo MonFlux ^| %PrgName%
    echo MonFlux ^| %PrgName%
    pause&Echo.
    J'en profite pour vous glisser pour l'exemple concernant les redirections fichier l'exemple suivant, utilisant la sortie d'erreur dans la redirection disque ne bloquant pas la sortie standard et évitant donc l'utilisation d'un fichier tierce inutile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Echo Test avec : %PrgName% 2^>Monfichier.txt
    %PrgName% 2>Monfichier.txt
    pause&Echo.
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Echo Test avec : %PrgName%^|more^>Result2.txt
    %PrgName%|more>Result2.txt
    Type Result2.txt
    pause&Echo.
    Cdlt.

  13. #13
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par john.fender
    Je propose donc de mettre à jour la FAQ
    Pour les exemples je suis d'accord, sur la formulation qui prêtre à confusion, j'essaie de comprendre ce qui ne va pas :
    Citation Envoyé par john.fender
    "Il est parfois utile de savoir si l'éxécution d'une application console redirige ou non ses entrée/sortie standard"
    De plus la phrase : prête à confusion puisqu'il est ici question de rediriger un flux, pas d'en recevoir un.
    Diriger : Guider un être ou une chose dans une certaine direction.
    on peut en déduire que
    Rediriger : Guider un être ou une chose dans une autre direction.

    Recevoir : Être mis en possession de, accepter, accueillir (ce qui a été envoyé, transmis, donné).
    Emettre : Produire en envoyant hors de soi.

    Il me semble que tu te focalises sur le sens de la transmission car tu utilises le pipe pour émettre vers ton programme.
    Si tu inverses :
    Le programme ne reçoit plus de données redirigées, mais en émet.
    Ta proposition
    "Il est parfois utile de savoir si une application console reçoit ou redirige des flux sur ses entrées/sortie standard."
    Ne couvre pas ce cas.

    Tu dis "qu'il est ici question de rediriger un flux, pas d'en recevoir un" , cette QR (question/réponse) a pour vocation non pas d'expliquer comment rediriger un flux, mais "de savoir si...".
    Celle concernée par ta remarque serait plutôt celle-ci Comment utiliser les redirections dans une application console ?.

    Ensuite dans une FAQ, on évite de trop rentrer dans les détails, qu'il manque un tutoriel détaillant le principe du pipeline en utilisant les api Win32 c'est fort probable.

  14. #14
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Re, répétition (ex : refaire). Donc rediriger signifie diriger une 2° fois. Par extension dans l'informatique, on l'emploie dans le sens de direction, déviation. On dévie un flux de sa sortie naturelle vers une autre sortie, en l'occurence de la standard out vers un fichier, un pipe ou autre chose. L'émission simple est donc couverte par ce terme car l'origine n'est pas décrite ni n'est à décrire dans le terme : on constate simplement qu'il y a déviation.

    C'est bien le problème avec ta phrase initiale qui n'en fait à aucun moment état :

    "Il est parfois utile de savoir si l'éxécution d'une application console redirige ou non ses entrée/sortie standard".

    De plus :

    "Tu dis "qu'il est ici question de rediriger un flux, pas d'en recevoir un" , cette QR (question/réponse) a pour vocation non pas d'expliquer comment rediriger un flux, mais "de savoir si..."."
    Non, tu n'as pas compris ma phrase et tu inverse mon propos que voici dans son intégralité :

    De plus la phrase :

    "Il est parfois utile de savoir si l'éxécution d'une application console redirige ou non ses entrée/sortie standard"

    prête à confusion puisqu'il est ici question de rediriger un flux, pas d'en recevoir un.
    C'est la phrase "Il est parfois utile de savoir si l'éxécution d'une application console redirige ou non ses entrée/sortie standard" qui parle de rediriger un flux et pas d'en recevoir un, c'est à dire cette de la FAQ.

    La phrase

    "Il est parfois utile de savoir si une application console reçoit ou redirige des flux"

    contient bien quand à elle les 2 notions de réception et de redirection que toi même tu décris comme être le sujet de l'article de la FAQ :

    "cette QR (question/réponse) a pour vocation non pas d'expliquer comment rediriger un flux, mais "de savoir si..."."

    CQFD.

    Cdlt.

  15. #15
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par john.fender
    Non, tu n'as pas compris ma phrase
    Peut être, j'ai pourtant passé un bon quart d'heure à comprendre ce que tu voulais dire et à chercher où est le problème dans ma formulation.
    Citation Envoyé par john.fender
    et tu inverse mon propos
    Non, je cite tes propos et précise l'intention de la QR, c'est tout ni plus ni moins.
    A aucun moment je ne fait d'inversion de quoi que ce soit. Et ici aussi, j'ai pris le temps de répondre.

    Si tu as d'autres remarques tu peux les poster ici.
    Cdt.

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

Discussions similaires

  1. [DELPHI] String contenant un pipe |
    Par davidmarli dans le forum Langage
    Réponses: 4
    Dernier message: 10/01/2012, 14h36
  2. [Delphi-Pipe] A quoi correspond physiquement un pipe
    Par narutobaka dans le forum Langage
    Réponses: 4
    Dernier message: 16/05/2011, 15h40
  3. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  4. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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