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 :

Comment auriez-vous fait ?


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut Comment auriez-vous fait ?
    Non non ce topic n'est pas un remake du Défi Delphi, c'est juste pour savoir comment vous vous auriez fait ce programme.

    Vous trouverez ci-joint les sources d'une application que je viens de créer dans un soucis d'utilité personnel (sisi je vous jure des fois c'est utile). Bien que je suis persuadé que ce programme existe déjà, c'est toujorus plus plaisant de se le confectionner soi-même.

    Bref cesse de bavardage et arrêtons de tourner autour du pot. Regardez les sources (enfin si vous en avez envie), vous l'aurez compris il s'agit d'un programme pour renommer toute une liste de fichier se trouvant dans un même répertoire (notemment en fait pour les photos, les images etc ...).
    Bref, mon programme tourne sans soucis (autant que je sache, mais vous comment auriez-vous programmé ceci ?

    Ce sujet est donc la juste pour que je puisse voir comment on aurait pu faire autrement et pour améliorer ma façon de programmer.


    Je ne sais pas si je trouverai beaucoup de posteur sur ce sujet, mais j'aurais tenté au moins



    merci, bonne soirée

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Salut,

    je suis interressé de voir ce "Renommeur" mais je crains que je n'ais pas la bonne version de Delphi...
    En quelle version es-tu ?

    Perso je tourne en V7

  3. #3
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Exact j'ai oublié de précisé,
    Je tourne sous la version Borland Studio Developper 2006.


    Je peux te passer l'exe si tu veux. Après pour la source tu n'as qu'a éditer les fichiers avec NotePad

    Tu veux l'Exe ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par Bleys
    Bref cesse de bavardage et arrêtons de tourner autour du pot. Regardez les sources (enfin si vous en avez envie), vous l'aurez compris il s'agit d'un programme pour renommer toute une liste de fichier se trouvant dans un même répertoire (notemment en fait pour les photos, les images etc ...).
    Bref, mon programme tourne sans soucis (autant que je sache, mais vous comment auriez-vous programmé ceci ?
    Je n'ai pas encore lu les sources, mais prends-tu en compte le contenu des sous-répertoires (en option, pas systématiquement) ?

    Si ce n'est pas le cas, je t'assure que c'est très souvent utile.

  5. #5
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Non je ne l'ai pas pris en compte, mais effectivment j'aurais pu ajouter cette option ...


    Mais dans le cadre de mon utilisation, je n'en avais pas besoin ...

  6. #6
    Membre averti Avatar de Bejaia-In
    Inscrit en
    Avril 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 365
    Points : 392
    Points
    392
    Par défaut
    Ajouter quelques lignes de commentaires a un code, c'est comme d'ajouter un sucre à un café un peu fort.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Pas besoin de l'EXE... J'ai réussi à bidouiller pour le compiler...

  8. #8
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Citation Envoyé par Bejaia-In
    Ajouter quelques lignes de commentaires a un code, c'est comme d'ajouter un sucre à un café un peu fort.

    Il est vrai que j'ai pas trop comenté celui-ci ...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Après analyse, j'aurais fait ça comme ceci...
    Peux de chose change mais ça peut t'aider...
    Fichiers attachés Fichiers attachés

  10. #10
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Ca m'a l'air un peu plus joli (d'où ce topic),

    Je vais analyser ça, ça te dérange pas si je te pose quelques questions (pas sur encore)


    Merci

  11. #11
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Peut-on revenir sur cette procédure ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure ChangeObjectState(Group : TGroupBox; State : boolean);
    var
      Index : integer;
    begin
      for Index := 0 to Group.ControlCount-1 do begin
        (Group.Controls[Index] as TControl).Enabled := State;
      end;
    end;
    Par rapport à son déroulement, ce que l'on demande de faire, c'est de récupérer tous les objets contenu dans le GroupBox, les objets de type TControl et de les mettre disponible ou pas en fonction de State ?

    Ma question provient principalement sur la récupération des obkets, pas le fait de mettre en disponible ou pas.

    C'est bien ça en fait ?

    Il me vient alors une question bête :

    A chaque fois qu'on crée un GroupBox, dans celui ci, tous les objets sont répertorié ? Une sorte de numéro par objet contenu dans le group ?


    Également, comment savoir quand est-ce qu'il faut mettre Application.ProcessMessages ? (en général)

    Merci

  12. #12
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Je viens de trouver une eptite faille cela dit ... (je sais je cherche la petite bête) qui peut être facilement résolu, mais étant donné que c'est toi qui a fait ce programme, je préfère que tu me dises comment tu le corrigerais.

    Le hic c'est que si ej modifie un premier répertoire tout va bien, mais si je modifie les noms d'un second répertoire, sans fermer l'application, la Liste n'étant pas vidée, j'ai un problème de compteur à mon deuxième dossier. A la fin de l'appui sur Action, Si tout s'est bien passé, il faudrait vider la liste ...

    Personnellement j'aurais juste modifié ça dans la procedure de clique de Action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Success then MessageDlg('Opération terminé !', mtInformation, [mbOk], 0);
    en ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if Success then begin
          MessageDlg('Opération terminé !', mtInformation, [mbOk], 0);
          Liste.Clear;
          end;

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Salut,

    Heureux de constater que cela intéresse quelqu'un...
    Je vais analyser ça, ça te dérange pas si je te pose quelques questions (pas sur encore)
    Fait seulement... Y'a pas de prob...

    A chaque fois qu'on crée un GroupBox, dans celui ci, tous les objets sont répertorié ? Une sorte de numéro par objet contenu dans le group ?
    Oui, les objets tel que les TGroupBox sont considérés comme des containers et leur contenu est répertorié... On y accède comme montré dans le code...
    On peut aussi l'appeller sur le nom mais là il ne faut pas se tromper et connaître les noms des objets...

    comment savoir quand est-ce qu'il faut mettre Application.ProcessMessages ?
    Si tu tombes sur une boucle qui utilise beaucoup de temps processeur > 5 sec, j'insère un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ProcessMessages
    Le hic c'est que si je modifie un premier répertoire tout va bien, mais si je modifie les noms d'un second répertoire, sans fermer l'application, la Liste n'étant pas vidée, j'ai un problème de compteur à mon deuxième dossier. A la fin de l'appui sur Action, Si tout s'est bien passé, il faudrait vider la liste ...
    Oui en effet, il y a un p'tit bug... La correction me semble très correcte...

    Je suis sûr que l'on pourrait encore l'améliorer grandement mais je n'avais pas trop le temps... C'était juste histoire d'en montrer un peu plus sur les possibilités...

  14. #14
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Pour ce type de modification de nom de fichier le mieux est de l'ajouter dans le menu contextuel de l'explorateur, cf. C:\Program Files\Borland\BDS\4.0\Demos\DelphiWin32\VCLWin32\ActiveX\ShellExt

    J'en utilise un depuis qq années pour renommer l'extension de fichier c'est trés pratique, tu peux aussi coller le même traitement dans un prg console.
    C'est tout aussi pratique dans les batch.

    cf. http://www.developpez.net/forums/sho...xtension+shell

  15. #15
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Merci Chaours et finalement grâce à toi mon objectif aura été atteint : avoir lemême programme sous une autre forme pour en apprendre plus
    Merci encore


    Laurent Dardenne > Effectivement, je vais gérer ça ... enfin essayer au moins

  16. #16
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bleys
    Laurent Dardenne > Effectivement, je vais gérer ça ... enfin essayer au moins
    Tu as le principal :
    Détermination : Maximale


    Je t'indique un bout de code pour gérer les menus :
    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
    function TContextTools.QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst,
           idCmdLast, uFlags: UINT): HResult;
    
    Const
     Caption:String='Modifier l''extension';
    
    var
       Command_ID,
       hSub_Menu : HMenu;
       MenuInfo : TMenuItemInfo;
    begin
      Result:= 0;
      if ((uFlags and $0000000F) = CMF_NORMAL) or
         ((uFlags and CMF_EXPLORE) <> 0) then
        begin
          MenuIndex1 := indexMenu;     // index du sous menu
          Command_ID := idCmdFirst;
    
          MenuInfo.cbSize := SizeOf(MenuInfo);
          hSub_Menu := CreateMenu;
    
          Inc(Command_ID);
          MenuIndex2 := MenuIndex1+1;  // index de l'entrée du sous menu
          InsertMenu(hSub_Menu,MenuIndex2,MF_BYPOSITION or MF_STRING,Command_ID,'Copier et renommer en 001');
    
          Inc(Command_ID);
          MenuIndex3 := MenuIndex2+1;
          InsertMenu(hSub_Menu,MenuIndex3,MF_BYPOSITION or MF_STRING,Command_ID,'Renommer en 001');
    
          {
          si d'autre entrées :
           Inc(Command_ID);
           MenuIndex4 := MenuIndex3+1;
           InsertMenu(hSub_Menu,MenuIndex4,MF_BYPOSITION or MF_STRING,Command_ID,'Third Memu Itrm');
          }
    
          With MenuInfo do
           begin
            fMask := MIIM_ID or MIIM_SUBMENU or MIIM_TYPE;
            fType := MFT_STRING;
            fState := 0;
            dwTypeData :=Pchar(Caption);
            cch := Length(Caption);  //  20 :longueur de chaine;
            hSubMenu := hSub_Menu;
            wID := idCmdFirst;
            hbmpChecked := 0;
            hbmpUnchecked := 0;
           end;
          InsertMenuItem(Menu,MenuIndex1,True,MenuInfo);
          Result := 3{ 1 sous-Menu +2 entrées};
        end;
    end;
    
    Avec les variables suivantes déclarées dans la classe 
    TContextTools = class(TComObject, IShellExtInit, IContextMenu)
    
     FFileName : array[0..MAX_PATH] of Char;
        MenuIndex1, MenuIndex2, MenuIndex3 : UINT;
    Bon dev !

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Pas de soucis Bleys... C'est un réel plaisir...

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,

    Dans le temps, j'avais commencé le développement d'un tel programme, puis j'ai arrêté ce projet quand j'ai découvert
    http://www.publicspace.net/windows/BetterFileRename/
    qui fait tout ce que je voulais, et plus encore.

    Tu peux sans doute t'en inspirer.

  19. #19
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Je ne l'ai pas testé mais effectivement il a l'air sympas celui-là aussi ...

    Merci pour le lien

    Ca peut toujours aider pour de nouvelles idées ...

  20. #20
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Laurent Dardenne >
    Je viens de regarder le lien que tu as posté en rapport avec l'ajout du programme dans le menu contextuel mais alors là !!!! J'ai réellement besoin d'aide ...
    Si tu as de la patience ça m'intéresserait de se pencher sur le sujet ...

    Je dis bien si tu as de la ptience


    Merci de répondre

Discussions similaires

  1. comment avez vous fait pour installer latex sous windows?
    Par membreComplexe12 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/11/2010, 14h26
  2. Réponses: 4
    Dernier message: 23/05/2006, 21h48
  3. Comment vous faites pour gérer votre temps?
    Par implosion dans le forum Emploi
    Réponses: 12
    Dernier message: 10/01/2006, 19h31
  4. Réponses: 11
    Dernier message: 12/12/2005, 18h51

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