cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 14 sept. 2007 à 18:06
Ben...je crois que Foxi a déjà tout dit !
Alors, on remet l'ouvrage sur le métier et on y va mon cher Hardouz...Faut pas mollir :(
Ne le prends pas mal, c'est vraiment pour ton bien.
Pour les autres : à bon entendeur, salut !
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 13 sept. 2007 à 19:59
"Merci mais jmaddresse a tous debutant"
c'est pas parce que tu t'addresse au debutant que tu doit forcement faire du code de "debutant".
au contraire, c'est en montrant du code astucieux et "pro" que les debutants s'ameliore. si tu leurs presente un code de merde, ils copieront ce code de merde et resteront toujours au même niveau.
un peu comme si delphiprog, florenth ou moi ecrivions encore dans nos programme pour debutant :
if UnBooleen = true then UnBooleen := false else UnBooleen := true;
au lieu de
UnBooleen := not UnBooleen;
tout ça parce qu'on s'addresserait a des debutant ... et inversement si on s'addresse a des "pro".
n'oublie pas cette regle d'or qui est de fournir au mieux un code "pro" comprehensible par tous et donc qui n'exclus pas les conventions, regles et astuces en matiere de programmation et surtout pas les regles de securité en matiere de creation dynamique d'objet/classe (try...finally).
en plus, je l'ai pas fait remarquer, mais un code si court aurait plus sa place dans les snippet.
de plus, ton code est uniquement fait pour CE programme, il ne permet pas d'ajouter d'autre programme a la liste du FW.
ce qui le rend pas souple du tout, et pourtant la souplesse est ce qu'il y a de plus important dans le code (aprés la propreté).
Les methodes dite pratique doivent toujours etre "standalone", cad, utilisable et portable dans n'importe quel programme.
Ont doit toujours eviter de rendre ces methodes intrusive ou dependante d'un programme ou d'element propre a un programme particulier.
un peu comme l'erreur d'appeler la variable Form1 dans le code de la classe TForm1, au lieu de Self!
ensuite, tu as une erreur dans le chemin de registre, ont appel jamais les ControlSetXXX ou autre entrée propre a une session car n'existe pas forcement sur toutes les machines.
il faut donc utiliser CurentControlSet ou les chemins globaux independant des sessions et disponible sur tout les systemes windows.
bien que ControlSet001 existe sur la plupart des windows xp, il en serait differement de ControlSet003 ou ControlSet015 ...
donc avant de dire "merci mais ..." genre "cause toujours tu m'interresse", reflechit un peu a pourquoi on te donne des conseils.
Un programmeur n'est pas seulement un "idiot" qui ecrit/copie stupidement du code, il doit etre capable aussi de comprendre ce code et d'expliquer comment il fonctionne, comment on l'utilise.
et quand un programmeur comprend son code, il est capable d'en voir les erreurs, les defauts, de le corriger, l'ameliorer, l'optimiser afin de toujours fournir l'une des meilleure methodes qu'il soit.
c'est pas pour rien que la programmation restera toujours un domaine elitiste et un art difficile a maitriser.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 13 sept. 2007 à 15:03
function AddToFireWall(const FileName, Enabled : string) : boolean;
const
FWK = 'SYSTEM\CurrentControlSet\Services\'+
'SharedAccess\Parameters\FirewallPolicy\'+
'StandardProfile\AuthorizedApplications\List';
begin
result := false;
with TRegistry.create do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey(FWK,false) then
begin
if not ValueExists(FileName) then
WriteString(FileName, FileName+':*:enabled:'+Enabled);
result := true;
end;
CloseKey;
finally
free;
end;
end;
14 sept. 2007 à 18:17
14 sept. 2007 à 18:06
Alors, on remet l'ouvrage sur le métier et on y va mon cher Hardouz...Faut pas mollir :(
Ne le prends pas mal, c'est vraiment pour ton bien.
Pour les autres : à bon entendeur, salut !
13 sept. 2007 à 19:59
c'est pas parce que tu t'addresse au debutant que tu doit forcement faire du code de "debutant".
au contraire, c'est en montrant du code astucieux et "pro" que les debutants s'ameliore. si tu leurs presente un code de merde, ils copieront ce code de merde et resteront toujours au même niveau.
un peu comme si delphiprog, florenth ou moi ecrivions encore dans nos programme pour debutant :
if UnBooleen = true then UnBooleen := false else UnBooleen := true;
au lieu de
UnBooleen := not UnBooleen;
tout ça parce qu'on s'addresserait a des debutant ... et inversement si on s'addresse a des "pro".
n'oublie pas cette regle d'or qui est de fournir au mieux un code "pro" comprehensible par tous et donc qui n'exclus pas les conventions, regles et astuces en matiere de programmation et surtout pas les regles de securité en matiere de creation dynamique d'objet/classe (try...finally).
en plus, je l'ai pas fait remarquer, mais un code si court aurait plus sa place dans les snippet.
de plus, ton code est uniquement fait pour CE programme, il ne permet pas d'ajouter d'autre programme a la liste du FW.
ce qui le rend pas souple du tout, et pourtant la souplesse est ce qu'il y a de plus important dans le code (aprés la propreté).
Les methodes dite pratique doivent toujours etre "standalone", cad, utilisable et portable dans n'importe quel programme.
Ont doit toujours eviter de rendre ces methodes intrusive ou dependante d'un programme ou d'element propre a un programme particulier.
un peu comme l'erreur d'appeler la variable Form1 dans le code de la classe TForm1, au lieu de Self!
ensuite, tu as une erreur dans le chemin de registre, ont appel jamais les ControlSetXXX ou autre entrée propre a une session car n'existe pas forcement sur toutes les machines.
il faut donc utiliser CurentControlSet ou les chemins globaux independant des sessions et disponible sur tout les systemes windows.
bien que ControlSet001 existe sur la plupart des windows xp, il en serait differement de ControlSet003 ou ControlSet015 ...
donc avant de dire "merci mais ..." genre "cause toujours tu m'interresse", reflechit un peu a pourquoi on te donne des conseils.
Un programmeur n'est pas seulement un "idiot" qui ecrit/copie stupidement du code, il doit etre capable aussi de comprendre ce code et d'expliquer comment il fonctionne, comment on l'utilise.
et quand un programmeur comprend son code, il est capable d'en voir les erreurs, les defauts, de le corriger, l'ameliorer, l'optimiser afin de toujours fournir l'une des meilleure methodes qu'il soit.
c'est pas pour rien que la programmation restera toujours un domaine elitiste et un art difficile a maitriser.
13 sept. 2007 à 15:08
13 sept. 2007 à 15:03
const
FWK = 'SYSTEM\CurrentControlSet\Services\'+
'SharedAccess\Parameters\FirewallPolicy\'+
'StandardProfile\AuthorizedApplications\List';
begin
result := false;
with TRegistry.create do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey(FWK,false) then
begin
if not ValueExists(FileName) then
WriteString(FileName, FileName+':*:enabled:'+Enabled);
result := true;
end;
CloseKey;
finally
free;
end;
end;