IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

C# Discussion :

Code C# qui affiche son code source


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Code C# qui affiche son code source
    Bonjour à tous,

    J'ai dans le cadre d'un bizutage au boulot à réaliser une petite application console en C# qui affiche son propre code source.

    J'ai comme exemple un code réaliser en C. Cependant, je dois bien avouer que je ne comprend rien au C. Ca m'aiderait que quelqu'un me donne un indice ou puisse m'expliquer comment fonctionne le code suivant

    main() { char *s="main() { char *s=%c%s%c; printf(s,34,s,34); }";printf(s,34,s,34); }

    Voila aussi les détails de ce que je dois faire

    1°) c:\...\debug>csc toto.cs ==> toto.exe>
    2°) c:\...\debug>toto.exe > toto.cs ==> cree le fichier toto.cs d'origine !
    3°) goto 1

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Je ne comprends pas ce que tu veux faire.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Je dois faire un programme console qui affiche son propre code source.

    Si on rajoute une ligne dans le code, il faut qu'elle apparaisse dans la console ... Et en plus ca doit être indenter correctement.

    Donc si par exemple je fais un programme qui divise par 3, lorsqu'il s'exécute, la console devrait afficher quelque chose comme ca :


    15 (<--- Ceci est l'entrée clavier)
    La réponse est 5 (<------- Ceci est la réponse)

    (A partir d'ici, le programme doit écrire de lui même son code source)
    int Nombre = Integer.Parse(Console.ReadLine());
    Console.WriteLine("La réponse est " + Nombre /= 3);

    J'ai mis entre parenthèses ce que chaque ligne représentait. Je dois donc essayer de fair un programme qui s'exécute et qui a la fin de son exécution affiche son propre Code.

    (Il m'est bien évidemment interdit de faire un streamreader sur le fichier .cs)

  4. #4
    Membre régulier Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Points : 112
    Points
    112
    Par défaut
    En C#, les méthodes de Reflexion devraient permettre de réaliser cela.


    main() { char *s="main() { char *s=%c%s%c; printf(s,34,s,34); }";printf(s,34,s,34); }
    Ca c'est du C, pas du C#. En C ce que tu veux faire n'est pas réalisable. (dumoins pas directement)

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Onlava Voir le message
    En C#, les méthodes de Reflexion devraient permettre de réaliser cela.




    Ca c'est du C, pas du C#. En C ce que tu veux faire n'est pas réalisable. (dumoins pas directement)
    Oui, surtout que le code C que tu as montré n'affiche pas vraiment son code source... pas en entier du moins.

    Comme tu l'as très justement indiqué, c'est du bizutage... ce qu'on te demande est possible (voir Reflector), mais ce n'est pas évident du tout... Si tu comptes le faire, tu auras probablement besoin de la Reflection et d'un CodeDomProvider.

  6. #6
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci à vous, je me penche la dessus aujourd'hui et ce soir et je vous tiens au courant de l'évolution du projet.

    Je vais tenter de faire un reflector "perso".

    J'aurai peu etre besoin d'aide pour savoir comment fonctionne un "CodeDomProvider", c'est un truc que je n'ai jamais utilisé ( la réflection non plus, mais j'ai trouvé un bon tuto)


    Encore merci à vous

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    Les classes de Reflection ne vont pas te donner ton code source exact, mais plutot du MSIL avec du boulot.
    Tu n'as pas le droit d'utiliser un streamreader, mais si tu peux modifier la ligne de compilation, tu peux incorporer ton fichier source en resource de ton exe et après, à l'execution il suffit de le lire depuis tes resources incorporées. (il faut chercher l'option du compilo, moi je le fais pas à la main mais avec VS...)

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Comment obtenir le code source a partir du code IL ? Il n'existe pas des dll ou autres ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/03/2010, 11h05
  2. Code VBA qui modifie du Code VBA ?
    Par tictactoc dans le forum Excel
    Réponses: 2
    Dernier message: 30/07/2009, 09h43
  3. [E-00] Code VBA qui insère du code VBA
    Par _Sool_ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/11/2008, 09h16
  4. évènement onmouseover qui affiche du code php ?
    Par The_Nail dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/06/2008, 17h51
  5. afficher son code source
    Par blackbird1 dans le forum Delphi
    Réponses: 3
    Dernier message: 21/08/2006, 10h57

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