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

Langage Delphi Discussion :

Saisir plusieurs fichiers en même temps dans un répertoire


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut Saisir plusieurs fichiers en même temps dans un répertoire
    Bonjour à tous.

    Bon voilà, je travaille sur une application qui comprend un menu déroulant qui permet de sélectionner un fichier xml à partit d'un menu déroulant proposant tous les fichiers xml contenu dans le répertoire fichiers.

    voici le code en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    begin
       resultat:='';
       comp:=0;
       doc := CreateOleObject('Microsoft.XMLDOM')
              as IXMLDomDocument;
        //charger le document XML
        doc.load('C:\fichiers\'+XMLfiles.Items[XMLfiles.ItemIndex]);
        //pointer sur la liste de l'entité passé en paramétre et trouvée dans le doc XML
    ma question est la suivante:

    Comment puis-je faire pour sélectionner non pas un fichier xml mais tous les fichiers xml du répertoire fichiers?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pour connaitre tous les fichiers d'un répertoire, cherche les codes sur le forum sur FindFirst, FindNext et FindClose

    Ensuite, ce n'est pas clair ce que tu veux ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    ben je les connais déjà mes fichiers...

    en fait pour essayer d'être plus clair, le code que je montre permet en parcourant un fichier xml de récupérer des données concernant les balises après l'avoir sélectionné.

    Ce que je cherche à faire, ce n'est pas de sélectionner un fichier mais tous les fichiers xml contenus dans le répertoire.

    Je ne sais pas comment expliquer ça autrement...

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    tu nous passes un code abscond, sans début, ni fin, pas de contexte, qu'est-ce que tu veux qu'on en fasse ... XMLfiles sort de n'importe où, on peut supposer que c'est une TFileListBox

    Si XMLfiles contient une liste de fichier, suffit de faire une boucle for sur cette liste XMLfiles, je ne vois pas ce que peu te poser problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      for i := 0 to XMLfiles.Items.Count - 1 do
        MachinAFaireSurXML(XMLfiles.Items[i]);
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    Bon, je mes le code un peu plus complet histoire de voir le contexte, mais c'était plus pour ne pas vous embrouiller:

    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
    66
    67
     
    function TForm1.getValueattribut(entite : string;parent : string; occurrence : integer;attribut :string):string;
    var
       i,j,k,comp :integer;
       Xparent,resultat: String;
    begin
      {
      Before inserting data in to the country table,
      make sure that the data in the generated xml
      file (country.xml) and country table (DBDEMOS)
      are different.
      }
     
      try
     
      begin
       resultat:='';
       comp:=0;
       doc := CreateOleObject('Microsoft.XMLDOM')
              as IXMLDomDocument;
        //charger le document XML
        doc.load('C:\fichiers\'+XMLfiles.Items[XMLfiles.ItemIndex]);
        //pointer sur la liste de l'entité passé en paramétre et trouvée dans le doc XML
        nlist:=doc.getElementsByTagName(entite);
        //parcourir la liste
        for i:=0 to nlist.Get_length-1 do
        begin
            //Xparent prend le nom  du parent trouvé de cette entité
            Xparent := nlist.Get_item(i).parentNode.nodeName;
            //si le nom parent trouvé ne correspond pas à celui passé en paramétre
            //on continue
            if (parent <> '') and (Xparent <> parent) then
                    continue
            else comp := comp+1;
            //parent est trouvé ,on vérifie si l'occurrence de l'entité correspond bien à
            //celle passé en paramétre
            if (comp <> occurrence) then
                    continue;
             //l'occurrence trouvé
            Attributs := '';
            //on parcourt  la liste des attributs de l'entité voulu
            for k:=0 to nlist.Get_item(i).Get_Attributes.length-1 do
            begin
               AttrNode := nlist.Get_item(i).Get_Attributes.item[k];
               AttrName := AttrNode.nodeName;
               AttrVal := AttrNode.text;
               // si l'attribut ne correspond pas à celui passé en paramétre
               //on continue
               if (Attribut <> '') and (AttrName <> Attribut) then
                    continue;
               //attribut voulu est trouvé
               //on retourne sa valeur     
               if (AttrName <> '')  then
                    begin
                                    resultat:=AttrVal;
                                    getvalueattribut := resultat;
                                   // showMessage('attribut vaut ' + resultat);
                     end;
            end;
        end;
     
        end;
      except
         on e:Exception do
           Showmessage(e.message);
      end;
    end;
    et pour le menu déroulant il n'y a rien de plus que ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.XMLfilesChange(Sender: TObject);
    begin
     
    end;

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    heu je le mes à la place du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    doc := CreateOleObject('Microsoft.XMLDOM')
              as IXMLDomDocument;
    Et puis ça fait référence à quoi machinafairesurXML?

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    MachinAFaireSurXML c'est ta fonction getValueattribut, sauf que t'écrit plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load('C:\fichiers\'+XMLfiles.Items[XMLfiles.ItemIndex]);
    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    function TForm1.getValueattribut(ParamètreNomDuFichier: string; entite : string;parent : string; occurrence : integer;attribut :string):string;
    begin
      ...
            doc := CreateOleObject('Microsoft.XMLDOM')
              as IXMLDomDocument;
            //charger le document XML
            doc.load(ParamètreNomDuFichier);
       ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    heu pour la partie ParamètreNomDuFichier, je suppose que tu me demandes plus de mettre à la place 'C:\fichiers\'+XMLfiles.Items[XMLfiles.ItemIndex]

    Car ça n'est pas un nom de fichier que je recherche en particulier mais tous les fichiers contenus dans le répertoire.

    et ensuite, je ne vois pas trop où tu veux poser la boucle for que tu proposais juste avant

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    ParamètreNomDuFichier, OUI
    Un Dossier c'est un peu une liste de fichier, c'est pourtant simple
    Ensuite, pour la boucle for, c'est encore plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i := 0 to XMLfiles.Items.Count - 1 do
        MemoAttributes.Lines.Add(getValueattribut(XMLfiles.Items[i], entite, parent, occurence, attribut));
    XMLfiles est-ce un TFileListBox ?
    Si oui, tu as déja la liste (voir Directory)

    Sinon, tu remplis la liste via FindFirst, FindNext et FindClose

    [Mode Troll Powered]
    Cela sera ma dernière intervention, je ne peux pas aller plus loin dans l'assistanat, faudrait réflechir un peu ! Tu ne cherches pas plus de 5 secondes, allez ! allez ! bouges-toi ! Tu as un cerveau, sert toi s'en !
    [Mode Troll Released]
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    Bon en fait je suis revenu un peu en arrièredans la mesure où je considérais que poser ma boucle était comment dire.... mettre la charue avant les boeufs ou encore construire une maison sans construire les plans.

    Donc avant de tester ma boucle, j'ai déjà voulu voir ce que ça donnait en n'appelant qu'un seul fichier et donc en désactivant le menu déroulant (pas la peine d'aller plus loin si ça ne marche pas):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load('C:\fichiers\nomdufichier')
    et pour prouver que je ne suis pas du genre à m'appuyer sur les autres membres du forum mais simplement à me faire débloquer, j'ai également testé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load("C:\fichiers\nomdufichier")
    ou encore ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load('C:/fichiers/nomdufichier')
    ou encore ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load("C:/fichiers/nomdufichier")
    mais aussi ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load("C:\fichiers"+XMLfiles.nomdufichier)
    et même ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load('C:\fichiers'+XMLfiles.nomdufichier)
    et aussi cherché sur tous les liens de google qui ressemblaient plus au 1er code que j'ai listé mais aucun d'eux n'a marché.

    enfin voilà.

    ps: je sais que les 2 derniers tests ont l'air d'être n'importe quoi (et le sont) mais quand ça ne marche pas quoi qu'on fasse, on a tendeance à faire n'importe quoi au bout d'un moment.

    edit: ha oui, j'oubliais de dire: j'ai aussi testé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load(C:\fichiers\nomdufichier)
    mais résultat idem, bien etendu la liste que j'ai testé n'et pas exaustive.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    Bon étant donné que je travaille sur un programme qui a été créé par quelqu'un d'autre, je n'ai pas tout compris dès le début à quoi correspondait telle et telle fonction, je vais donc montrer toutes les parties du code utiles que j'aurais du mettre dès le début (désolé):

    la fonction getValue:
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    function TForm1.getValue(entite : string;parent : string; occurrence : integer):string;
    var
       i,k,ret_val,count,comp : Integer;
       strData,Xparent: String;
    begin
      {
      Before inserting data in to the country table,
      make sure that the data in the generated xml
      file (country.xml) and country table (DBDEMOS)
      are different.
      }
     
      try
     
      begin
       //table1.Active := true;
       //table1.close;
       //table1.open;
       //table1.active:=true;
       //table1.Insert;
       count:=1;
       comp:=0;
       DataList:=TStringList.Create;
       memo1.Clear;
       doc := CreateOleObject('Microsoft.XMLDOM')
              as IXMLDomDocument;
        //Load country.xml file
        doc.load('C:\fichiers\'+XMLfiles.Items[XMLfiles.ItemIndex]); *
        //nlist:=doc.getElementsByTagName(Entity.Text);
        //la liste de l'entité saisie dans l'edit
        nlist:=doc.getElementsByTagName(entite);
        //DataList.Add(Entity.Text);
        memo1.lines.append('Table Name : MsgxmlEvePat_j.DB');
        memo1.lines.append('------------------------------');
        for i:=0 to nlist.Get_length-1 do begin
            //Xparent prend le nom du parent de l'entité saisie (de la i éme position)
            Xparent := nlist.Get_item(i).parentNode.nodeName;
           //si le nom parent courant n'est pas vide ,et ne correspond pas à celui passé en paramétre
           //on sort de la boucle
           if (parent <> '') and (Xparent <> parent) then
                   continue
           //si le parent passé en paramétre est trouvé, on incrèmente un compteur
           else comp:= comp+1;
           //si le compteur n'égale pas à l'occurrence passée en paramétre on sort
           if( comp <> occurrence )  then
                    continue;
            //affichage dans le memo
            memo1.lines.append('======= (Occurrence n° '+inttostr(count)+') =======');
            memo1.lines.append('[ Noeud parent : '+Xparent+' ]');
            //-- now get the list of attributes for this Element node
            Attributs := '';
            //on parcourt la liste de cette entité
            for k:=0 to nlist.Get_item(i).Get_Attributes.length-1 do
             begin
               //AttrNode prend la liste des attibuts de cette entité
               AttrNode := nlist.Get_item(i).Get_Attributes.item[k];
               //AttrName prend  le nom de cet attribut
               AttrName := AttrNode.nodeName;
               //AttrName prend  le valeur de cet attribut
               AttrVal := AttrNode.text;
               //this is for displaying a
               //single record on the memo
               //attributs concaténe l'ensemble des attributs trouvées pour cette entité
               // sous forme(..:...)(..:..)(..:..)
     
               Attributs := Attributs + ' {'+AttrName+' : '+AttrVal+'}';
               //AttrNode := AttrNode.Get_Attributes.item[k];
             end;
     
             DataList.Add(entite);
             //si attributs n'est pas vide on le ajoute à DataList
             if Attributs <> '' then
                   DataList.Add(Attributs);
             //fonction récursive sur les noeud fils de cet entité
             travelChildren(nlist.Get_item(i).Get_childNodes);
            //Removes the first character(,)
            //from dataRecord
     
            strData:=copy(dataRecord,1,length(dataRecord));
            getValue:=strData;
     
            //showMessage('entite vaut '+strData);
            memo1.lines.add(strData);
            dataRecord:='';
            //ret_val:=insertintotable(Datalist);
            //if ret_val=1 then
            //memo1.lines.add
            //  ('Data inserted successfully.............!')
            //else if ret_val=-1 then
            //memo1.lines.add
            //('Error while updating.....Try again.....!');
            //memo1.lines.append
            //(' ');
     
            DataList.Clear;
            count:=count+1;
         end;
    end;
       except
         on e:Exception do
           Showmessage(e.message);
      end;
    end;
    la fonction getValueattribut:
    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
    66
    function TForm1.getValueattribut(entite : string;parent : string; occurrence : integer;attribut :string):string;
    var
       i,j,k,comp :integer;
       Xparent,resultat: String;
    begin
      {
      Before inserting data in to the country table,
      make sure that the data in the generated xml
      file (country.xml) and country table (DBDEMOS)
      are different.
      }
     
      try
     
      begin
       resultat:='';
       comp:=0;
       doc := CreateOleObject('Microsoft.XMLDOM')
              as IXMLDomDocument;
        //charger le document XML
        doc.load('C:\fichiers\'+XMLfiles.Items[XMLfiles.ItemIndex]); *
        //pointer sur la liste de l'entité passé en paramétre et trouvée dans le doc XML
        nlist:=doc.getElementsByTagName(entite);
        //parcourir la liste
        for i:=0 to nlist.Get_length-1 do
        begin
            //Xparent prend le nom  du parent trouvé de cette entité
            Xparent := nlist.Get_item(i).parentNode.nodeName;
            //si le nom parent trouvé ne correspond pas à celui passé en paramétre
            //on continue
            if (parent <> '') and (Xparent <> parent) then
                    continue
            else comp := comp+1;
            //parent est trouvé ,on vérifie si l'occurrence de l'entité correspond bien à
            //celle passé en paramétre
            if (comp <> occurrence) then
                    continue;
             //l'occurrence trouvé
            Attributs := '';
            //on parcourt  la liste des attributs de l'entité voulu
            for k:=0 to nlist.Get_item(i).Get_Attributes.length-1 do
            begin
               AttrNode := nlist.Get_item(i).Get_Attributes.item[k];
               AttrName := AttrNode.nodeName;
               AttrVal := AttrNode.text;
               // si l'attribut ne correspond pas à celui passé en paramétre
               //on continue
               if (Attribut <> '') and (AttrName <> Attribut) then
                    continue;
               //attribut voulu est trouvé
               //on retourne sa valeur
               if (AttrName <> '')  then
                    begin
                                    resultat:=AttrVal;
                                    getvalueattribut := resultat;
                                   // showMessage('attribut vaut ' + resultat);
                     end;
            end;
        end;
     
        end;
      except
         on e:Exception do
           Showmessage(e.message);
      end;
    end;
    et le bouton sur lequel sont rattachés ces 2 évènements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.BitBtn4Click(Sender: TObject);
    begin
    getValue('valeur','',1);
    end;
    bon tels qu'ils sont ces codes fonctionnent seulement dès que je mes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load('C:\fichiers\nom_du_fichier.xml');
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.load('C:\fichiers\'+XMLfiles.Items[XMLfiles.ItemIndex]);
    ben là ça comme,ce à faire n'importe quoi.

    Donc voilà un des problèmes que j'ai corrigé est qu'étant donné que je n'ai pas compris tout le code cette application qui a été crée par quelqu'un d'autre et que je reprends aujourd'hui, petits bouts par petits bouts, je comprends peu à peu mieux le code était le suivant:

    je n'avais pensé à faire cette modification que sur la fonction getValueAttribut alors que je devais le faire également sur la fonction getValue (pb corrigé)

    l'autre erreur que j'avais faite était que je n'avais pas pensé à mettre l'extention de fichier .xml lorsque je marqué le nom du fichier.

    Malgrès le fait que j'ai corrigé ces 2 erreurs, ce code ne fonctionne toujours pas dès que je sélectionne un fichier en particulier directement dans le code plutôt qu'à partir du menu déroulant.

    A ce moment où j'écris ces lignes, je n'ai pas encore trouvé la ou les autres erreurs qui font que l'application ne marche pas.

    ps: pour le code concentrez vous surtout sur la partie de code où j'ai mis les * sinon vous risquez de vous emmêler les pinceaux.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    bon décidément je porte bien mon pseudo aujourd'hui, la fonction getValueattribut n'est pas appelé dans ce bouton donc on peut le laisser de côté, j'y reviendrai dessus déjà quand je parviendrai à faire marcher la fonction getValue.

    Donc ne pas tenir compte de la fonction getValueattribut que je laisse toutefois affichée.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    XMLfiles est-ce un TFileListBox ?
    Si oui, tu as déja la liste (voir Directory)
    Oui c'est bien un TFileListBox mais le but de mon travail est de m'en débarasser en fait.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    Bon ben j'ai cherché pas mal d'exemples en findnext mais aucun d'entre eux n'explique clairement comment m'en servir dans ma boucle.

    D'autant plus qu'il faut absoluement que je me débarasse du menu déroulant XMLfiles.

  15. #15
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu cherches mal !

    Aide de Delphi 6 !
    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sr: TSearchRec;
      FileAttrs: Integer;
    begin
      StringGrid1.RowCount := 1;
    ...
      FileAttrs := FileAttrs + faAnyFile;
     
      with StringGrid1 do
      begin
        RowCount := 0;
     
        if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then
     
        begin
          repeat
            if (sr.Attr and FileAttrs) = sr.Attr then
            begin
            RowCount := RowCount + 1;
            Cells[1,RowCount-1] := sr.Name;
            Cells[2,RowCount-1] := IntToStr(sr.Size);
            end;
          until FindNext(sr) <> 0;
          FindClose(sr);
        end;
      end;
    end;
    Tient une fonction qui pourrait t'aider, sinon la FAQ : Comment lister les fichiers d'un répertoire ?
    Et encore une fois, tu ne pense pas assez modulaire, aucun code ne peut exister avec le cas de TA boucle, ça ne veut rien dire ça comme demande, tu dois découper dans ton esprit les taches !

    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
    procedure GetListFile(const Directory: string; ResultList: TStrings): Boolean;
    var
      sr: TSearchRec;
      Path: string;
    begin
      Result := False;
      if DirectoryExists(Directory) then
      begin
        ResultList.BeginUpdate();
        try
          ResultList.Clear();
     
          Path := IncludeTrailingPathDelimiter(Directory);
          if SysUtils.FindFirst(Path + '*', faAnyFile and not faDirectory, sr) = 0 then
          begin
            try
              repeat
                ResultList.Add(sr.Name);
              until SysUtils.FindNext(sr) <> 0;
            finally
              SysUtils.FindClose(sr);
            end;
          end;
       finally
          ResultList.EndUpdate();
          Result := ResultList.Count > 0;
       end;
      end;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    mouais à mon avis ce n'est pas que je cherche mal, c'est plus le système de google qui est à revoir: je tape findfirst, findnext, findclose et rechercher tous les fichiers d'un répertoire et je ne trouve que des trucs inutiles.

    En revenche tout à l'heure j'ai tapé un type de variable dont je ne comprenais pas la signification, je ne trouve pas ce que je cherchais en revenche, j'ai trouvé ça:

    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
    procedure TForm1.Button1Click(Sender: TObject);
    Var Chemin : String;
        Info   : TSearchRec;
    begin
      ListBox1.Items.Clear;
      ListBox2.Items.Clear;
     
      { Pour être sur que la barre oblique finisse le nom du chemin }
      Chemin := IncludeTrailingPathDelimiter(Edit1.Text);
     
      { Recherche de la première entrée du répertoire }
      If FindFirst(Chemin+'*.*',faAnyFile,Info)=0 Then
      Begin
        Repeat
          { Les fichiers sont affichés dans ListBox1 }    
          { Les répertoires sont affichés dans ListBox2 }
          If Not((Info.Attr And faDirectory)=0)
            Then ListBox2.Items.Add(Info.FindData.cFileName)
            Else ListBox1.Items.Add(Info.FindData.cFileName)
     
          { Il faut ensuite rechercher l'entrée suivante }
        Until FindNext(Info)<>0;
     
        { Dans le cas ou une entrée au moins est trouvée il faut }
        { appeler FindClose pour libérer les ressources de la recherche }
        FindClose(Info);
      End;
    end;
    enfin quelque chose d'utile, bon ça n'est pas exactement ce que je veux faire mais ça en prends déjà le chemin, si j'arrive à faire marcher cette procédure, il ne me manquera plus grand chose à faire.

    bon là je viens de la tester mais ça aurait été trop beau pour être vrai que ça marche.

    J'ai changé edit1 par le chemin du répertoire d'où je voulais prendre mes fichiers.
    Plus tard par la suite il faudra que je me débarasse de ListBox2 mais je n'en suis pas encore là étant donné que ça me met des erreurs comme quoi les identificateurs listbox1 et listbox2 ne sont pas déclarés.
    z là où j'ai mis Z:\cpaj_rec.Text à la place de edit 1 non déclaré.

    ; attendu mais ; trouve au if findfirst

    Info non déclaré selon dephi alors qu'il est bien déclaré au début -_-

    ) attendu mais attr trouvé sur la ligne if not

    et instruction attendu mais fin de fichier trouvé sur la dernière ligne après la procédure.

  17. #17
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Euh, pour la liste des fichiers, ma fonction GetListFile est totalement fonctionnelle, suffit de l'utiliser en lui passant un dossier (choisir par un Edit ou un SelectDirectory) et une TStrings instanciés (TStringList ou un TListBox), je ne vois pas ce que tu peux chercher de plus, ensuite tu parcours dans une boucle for, la TStrings rempli par GetListFile ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    Bon pour les erreurs "listbox1 et listbox2 ne sont pas déclarés" vous pouvez oublier, c'était juste que je n'avais pas mis en place les modules correspondants, en revanches, les autres erreurs perdurent encore et encore...

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    heu oui, je parlais pour ce que j'avais trouvé sur google bien sur.

  20. #20
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Ouais, tu continues à chercher, mais tu devrais passer à la suite, l'appel de ta fonction GetValue ou GetAttributeValue ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 15
    Dernier message: 24/11/2008, 16h16
  2. Ouverture de plusieurs fichiers en même temps ?
    Par nicolas.sitbon dans le forum POSIX
    Réponses: 42
    Dernier message: 07/08/2008, 23h35
  3. Réponses: 0
    Dernier message: 09/10/2007, 23h19
  4. Réponses: 0
    Dernier message: 09/10/2007, 17h51
  5. ouvrir plusieurs fichiers en même temps
    Par diiity dans le forum Windows
    Réponses: 0
    Dernier message: 03/08/2007, 18h26

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