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

Delphi Discussion :

Trectangle et selection


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut Trectangle et selection
    bonjour
    viens de constater un nouveau problème
    j'ai des images copiés sur des Trectangle avec fillpath
    (trectangle avec des départements de la France)
    mais certain Trectangle sont en partie caché par les autres ce qui
    m'empêche de sélectionner les plus petit avec mousedown
    y as t'il une fonction inverse a bringtofront
    ou une autre solution


    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 931
    Billets dans le blog
    66
    Par défaut
    Plus d'infos nécessaires.
    Déjà je présume (ce qui est très mauvais) qu'il s'agit de Firemonkey (comme pour ta demande précédente) ?
    Si c'est le cas il eut été bon de le signaler bien que le TRectangle donne une indication puisque n'exiqtant pas en VCL.
    C'est le FillPath qui me pose souci : Je n'ai jamais vu cette "procedure ou propriété" et avec quoi est fait le remplissage supposé ?

    Perso, je serais parti sur des SVG (est-ce que cel existe ? oui exemples ici (Wikipédia https://fr.wikipedia.org/wiki/Fichier%C3%A9partements_de_France-simple.svg,
    data.gouv.fr https://static.data.gouv.fr/resource...partements.svg, GitHub https://github.com › regisenguehard › carte-france-svg, Wikimedia Commons https://commons.wikimedia.org/wiki/F...rtementale.svg)

    Ensuite, c'est une question d'utilisation.
    Si on veut pouvoir sélectionner un département en "cliquant dessus" le mieux est d'utiliser le composant TPath. Cependant, un doute me taraude : comment "assembler" les morceaux entre eux !
    Il faut certainement pousser un peu l'étude de certains de ces SVG indiqués.

    une autre solution est d'utiliser SKia (TSKSVG) qui permettrait de dessinner toute la carte (en couleurs)
    Nom : Capture.png
Affichages : 111
Taille : 326,0 Ko
    Rapide, efficace sans prise de tête, sauf que les noms, et chefs lieux ne sont pas indiqués (contrairement à l'original provenant de wikimedia). A noter que, en ouvrant le SVG en texte, toutes les informations y sont donc c'est un problème du composant SKSVG et certainement de ma méconnaissance de celui-ci)
    Le challenge interessant sera de comment "déduire" le département se trouvant sous la souris ?

    Il n'y a pas que Tpath et SKia. Les composants de Ethea (Ethea SVGIconImage, téléchargeable via Getit) sont aussi d'un bon rendu (meilleur que Skia pour ce qui est du même SVG, on y voit les noms !!)
    Nom : Capture.png
Affichages : 110
Taille : 386,8 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonjour et merci
    je fais tous cela pour me familiariser avec les
    fonctions du FMX donc je vous joint une ébauche de mon programme
    qui par la suite iras a la poubelle
    je voudrais donc savoir comment cliquer sur une région en évitant
    les rectangles qui se chevauchent
    et un effet visuel sur le région exemple changer la couleur
    ou la mettre en scale pour la distinguer des autres


    regionfrance.zip

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    Bonjour
    avant qu'on le dise j'ai oublié de détruire
    le Bitm de la "procédure TForm1.dessine_carte"
    par bitm.destroy;
    ++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonjour
    PathToRegion comment on peu s'en servir
    avec mon programme
    merci

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 931
    Billets dans le blog
    66
    Par défaut
    OK, j'ai compris, vous utilisez un fichier qui contient des TPathData (autrement dit du SVG)
    Si je devais faire un critique, c'est que vous pourriez mieux utiliser FMX, vous passer du Canvas et de créer des TPath. Tous les Tpaths seront aligné client, enfants d'un container (TRectangle ou TLayout), pour les strokes des départements none.
    Avantage du TPath, seule la zone 'fermée' réagit au onclick
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonsoir si je comprend ce que vous dites
    on peu afficher un Tpath sans passer par le Bitmap
    comment svp
    merci

  8. #8
    Invité de passage
    Homme Profil pro
         ​​​  
    Inscrit en
    Décembre 2025
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité :      ​​​  

    Informations forums :
    Inscription : Décembre 2025
    Messages : 93
    Par défaut
    Voici un exemple à la base un projet puzzle VCL converti en FMX adapté pour charger une carte,
    malheureusement le format de ton fichier n'est pas supporté essaie de l'adapter
    Fichiers attachés Fichiers attachés

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonsoir
    merci pour ton programme
    comme je vois que j'ai pas besoin de bitmap
    je vais crée des Tpath sur un Tlayout
    je reviendrais vers vous des que j'aurais modifié
    merci encore

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 931
    Billets dans le blog
    66
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    je vais crée des Tpath sur un Tlayout
    Voici un exemple de ce que l'on peut obtenir j'espère que cela donnera une idée de comment faire la réalisation : une unité pour parser le fichier, une pour générer les éléments de la carte, un formulaire principal.
    Nom : Capture.png
Affichages : 88
Taille : 116,8 Ko
    j'ai honteusement triché, en utilisant Kai pour faire pratiquement tout le travail. Si Kai ne m'a pas tout mâcher il m'a été proposé une version relativement proche de ce que je voulais.
    En tout cas cela m'a permis de tester la dernière version de Kai (moteur : github copilot)
    Nom : Capture.png
Affichages : 83
Taille : 57,9 Ko

    J'ai juste adapté les alignements, les bordures(strokes) et le wrapmode des TPath générés et ajouté une couleaur aléatoire.
    On notera une petite erreur 'fracture blanche' a peu près au centre de la carte (indre\cher)
    Fichiers attachés Fichiers attachés
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonjour
    et merci a tous
    viens de supprimer tous mes Trectangle qui ne servait
    a rien et laisser que les Tpath sa va mieux pour les sélections
    me reste a faire un effet visuel quand on clique sur une region
    vous joint mon ebauche
    merci encore
    regiontpath.zip

  12. #12
    Invité de passage
    Homme Profil pro
         ​​​  
    Inscrit en
    Décembre 2025
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité :      ​​​  

    Informations forums :
    Inscription : Décembre 2025
    Messages : 93
    Par défaut
    Bonsoir,
    Partant du principe que ton code affiche une carte c'est ce que on peut déduire d’après tes propos, ce n'est pas le cas pour ma version Delphi Tokyo qui ne peut lire les données svg dans prefectemp44bis.txt.

    a rien et laisser que les Tpath sa va mieux pour les sélections
    me reste a faire un effet visuel quand on clique sur une region
    Pour faciliter la manipulation des contours et les infos des départements c'est la création d'un lien solide entre les deux en créant une classe dérivée du TPath incluant les 4 champs supplémentaire pour stocker les infos des départements:

    au lieu de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     type
      piece = record
      car: tpathdata;
      numero:string;
      region:string;
      prefecture:string;
      departement:string;
      end;
    ..
      depart: array [1 ..202] of piece;
     regionpath: array [1 .. 202] of Tpath;
    Nouvelle classe TPiece :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     type
     
      TPiece = class(TPath) //Déclaration d'un TPath avec 4 champs
      public
        numero: string;
        region: string;
        prefecture: string;
        departement: string;
      end;
    Ca facilite l'access et l interaction donnée/Path surtout avec la souris, plus besion de faire des recherhes dans un tableaux l'access est instantané:

    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
     procedure TForm1.PieceMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    begin
     Movingpath := Sender as TPiece;
     form1.Label1.text:='Numero departement = '+Movingpath.Name;
     form1.Label3.text:='Préfecture = '+ Movingpath.prefecture;
     form1.Label4.text:= 'Nom du département = '+Movingpath.departement;
     form1.Label5.text:='Région = '+Movingpath.region;
    end;
     
    procedure TForm1.PieceMouseEnter(Sender: TObject);
     var
     Piece: TPiece;
    begin
       Piece :=  TPiece(Sender);
       Piece.Fill.Color := claTurquoise;
    end;
     
    procedure TForm1.PieceMouseLeave(Sender: TObject);
    var
     Piece: TPiece;
    begin
       Piece :=  TPiece(Sender);
       Piece.Fill.Color := couleur_region(Piece.numero);
    end;

    Pas besoin de ces tableaux:
    depart: array [1 ..202] of piece;
    regionpath: array [1 .. 202] of Tpath;

    Pour la libération des classes TPiece se fait automatiquement à la fermeture de la forme definie propriétaire au moment de la création de l'objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     NewPiece := TPiece.Create(self);// Self devient le propriétaire qui s'occupe de la libération ..
    Tu peux ajuster le scale une fois pour tous les paths dans Layout1
    Fichiers attachés Fichiers attachés

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonsoir
    je viens apprendre beaucoup avec vous
    je l'avoue au top votre programme

    merci encore
    je peux mettre résolu

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 931
    Billets dans le blog
    66
    Par défaut une suggestion
    En travaillant sur ton fichier, je te propose une autre mise en forme qui te permettrait d'aborder les expressions régulières.

    si chaque ligne était composée ainsi
    REGION= GUADELOUPE,DEPARTEMENT="D971",PREFECTURE=Basse Terre,NOMDEP=Guadeloupe,d="M40.7,199.13c4.05,3.71,4.79-3.14,4.79-3.14-.61-5.05-8.84-.43-4.79,3.14Zm98.4-79.08c5.54,3.42,13.47-5.07,13.92-7.74-.16-.16-19.48,4.16-13.92,7.74Zm-28.57,52.27s-14.83,8.78-14.98,14.59c-.16,5.81,10.64,11.78,18.58,3.57s-3.59-18.16-3.59-18.16Zm-58.14,21.13s-2.4-1.02-2.73,1.49,3.46,4.48,4.05,1.49c.59-2.98-1.32-2.98-1.32-2.98Zm41.18-79.21c-6.89,3.28-10.94-8.03-9.13-15.71,1.81-7.68-10.19-18.03-10.19-18.03,0,0-24.11,15.04-6.58,24.72,0,0-14.69-1.2-9.29,11.31,2.4,5.52-14.98,7.15-14.98-4.32,0,0-8.99,10.13-18.42-6.85,0,0-14.08,8.93-7.85,24.72,4.23,11.25,6.51,23.14,6.75,35.15,.26,5.79,5.22,3.63,9.27,16.67,0,0,25.31-9.23,23.98-26.35s-11.09-19.2-3.3-24.43c7.8-5.22,8.99,4.32,16.47,4.77,7.48,.45,12.59,0,18.12-6.85,5.54-6.85,10.62,0,12.43,2.08,0,0,14.22-5.66,20.95-3.93,0,0-10.62-5.2-15.41-9.98s-5.93-6.26-12.82-2.98Z"/>
    En une seule passe tu pourrais récupérer les informations grâce à une expression régulière de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REGION=\s(?<region>.*),DEPARTEMENT="D(?<numero>\d{2,3})",PREFECTURE=(?<prefecture>.*),NOMDEP=(?<nom>.*),d="(?<path>.*)"
    le "parsing" de ton fichier en serait facilité (les pos et substring devenant obsolètes)

    Je n'ai pas encore transformé tout ton fichier, avant de me lancer dans une programmation exemple, mais ça vaut le coup de s'y pencher
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonjour
    ok vais voir pour tes changements
    une petite question
    viens éplucher le programme (Informt2025 ) et je vois cette fonction
    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
     
    function AjustCoords(const S: string): string;
    var
     v : TArray<string>;
     i,n: integer;
     t: string;
    begin
      v := s.Split(['.']);
      for i := 0 to  length(v)-1 do
      begin
        t :=v[i];
        if not TryStrToInt(t[t.Length],n) then
          v[i] := t+'0';
      end;
      Result :=  s.Join('.',v);
    end;
    elle sert a remplacer le translate du path ou a verifier
    que qu'on as des chiffres
    merci

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonjour SergioMaster
    comment se servir de ta commande
    désolé de t'embêter avec je me débrouille mais
    la sa me dépasse
    merci encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TPiece = class(TPath) //Déclaration d'un TPath avec 4 champs
      public
        numero: string;
        region: string;
        prefecture: string;
        departement: string;
      end;
    et voici la création modifié par "Informt2025"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    NewPiece := TPiece.Create(self);
             NewPiece.parent:=form1.Layout1;
             NewPiece.Data.Data :=  AjustCoords(ligne) ;
             NewPiece.numero := nomnumero;
             NewPiece.region := nomregion;
             NewPiece.departement := nomdepartement;
             NewPiece.prefecture := nomprefecture;

  17. #17
    Invité de passage
    Homme Profil pro
         ​​​  
    Inscrit en
    Décembre 2025
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité :      ​​​  

    Informations forums :
    Inscription : Décembre 2025
    Messages : 93
    Par défaut
    elle sert a remplacer le translate du path ou a verifier
    que qu'on as des chiffres
    La fonction est pour corriger les coordonnées enregistrées sous ce format .10 commençant par un virgule, ce format n'est pas supporté par TPath de Delphi Tokyo, la fonction contient une petite erreur elle ajoute un 0 au dernier élément il faut changer la condition de la boucle de Length(v)-1 vers High(v)-1, si ta version TPath fonctionne sans cette fonction tu peux la retirer.

    Petit remarque concernant le fichier prefectemp44bis.txt dans ton dernier exemple, le fichier est corrompu les lettres avec accent son absents.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonsoir
    merci pour info
    moi j'ai Delphi 12 Community et sa marche
    sans correction
    pour le fichier texte c'est de ma faute j'ai oublié de le sauvegarder en Ansi
    la il est en U_TF8
    merci

  19. #19
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 931
    Billets dans le blog
    66
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    comment se servir de ta commande
    Il s'agit d'une approche totalement différente de résolution de l'extraction des données, rien à voir avec l'interface utilisateur.
    Les expressions régulières, pour faire simple, c'est un moyen d'extraire des données en fournissant une sorte de format (ce que tu nommes la commande)
    Malheureusement, les expressions régulières ne fonctionnent que sur des lignes d'où le besoin de reformatter le fichier.


    Voici plus ou moins ce que cela peut donner (version lecture de tout le fichier)

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    unit DepartementExtractor;
     
    interface
     
    uses
      System.SysUtils, System.RegularExpressions, System.Generics.Collections, System.IOUtils;
     
    type
      TDepartement = record
        Region: string;
        Numero: string;
        Prefecture: string;
        NomDepartement: string;
        Path: string;
      end;
     
      TDepartementArray = TArray<TDepartement>;
     
      TDepartementExtractor = class
      public
        class function ExtractDepartementsFromFile(const AFileName: string): TDepartementArray;
      end;
     
    implementation
     
    { TDepartementExtractor }
     
    class function TDepartementExtractor.ExtractDepartementsFromFile(
      const AFileName: string): TDepartementArray;
    const
      REGEX_PATTERN = 'REGION=\s(?<region>.*),DEPARTEMENT="D(?<numero>\d{2,3})",PREFECTURE=(?<prefecture>.*),NOMDEP=(?<nom>.*),d="(?<path>.*)"';
    var
      LRegex: TRegEx;
      LMatch: TMatch;
      LList: TList<TDepartement>;
      LDept: TDepartement;
      LLine: string;
      LtextFile : Tarray<String>;
    begin
      {todo : verifier que le fichier existe}
      LList := TList<TDepartement>.Create;
      LRegex := TRegEx.Create(REGEX_PATTERN);
      LtextFile := TFile.ReadAllLines(AFileName);  // lire tout le fichier
        try
          for LLine in LTextFile do
          begin
            LMatch := LRegex.Match(LLine);
            if LMatch.Success then
            begin
              LDept.Region := Trim(LMatch.Groups.Item['region'].Value);
              LDept.Numero := LMatch.Groups.Item['numero'].Value;
              LDept.Prefecture := Trim(LMatch.Groups.Item['prefecture'].Value);
              LDept.NomDepartement := Trim(LMatch.Groups.Item['nom'].Value);
              LDept.Path := LMatch.Groups.Item['path'].Value;
     
              LList.Add(LDept);
            end;
          end;
        Result := LList.ToArray; // obtention du tableau des départements
      finally
        LList.Free;
      end;
    end;
     
    end.

    utilisation :
    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
    mesdepartments:=ExtractDepartementsFromFile('monfichier.text');
    var i:=0; // dans le cas où on n'utilise pas   
                 //   for i:=0 to mesdepartements.count-1
                 //   departement:=mesdepartments[i];
    for departement in mesdepartments   
    do begin
      // création du Tpath
        PathDept := TPath.Create(FLayout);
        PathDept.Parent := FLayout;
        PathDept.Align := TAlignLayout.Client;
        PathDept.Stroke.Kind:=TBrushKind.none;
        PathDept.Fill.Color:=TAlphaColors.Alpha OR Cardinal(Random($FFFFFF)); // couleur aléatoire
        PathDept.WrapMode :=TPathWrapMode.Original;
        PathDept.OnClick:=OnPathClick;
        PathDept.Tag:=i;      // suggestion utiliser Tpath.Tag pour ontenir ensuite les infos
        Inc(i);
    end;
    cela ne me plait pas complètement dans le sens où tout le fichier est lu, je suis sûr qu'il y a moyen de lire ligne par ligne comme via Readln(textfile,ligne) ce qui permettrai de traiter des fichiers plus gros.
    l'utilisation de TextFile est un truc très ancien, je suis persuadé qu'il existe quelque chose de plus "moderne" mais j'ai un trou de mémoire
    Fichiers attachés Fichiers attachés
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 417
    Par défaut
    bonjour
    merci je vais regarder a tous sa
    bonne journée

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [VB6] [Crystal] Selection enregistrement
    Par littlecow dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/01/2005, 13h08
  3. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  4. TEdit : selection du texte et autre fonction
    Par Odulo dans le forum Composants VCL
    Réponses: 5
    Dernier message: 01/08/2002, 14h27
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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