2010-06-15 6 views
1

Je suis débutant en programmation. Alors pouvez-vous s'il vous plaît me montrer comment passer des valeurs pour votre méthode compile().Valeurs de passage pour la méthode

class CL 
{ 

    private const string clexe = @"cl.exe"; 
    private const string exe = "Test.exe", file = "test.cpp"; 
    private string args; 
    public CL(String[] args) 
    { 
     this.args = String.Join(" ", args); 
     this.args += (args.Length > 0 ? " " : "") + "/Fe" + exe + " " + file; 
    } 

    public Boolean Compile(String content, ref string errors) 
    { 
     //remove any old copies 
     if (File.Exists(exe)) 
      File.Delete(exe); 
     if (File.Exists(file)) 
      File.Delete(file); 

     File.WriteAllText(file, content); 

     Process proc = new Process(); 
     proc.StartInfo.UseShellExecute = false; 
     proc.StartInfo.RedirectStandardOutput = true; 
     proc.StartInfo.RedirectStandardError = true; 
     proc.StartInfo.FileName = clexe; 
     proc.StartInfo.Arguments = this.args; 
     proc.StartInfo.CreateNoWindow = true; 

     proc.Start(); 
     //errors += proc.StandardError.ReadToEnd(); 
     errors += proc.StandardOutput.ReadToEnd(); 

     proc.WaitForExit(); 

     bool success = File.Exists(exe); 

     return success; 
    } 
} 
+0

Pour plus d'informations ..... http://stackoverflow.com/questions/3036238/how-to-integrate-c- compiler-in-visual-studio-2008 – Kasun

Répondre

1
public Boolean Compile(String content, ref string errors) 

Voulez-vous savoir comment appeler cela? Essayez. . .

string content = "#include <stdio.h>\nmain(){\nprintf(\"Hello world\");\n}\n"; 
string errors = ""; 

CL k = new CL(new string[2] {"/Od", "/C"}); 
if(k.Compile(content, ref errors)) 
    Console.WriteLine("Success!"); 
else 
    Console.WriteLine("Failure: {0}", errors); 

Hope this helps

+0

Merci de m'avoir aidé .... :). Mais il jette cette erreur ... Erreur Aucune surcharge pour la méthode 'CL' prend '0' arguments – Kasun

+0

Salut, Encore je incapable de le compiler. L'erreur suivante s'est produite ............... Aucune surcharge pour la méthode 'CL' prend les arguments '0' – Kasun

+0

Excuses, j'ai manqué les arguments sur le constructeur pour CL. J'ai ajouté deux fausses (/ Od = désactiver les optimisations,/C = ne pas enlever les commentaires). –

1

Créer un formulaire en utilisant le concepteur, ajoutez un nom de zone de texte, il txtCplusplus et un bouton. Ajouter un événement de clic pour le bouton.

Collez votre classe CL dans le même fichier que le gestionnaire d'événements (form.cs ou quel que soit votre nom), PAS dans une méthode ou une propriété.

Dans les boutons cliquez sur Gestionnaire d'événements mis ce code:

 
     CL cmp = New CL(); 
     string errs; 
     if (cmp.Compile(txtCplusplus.Text, ref errs) { 
     MessageBox.Show("Success"); 
     } else { 
     MessageBox.Show(errs); 
     } 
+0

Merci de m'avoir aidé .... :). Mais il jette cette erreur ... Erreur 1 Aucune surcharge pour la méthode 'CL' prend '0' arguments – Kasun

+0

CL n'est pas une méthode, c'est une classe. Ce qui signifie que vous n'avez pas la classe correctement définie. Hmn, en regardant ce que vous avez posté, je parie que vous avez les lignes "CL k = new CL() k .Compile();" inclus. Si oui, ces deux lignes sont le problème. Se débarrasser d'eux. – jmoreno

+0

Je l'ai fait comme tu l'as dit. Mais toujours le même problème .. – Kasun

Questions connexes