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

Lazarus Pascal Discussion :

AProcess.CommandLine := 'ipconfig'; exécution et charset


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut AProcess.CommandLine := 'ipconfig'; exécution et charset
    Bonjour

    Au clic de ce code, la fenêtre dos s'ouvre, mais reste ouverte et ne s'exécute pas.
    1° /
    à la fermeture de la fenêtre dos, le code s'exécute, comment automatiser cette exécution et la fermeture de la fenêtre ?

    2° /
    le texte dans le mémo, n'est pas lu avec le bon charset (notez que j'ai le même problème avec Delphi, et que malgré des explications calées, je n'ai rien compris et donc pas résolu ce problème) Comment faire ?

    Cordialement

    André
    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
     
    procedure TForm1.Button1Click(Sender: TObject);
     var
       AProcess: TProcess;
     
     // Le programme commence ici.
     begin
       // On créé l'objet TProcess,
       // et on l'assigne à la variable AProcess
       AProcess := TProcess.Create(nil);
     
       // On dit au nouveau AProcess quelle est la commande à exécuter
       // Utilisons le compilateur de FreePascal
       AProcess.CommandLine := 'ipconfig';
     
       // Définissons une option pour indiquer que le programme est lancé.
       // Cela assurera que notre programme n'attend pas que le programme lancé soit terminé.
       // Nous allons aussi lui dire que nous voulons lire la sortie du fichier.
       AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
     
       // Maintenent que AProcess sait quelle ligne de commande il doit lancer, go!
       AProcess.Execute;
     
       // Le programme ne va pas plus loin tant que ppc386 n'a pas fini.
     
       // Maintenant on lit dans le memo la sortie du programme.
     
       Memo1.Lines.LoadFromStream(AProcess.Output);
     
       // Maintenant on peut vider le TProcess.
     
       AProcess.Free;
     
    end;

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'utilise 'ipconfig.exe /all'; et 'ifconfig'; pour déterminer les adresses MAC des postes qui se connectent à mes bases.

    Sans grande modification, vous pouvez utiliser le code de la partie Reading large output (program procoutlarge;) de la page http://wiki.lazarus.freepascal.org/E...ernal_Programs.

    Testé de la version 0.9.26 à 0.9.29 sous Windows [32 bits - pas testé 64] et Linux.
    Cordialement. Gilles

  3. #3
    Membre émérite
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Par défaut
    Bonjour,

    Sur le problème du jeu de caractères (charset) :

    Pour faire simple, il peut te suffire de convertir la sortie avec la fonction CP1252ToUTF8 de l'unité LConvEncoding.

    Toutefois, en théorie, le charset employé dans le retour d'une commande dépend du système et de son paramétrage. Avec un Windows XP francisé, c'est par défaut du CP1252 (ou du ISO-8859-1, équivalent dans ce cas) , mais cela pourrait changer avec des versions plus récentes, ou avec d'autres langues.

    Donc, si ton programme doit être portable dans des environnements variés tu ne peux pas être sûr de l'encodage. Une solution serait d'utiliser la fonction GuessEncoding, mais le mieux serait d'utiliser des packages spécialisés dans les API réseau (Indy) pour t'affranchir des soucis de libellés et d'encodage.

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/07/2014, 08h46
  2. [ArchiveBuilder][JavaMail] exécution impossible...
    Par Gorthal dans le forum JBuilder
    Réponses: 7
    Dernier message: 10/01/2003, 09h12
  3. Exécution indivisible (accès conccurent)
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 23/07/2002, 08h09
  4. Compression d'exécutables
    Par Atrebate62 dans le forum Windows
    Réponses: 3
    Dernier message: 21/07/2002, 16h39
  5. Réponses: 2
    Dernier message: 06/07/2002, 12h36

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