Deux chaînes à parser

[Résolu]
Signaler
Messages postés
39
Date d'inscription
vendredi 9 mai 2003
Statut
Membre
Dernière intervention
4 janvier 2010
-
Messages postés
39
Date d'inscription
vendredi 9 mai 2003
Statut
Membre
Dernière intervention
4 janvier 2010
-
Bonjour,

je récupère dans deux fichiers les infos sur les process et services en cours. Je voudrais parser les données du premier fichier qui se présentent comme cela :

System                         4                         0       240 Ko
smss.exe                     668                         0       428 Ko 


je voudrais récupérer ces infos pour les mettre dans un TListView sous la forme  suivante:
System   |                      4 |                        0|       240 Ko|
smss.exe |                    668|                         0|       428 Ko|


Il s'avère que dans le fichier texte, tous les process n'ont pas forcément d'extension ".exe", ce sur quoi je pensais me baser dans un premier temps.

Dans le deuxième fichier, cela se présente sous la forme :
SERVICE_NAME: WZCSVC
DISPLAY_NAME: Configuration automatique sans fil
        TYPE               : 20  WIN32_SHARE_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0


je pensais me baser sur les ":", mais à la cinquième ligne, il n'y en a pas.
Là, je veux séparer en deux colonnes.

Merci pour votre aide.

Corole3

2 réponses

Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Salut
essaie avec un Trim() de tes lignes (cela supprime les espaces en trop), puis casse ta chaine dans un tableau avec le séparateur "espace".
Le risque est que le nom du .exe contiennent un espace. mais c'est un début déjà.
Pour le second cas, je vois 2 choses : la 5eme ligne, en as tu besoin ou peux tu te permettre de l'ignorer ?
Si tu en as besoin, alors trim aussi puis pos() de ":" comme tu le dis, si le ":" n'est pas trouvé, alors cette chaine fait parti de la ligne précédente, et tu concatène ces deux.
Cela t'aides ?
Messages postés
39
Date d'inscription
vendredi 9 mai 2003
Statut
Membre
Dernière intervention
4 janvier 2010

Salut JulioDelphi,

en me basant sur ta réponse n°2, j'ai repensé au traitement pour la chaîne 1.
Dans la liste des process, il y en a deux qui ont des espaces ou sans ".exe", lancés par le système :

System Idle Process            0 Console                 0        28 Ko
System                         4 Console                 0       236 Ko

Si je décide de ne pas traiter ces deux process, cela peut résoudre le problème en utilisant le trim.
J'avais procédé en utilisant le "commatext"

Dans la deuxième chaîne, j'ai besoin de la cinquième ligne.

Cela m'aides.
 
Merci

Corole3