Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Nos petits trucs utiles de développeurs


Sujet :

Delphi

  1. #181
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 056
    Points : 6 751
    Points
    6 751
    Par défaut
    Citation Envoyé par retwas Voir le message
    Je connaissait pas le OutputDebugString, merci
    Bien franchement il ne faut pas le connaitre

    C'est une vielle m^rd^ héritée des années 90 sans formatage de chaîne (*), qui est noyé dans les logs Windows (**) et qui est lent (***) (et spécifique à Windows cela va de soi)


    Édit: il y a aussi le formatage automatique de ton log. Par exemple un OutputDebugStringW(L"One log..."); donne "Debug Output: One log.... Process XXX.exe (1111)"
    Tu y vois que dalle

    Et enfin, avec C++ Builder, ce log apparait dans la fenêtre Event Log qui n'apparait que lorsque tu exécutes ton application. Sinon elle est fermée et tu dois aller dans le menu pour l'ouvrir


    * -> si tu veux afficher une variable il faut le faire manuellement et donc avoir 2 à 5 lignes de code par log

    ** -> Sous Android tu avais un filtre. Mais une fois les logs filtrés, tu ne voyais plus les exceptions passées

    *** -> Cela peut aussi venir du formatage de bourrin que je fais

  2. #182
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    4 824
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 4 824
    Points : 10 327
    Points
    10 327
    Par défaut
    J'utilise également actuellement CodeSite mais ai longtemps utilisé OutputDebugString (qu'en debug cela va s'en dire).

    Je ne trouvais pas cela si mal que ça. Ca fonctionne en 32 et 64 bits et avec l'aide de DebugView, on a nos logs sans installer d'outils lourds (DebugView permet même du Remote "Log").

  3. #183
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    872
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2004
    Messages : 872
    Points : 1 433
    Points
    1 433
    Par défaut
    Citation Envoyé par foetus Voir le message
    Bien franchement il ne faut pas le connaitre

    C'est une vielle m^rd^ héritée des années 90 sans formatage de chaîne (*), qui est noyé dans les logs Windows (**) et qui est lent (***) (et spécifique à Windows cela va de soi)


    Édit: il y a aussi le formatage automatique de ton log. Par exemple un OutputDebugStringW(L"One log..."); donne "Debug Output: One log.... Process XXX.exe (1111)"
    Tu y vois que dalle

    Et enfin, avec C++ Builder, ce log apparait dans la fenêtre Event Log qui n'apparait que lorsque tu exécutes ton application. Sinon elle est fermée et tu dois aller dans le menu pour l'ouvrir


    * -> si tu veux afficher une variable il faut le faire manuellement et donc avoir 2 à 5 lignes de code par log

    ** -> Sous Android tu avais un filtre. Mais une fois les logs filtrés, tu ne voyais plus les exceptions passées

    *** -> Cela peut aussi venir du formatage de bourrin que je fais
    Interessant de dénigrer un outil sans proposer d'alternative !
    Je ne connais pas codesite (si c'est avec lui que tu compare outputdebugstring), mais outputdebugstring est dispo sur mon D7, je sais pas si codesite l'est.
    PS:
    * -> qu'est ce qui t’empêche d'utiliser la fonction Format dans le paramètre ?
    ** -> click droit > propriétés, et tu peux choisir les messages à afficher dans la fenêtre Event Log

    Bref, je vais regarder ce qu'est ce codesite, ca a l'air intéressant

  4. #184
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 056
    Points : 6 751
    Points
    6 751
    Par défaut
    Citation Envoyé par guillemouze Voir le message
    Interessant de dénigrer un outil sans proposer d'alternative !
    ...

    * -> qu'est ce qui t’empêche d'utiliser la fonction Format dans le paramètre ?
    Très simple mais hyper hyper très très simple:

    En C++ (oui je travaille en C++ ), si tu codes une application fenêtrée avec la VCL toutes les sorties (printf et std::cout) sont désactivées (*)
    Et la méthode System::UnicodeString::Format utilise des TVarRec que je n'ai jamais réussi à utiliser sans que cela plante de partout.

    Donc OutputDebugString c'est ta seule solution parce que les points d'arrêt c'est mignon, mais ce sont des points d'arrêt. Il y a des fois tu ne veux pas arrêter ton programme (surtout avec les threads) et loguer sur la console tout ce qui peut d'aider déjà au moins pour mettre en place les engrenages de ton application.

    Ou alors mettre des TMemos sur toutes tes fenêtres.

    La solution c'est de faire un log en réseau et une fenêtre qui affiche ces messages. Tout cela parce que tu ne peux pas faire printf() qui existe depuis 30 ans


    Sinon je découvre DebugView ... qui rejoint ce que je dis et que j'ai codé en VCL très succinctement (<- encore un truc potentiellement inutile)



    * -> À moins que tu saches ce que je fais de mal

  5. #185
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    872
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2004
    Messages : 872
    Points : 1 433
    Points
    1 433
    Par défaut
    Citation Envoyé par foetus Voir le message
    Et la méthode System::UnicodeString::Format utilise des TVarRec que je n'ai jamais réussi à utiliser sans que cela plante de partout.
    en delphi, c'est assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OutputDebugString(PChar(Format('mon message "%s" valeur=%d', ['test', Self.Count])));
    Citation Envoyé par foetus Voir le message
    Donc OutputDebugString c'est ta seule solution parce que les points d'arrêt c'est mignon, mais ce sont des points d'arrêt. Il y a des fois tu ne veux pas arrêter ton programme (surtout avec les threads) et loguer sur la console tout ce qui peut d'aider déjà au moins pour mettre en place les engrenages de ton application.
    (je suis en D7) Click droit sur le point d’arrêt, décocher "arrêter", et dans avancée, mettre par exemple Self.Count dans Evaluer l'expression, et tu obtiens dans le journal d'evenements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Expression point d'arrêt Self.Count: 42 Processus MonApp.exe (8860)
    Citation Envoyé par foetus Voir le message
    * -> À moins que tu saches ce que je fais de mal
    Il me semble que tu peux activer la console dans une application windows (je crois me souvenir d'un message de Paul Toth à ce sujet sur ce forum), une variable globale stdout ou un truc du genre. Sinon peut etre avec AllocConsole.

Discussions similaires

  1. Thread "Nos petits trucs utiles de.." cadenassé
    Par Droïde Système7 dans le forum Débuter
    Réponses: 8
    Dernier message: 22/02/2012, 12h45
  2. Petit truc utile que j'ai découvert $.each
    Par SpaceFrog dans le forum jQuery
    Réponses: 12
    Dernier message: 27/08/2010, 03h12
  3. Petit truc tout simple que je comprend pas
    Par Olaf MENJI dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/11/2005, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo