[C#][Delphi] Interrompre une fonction

[Résolu]
Signaler
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011
-
Messages postés
1
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
5 mars 2009
-
Bonsoir les programmeurs !!!!





J'utilise des fonctions pour envoyer du texte sur un programme externe de cette manière :






Code:, ----
System.Diagnostics.Process.Start("notepad");

System.Threading.Thread.Sleep(2000);

System.Windows.Forms.SendKeys.SendWait("vincent".ToLower());

System.Windows.Forms.SendKeys.SendWait( "{ENTER}" );







J'ai des dizaines de lignes comme celles-ci. Un moment, je vérifie la
date si ce n'est pas un dimanche(et oui, c'est mon post précédent ). Et c'est la qu'arrive la fameuse question





Serait'il possible de mettre avant l'écriture de la date, une boite de
dialogue disant, "vous allez ajouter la date XXXXX, confirmez ce choix
!!!"


Puis si OK, on continue la lecture du code, sinon, il est interrompu pour que l'on saisisse la date voulue!!!





J'espère que mon problème est assez clair. Je vous remercie de toute l'aide que vous pouvez m'apporter !!!!

20 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
if (MessageBox.Show("Voulez vous continuer", "question", MessageBoxButtons.OKCancel) == DialogResult.OK)

{

// ton code si oui

}

else

{

// ton code si non

}



Ca devrait marcher


Mx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Tu peux tout simplement sortir la déclaration des strings en dehors des if, de cette facon :





string date2 = String.Empty;

if(DateTime.Today.DayOfWeek == DayOfWeek.Monday)

{

date2 = (DateTime.Now.Subtract( new TimeSpan(2, 0, 0, 0)).ToString("ddMMyy"));

}

else

{

date2 = (DateTime.Now.Subtract( new TimeSpan(1, 0, 0, 0)).ToString("ddMMyy"));

}

Mx
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

C'est cool !!! Merci a toi.



Par contre, dans ce code, je faisait :



if(DateTime.Today.DayOfWeek == DayOfWeek.Monday)

{


string date2 =
(DateTime.Now.Subtract( new TimeSpan(2, 0, 0, 0)).ToString("ddMMyy"));

}



else

{


string date2 =
(DateTime.Now.Subtract( new TimeSpan(1, 0, 0, 0)).ToString("ddMMyy"));

}



Comment je peux faire pour utiliser date2 en dehors des boucles if et else. C'est à dire juste après ?

Merci de votre aide en ce jour férié !!!
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Et si je désire convertir le format JJMMAA en JJ/MM/AA.

J'ai essayé ceci :



CODE :

if (MessageBox.Show("Etude d'assortiment à la date du " +
date2.ToString("dd/MM/yy"), "Carrefour", MessageBoxButtons.OKCancel) ==
DialogResult.OK)



[C# Erreur] anabel.cs(161): La méthode surchargée correspondant le
mieux à 'string.ToString(System.IFormatProvider)' possède des arguments
non valides
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Tu peux toujours recaster ton string en DateTime a l'aide de DateTime.Parse(date2);

puis utiliser ToString("dd/MM/yy");



C'est bete, mais jvois pas plus court pour le moment, je sais pas si
y'a une formule qui s'applique a String.Format qui formaterait une date
comme tu le souhaites


Mx
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Non ca ne fonctionne pas non plus.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Il te dit quoi ?

Mx
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

J'avais essayé les guillemets :






Code:, ----
date2.ToString("dd/MM/yy")







Mais merdique également :






Citation:, ----
[C#
Erreur] anabel.cs(161): La méthode surchargée correspondant le mieux à
'string.ToString(System.IFormatProvider)' possède des arguments non
valides

[C# Erreur] anabel.cs(161): Argument '1' : impossible de convertir de 'string' en 'System.IFormatProvider'







Merci
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Oui mais la je parle de DateTime, pas de string.



DateTime temp = DateTime.Parse(date2);

puis dans ton code, tu utilises temp.ToString("dd/MM/yy");



Il me semble que ca devrait etre bon

Mx
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

J'ai une notification du débogeur me disant :

La chaine n'a pas été reconnue en tant que DateTime valide !!!!
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Et quelle valeur prend date2 pendant l'execution de ton code ?

Mx
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

date2 a pour valeur 130705 !!!
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Ah mais alors pourquoi est ce que tu fais pas tout simplement



date2 = (DateTime.Now.Subtract(new TimeSpan(2, 0, 0, 0)).ToString("dd/MM/yy"));



a la place de



date2 = (DateTime.Now.Subtract(new TimeSpan(2, 0, 0, 0)).ToString("ddMMyy"));



?

Mx
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Impossible, car j'utilise date2 pour deux raisons. La premiere avec les
/, c'est pour mettre dans le messagebox et pour un aspect visuel plus
sympa.

Alors que j'utilise aussi date2 pour mon programme externe qui attend une date dans le format JJMMAA, sans les /
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Bah tu crées 2 variables

Mx
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

c'est pas terrible quand meme. :)
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Ce que je ferais a ta place, j'afficherais le DateTime normal (dont
avec les "/") dans la messagebox de confirmation, puis apres je ferais
:

date2 = date2.Trim('/');

pour ton utilisation JJMMAA

Mx
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Et l'inverse de TRIM ca n'existe pas. Ajouter des / tous les deux caractères !!!!
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Si, tiens :



string AddChar(string str)

{


System.Text.StringBuilder sb = new System.Text.StringBuilder(str.Length
+ 3);

int i = 0;

foreach (char c in str)

{

sb.Append(c);

if ((++i)%2 == 0)


sb.Append("/");

}

return sb.ToString().Substring(0,8);

}



Mais je persiste a dire que l'utilisation de 2 variables serait bien mieux




Mx
Messages postés
1
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
5 mars 2009

je voudrais un exemple concret pour le fonctionement de "DAO" (Data Access Object)appliqueŽaŽC# et Access comme base de donnés
merci
aŽ bientôt