DELPHI PROJECT CLEANNER (DEPOC) OUTILS POUR NETTOYER VOS PROJETS AVANT DE LES PO

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 11 juin 2006 à 20:01
boyboys Messages postés 8 Date d'inscription dimanche 5 avril 2009 Statut Membre Dernière intervention 11 juin 2010 - 11 juin 2010 à 13:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38066-delphi-project-cleanner-depoc-outils-pour-nettoyer-vos-projets-avant-de-les-poster-sur-cs

boyboys Messages postés 8 Date d'inscription dimanche 5 avril 2009 Statut Membre Dernière intervention 11 juin 2010
11 juin 2010 à 13:15
slt je viens de lire le code mais je n'arrive toujours pas à voir la partie du code qui montre l'ajout de menu au menu contextuel du shell .si quelqu'un pourrait m'aider cela me ferai plaisir
merci et bne journée à vous.
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
11 sept. 2007 à 14:09
petit question bete: je ne trouve pas ou on affecte le raccourci clavier d'un outil !!!
quelqu'un peut-il m'aider?
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
15 juin 2006 à 20:33
salut,

Désolé pour le retard fOxi (je suis tres occupé en ce moment). J'ai regardé ton source dans les grandes lignes : c'est du tout bon. Je te félicite c'est du bon boulot.

PS : C'est une des rares sources qui est et restera sur mon HDD ^^.

A+
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 juin 2006 à 04:16
merci jd mais j'ai deja tout ce qu'il faut en fonctions pour ce genre de choses...

de plus les tailles ne s'affiche pas en block, mais bel est bien avec le separateur de millier.

et je doute que beaucoup ont des projets depassant la dizaine de Mo.

mais bon, rien que pour toi, si cela te fait tellement plaisir, j'integrerais cela dedans.
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
14 juin 2006 à 02:42
Re :)

Petit contribution de ma part pour permettre d'afficher la taille du dossier en ko/mo/go.

D'abord on rajoute les constantes au début :
"const
UnKiloOctet=1024;
UnMegaOctet=1048576;
UnGigaOctet=1073741824;"

Ensuite la fonction de conversion :
"function CorrigerTaille(TailleEnOctets:int64):string;
begin
if TailleEnOctets>=UnGigaOctet then
begin
CorrigerTaille:=FloatToStrF(TailleEnOctets/UnGigaOctet,ffGeneral,3,20)+' Go';
exit;
end;
if TailleEnOctets>=UnMegaOctet then
begin
CorrigerTaille:=FloatToStrF(TailleEnOctets/UnMegaOctet,ffGeneral,3,20)+' Mo';
exit;
end;
if TailleEnOctets>=UnKiloOctet then
begin
CorrigerTaille:=FloatToStrF(TailleEnOctets/UnKiloOctet,ffGeneral,3,20)+' Ko';
exit;
end;
CorrigerTaille:=FloatToStrF(TailleEnOctets,ffGeneral,3,20)+' octets';
end;"

Plus sympa à lire que "16546416461 octets" par exemple ;-)
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 juin 2006 à 21:03
^^ hurrycane ... si tu veux on peu travailler conjointement sur le projet ...
si tu as deja des sources fait les moi parvenir en mp.
hurrycane Messages postés 117 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 19 juin 2009 1
13 juin 2006 à 20:36
salut delphiprog je depose une plainte contre foxi qui ma doublé en sachant que je voulais déposer une source de codecleaner ! c'est vrai que jai fait du retard mais il fallait pas qu'il me double !
bravo foxi pour le travail ; permet de faire une ptit modification ok !
cs_Napster Messages postés 76 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 19 septembre 2009
13 juin 2006 à 13:16
Merci ..........@++
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 juin 2006 à 03:03
@napster : pour les directives de compilation de Delphi, tu peu deja regarde l'aide ... mais c'est un peu hardus pour toute les trouvées.
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
13 juin 2006 à 00:27
MSDN me parait un bon début pour les API ;)
cs_Napster Messages postés 76 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 19 septembre 2009
13 juin 2006 à 00:19
salut tt le monde ,
fOxi merci pour cette l'information , j'ai un manque d'info sur les fonction's de windows , et je sais ou trouver tt ces fonction etulisable avec delphi ....?
votre source est utile .
Bravo bonne continuation
Utilisateur anonyme
12 juin 2006 à 18:54
Génial,
tout fonctionne très bien maintenant.

Bravo pour la rapidité des modifications

le code est bien comme toujours ...
mais pour la note j'attend encore un peut,(la mise à jour Zip);-)

comme ça je pourrai mettre un 10/10

voici un code qui nous serat à tous très utile
@+
Cirec
Utilisateur anonyme
12 juin 2006 à 14:18
Oups !!!!
un oublis, après modification l'unité DirBrowser n'est plus utile on peut donc la retirer du projet
@+
Cirec
Utilisateur anonyme
12 juin 2006 à 14:13
Bon alors, je commence par le début :

j'ai trouvé ce qui clochait (enfin chez moi) c'est l'unité DirBrowser.pas qui ne va pas
donc tout simplement j'ai ajouté dans les uses l'unité FileCtrl puis modifier comme suit :
procedure TForm1.BtnBrowseClick(Sender: TObject);
begin
{if OpenDirectory.Execute(ProjectDir) then begin
ProjectDir := OpenDirectory.PathName;}
If SelectDirectory('Selectionnez un dossier', '', projectdir, [sdShowEdit , sdNewUI], Self) Then Begin
ProjectDir := IncludeTrailingBackSlash(ProjectDir);
EdtProjectDir.Text := ProjectDir;
InitiateScan;
end;
end;

Ensuite ta procédure pour trouver les icônes et un peut lourde non ?
Et surtout l'aide de Delphi dit ceci à propos de ExtractIconEx :
You must destroy all icons extracted by ExtractIconEx by calling the DestroyIcon function.

Alors voici je que je te propose :
Tu ajoutes cette fonction :

function GetAssociatedIcons(const AExtension: string; ASmall: Boolean): HIcon;
var
Info: TSHFileInfo;
Flags: Cardinal;
begin
if ASmall then
Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES
else
Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES;

SHGetFileInfo(PChar(AExtension), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags);
Result := Info.hIcon;
end;

Et tu modifies comme ceci dans la procedure TForm1.CheckListBox1DrawItem:

// GetAssociatedIcon(ProjectDir+S,nil,@pIcF);
pIcF := GetAssociatedIcons(ProjectDir+S, True);
if pIcF <> INVALID_HANDLE_VALUE then begin
IcF := TIcon.Create;
IcF.Handle := pIcF;
draw(rect.Left, rect.Top, IcF);
IcF.Free;
end;

un peut plus loin dans la même procédure tu fais appel à une procedure que tu as créer
mais tu aurais pu faire ceci :

// Rect2 := SRect(rect.Left+18,Rect.Top,Rect.Left+HeaderControl1.Sections[0].Width-18,Rect.Bottom);
Rect2 := Classes.Rect(rect.Left+18,Rect.Top,Rect.Left+HeaderControl1.Sections[0].Width-18,Rect.Bottom);



Et du coup le prog a subit un SlimFast de plus de 100 kilos ;-)

Ah oui tu as oublié un BadExt #.~dsk#
mais à ce propos ne vaudrait il pas mieux utiliser un mask de type .~* par exemple
ce qui du coup prendrait aussi en compte tous les fichiers qui sont dans \__History

Voilà j'attend comme tout le monde la mise à jour avec zip

très bien, ça nous change des .bat lol

@+
Cirec
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 juin 2006 à 13:17
@cirec : mmm etrange, je me demande si cela ne viens pas de l'extracteur d'icone.
je vais tout de meme verifier les sources pour voir si toute les liberations sont faites correctement.

@les autres : pour upx ... oui c'est a reflechir ... pour le moment le plus important et la possibilitée de créer les archives zip.


je regarde pour l'erreur d'accés.
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
12 juin 2006 à 13:08
PS : pour ce dernier élément, je peux t'aider si tu le désires ;)
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
12 juin 2006 à 10:14
Je n'ai pas encore testé (attente de la MAJ...), cependant, j'approuve la remarque de John Dogget et je pense que l'incorporation d'UPX serait intéressante dans un projet comme celui-ci, ce qui finaliserait toutes les étapes de diffusion du prog (exécutable compressé d'un côté, sources de l'autre)

On pourrait aussi imaginer (mais là ça dépasse un peu le contexte du "cleaner", je le reconnais :) ) un module du programme qui puisse créer dans un dossier du répertoire du projet une page web (html ou php par exemple) présentant le programme selon les infos contenues dans l'exécutable, avec son icône, et tout ce qui est récupérable (auteur, date de modification...), plus un lien vers le prog UPXé et compressé dans un zip ou rar dans le même dossier, histoire de pouvoir publier facilement le projet sur un site web... Enfin bon ce n'est qu'une idée ;)

voila, c'est tout !
@+
Nico
Utilisateur anonyme
12 juin 2006 à 10:06
Salut,

Alors moi, "tu me connais maintenant F0xi :-)", j'ai un petit souci avec le code :

je lance l'application je sélectionne le répertoire et la si je décide de fermer le prog j'ai un message "d'insulte" :

Violation d'accès à l'adresse 0040337c dans le module Depoc.exe lecture de l'adresse 61762061

bon pour le reste je vais d'abord faire d'autres testes ...

@+
Cirec
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
12 juin 2006 à 09:55
Moi j'en suis resté au bon vieux batch.

Par contre, ta source est interessante parce qu'elle montre comment ajouter un menu au shell. Elle montre aussi comment se servir d'Inno, ce qui est bien plus rare.

Dans les batchs que j'utilise, j'inclue la compression de l'executable avec UPX ...
Mais c'est pas le but de ta source ;).
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 juin 2006 à 01:56
@napster :

Les commentaires voir "explication finale" sur cette page ... ils viendront par la suite.

pour la directive de compilo, elle permet de desactiver les messages d'alertes quand on utilise des methodes propre a des plateforme (windows en l'occurance ici)

ensuite, le but ici n'etait pas de fournir des techniques mais bel et bien un outil, c'est pour ça que j'ai pas encore commenté les sources.
cs_Napster Messages postés 76 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 19 septembre 2009
12 juin 2006 à 00:51
fOxi ,
j'ai dit sa (A part sa votre source elle n'est pas du tt commenter
imagine toi qu'un debutant jete un coup d'oeil dans une source san commentaire , que ce quil va apprendre dans ce cas la !
se fait du bien d'eclairer ou commenter la source . ) pour le bien faire l'entraide convenablement .
cs_Napster Messages postés 76 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 19 septembre 2009
12 juin 2006 à 00:38
Salut fOxi ,
votre Source est tres utile , tres interessante , mais d"apres jeter un coup d'oeil dans la source j'ai trouver sa
{$WARN SYMBOL_PLATFORM OFF}
j'ai mal compris ce que ségnifie ou de sa Etulité elle fait rien dans la source ????
A part sa votre source elle n'est pas du tt commenter .
imagine toi qu'un debutant jete un coup d'oeil dans une source san commentaire , que ce quil va apprendre dans ce cas la !
se fait du bien d'eclairer ou commenter la source .
A part sa votre source et génial .
@+
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
11 juin 2006 à 20:01
Bien sympa tout ça ! Comme tu dis, ça change des .bat habituels :p

Je regarderais en détail quand tu auras mis à jour...

@+
Nico
Rejoignez-nous