Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Débutant
Débutant Pour bien débuter avec Delphi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 13/12/2012, 12h19   #141
ddrmax
Membre du Club
 
Daniel Dos Reis
Développeur informatique
Inscription : décembre 2007
Messages : 72
Détails du profil
Informations personnelles :
Nom : Daniel Dos Reis
Âge : 24
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2007
Messages : 72
Points : 63
Points : 63
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:
  • Création d'une classe Logger
  • Dedans, je crée un constructeur avec Owner et deux booléens
  • Ce constructeur va créer un affichage console (astuce de CGI) et un fichier texte (basé sur fstream), avec un nom basé comme ceci APPLICATION_NAME_OWNERNAME_YYYY_MM_DD_hh_mm.log
  • les boolens indique si je crée ce fichier et si je crée mon affichage console
  • Cette classe recevra deux fonctions:
  • OtuputDebugString(String) qui va simplement ajouter la string que je veux et celui-ci ajoute automatiquement l'heure en face
  • OutputException (Exception) qui va automatiquement ajouter une trame avec l'heure,le type d'exception,la valeur de l'exception, la valeur de GetlastError et sa définition

    Je place ces fonctions dans aux endroits qui posent problème

Depuis j'ai commencer a l'étoffer et desormais ça me sors automatiquement dans mon log :
Code :
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
60
61
 
**************************************************************
*                   Project System LogFile                   *
*                   Project 1.38.02 Series                   *
*                   Related Build: Release                   *
**************************************************************
 
**************************************************************
*                 Windows System Information                 *
**************************************************************
Computer Name: XXXXXXX-DEV
Windows Version: Windows XP
Windows Build: 2600
Service Pack: Service Pack 3
Physical Memory: 2046 Mo
User Name: YYYYYYY
Admin Rights: User is in the Admin Group
 
**************************************************************
*                 Project System Information                 *
**************************************************************
Project Release: 12w49b
Related Build: December 2012
Release Date: Week 2 (Week 49 of the Year)
Project Core Type: Hybrid
Project Core Version: Revision 45.12.38b
 
**************************************************************
*                       Project Plugins                      *
**************************************************************
xxxxxxxxxxxxxxxx Revision 21
xxxxxxxxxxxxxxxx Revision 37
xxxxxxxxxxxxxxxx Revision 4
xxxxxxxxxxxxxxxx Revision 2
xxxxxxxxxxxxxxxx Revision 0
xxxxxxxxxxxxxxxx Revision 38 snapshot21
xxxxxxxxxxxxxxxx Revision 254
xxxxxxxxxxxxxxxx Revision 4881
xxxxxxxxxxxxxxxx Revision 2
xxxxxxxxxxxxxxxx Revision 1
 
**************************************************************
*                Project: Journal de débogage                *
**************************************************************
Debug loging file generated on08/11/2012 10:01:38
Verbose Mode is set on 1 of 3 (Standard Logging)
 
08/12/2012 : Initialisation SQL ...
08/12/2012 : Chargement des configurations ...
08/12/2012 : Chargement de la base de données ...
08/12/2012 : Chargement de la carte MapPoint ...
08/12/2012 : Initialisation de xxxxxxxxxxxxxxxx ...
08/12/2012 : Initialisation du module de reconaissance xxxxxxxxxxxxxxxx ...
08/12/2012 : Initialisation du module xxxxxxxxxxxxxxxx ...
08/11/2012 : Initialisation du module xxxxxxxxxxxxxxxx ...
08/12/2012 : Initialisation du module xxxxxxxxxxxxxxxx ...
08/11/2012 : Initialisation des modules xxxxxxxxxxxxxxxx ...
08/12/2012 : Chargement terminé
**************************************************************
*                         END OF FILE                        *
**************************************************************
et l'affichage console est coloré suivant le niveau de verbosité et de l'impact du message (coleurs claires et froides pour la verbosité et couleurs chaudes pour les warnings et les erreurs)
normalement tout ceci peut être porté sur delphi
ddrmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 12h55   #142
Thehacker
Invité de passage
 
Xman Xman
Inscription : juin 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Xman Xman

Informations forums :
Inscription : juin 2010
Messages : 2
Points : 3
Points : 3
Par défaut Vive tortoise !

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)
Thehacker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 13h22   #143
Andnotor
Rédacteur/Modérateur
 
Avatar de Andnotor
 
Inscription : septembre 2008
Messages : 2 856
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2 856
Points : 5 966
Points : 5 966
Citation:
Envoyé par Kymic Voir le message
ce message c'est trouvé en news
Est-ce que quelqu'un pourrait me donner le lien de cette news SVP ?
__________________
Mes tutoriels Delphi
Andnotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 13h28   #144
ddrmax
Membre du Club
 
Daniel Dos Reis
Développeur informatique
Inscription : décembre 2007
Messages : 72
Détails du profil
Informations personnelles :
Nom : Daniel Dos Reis
Âge : 24
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2007
Messages : 72
Points : 63
Points : 63
Citation:
Envoyé par Andnotor Voir le message
Est-ce que quelqu'un pourrait me donner le lien de cette news SVP ?
ici
http://www.developpez.com/actu/50202...programmation/
ddrmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 17h37   #145
Conaclos
Futur Membre du Club
 
Homme Victorien Elvinger
Étudiant
Inscription : juillet 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Victorien Elvinger
Âge : 22

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2010
Messages : 12
Points : 18
Points : 18
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.
Conaclos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 14h21   #146
l.zehnder
Invité de passage
 
Laurent Zehnder
Inscription : juillet 2003
Messages : 2
Détails du profil
Informations personnelles :
Nom : Laurent Zehnder
Âge : 40

Informations forums :
Inscription : juillet 2003
Messages : 2
Points : 3
Points : 3
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.
l.zehnder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 14h42   #147
ddrmax
Membre du Club
 
Daniel Dos Reis
Développeur informatique
Inscription : décembre 2007
Messages : 72
Détails du profil
Informations personnelles :
Nom : Daniel Dos Reis
Âge : 24
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2007
Messages : 72
Points : 63
Points : 63
Citation:
Envoyé par l.zehnder Voir le message
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.
tout le monde ne peut pas mettre 400$ dans leurs outils ou leurs outils ne sont pas compatibles avec se genre de solution (il est vrai que a partir de XE2 la version express est disponible)
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)
ddrmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 18h37   #148
Nexavi
Invité régulier
 
Inscription : mai 2011
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 19
Points : 9
Points : 9
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')
Sinon et c'est là que celà peut (et devrait faire rire), si vous avez la flegme d'ajouter Dialogs à vos uses alors pour remplacer le showmessage du débutant, faites:

Code :
Assert(0=1,'ca va se déclencher et en plus vous pouvez inspécter les variables')
Celà évite par example de devoir taper des choses lourdingues comme:
Code :
1
2
3
4
Interface
uses...{$IFDEF DEBUG}Dialogs{$ENDIF}...;
// et à chaque fois dans l'implémentation...
{$IFDEF DEBUG}ShowMessage('MonControleDeDebug'){$ENDIF}
Sachant que dans les configs "Release" vous aurrez plutôt tendance à désactiver les assertions. Dailleurs, de manière général, je suis surpris à quel point les delphiistes n'utilisent pas les assertions...J'ai participé à plusieurs programmes de béta testing où les logiciels étaient littéralement "bourrés" d'assertions...

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 :
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
TAutoDestroyCrumbs = Class(TComponent)
Private 
  FOrphans: TObjectList; // FOrphans peut être Protected à la limite...
Public
  Constructor Create(AOwner: TComponent); Override;
  Destructor Destroy; Override;
End;
 
TDemoClass = Class(TAutoDestroyCrumbs)
Private
  FList1,FList2: TList;
Public
  Constructor Create(AOwner: TComponent); Override; 
End;
 
 
Constructor TAutoDestroyCrumbs.Create(AOwner: TComponent);
Begin
  Inherited;
  FOrphans := TObjectList.Create;
End;
 
Destructor TAutoDestroyCrumbs.Destroy;
Begin
  FOrphans.Free; // appellera free sur chaque objet ajouté dans les descendants de TAutoDestroyCrumbs;)
  Inherited;
End;
 
// par example dans la Démo on se contente de...
 
Constructor TDemoClass.Create(AOwner: TComponent)
Begin
  Inherited;
  FList1 := TList.Create;
  FList2 := TList.Create;
  FOrphans.Add(FList1);
  FOrphans.Add(FList2);
End;
// ..et pas besoin de destructeur...
En définissant un "Orphan manager" ( "un preneur en main des objets orphelins" ), on peut se permettre d'omettre la destruction des orphelins...car TObjectList gère par défaut la destruction des objets qui lui sont ajoutés...Donc ca ne leak pas...et ca évite d'écrire un destructeur...ca peut servir.
Nexavi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 00h02   #149
Golgotha
Modérateur
 
Avatar de Golgotha
 
Homme cédric
Artiste développeur
Inscription : août 2007
Messages : 1 047
Détails du profil
Informations personnelles :
Nom : Homme cédric
Localisation : France

Informations professionnelles :
Activité : Artiste développeur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2007
Messages : 1 047
Points : 2 084
Points : 2 084
Envoyer un message via Skype™ à Golgotha
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 espace perso
Suivez mon blog
Golgotha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 10h50   #150
Andnotor
Rédacteur/Modérateur
 
Avatar de Andnotor
 
Inscription : septembre 2008
Messages : 2 856
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2 856
Points : 5 966
Points : 5 966
Citation:
Envoyé par Nexavi Voir le message
Sinon et c'est là que celà peut (et devrait faire rire), si vous avez la flegme d'ajouter Dialogs à vos uses alors pour remplacer le showmessage du débutant, faites:

Code :
Assert(0=1,'ca va se déclencher et en plus vous pouvez inspécter les variables')
Assert(FALSE, ...) serait plus esthétique, mais utiliser les assertions à la place d'un ShowMessage... fallait oser
Si tu ne veux pas de Dialogs, ben fais appel à Windows.MessageBox !

Citation:
Envoyé par Nexavi Voir le message
Passons à autre chose: un mini-bread-crumb manager
Grosse construction pour juste le cas où FList1.Free aurait été omis...
__________________
Mes tutoriels Delphi
Andnotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 11h15   #151
tourlourou
Modérateur
 
Homme Yves Lemaire
Biologiste ; Progr(amateur)
Inscription : mars 2005
Messages : 1 680
Détails du profil
Informations personnelles :
Nom : Homme Yves Lemaire
Âge : 50
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Biologiste ; Progr(amateur)

Informations forums :
Inscription : mars 2005
Messages : 1 680
Points : 3 090
Points : 3 090
Citation:
Grosse construction pour juste le cas où FList1.Free aurait été omis...


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
tourlourou est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/12/2012, 14h18   #152
TCHdvlp
Invité régulier
 
Inscription : janvier 2012
Messages : 12
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 12
Points : 5
Points : 5
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.
TCHdvlp est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/12/2012, 13h46   #153
Kaamo
Membre Expert
 
Avatar de Kaamo
 
Homme Cyril
Ingénieur développement logiciels
Inscription : avril 2007
Messages : 531
Détails du profil
Informations personnelles :
Nom : Homme Cyril
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2007
Messages : 531
Points : 1 195
Points : 1 195
Citation:
Envoyé par TCHdvlp Voir le message
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.
sinon il y a des gestionnaires de conf qui permettent de faire ça non ? en commentaire quand tu commit les modifications ?
Kaamo est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 17h34   #154
chris188
Nouveau Membre du Club
 
Homme Chris
Développeur informatique
Inscription : juin 2006
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Chris
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2006
Messages : 7
Points : 37
Points : 37
Par défaut les commentaires

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+
chris188 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 19h31   #155
Danfas2
Invité de passage
 
Inscription : août 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 7
Points : 4
Points : 4
Par défaut Copie

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.... Ca peut paraître excessif mais je ne m en rend pas compte et c est imparable.
Danfas2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 19h43   #156
popo
Membre émérite
 
Avatar de popo
 
Homme Jérémy
Analyste programmeeur Delphi / C#
Inscription : mars 2005
Messages : 732
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Analyste programmeeur Delphi / C#
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2005
Messages : 732
Points : 976
Points : 976
Citation:
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')
Sinon et c'est là que celà peut (et devrait faire rire), si vous avez la flegme d'ajouter Dialogs à vos uses alors pour remplacer le showmessage du débutant, faites:

Code :
Assert(0=1,'ca va se déclencher et en plus vous pouvez inspécter les variables')
Celà évite par example de devoir taper des choses lourdingues comme:
Code :
1
2
3
4
Interface
uses...{$IFDEF DEBUG}Dialogs{$ENDIF}...;
// et à chaque fois dans l'implémentation...
{$IFDEF DEBUG}ShowMessage('MonControleDeDebug'){$ENDIF}
Sachant que dans les configs "Release" vous aurrez plutôt tendance à désactiver les assertions. Dailleurs, de manière général, je suis surpris à quel point les delphiistes n'utilisent pas les assertions...J'ai participé à plusieurs programmes de béta testing où les logiciels étaient littéralement "bourrés" d'assertions...
Personnellement, je trouve cette pratique plutôt barbare. Surtout dans le cas où justement dans la config release, les assertion ne sont pas désactivées par défaut.
En plus si c'est pour une dll destinée à faire uniquement des calculs, je préfère largement faire des tests unitaires.


Citation:
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.
Comme tu le dis si bien, il existe des tonnes d'outils. Pour te simplifier encore plus la vie et éviter l'immondisme d'avoir des commentaires qui ne servent à rien à part à savoir qui à fait une correction, il existe des outils tels que SVN pour n'en citer qu'un et qui fera certainement ton bonheur
popo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 13h02   #157
El0ka
Invité de passage
 
Ludovic Blanc
Inscription : septembre 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : Ludovic Blanc

Informations forums :
Inscription : septembre 2010
Messages : 15
Points : 2
Points : 2
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"
El0ka est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 20/12/2012, 15h57   #158
Rayek
Modérateur
 
Avatar de Rayek
 
Homme
Développeur informatique
Inscription : mars 2005
Messages : 4 992
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2005
Messages : 4 992
Points : 7 732
Points : 7 732
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:
Envoyé par El0ka Voir le message
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"
En général dans les langages évolués il y a un système de point d'arrêt qui permet de stopper le programme à des endroits que l'on a décidé et de voir l'état des variables en passant le curseur au dessus
__________________
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
Rayek est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/01/2013, 22h28   #159
Fandyz
Nouveau Membre du Club
 
Homme Innocent SORO
Étudiant
Inscription : mars 2012
Messages : 81
Détails du profil
Informations personnelles :
Nom : Homme Innocent SORO

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2012
Messages : 81
Points : 27
Points : 27
Par défaut Petite astuce pour la création dynamique de contrôle

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.
Fandyz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 06h59   #160
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 409
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 4 409
Points : 10 779
Points : 10 779
Citation:
Envoyé par Rayek Voir le message
En général dans les langages évolués il y a un système de point d'arrêt qui permet de stopper le programme à des endroits que l'on a décidé et de voir l'état des variables en passant le curseur au dessus
c'est vrai, mais il est parfois plus simple de coder les conditions dans le code (et c'est souvent plus rapide à l'execution que le point d'arrêt conditionnel)

Code :
1
2
3
4
5
6
7
 
 {$IFDEF DEBUG}
  if (Index = 12) and ((PrixTotal > 5000) or (TVA < 19.6)) and FonctionChose() then
  begin
    ShowMessage('Conditions de bug réunies'); // placer un point d'arrêt ici !
  end;
 {$ENDIF}
__________________
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%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h10.


 
 
 
 
Partenaires

Hébergement Web