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

Scripts/Batch Discussion :

Executable depuis powershell [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut Executable depuis powershell
    Bonjour,

    je dois lancer un exécutable (fabriqué en python puis py2exe ) qui va me traiter un fichier de log (de 200ko à + 100Mo suivant les cas)

    Quand je lance cet exécutable directement, cela ouvre une invite de commande, fait ce que ça a à faire et invite l'utilisateur à appuyer sur ENTER pour continuer.
    Quand je lance cet exécutable depuis un script PS1, l'invite de commande ne s'ouvre pas, l'action sur ENTER n'est donc pas prise en compte.

    Comme dans mon script ps1, j'ai d'autres actions après cet exécutable, je suis obligé d'aller killer le processus de mon exécutable qui n'a pas rendu la main pour pouvoir continuer.

    Je précise que je parle pas python et que je n'ai de toute façon pas les sources de l'exécutable en question.

    Comment faire pour que l'exécutable me rende la main?

    En dernier ressort, je pourrais réécrire le python en Powershell mais il s'agit d'un exec de modification de fichiers de logs et d'extraction de données et je crains de ne pas savoir faire ça en PS à moins que quelqu'un ait une traduction complète shell linux vers powershell en particulier pour sed et awk que je maitrise mieux

  2. #2
    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
    Billets dans le blog
    1
    Par défaut
    Salut,
    que donne son exécution dans un console cmd.exe ?

    Citation Envoyé par barbican82 Voir le message
    Comme dans mon script ps1, j'ai d'autres actions après cet exécutable, je suis obligé d'aller killer le processus de mon exécutable qui n'a pas rendu la main pour pouvoir continuer.
    Le traitement est-il effectué ?

    Peux-tu compiler un script python de test ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Salut,
    que donne son exécution dans un console cmd.exe ?
    Dans une cmd.exe, son exécution est OK, mais il faut appuyer sur ENTER pour quitter le programme

    Le traitement est-il effectué ?
    Le traitement suivant n'est pas effectué.

    Peux-tu compiler un script python de test ?
    Je parle pas trop python malheureusement

  4. #4
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par barbican82 Voir le message
    Le traitement suivant n'est pas effectué.
    Ok, le process ne rend donc pas la main.
    Citation Envoyé par barbican82 Voir le message
    Je parle pas trop python malheureusement
    Ah dommage, moi non plus ou pas encore. C'était pour vérifier si la compilation de l'instruction Python de lecture du clavier était en cause.
    Powershell fusionne les process console, par exemple dans Ps l'exécution de cmd.exe ne crée pas une seconde fenêtre console, mais on est bien dans un autre shell.

    Au cas où :
    -Si le runtime Python est dans une DLL externe, as-tu vérifier sa version ?
    - essaie en utilisant le switch -STA de Powershell.exe

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message

    - essaie en utilisant le switch -STA de Powershell.exe
    Bonjour,

    peux tu préciser ta pensée s'il te plait?

  6. #6
    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
    Billets dans le blog
    1
    Par défaut
    Ceci :
    Il s'agit d'un test au cas où qui modifie le modèle de thread (STA/MTA).

    Mais après qq lecture sur le net j'ai l'impression que c'est la méthode de lecture du clavier qui pose pb dans ton exe Python.
    Est-ce que, une fois ton exe en attente dans une session PS, un control-C te rend la main ?

    A vérifier aussi dans PS si le message attendu est bien envoyé dans la sortie standard, en testant avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PrgPython.exe *>&1
    #voir 
    Help about_Redirection

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    Bonjour,

    le switch STA n'a pas d'impact sur le comportement général.

    J'ai ajouté la sortie vers la sortie standard, pas d'amélioration non plus.

    Le Control-C ne me permet pas de reprendre la main, seul le kill du process le permet.

    Je pense qu'il va falloir supprimer d'une façon ou d'une autre cette action de RETURN au clavier.

    Merci

  8. #8
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par barbican82 Voir le message
    J'ai ajouté la sortie vers la sortie standard, pas d'amélioration non plus.
    As-tu essayé avec : *> &1 ?
    Essaie de lancer ton exe dans un autre contexte avec Start-Process.
    Pour l'affichage et l'attente clavier, un switch en ligne de commande est aussi possible, mais essaie déjà sans le code de la confirmation utilisateur.

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    bonjour,

    Citation Envoyé par Laurent Dardenne Voir le message
    As-tu essayé avec : *> &1 ?
    Oui, testé, aucune différence constatée.

    Essaie de lancer ton exe dans un autre contexte avec Start-Process
    Qu'entends tu par là?

    Pour l'affichage et l'attente clavier, un switch en ligne de commande est aussi possible, mais essaie déjà sans le code de la confirmation utilisateur.
    Je ne peux pas modifier le code, le problème est là, si j'avais les sources python, mon problème serait résolu.

  10. #10
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par barbican82 Voir le message
    Qu'entends tu par là?
    Voir le paramètre -NoNewWindow du cmdlet Start-Process :
    "Par défaut, Windows PowerShell ouvre une nouvelle fenêtre."

    Tu peux aussi tester avec : cmd.exe /c Prg.Py.exe

  11. #11
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    re,

    je viens de me rendre compte d'un truc.

    Je n'avais pas le code complet, c'est encore pire que ce que je pensais.

    Le .exe n'est pas appelé directement, il est appelé par un .bat qui lui donne des paramètres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $bat = "$pathfile\GC_extract.exe -q -d 2016-01-17T$heuredebut -f 2016-01-17T$heurefin -e $filename " *>&1
    $bat | Out-File $pathfile\extract.bat -enc ascii
    cmd.exe /c  $pathfile\extract.bat
    Donc quand je modifie la sortie standard ou autre, je le fais sur le .bat pas sur l'exécutable.

  12. #12
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par barbican82 Voir le message
    c'est encore pire que ce que je pensais.


    Tu peux simplifier ?

  13. #13
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    Pour simplifier:

    depuis le début je cherche a changer des paramètres ou des options en pensant qu'on appelle un exécutable, or, le problème n'est-il pas que ces paramètres ou options s'appliquent non pas à l'exe mais au bat qui le lance?

    Si je récapitule:

    Postulat de départ:
    1/ le powershell lance le bat qui donne ses paramètres à l'exe (python compilé dont je n'ai pas les sources).
    2/ l'exe ne rend pas la main car il attend une action sur la touche entrée qui ne viendra jamais.
    3/ Comme l'exe ne rend pas la main, l'exe suivant ne se lance pas.

    Constatation de fonctionnement général:
    1/ Le processus bat puis exe traitant un fichier de 45 Mo prend moins de 1 seconde
    2/ J'ai tenté d'ajouter dans le .bat un taskkill du process de l'exe ou un "%SendKeys% "{ENTER}""mais comme celui ci ne rend pas la main, même ce taskkil n'est pas pris en compte.

    Solution ?
    1/ Réécrire les fonctions python
    2/ Lancer un process qui rend la main au powershell qui continue en lançant l'exécutable. Le process attend quelques secondes et kille l'exécutable.

    Je ne sais que penser de tout ça.......

  14. #14
    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
    Billets dans le blog
    1
    Par défaut
    Quand je parlais de simplifier je pensais à ceci :
    Citation Envoyé par barbican82 Voir le message
    1/ le powershell lance le bat qui donne ses paramètres à l'exe (python compilé dont je n'ai pas les sources).
    Exécuter directement le .exe dans PS.
    As-tu testé l'exécution de ce script sans le lier à un .exe ?
    Citation Envoyé par barbican82 Voir le message
    Solution ?
    1/ Réécrire les fonctions python
    Bah sans savoir où est le pb, difficile de proposer une solution, à part trouver un truc pour que ça tombe en marche

  15. #15
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    Bonjour,

    j'ai étudié les fichiers en entrée et en sortie du python.

    En fait, la seule chose qui est faite est de supprimer le début du fichier jusqu'à la première ligne contenant un pattern1 et la fin du fichier contenant un pattern2.

    Globalement, je ne vois pas l'intérêt de le faire en python alors qu'on commençait la procédure en .bat.

    La solution est donc de remplacer ce bout de code python en powershell, j'en profite pour supprimer le début de procédure en .bat et la fin de procédure qui est aussi en .bat.

    Pour éclaircir un peu tout ça, le but de la manœuvre est de générer des statistiques java à partir de logs.
    Un bat permet de renseigner pattern1 et pattern2, d'appeler le python qui mouline le fichier de log, et ensuite d'appeler un .bat qui appelle un jar, qui fait un belle page html et un png (ouf, c'est fini)

    Pour simplifier, je voudrais un script unique powershell qui:
    1/ Récupère le fichier de log, interroge sur pattern1 et pattern2 --> je sais faire
    2/ Extrait le morceau de log intéressant (entre pattern1 et pattern2) vers un outfile --> C'est pour ça que j'ai besoin d'aide, j'ai trouvé pour extraire des morceaux de lignes si pattern1 et pattern2 sont sur la même ligne mais pas si pattern1 est en ligne 25 et pattern2 en ligne 6428 de mon fichier (N° de lignes au hasard)
    3/ Appelle le jar avec en paramètre mon outfile pour générer le résultat final. --> je sais faire.

    J'ai testé ceci mais ça ne donne rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = ($text | Select-String 'timestamp:\s*\r\n((.*\r\n)*)\s*timestamp:' -AllMatches)
    $result.Matches[0].Groups[1].Value
    Merci

  16. #16
    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
    Billets dans le blog
    1
    Par défaut
    Peux-tu nous proposer un jeux de test avec 4-5 lignes ?
    Un exemple AVANT le traitement et APRES le traitement.

    Le pattern recherché est sur la même ligne ?
    Et est-il en début de ligne ?
    As-tu besoin de capture nommées ?

  17. #17
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    Bonjour,

    exemple avant traitement:

    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
     <attribute name="initialHeapSize" value="0x80000000" />
      <attribute name="compressedRefs" value="true" />
      <attribute name="compressedRefsDisplacement" value="0x0" />
      <attribute name="compressedRefsShift" value="0x0" />
      <attribute name="pageSize" value="0x1000" />
      <attribute name="pageType" value="not used" />
    <exclusive-start id="14" timestamp="2016-01-10T08:25:20.091" intervalms="5036.700">
    <cycle-end id="6924" type="scavenge" contextid="6918" timestamp="2016-01-12T09:01:24.681" />
    <allocation-satisfied id="6925" threadId="0000000005FB4C00" bytesRequested="112792" />
    <af-end id="6926" timestamp="2016-01-12T09:01:24.681" />
    <exclusive-end id="6927" timestamp="2016-01-12T09:01:24.681" durationms="88.025" />
    <mem-info id="6932" free="425767344" total="2093744128" percent="20">
        <mem type="nursery" free="0" total="483131392" percent="0" />
        <mem type="tenure" free="425767344" total="1610612736" percent="26">
          <mem type="soa" free="345236912" total="1530082304" percent="22" />
    Exemple après traitement, on crée un fichier avec les lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <exclusive-start id="14" timestamp="2016-01-10T08:25:20.091" intervalms="5036.700">
    <cycle-end id="6924" type="scavenge" contextid="6918" timestamp="2016-01-12T09:01:24.681" />
    <allocation-satisfied id="6925" threadId="0000000005FB4C00" bytesRequested="112792" />
    <af-end id="6926" timestamp="2016-01-12T09:01:24.681" />
    <exclusive-end id="6927" timestamp="2016-01-12T09:01:24.681" durationms="88.025" />
    Les pattern1 et pattern 2 à passer en paramètres sont:
    2016-01-10T08 qui doit être situé sur une ligne contenant également "exclusive-start"
    et
    2016-01-12T09 qui doit être situé sur une ligne contenant également "exclusive-end"

    A noter que dans le fichier d'origine ces deux pattern sont séparées par 140193 lignes.

    En ce qui concerne la capture, je n'en fait qu'une à la fois que je nomme en [Nom du fichier d'origine].extract.log

  18. #18
    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
    Billets dans le blog
    1
    Par défaut
    Une piste :
    Code powershell : 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    $File='c:\temp\datas.txt'
    @'
    <attribute name="initialHeapSize" value="0x80000000" />
      <attribute name="compressedRefs" value="true" />
      <attribute name="compressedRefsDisplacement" value="0x0" />
      <attribute name="compressedRefsShift" value="0x0" />
      <attribute name="pageSize" value="0x1000" />
      <attribute name="pageType" value="not used" />
    <exclusive-start id="14" timestamp="2016-01-10T08:25:20.091" intervalms="5036.700">
    <cycle-end id="6924" type="scavenge" contextid="6918" timestamp="2016-01-12T09:01:24.681" />
    <allocation-satisfied id="6925" threadId="0000000005FB4C00" bytesRequested="112792" />
    <af-end id="6926" timestamp="2016-01-12T09:01:24.681" />
    <exclusive-end id="6927" timestamp="2016-01-12T09:01:24.681" durationms="88.025" />
    <mem-info id="6932" free="425767344" total="2093744128" percent="20">
    <mem type="nursery" free="0" total="483131392" percent="0" />
    <mem type="tenure" free="425767344" total="1610612736" percent="26">
    <mem type="soa" free="345236912" total="1530082304" percent="22" />
    <attribute name="pageType" value="not used" />
    <exclusive-start id="14" timestamp="2016-01-10T08:25:20.091" intervalms="5036.700">  !!! TEST
    <cycle-end id="6924" type="scavenge" contextid="6918" timestamp="2016-01-12T09:01:24.681" /> !!! TEST
    <allocation-satisfied id="6925" threadId="0000000005FB4C00" bytesRequested="112792" /> !!! TEST
    <af-end id="6926" timestamp="2016-01-12T09:01:24.681" /> !!! TEST
    <exclusive-end id="6927" timestamp="2016-01-12T09:01:24.681" durationms="88.025" /> !!! TEST
    <mem-info id="6932" free="425767344" total="2093744128" percent="20"> !!! TEST
    '@ > $File
     
    $DatePattern='"2016-01-10T08:\d+:\d+:' #todo
    $BeginPattern='\s*<exclusive-start id="'
    $EndPattern='\s*<exclusive-end id="'
     
       function Parse([String] $FileName)
       { 
         $isBlocToExtract=$False
         Get-Content -Path $FileName|
         Foreach-Object { 
           switch -regex ($_) 
           {
             $BeginPattern  {Write-debug "begin : $_";$isBlocToExtract=$True;$_;continue}
             $EndPattern    {Write-debug "end: $_";$isBlocToExtract=$False;$_;Continue}
     
             default {
               if ($isBlocToExtract -eq $true)
                  #On traite les lignes qui se trouvent dans le bloc à extraire 
               {$_}
             }#default
          }#Switch
         }#Foreach
       }#Parse
     
    $result=parse $file
    $result
    A l'origine c'est plus un filtre (Filter) qu'une fonction, ce qui permet de gérer du texte via le pipeline et pas un fichier.
    Ici c'est juste le principe. Les regex sont à revoir.

  19. #19
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut
    Bonjour,

    Merci Laurent pour toutes ces infos,

    en ce qui concerne l'extraction des données, on peut remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne `"print if /$datedebut`T$heuredebut/ .. /$datefin`T$heurefin/`" $filename  >> $filename.extract
    Comme c'est "légèrement" plus simple, je sors de mon ps quelques secondes pour y revenir ensuite.

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

Discussions similaires

  1. execution depuis eclipse java.lang.ClassFormatError:
    Par mikebranque dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 09/10/2007, 13h52
  2. lancer un executable depuis une classe java
    Par k6971 dans le forum Langage
    Réponses: 4
    Dernier message: 21/05/2007, 22h46
  3. lancer un executable depuis une page
    Par manshoon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/08/2006, 11h33
  4. [BPW]Dialogues non modaux exécutés depuis un autre dialogue
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 07/12/2003, 11h14

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