Deux chaînes à parser

Résolu
corole3 Messages postés 39 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 4 janvier 2010 - 30 avril 2009 à 12:23
corole3 Messages postés 39 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 4 janvier 2010 - 30 avril 2009 à 14:54
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

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
30 avril 2009 à 13:50
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 ?
3
corole3 Messages postés 39 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 4 janvier 2010
30 avril 2009 à 14:54
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
0
Rejoignez-nous