|
Publicité ' | ||||||||||||||||||||||||
|
|
#141 | ||
|
Membre du Club
![]() Daniel Dos ReisDéveloppeur informatique Inscription : décembre 2007 Messages : 72 ![]() |
Même si je viens du monde de builder, j'ai quelques éléments qui peuvent servir:
Cela concerne plus une chose en rapport avec les premiers posts du topic (assez ancien) mais don je n'ai vu aucune information a proprement parlé dessus. Cela utilise une astuce de CGI pour c++ builder et quelque petites autres astuces:
Depuis j'ai commencer a l'étoffer et desormais ça me sors automatiquement dans mon log : Code :
normalement tout ceci peut être porté sur delphi |
||
|
|
00
|
|
|
#142 |
|
Invité de passage
![]() Xman Xman Inscription : juin 2010 Messages : 2 ![]() |
Un showLog depuis un outil SVN (tortoiseSVN par exemple) suffit pour voir les différences relatives à une modif commitée (à condition qu'il s'agisse de commit groupé et non pas de commit fichier par fichier)
|
|
|
00
|
|
|
#143 |
![]() ![]() Inscription : septembre 2008 Messages : 2 886 ![]() |
Est-ce que quelqu'un pourrait me donner le lien de cette news SVP ?
|
|
|
00
|
|
|
#144 |
|
Membre du Club
![]() Daniel Dos ReisDéveloppeur informatique Inscription : décembre 2007 Messages : 72 ![]() |
|
|
|
00
|
|
|
#145 |
|
Futur Membre du Club
![]() Victorien ElvingerÉtudiant Inscription : juillet 2010 Messages : 13 ![]() |
Pour facilement lire le flux d'instruction j'évite de le "briser", de mettre des "point de saut".
Dans une fonction je fait en sorte d'avoir un seul 'return'. J'évite au maximum les 'break' ou 'continue' dans les boucles. J'évite les Exceptions, je préfère responsabiliser le client. Pour lire plus facilement un algorithme, je déclare toutes les variables au début. Pour le versionnage je préfère itérer un numéro de révision dans l'entête du fichier. |
|
00
|
|
|
#146 |
|
Invité de passage
![]() Laurent Zehnder Inscription : juillet 2003 Messages : 2 ![]() |
Pour ce type de trace sous delphi je prefere l'outils CodeSite.
Il suffit d'ajouter l'unit : CodeSiteLogging et dans le code d'ajouter : CodeSite.Send('MonTexte') J'entoure le tous avec des ifdef DEBUG On peut faire des imbrication de message, changer l'icone du message etc. |
|
00
|
|
|
#147 | |
|
Membre du Club
![]() Daniel Dos ReisDéveloppeur informatique Inscription : décembre 2007 Messages : 72 ![]() |
Citation:
beaucoup de personnes travaillent encore avec des version antérieures a rad studio 2007 et ou utilisent les version turbo ou personnelles de ces outils. Ici, la solution est plus simple, il se peut que je reecrive le tout et que je le publie autant en .pas pour delphi que .h/.cpp pour C++ Builder. Je peut voir aussi pour en faire une version compatible Visual C++ qui sait. Le problème est que cette api contient du code propriétaire et que le support CPUID est encore bancal (Intel uniquement et pas le support total des fonctions) |
|
|
|
00
|
|
|
#148 | ||||
|
Invité régulier
![]() Inscription : mai 2011 Messages : 19 ![]() |
Suite à la lecture de ce sujet, j'en ai une bien bonne, en alternative au "ShowMessage" qui fait débat dans les premiers posts. En effet, dans certains cas, l'unité dialogs n'a pas et ne doit pas être ajoutée, parceque "Dialogs" génère du code d'initialisation et augmente la taille de l'exe/de la dll (à éviter par example pour une dll qui va strictement faire du calcul).
Sans ajouter de code d'exception: Code :
Assert(MaCondition = MonAutreCondition, 'MonMessageQuandCestpasVrai') Code :
Assert(0=1,'ca va se déclencher et en plus vous pouvez inspécter les variables') Code :
Passons à autre chose: un mini-bread-crumb manager: Définissez une classe de base, persistente et qui va prendre en main automatiquement les objets non-aliénés à cette classe (mais qui devraient l'être) lors de la destruction d'une classe descendante: Code :
|
||||
|
|
00
|
|
|
#149 |
![]() ![]() |
L'astuce qui me viens spontanément et que j'utilise pour 90% des mes problèmes, la dichotomie.
Exemple, j'ai une requête qui ne marche pas avec 10 lignes : 0 ------------------------------------------------------------- 1 ------------------------------------------------------------- 2 ------------------------------------------------------------- 3 ------------------------------------------------------------- 4 ------------------------------------------------------------- 5 ------------------------------------------------------------- 6 ---------------------x erreur x----------------------------- 7 ------------------------------------------------------------- 8 ------------------------------------------------------------- 9 ------------------------------------------------------------- La méthode la plus efficace pour trouver l'erreur n'est pas de la chercher directement, mais de faire un découpage et de la localiser. Ainsi, je fait le test suivant : j'enlève la moitié de la requête. 0 ------------------------------------------------------------- 1 ------------------------------------------------------------- 2 ------------------------------------------------------------- 3 ------------------------------------------------------------- 4 ------------------------------------------------------------- La requête fonctionne. Je sais que l'erreur se trouve dans la deuxième moitié, je fait donc de même avec l'autre moitié : 5 ------------------------------------------------------------- 6 ---------------------x erreur x----------------------------- 7 ------------------------------------------------------------- de même avec le reste... Je finirais par tomber sur l'erreur, grosse comme le nez au milieux de la figure ! 6 ---------------------x erreur x----------------------------- C'est une technique qui marche avec tout et n'importe quoi, surtout quand on cherche une aiguille dans une meule de foins.
__________________
modérateur webmasters - développements web & php faq jQuery - règles du forum - faqs web mon site web : exile-reborn : un mmorpg gratuit en ligne. |
|
00
|
|
|
#150 | |
![]() ![]() Inscription : septembre 2008 Messages : 2 886 ![]() |
Citation:
![]() Si tu ne veux pas de Dialogs, ben fais appel à Windows.MessageBox ! Grosse construction pour juste le cas où FList1.Free aurait été omis... |
|
|
|
00
|
|
|
#151 | |
![]() ![]() Yves LemaireBiologiste ; Progr(amateur) Inscription : mars 2005 Messages : 1 721 ![]() |
Citation:
![]() Mais utiliser un TObjectList comme GarbageCollector peut être pratique.
__________________
Delphi 5 Pro et Code Typhon 2.80 sous Win 7 64 bits - Code Typhon 2.70 / Ubuntu 12.04 64 bits |
|
|
|
10
|
|
|
#152 |
|
Invité régulier
![]() Inscription : janvier 2012 Messages : 12 ![]() |
Bonjour à tous !
Personnellement, lorsque je rajoute du code, que ce soit pour une évolution ou une correction, je rajoute ceci dans mon code [code existant] //----------------- <mon nom> <numero de ticket> <description rapide> ----------- [mon code] //-------------------------------------------------------------------------------- [reste du code] Ca permet de retrouver facilement le code en question, et je sais si c'est moi ou un collègue qui a fait la modif. De plus, avec certains outils, le numéro de ticket peut être récupéré depuis l'outil de gestion des bugs. |
|
|
01
|
|
|
#153 | |
|
Membre Expert
![]() ![]() Ingénieur développement logiciels Inscription : avril 2007 Messages : 585 ![]() |
Citation:
|
|
|
|
00
|
|
|
#154 |
|
Nouveau Membre du Club
![]() ![]() Chris Développeur informatique Inscription : juin 2006 Messages : 7 ![]() |
Bonsoir,
même dans la structure des commentaires il y a moyen d'optimiser : ' UNE RUBRIQUE EN MAJUSCULE (Calculer) for cpt=1 to X 'afaire controler Y A=Fct(X)+cpt ' accumuler une donnée Next un espace = c'est fait sans espace = à faire en majuscule = recherche facile avec ctrl F je pense revenir expliquer d'autres trucs A+ |
|
|
00
|
|
|
#155 |
|
Invité de passage
![]() Inscription : août 2011 Messages : 7 ![]() |
pour eviter les catastrophe
J'ai toujours eu un soucis avec les sauvegardes... j'avançais, j'avançais et paf... la dernière sauvegarde remontait à trop loin... aujourd'hui je fais des sauvegarde incrémentales automatiques en arrière plan toutes les 10 minutes vers deux destinations différentes... DIR10 une sur un disque externe et l'autre sur le même disque.. c'est rapide et transparent. Je ne m en rend même pas compte et Je peux revenir en arrière de 10 minutes. Toutes les heures deux répertoires différents DIR60 reçoivent les fichiers modifiés et Je peux revenir en arrière de 60 minutes. Toutes les 3 heures 2 répertoires (DIR180) différents reçoivent mes fichiers modifiés. en fin de journée je fais mon ménage, et je procède aux sauvegardes vers d'autres supports... projet 0 ,1 , 2 etc.... je me souviens plus de la fois ou j'ai perdu quelque chose.... |
|
|
00
|
|
|
#156 | ||||
|
Membre émérite
![]() Jérémy Analyste programmeeur Delphi / C# Inscription : mars 2005 Messages : 738 ![]() |
Citation:
En plus si c'est pour une dll destinée à faire uniquement des calculs, je préfère largement faire des tests unitaires. Citation:
|
||||
|
|
00
|
|
|
#157 |
|
Invité de passage
![]() Ludovic Blanc Inscription : septembre 2010 Messages : 15 ![]() |
Bonjour, tous le monde !
Vous m'avez donnée envie de contribué aussi ! Pour ma part j'utilise une petite astuce que je vais vous donné : tout d'abord je develloppe en WLanguage (Avec Windev, je debute ...) Comment trouver retrouver facilement la cause d'une erreur ? j'utilise des point de control placer dans le code source a divers endroit stratégique (selon la partie qui plante) exemple : //Control1 info("Control 1 : MaVariable="+MaVariable) ou, //Control2 info("Control 2 : Fichier.Donnée="+Fichier.Donnée) Après, avoir placer mes points j'execute mon projet en mode test... ducoup, des message s'affiche a l'ecran avec le contenu des differentes variable ou fichier de donnée... ce qui permet de retrouver une variable qui ne recupère pas la bonne valeur (par exemple) ! et de connaitre la derniere valeur appeller avant plantage ou pour vérifier qu'un compteur de boucle s'incrémente bien, ce qui peut etre la cause d'une boucle sans fin et ainsi de suite ... bref, ce procédé m'a deja depané pas mal de situation dans lesquel je ramais !!! ^^ Lorsque je n'est plus besoin de ces points, je ne les supprime pas au cas ou !! j'ajoute simplement deux slash "/" pour qu'il soit concidéré comme des commentaire : il me suffi alors avec la fonction Rechercher/Remplacer de Windev, de Remplacer tous les "info("Control" Par "//info("Control" |
|
|
02
|
|
|
#158 | |
![]() ![]() Développeur informatique Inscription : mars 2005 Messages : 5 015 ![]() |
Merci pour la participation de certain mais je rappel qui nous somme ici dans la section pour DELPHI
Il serait bein de ne mettre que des astuces pour cet IDE Citation:
__________________
Modérateur Delphi Combattez la brute Aucune réponse aux sollicitations techniques par MP Le guide du bon forumeur :
[Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3 |
|
|
|
10
|
|
|
#159 |
|
Nouveau Membre du Club
![]() Innocent SOROÉtudiant Inscription : mars 2012 Messages : 81 ![]() |
Pour rapidement gérer l'aspect présentation (l'aspect graphique) d'un contrôle créé dynamiquement, je procède ainsi :
- je prend une fiche vide - sur cette fiche, je dispose tous les composants dont j'ai besoin dans la disposition que je veux avoir à l'exécution - j'affiche la fenêtre en mode texte ("clic droit sur la fiche > voir comme fiche" ou Alt + F12) - je copie la déclaration qui m'intéresse (les déclarations des composants que je veux) - dans la partie de mon code où je dois créer mes contrôles, je colle les déclarations que j'ai copiées - il ne me reste plus qu'à modifier les déclarations pour qu'elles soient conformes au langage Cette astuce me permet de rapidement retrouver toutes les modifications faites au niveau du l'inspecteur d'objet et me fait gagner du temps dans la constitution de mon rendu graphique. |
|
|
00
|
|
|
#160 | |||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 544 ![]() |
Citation:
Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|||
|
00
|
Copyright © 2000-2013 - www.developpez.com