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

VB.NET Discussion :

Extraire des informations string entre guillemets


Sujet :

VB.NET

  1. #1
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut Extraire des informations string entre guillemets
    Bonjour à tous,
    Je voudrais être plus précis et modeste car je pense avoir perdu beaucoup de monde.
    Je souhaite extraire des informations entre guillemet pour cela j'ai la piste du tableau string[] ou des variables string et pouvoir récupérer PX PY TX TY Icone etc..
    Voici le code :
    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
     
     
    fenetre/ APP1
            .titre             = "My first window !"
            .px                = "100"
            .py                = "100"
            .tx                 = "420"
            .ty                = "263"
            .Opacite           = "100"
            .Parametres        = "TYPE:0 ALPHAMODE:0"
            .CouleurFenetre    = "050,050,100"
            .CouleurTitre      = "255,255,255"
            .CouleurFond       = "150,000,220"
            .Icone             = "%OS_GUI%/ICO_DEF.png"
            rem/ .ImgTitre                  = "IMG_TITRE.PNG"
            .event             = "%HOST_OS%/TEST.CPC"
        @#Handle_Fenetre creer/
    Fin/ fenetre
    Quel code VB.NET me proposez vous en exemple ?
    Merci

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonour,

    Voici un algorithme qui pourra sans doute t'inspirer ...

    Vois la vidéo : https://www.dropbox.com/s/cm06t24hyc...emets.mp4?dl=0

    Et voici le programme qui contient cet algo.: CSV_0B.zip.

    Bon amusment ...

  3. #3
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    Bonjour phil

    Merci pour ton petit programme perso ça m'a fait très plaisir.
    C'est un bon début
    J'ai cependant des questions tant que on y est
    Imagine un formulaire comme celui ci

    Nom : fichefenetreforum.PNG
Affichages : 448
Taille : 18,1 Ko
    Comment puis je le remplir à partir du fichier text ?

    J'ai réussi à subdiviser les couleurs en 3 colonnes (RVB)
    Nom : forum2.PNG
Affichages : 386
Taille : 15,2 Ko



    Je te remercie

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bravo pour la séparation des couleurs !

    En reprenant le code de mon exemple et le fichier Donnees.txt qui a servi pour la vidéo :
    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
     
           ' Aquisition des données
    Dim CompteurLignes as Integer = 0
            Do Until FichierALire.Peek = -1
                 LigneLue = FichierALire.ReadLine
                 DonneesTMP = LigneLue.Split(SeparateurSplit)
                 LesDonnees.Rows.Add(DonneesTMP)
     CompteurLignes += 1
            Loop
    '...
    ' Le tableau de chaine DonneesTMP contient tout ce dont tu as besoin pour remplir ton Form, par exemple :
    TextBox_PX.Text = LesDonnees.Rows(2).Item(1)
    TextBox_PY.Text = LesDonnees.Rows(3).Item(1)
    TextBox_TX.Text = LesDonnees.Rows(4).Item(1)
    TextBox_PY.Text = LesDonnees.Rows(5).Item(1)
    '...
    Note que le compteur de ligne n'est nécessaire que pour les mises au point, et même pas si tu sais où se trouvent les valeurs qui t'intéressent ...



  5. #5
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    Hey merci c'est top

    Il y a pas un système qui permet de dire si un élément de la colonne verticale = .fenetre, alors on dit que la textbox1 = à la deuxième colonne horizontale de la même ligne que .fenetre trouvé.
    Ça éviterai de mettre 10 000 conditions (je précise que les paramètres .nanana peuvent se retrouver dans n'importe quel ordre c'est pour ça)

    Merci

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Tu peux toujours tester le contenu de la colonne 0, et avoir tes TextBox judicieusement disposées de TextBox 1 à TextBox ... N, ... mais ça ne va pas simplifier le travail.
    Là, il faut imaginer autre chose ...

  7. #7
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    Excuse moi
    2 choses
    Si je dois utiliser le même principe mais directement à partir d'une RichTextBox comment transformer le code ?
    Et comment supprimer/ne pas tenir compte des espaces dans la datagrid ?
    Merci

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    La comparaison suivante de donnera la réponse à cette question :

    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
     
    ' Accès aux lignes d'un fichier TXT :
     
            Do Until FichierALire.Peek = -1
                 LigneLue = FichierALire.ReadLine
    ' ... ... ...
            Loop
     
     
    ' Accès aux lignes d'un RichtTextBox :
     
            For L As Integer = 0 To LeRichtTextBoxEnQuestion.Lines.Count - 1
                 LigneLue = LeRichtTextBoxEnQuestion.Lines(L)
     ' ... ... ...
            Next
    Pour les espaces en début et en fin de chaîne, ils sont supprimés par LaChaine.Trim().

    Bonne nuit

  9. #9
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    Pas de problème MERCI
    Bonne nuit

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    A toutes fins utiles, un complément d'info suite à la question de la suppression des espaces.

    La méthode Trim (ex. UneChaine.Trim()) enlève bien les espaces en début et en fin de la chaîne.
    Mais Trim peut être utilisé avec en paramètre, le caractère à supprimer : UneChaine.Trim() et UneChaine.Trim(" ") sont équivalents.
    Et il existe aussi TrimStart et TrimEnd qui enlève un caractère donné en début et en fin de chaîne (respectivement) :
    UneChaine.TrimStart(".") supprime les caractères points situés au début de la chaine.
    UneChaine.TrimEnd(" ") supprime les espaces situés à la fin de la chaine.

    Voilà, tu sais tout des Trim ...

    Excellente journée,


  11. #11
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    Effectivement les Trims me sont bien utiles Merci

    J'allais reposter mais bon je sais pas si c'est nécessaire car c'est un peu le même sujet.
    Désolé si c'est expliqué bizarrement
    C'est au sujet des collections, j'aimerai enregistrer des éléments dans des collections.
    Quand je parle d'objets c'est les objets de mon code CpcdosC+ que l'on a divisé dans la datagrid hier.
    Une collection par type d'objet, (bouton, textbox, checkbox) pareil que (tomate, pomme, banane)
    Ensuite, prenons la collection "bouton" par exemple, il y a les noms des boutons (qui sont dans la datagrid, je me charge de récupérer les noms) et quelque part je voudrais que des infos sur le bouton soit stockées grâce à son nom (on sait que ces infos appartiennent à ce bouton car elles sont associées à son nom) quelques screens plus parlants (j'ai rempli manuellement les textboxs pour montrer les résultats attendus)
    Onglet fenêtre (il y en a toujours qu'une)
    Nom : fenetreforum.PNG
Affichages : 401
Taille : 33,9 Ko

    Onglet Objets (Il y a différents types d'objets (bouton, textbox etc...)
    La deuxième combobox c'est la collection comprenant tous les boutons de la datagrid
    Le panel enveloppe tous le bas à partir de au dessus la deuxième combobox.
    Nom : boutonforum.PNG
Affichages : 398
Taille : 33,5 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'Bouton (remplir textboxs) cliqué alors
     Dim titre As String
            titre = LesDonnees.Rows(2).Item(0)
            If titre.Trim() = ".titre" Then
                TextBox1.Text = LesDonnees.Rows(2).Item(2)
            End If
    ' etc.......
    J'ai mis en place ce type de condition pour savoir si telle cellule contient tel mot et si c'est le cas alors on rempli une telle textbox avec telle cellule de la même ligne je ne sais pas si il existe une méthode plus courte du coup je fais ça pour chaque cellule.
    Je pourrai mettre en place le même principe avec le mot bouton, si la cellule contient le mot bouton alors ajouter un bouton à la collection "bouton" et on récupère son nom et ses infos et il faudrait garder tout ca en mémoire dans une collection...

    Voilà voilà

    Merci

  12. #12
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Le DataTable est déjà un moyen de stocker une collection de données mais tu peux t’intéresser aussi à l'ArrayList, la List(Of), la Hashtable, la Dictionary(Of), ... et bien d'autres. Mais quelle que soit la structure que tu choisisses, il te faudra gérer l'encodage de ces infos et les stocker dans un fichier ou une DB pour les recharger au lancement du programme.
    Au plus simple, les infos peuvent être enregistrées dans un fichier où elles sont séparées par ; et relues avec la même méthode que celle que j'ai utilisée pour extraire les infos du fichier TXT. A la lecture tu peux recharger un DataTable ou n'importe quelle collection.

    ...

  13. #13
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    Bonjour, Ah!

    Faut que je réfléchisse, enfin de compte ce qui me perturbe dans tous ça c'est le dynamisme et l'imprévu. Sans savoir combien d'informations on attend ( nombre d'objets).. je veux bien enregistrer des infos dans un fichier texte mais faut trouver un moyen de dire de créer un fichier text à chaque fois que le logiciel lis la ligne commencant par bouton/ (nianiania) jusqu'a la ligne Fin/ bouton et de mettre chaque bloc d'objet dans un fichier text different tu sais comment faire ?
    Merci

  14. #14
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Ah non, je ne pense pas à un fichier par objet. Un seul fichier avec une ligne par objet, toutes les infos de l'objet dans SA ligne, séparées par un séparateur, le ; par exemple. Conceptuellement, vois cette ligne comme une ligne XLS avec le nom de l'objet en colonne A et les infos dans les colonnes voisines
    SI tu gères quelques centaines de lignes, c'est une solution facile. Pour de plus gros volumes ..., une DB, à voir...

  15. #15
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    D'accord merci, il y a un exemple sur le forum ?

  16. #16
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Sûrement, mais il faut chercher...
    SI tu peux faire un fichier TXT avec les infos que tu gèrerais pour 2 ou 3 objets (soit 2 ou 3 lignes dans le fichier), je verrai si je peux te trouver un exemple adapté.
    Exemple de ligne :
    Type;Bouton;Nom;BOK;Px;100;Py;50 ...
    Type;TextBox;Nom; ....

  17. #17
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    Alors par exemple pour
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    fenetre/ APP1
             .titre                          = "My first window !"
    	 .px		                  = "100"
            .py		                  = "100"
    	.tx		                  = "420"
    	.ty		                  = "263"
            .Opacite                      = "100"
            .Parametres                  = "TYPE:0 ALPHAMODE:0"
            .CouleurFenetre             = "050,050,100"
            .CouleurTitre                 = "255,255,255"
            .CouleurFond                = "150,000,220"
            .Icone                         = "%OS_GUI%/ICO_DEF.png"
            .ImgTitre                      = "IMG_TITRE.PNG"
            .event                         = "%HOST_OS%/TEST.CPC"
    	@#Handle_Fenetre creer/
     
    Fin/ fenetre
     
    Textebloc/ Mon_Textebloc
    	 .Handle			= "%Handle_Fenetre%"
    	 .Parametres		= "BORD:1 IMGAUTO:1 COL:1"
    	 .Texte 			= "Hello!%CPC.CRLF%I'm textblock!%CPC.CRLF%Handle fenetre:%Handle_Fenetre%"
    	 .PX				= "5"
    	 .PY				= "5"
    	 .CouleurFond	    = "200,255,240"
    	 .CouleurTexte	    = "250,100,100"
    	 .tx				= "100"
             .ty				= "20"
    	creer/
    Fin/ Textebloc
     
    Bouton/ Mon_Bouton
    	.Handle			= "%Handle_Fenetre%"
    	.Parametres		= "IMGAUTO:2"
    	.PX				= "130"
    	.PY				= "20"
    	.tx				= "100"
    	.ty				= "30"
    	.opacite		        = "100"
            .texte                        = "OpenGL test"
    	.Image			= "%OS_GUI%/Buttons/BTN_BLUE.png"
    	.event			= "%HOST_OS%/TEST.CPC=MouseClick,MouseLeave"
    	creer/
    Fin/ Bouton
    J'ai espacé pour la lisibilité (une seule ligne tt ca)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fenetre;APP1;My first window ! ; 100 ; 100 ; 420 ; 263 ; 100 ; TYPE:0 ALPHAMODE:0 ; 050; 050; 100; 255; 255; 255; 150; 000; 220; %OS_GUI%/ICO_DEF.png ; IMG_TITRE.PNG ; %HOST_OS%/TEST.CPC ; @#Handle_Fenetre
    'Pareil pour le reste
    Mais pour transformer les données de la datagrid en ligne, une ligne par objet ca serait bien aussi
    Merci

  18. #18
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Mais pour transformer les données de la datagrid en ligne, une ligne par objet ca serait bien aussi
    C'est bien ce que je proposais : une ligne par objet, non pas une ligne par propriété.

    En regardant tes exemples, je vois que tous les objets n'ont pas les mêmes propriétés (c'est normal ). Par exemple, un bouton a un propriété Image, le TextBox ne l'a pas.
    Dès lors, il faudrait que la ligne soit composée de : NomProprieté; ValeurPropriété; ... Par exemple, TypeObjet;Bouton;Nom;BCancel; PX;100; ..........

    Il s'agit bien finalement de copier le DataGridView d'un objet en une ligne dans le fichier. C'est le nom de l'objet que le distinguera d'un autre du même type. Je vois si je peux greffer un exemple sur les codes de l'autre jour.

  19. #19
    Membre averti Avatar de Btacorn
    Homme Profil pro
    Officier de la marine marchande
    Inscrit en
    Avril 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Officier de la marine marchande

    Informations forums :
    Inscription : Avril 2020
    Messages : 24
    Par défaut
    Oui mais on est d'accord que la syntaxe du CpcdosC+ n'est pas modifiable. Donc il faudrait pouvoir ouvrir le fichier cpcdosc+ dans une richtextbox extraire les données, les trier et les mettres dans un fichier text une ligne par objet

    Je demanderai à l'utilisateur de toujours mettre les paramètres dans un ordre précis ca limitera les bugs.

  20. #20
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je n'ai pas retrouvé d'exemple convenable, aussi j'en ai bricolé un le code de l'autre jour.
    C'est largement améliorable, mais ça te donnera quand même de quoi passer tes insomnies.
    Il y aurait notamment à faire la mise en forme des données re-lues et affichées dans le DataGridView. Si je trouve du temps demain ...

    La video : https://www.dropbox.com/s/zzgthoo6zq...emet2.mp4?dl=0

    Le projet : CSV_0B.zip

    Bon amusement et bonne nuit

Discussions similaires

  1. extraire des informations d'un string complexe
    Par damien92 dans le forum Langage
    Réponses: 2
    Dernier message: 23/12/2007, 18h36
  2. Extraire des informations précises d'un fichier
    Par cameleon33 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 14/10/2006, 13h40
  3. Extraire des informations d'une page web
    Par lr dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 28/03/2006, 12h38
  4. [RegEx] Extraire des informations d'une requête SQL
    Par XtofRoland dans le forum Langage
    Réponses: 13
    Dernier message: 07/03/2006, 15h59
  5. Existe t-il un parseur HTML pou extraire des informations?
    Par danje dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 31/10/2005, 11h55

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