C# : Renvoyer a une autre ligne/ programme

Résolu/Fermé
Utilisateur anonyme - 7 juil. 2010 à 13:16
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 - 2 août 2010 à 20:09
Bonjour,

J'aimerai trouver une commande pour reafaire un bloc je m'explique :

J'ai un choix : 1, 2, 3, 4.

Si je sélectionne l'un des 4, il m'envoie vers un programme.
Si je sélectionne pas l'un des 4, il me dit "selection eronnée" et me renvoie vers un peu plus haut dans le code.

Voici le code :
Console.Write("\n\nVotre choix (TAPEZ UNIQUEMENT UN CHIFFRE): ");

                int Selection = 0;
                Selection = int.Parse(Console.ReadLine());

                if (Selection == 1) Console.WriteLine("1");
                else if (Selection == 2) Console.WriteLine("2");
       		else if (Selection == 3) Console.WriteLine("3");
       		else if (Selection == 4) Console.WriteLine("4");
       		else Console.WriteLine("Selection éronnée");


Merci de vos lumières :-)

29 réponses

crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
7 juil. 2010 à 13:27
Salut,

Essaye quelque chose dans le genre en encapsulant ton code dans des fonctions.
En tout cas, ton code doit prévoir le cas où on ne rentre pas un chiffre, même si tu le dis clairement ! (Faute de frappe, pour tester, ...)

	private void Dispatch()
	{
                int Selection = 0;
                Console.Write("\n\nVotre choix (TAPEZ UNIQUEMENT UN CHIFFRE): ");
		Selection = int.TryParse(Console.ReadLine());
		switch (_iFunction)
		{
			case 1
				Console.WriteLine("1");
				maFonction1();
				break;
			case 2
				Console.WriteLine("2");
				maFonction2();
				break;
			case 3
				Console.WriteLine("3");
				maFonction3();
				break;
			case 4
				Console.WriteLine("4");
				maFonctionRetourPlusHautDansLeCode();
				break;
			default://autres cas
				Response.WriteLine("Sélection erronée");
				maFonctionRetour();
				break;
		}
	}

2
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
7 juil. 2010 à 14:19
Le fonctionnement du switch case :
https://www.microsoft.com/en-us/download/details.aspx?id=55984

Ensuite, quand tu rentre dans le case, tu traites le cas.
Alors tu appelles une fonction plus haut dans le code.
Fais des tests, ça va rentrer tout seul ;-).
1
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
7 juil. 2010 à 15:38
Comment ça "comment on utilise" ?

Tu la déclaire ainsi par exemple

	private String GetParams() //Ou public ou protected
	{
		try
		{
			String test = Request.QueryString[LineParams.sCREATEUR];
		}
		catch
		{
			return "ERREUR";
		}
                 return test;
	}

1
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
Modifié par crapoulou le 7/07/2010 à 23:27
Pour plus de flexibilité de ton application, je te conseille de déclarer des constantes pour : nom de la BD, les tables, les champs, ...

public internal class TABLEUSER
{
internal const String COLONNE_PRENOM = "Prenom";
internal const String COLONNE_NOM = "Nom";
}

public internal class TABLES
{
internal const String USER = "User";
}

.......

String sMonNom = "Dupond"; 
String sMonPrenom = "Paul"; 

SQLCmd.CommandText = ("INSERT INTO " + TABLES.USER + " (" + TABLEUSER.COLONNE_NOM + ", " + TABLEUSER.COLONNE_PRENOM + ") VALUES ('" + sMonNom + "', ' " + sMonPrenom + "'");


(Les parenthèses sont facultatives pour la requête.)

/!\ Tu as mis un ';' de trop : pas besoin de le mettre dans la requête /!\

T'as un problème ? Passe sur CCM!
Il n'y a pas de problème sans solution.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
7 juil. 2010 à 13:40
Tu pourrai me decrypter tout ca je debute :)
0
Je vais voir ca merci.

Merci

Au fait comment on utilise une fonction ?
0
Utilisateur anonyme
7 juil. 2010 à 14:47
J'ai trouvé la fonction retour : c goto tonmotretour
0
Ah non excuse moi, j'ai demande comment on utilise une fonction et je savai pa ce que je fesai quand j'ecrivrai. Désolé

A part ca tu connai une commande qui permet d'executer une application externe comme VLC par exemple ? Parce que j'ai cherché deja partout

Merci d'avance
0
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
7 juil. 2010 à 15:47
Ah non, désolé.
0
Utilisateur anonyme
7 juil. 2010 à 15:56
Je sens que je vai devoir me creuser la tete toute le restant de la journee et demain meme
0
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
7 juil. 2010 à 16:13
Bon courage.
Concernant la question initiale que tu te posais, c'est résolu ?
0
Utilisateur anonyme
7 juil. 2010 à 21:38
Oui, tu peu voir le code au final :
Retour:
                Console.Write("\nVotre choix (TAPEZ UNIQUEMENT UN CHIFFRE): ");
                int Selection = 0;
                Selection = int.Parse(Console.ReadLine());
                switch (Selection)
                	{
                		case 0:
                				Console.WriteLine("\nFermeture du logiciel...");
                				goto Fin_logiciel;
                				break;
                		case 1:
                				Console.WriteLine("Lancement du module...");
                					System.Diagnostics.ProcessStartInfo myInfo = 
                					new System.Diagnostics.ProcessStartInfo();
            						myInfo.FileName = "Add.exe";
            						myInfo.WorkingDirectory = "bin";
            						System.Diagnostics.Process.Start(myInfo);
                				goto Fin_logiciel;
                				break;
                		case 2:
                				Console.WriteLine("Lancement du module...");
                					System.Diagnostics.ProcessStartInfo myInfo2 = 
                					new System.Diagnostics.ProcessStartInfo();
            						myInfo2.FileName = "Add.exe";
            						myInfo2.WorkingDirectory = "bin";
            						System.Diagnostics.Process.Start(myInfo2);
                				goto Fin_logiciel;
                				break;
                		case 3:
                				Console.WriteLine("Lancement du module...");
                					System.Diagnostics.ProcessStartInfo myInfo3 = 
                					new System.Diagnostics.ProcessStartInfo();
            						myInfo3.FileName = "Add.exe";
            						myInfo3.WorkingDirectory = "bin";
            						System.Diagnostics.Process.Start(myInfo3);
                				goto Fin_logiciel;
                				break;
                		case 4:
                				Console.WriteLine("Lancement de l'aide...");
                					System.Diagnostics.ProcessStartInfo myInfo4 = 
                					new System.Diagnostics.ProcessStartInfo();
            						myInfo4.FileName = "Add.exe";
            						myInfo4.WorkingDirectory = "bin";
            						System.Diagnostics.Process.Start(myInfo4);
                				goto Fin_logiciel;
                				break;
                		case 5:
                				Console.WriteLine("Affichage des propos du logiciel");
                					System.Diagnostics.ProcessStartInfo myInfo5 = 
                					new System.Diagnostics.ProcessStartInfo();
            						myInfo5.FileName = "About.exe";
            						myInfo5.WorkingDirectory = "bin";
            						System.Diagnostics.Process.Start(myInfo5);
                				goto Fin_logiciel;
                				break;
                		default:
                				Console.WriteLine("Code incorrect.Réessayez");
                				goto Retour;
                				break;
               		}
                
                Fin_logiciel:
0
PS : il est encore en developpement, quelles mots que je vais encore modifier.
0
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
7 juil. 2010 à 21:40
Selection = int.Parse(Console.ReadLine());


Si tu n'as pas un int, ça va péter ! lol
Fais un TryParse ou mets un bloc try - catch.
0
Utilisateur anonyme
7 juil. 2010 à 22:39
Attention c pa tout le code la variable int est cite plus haut hors du code comme 0.

J'ai deja un bloc try pour un protocole de connection SQL et un catch pour le debug du SQL.

Je sai pa trop a quoi sert try et catch mais bon.

A part ca je voudrai savoir comment utiliser une variable dans la commande SQL

Exemple :

-J'ai 2 vriables de type string
SQLCmd.CommandText = "INSERT INTO User (Nom, Prenom) VALUES ('x', 'y');";


Je veut remplacer les x et y par les 2 variables.

Merci d'avance pour le renseignement
0
Utilisateur anonyme
7 juil. 2010 à 23:23
Ou dois-je mettre les constantes dans mon code?

La commande que tu m'a donné:
SQLCmd.CommandText = ("INSERT INTO " + TABLES.USER + " (" + TABLEUSER.COLONNE_NOM + ", " + TABLEUSER.COLONNE_PRENOM + ") VALUES ('" + sMonNom + "', ' " + sMonPrenom + "'"');


Mon compilateur dit que : -Trop de caractères dans le littéral de caractèrea la fin de la commande
-Saut de ligne dans la constante

Que doi-je faire pour corriger cela?

Ps : tt mon code est dans le bloc "public static void Main(string[] args)"
0
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
7 juil. 2010 à 23:26
Il y a un quote de trop après le tout dernier guillemet.

******

Essaye de les mettre dans le main, sinon tu les sorts du main.
0
Utilisateur anonyme
7 juil. 2010 à 23:31
Tout est dedans meme le code pour la session SQL, absolument tout.

Pour le quote, il me met le dernier quote et ce qui suit en rose
0
Utilisateur anonyme
7 juil. 2010 à 23:45
public internal class TABLEUSER
{
internal const String COLONNE_PRENOM = "Prenom";
internal const String COLONNE_NOM = "Nom";
}

public internal class TABLES
{
internal const String USER = "User";
}

Cela servirait a quoi ???
0
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
7 juil. 2010 à 23:54
public internal class TABLEUSER
{
internal const String COLONNE_PRENOM = "Prenom";
internal const String COLONNE_NOM = "Nom";
}

public internal class TABLES
{
internal const String USER = "User";
}

Cela servirait a quoi ???


C'est pour les classer si t'en a plein plein !

Sinon, ceci suffit :

public const String COLONNE_PRENOM = "Prenom";
public const String COLONNE_NOM = "Nom";
public const String USER = "User";

0
Utilisateur anonyme
8 juil. 2010 à 00:02
Le probleme, c'est qu'apres ces constantes que je met à quelle part dans le code, le compilateur me sort que des jetons place apres ces constantes sont non valides dans la declaration de membres de la classe.

Que faire?
0
crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
8 juil. 2010 à 00:05
Essaye plutôt comme cet exemple :

public class ConstTest 
{
    class SampleClass 
    {
        public int x;
        public int y;
        public const int c1 = 5;
        public const int c2 = c1 + 5;

        public SampleClass(int p1, int p2) 
        {
            x = p1; 
            y = p2;
        }
    }

    static void Main() 
    {
        SampleClass mC = new SampleClass(11, 22);   
        Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
        Console.WriteLine("c1 = {0}, c2 = {1}", 
                          SampleClass.c1, SampleClass.c2 );
    }
}


Source.
0
Utilisateur anonyme
8 juil. 2010 à 00:24
Tu pourrai m'expliquer tout ca? Sil te plait
0