C# : Renvoyer a une autre ligne/ programme
Résolu
Utilisateur anonyme
-
crapoulou Messages postés 28195 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
crapoulou Messages postés 28195 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
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 :
Merci de vos lumières :-)
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
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, ...)
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; } }
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 ;-).
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 ;-).
Comment ça "comment on utilise" ?
Tu la déclaire ainsi par exemple
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; }
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";
}
.......
(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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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:
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.
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
Je veut remplacer les x et y par les 2 variables.
Merci d'avance pour le renseignement
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
Ou dois-je mettre les constantes dans mon code?
La commande que tu m'a donné:
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)"
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)"
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.
******
Essaye de les mettre dans le main, sinon tu les sorts du main.
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
Pour le quote, il me met le dernier quote et ce qui suit en rose
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 :
{
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";
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?
Que faire?
Essaye plutôt comme cet exemple :
Source.
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.