J'ai aussi survolé, le sujet, j'aurais juste aimé voir le code complet du Mario, c'est intriguant cette grande boucle !
Par contre, un concours du plus mauvais code : je ne sais pas si je dois en rire ou en pleurer !
En tant que professionnel, je suis confronté à du mauvais code tous les jours,
le dernier en date commité ce vendredi 8 Avril 2016 par un collègue m'hallucine par sa lourdeur :
le code d'origine
1 2 3 4 5
| ...
LModeleFile: string;
begin
LModeleFile := ExtractFilePath(ParamStr(0))+ModeleFichier;
... DownloadFile(RemoteFileName, LModeleFile) ... |
le code modifié par mon collègue
C'est pour privilégier un dossier local où l'utilisateur ou Excel peut lire et écrire
C'est depuis la migration d'application locale de plus en plus lancé via CITRIX
Donc ParamStr(0) retourne chez nous souvent \\server\dossier\module.exe, télécharger un fichier sur un dossier réseau c'est lourd
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
| ...
LModeleFile, LTest: string;
begin
LTest := IncludeTrailingPathDelimiter(GetEnvironmentVariable('APPDATA'));
LModeleFile := ExtractFilePath(ParamStr(0))+ModeleFichier;
if not DirectoryExists(LTest) then
begin
ForceDirectories(LTest);
end;
if DirectoryExists(LTest) then
begin
LTest := LTest+'\Microsoft';
if not DirectoryExists(LTest) then
begin
ForceDirectories(LTest);
end;
if DirectoryExists(LTest) then
begin
LTest := LTest+'\Templates';
if not DirectoryExists(LTest) then
begin
ForceDirectories(LTest);
end;
if DirectoryExists(LTest) then
begin
LModeleFile := LTest+'\'+ModeleFichier;
end;
end;
end;
... DownloadFile(RemoteFileName, LModeleFile) ... |
Il y a une erreur au
LTest := LTest+'\Microsoft';
LTest contient déjà le \ ajouté par le IncludeTrailingPathDelimiter du coup cela fait « AppData\\Microsoft » au lieu de « AppData\Microsoft »
Mais Windows supporte le \\ comme \ dans un chemin
Mauvaise maitrise de ForceDirectories qui inclus l’appel à DirectoryExists
le code simplifié par mes soins
1 2 3 4 5 6 7 8 9 10
| …
LModeleFile, LTest: string;
begin
LTest := IncludeTrailingPathDelimiter(IncludeTrailingPathDelimiter(GetEnvironmentVariable('APPDATA')) + 'Microsoft') + 'Templates';
if ForceDirectories(LTest) then
LModeleFile := IncludeTrailingPathDelimiter(LTest) + ModeleFichier
else
LModeleFile := ExtractFilePath(ParamStr(0)) + ModeleFichier;
... DownloadFile(RemoteFileName, LModeleFile) ... |
Donc un concours, sur le plus mauvais code est franchement déprimant !
3 |
0 |