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 :

DELPHI XE + scrute dossiers et sous dossiers


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Points : 16
    Points
    16
    Par défaut DELPHI XE + scrute dossiers et sous dossiers
    Bonjour,

    j'ai un petit souci sur un sujet qui me semble traditionnel pour vous.

    Pour mon petit serveur DATASNAP et lors de la création de la forme principale j'execute un scrute Dossier + sous dossiers avec un fichier comme filtre. J'utilise la boite scrutefichiers trouvé dans phidels.com

    je souhaite alors récupérer la liste de dossiers trouvé dans une TList que je dois passer comme paramètre pour une autre procédure de création de thread pour chaque dossier trouvé afin d'intégrer les fichiers trouvés dans une base de donnée.

    Pourriez vous me donner la meilleure solution à suivre ?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 671
    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 671
    Points : 25 481
    Points
    25 481
    Par défaut
    Quelle est le problème, ce composant est parfaitement documenté : LE COMPOSANT ScruteDossier

    Il te suffit de mettre un gestionnaire d'Evènement dans OnDossier et\ou OnFichier, tu es libre de créer et remplir ce que tu veux !

    Tu peux très bien remplir le DataSet via Append\Post ou un SQL INSERT directement dans le OnDossier\OnFichier

    Si tu veux "optimiser" les traitements pour que l'écriture en DB se fasse parallèlement à la recherche, effectivement, avec une TThreadList, tu peux arriver à ce résultat, attention, il faut passer un pointeur, ne surtout pas utiliser directement l'adresse de variable Nom

    Ton thread devrait être de cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type 
      TMemoriseNomDansDB = class(TThread)
      private
        FList: TThreadList;
      public
        constructor Create();
        destructor Destroy(); override;
     
        procedure Execute(); override;
        procedure Add(const Nom: string);
      end;
    ton gestionnaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TDateModule1.ScruteDossierDossier(Sender: TObject; Nom: string);
    begin
      FMemoriseNomDansDB.Add(Nom);
    end;
    Avant tu as évidemment fait ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TDateModule1.LanceScrute();
    begin
      FreeAndNil(FMemoriseNomDansDB);   
      FMemoriseNomDansDB := TMemoriseNomDansDB.Create();
      ScruteDossier1.Execute();
    end;
    FMemoriseNomDansDB est membre privé de TDateModule1
    Il faudrait le libérer !

    Après, la fonction Add pourrait ajouter à la ThreadList, soit un PChar alloué manuellement, soit un PString, soit un PMemoriseNomItem

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    type
      PMemoriseNomItem = ^TMemoriseNomItem;
      TMemoriseNomItem = record
        Nom: string;
      end;
    Je te laisse cherche un petit peu le code de TMemoriseNomDansDB.Create, Destroy, Execute et Add

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    oui oui shale ,

    N'oublie pas que je suis encore débutant quoi

    Mais on dirait que tu possède des pouvoirs magiques.

    Cordialement,
    dietrying

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 671
    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 671
    Points : 25 481
    Points
    25 481
    Par défaut
    Oh, mais je n'oublie pas que tu es étudiant, justement, l'idéal est de te mettre sur la piste, que tu cherches par toi même, ça te sera plus profitable à long terme que si je t'avais dès le début fourni ceci

    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
    constructor TMemoriseNomDansDB.Create();
    begin
      inherited Create(false); // Ne Démarre qu'après AfterConstruction !
     
      FList := TThreadList.Create();
     
      FQuery := TQuery.Create();
      FQuery.Database := ...;
      FQuery.SQL.Text := 'INSERT INTO matable (champ) VALUES(:nom)';
      FQuery.Prepare();
    end;
     
    destructor TMemoriseNomDansDB.Destroy();
    begin
      FreeAndNil(FQuery);
      FreeAndNil(FList);
     
      inherited Destroy();
    end;
     
    procedure TMemoriseNomDansDB.Execute();
    var
      Lst: TList;
      P: PMemoriseNomItem;
    begin
      while not Terminated do
      begin
        Sleep(1);
        P := nil;
        Lst := FList.Lock();
        try
          if Lst.Count > 0 then
          begin
            P := PMemoriseNomItem(Lst.Items[0]);
            Lst.Delete(0);
          end;
        finally
          FList.Unlock();
        end;
     
        if Assigned(P) then
        begin
          InsertIntoDB(P.Nom); // faire cette fonction avec string comme paramètre
          Dispose(P);
        end;
      end;
    end;
     
    procedure TMemoriseNomDansDB.Add(const Nom: string);
    var
      P: PMemoriseNomItem;
    begin 
      New(P);
      P.Nom := Nom; // P.Nom ou P^.Nom, le déférencement de structure est implicite
      FList.Add(P);
    end;
     
    procedure TMemoriseNomDansDB.InsertIntoDB(const Nom: string);
    begin  
      FQuery.ParamByName('nom').Astring := Nom;
      FQuery.ExecSQL();
    end;

    Citation Envoyé par dietrying Voir le message
    Mais on dirait que tu possède des pouvoirs magiques.
    Cela me rappelle cette remarque de MelkInarian et ma réponse !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lister dossiers et sous dossiers
    Par sword999 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 11/08/2006, 11h36
  2. Lister sous-dossiers d'un dossier défini
    Par mathieumg dans le forum C
    Réponses: 10
    Dernier message: 19/07/2006, 10h20
  3. lister dossier et sous dossier
    Par wabit dans le forum C
    Réponses: 6
    Dernier message: 06/06/2006, 16h48
  4. [VB6]lister les dossiers et sous dossier
    Par Jacen dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/04/2006, 08h06
  5. Réponses: 4
    Dernier message: 25/04/2006, 16h16

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