-
Heure c++ .net
Bonjours,
J'ai 2 textbox et une label
dans les textbox je rentre l'heure de début et l'autre l'heure de fin .
je veux avoir la différence entre les 2 et mettre cette différence dans le label.
textBox1=heures de début textBox2=heures de fin label1=nombre total d'heures entre les 2 textBox.
10:00 16:00 = 6:00 heures
C++.net
Merci beaucoup d'avance pour votre réponse.
TrollTop
-
il faut utiliser un timespan voir dans la faq C++/cli http://dotnet.developpez.com/faq/cpp...meBetweenDates
-
Je comprend pas
J'ai fait ca mais ca fonctionne pas est ce que tu pourais m'éclairer S.V.P
DateTime DateCourante = textBox3->Text;
DateTime DateCreationquestion = textBox4->Text;
TimeSpan ^Ts = DateCourante - DateCreationquestion;
label22->Text = Ts;
-
qu'est-ce qui ne marche pas ? erreur de compilation ? mauvais résultat ?
-
erreur de compilation
Erreur de compilation
voici les erreurs
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8313) : error C2440: 'initialisation' : impossible de convertir de 'System::String ^' en 'System::DateTime'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8314) : error C2440: 'initialisation' : impossible de convertir de 'System::String ^' en 'System::DateTime'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8317) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : impossible de convertir le paramètre 1 de 'System::TimeSpan ^' en 'System::String ^'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
1>Horaire.cpp
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8313) : error C2440: 'initialisation' : impossible de convertir de 'System::String ^' en 'System::DateTime'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8314) : error C2440: 'initialisation' : impossible de convertir de 'System::String ^' en 'System::DateTime'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8317) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : impossible de convertir le paramètre 1 de 'System::TimeSpan ^' en 'System::String ^'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
1>Génération de code en cours...
1>Le journal de génération a été enregistré à l'emplacement "file://d:\Visual Studio 2005\MEM2007\MEM2007\Debug\BuildLog.htm"
1>MEM2007 - 6 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
-
faut mettre un tostring derriere pour convertir en chaine
-
Comme ceci
DateTime DateCourante = Convert::ToString(textBox3->Text);
DateTime DateCreationquestion = Convert::ToString(textBox4->Text);
TimeSpan ^Ts = DateCourante - DateCreationquestion;
label22->Text = Ts;
Si oui ca ne fonctionne pas non plus
ca me donne c'est erreur.
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8316) : error C2440: 'initialisation' : impossible de convertir de 'System::String ^' en 'System::DateTime'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8317) : error C2440: 'initialisation' : impossible de convertir de 'System::String ^' en 'System::DateTime'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8320) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : impossible de convertir le paramètre 1 de 'System::TimeSpan ^' en 'System::String ^'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
1>Horaire.cpp
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8316) : error C2440: 'initialisation' : impossible de convertir de 'System::String ^' en 'System::DateTime'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8317) : error C2440: 'initialisation' : impossible de convertir de 'System::String ^' en 'System::DateTime'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
1>d:\visual studio 2005\mem2007\mem2007\Horaire.h(8320) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : impossible de convertir le paramètre 1 de 'System::TimeSpan ^' en 'System::String ^'
1> Aucun opérateur de conversion défini par l'utilisateur disponible, ou
1> Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
-
J'ai changé ma formule ca compile mais erreur quand je rentre les nombre dans la textBox;
voici la formule que j'ai utilisé
DateTime TempDebut = Convert::ToDateTime(textBox3);
DateTime TempFin = Convert::ToDateTime(textBox4);
TimeSpan ^Ts = TempDebut - TempFin;
String ^TempTotal = Convert::ToString(Ts);
label22->Text = TempTotal;
et Voici l'erreur
************** Texte de l'exception **************
System.InvalidCastException: Impossible d'effectuer un cast d'un objet de type 'System.Windows.Forms.TextBox' en type 'System.IConvertible'.
à System.Convert.ToDateTime(Object value)
à MEM2007.Horaire.textBox4_TextChanged(Object sender, EventArgs e) dans d:\visual studio 2005\mem2007\mem2007\horaire.h:ligne 8638
à System.Windows.Forms.Control.OnTextChanged(EventArgs e)
à System.Windows.Forms.TextBoxBase.OnTextChanged(EventArgs e)
à System.Windows.Forms.TextBoxBase.WmReflectCommand(Message& m)
à System.Windows.Forms.TextBoxBase.WndProc(Message& m)
à System.Windows.Forms.TextBox.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
-
sous quelle forme tu saisis ta date dans le champ texte ?
-
si je comprend bien ta question.
Je la saisie comme ca 10:00
je pense que je viens de comprendre pourquoi ca fonctionne pas
le code s'enclanche quand il ya une frappe TextChanged
est ce que tu sais où je pourais le mettre a part TextChanged
Je suis sûr que c'est ca le probleme
en passant j'ai un code pour accepter juste des nombres comment pourais-je faire pour mettre un : automatique ; Ex si je rentre 1000 il va écrire 10:00 et 100 il va écrire 1:00
Voici le code que j'ai pour le num
if ((e->KeyChar < 48 || e->KeyChar > 57) && e->KeyChar != 8 && e->KeyChar != 13)
{
e->Handled = true;
}
Merci beaucoup pour ton aide tu est super sympatique.
TrollTop
-
J'ai régler mon probleme ca fonctionne mais il me donne comme réponse
tempdebut tempfin temptotal
10:00 20:00 10:00:00
il me donne les secondes et je les veux pas ya t'il une règle
pis j'ai trouver c'est validated pour la question précédente
voici le code qui fonctionne
private: System::Void Validated(System::Object^ sender, System::EventArgs^ e) {
DateTime TempDebut = Convert::ToDateTime(textBox3->Text);
DateTime TempFin = Convert::ToDateTime(textBox4->Text);
TimeSpan ^Ts = TempFin - TempDebut;
String ^TempTotal = Convert::ToString(Ts);
label22->Text = TempTotal;
}
pour la question du 2 point : c'est encore actif pas trouver comment faire.
TrollTop
C++.net
-
ah! ca marche pas le code il y a bug il ne respecte pas vraiement les heures
ex: 22:00 a 6:00 = -16:00 avec ce code
Pourquoi ? je pensais que datetime allait géré ça
est ce que je vais être oubliger de faire un tableau avec tout les heures définit a l'intérieur et calculer combien d'heure les sépares.
[1:00,2:00,3:00,4:00,...,23:00,0:00]
mais si je rentre 39:00 heures (qui existe pas) avec le code que j'ai présentement il va le calculer pareil. Pas Correct ça
Si tu comprend ce que je viens d'écrire peux-tu m'éclarer où m'aider à faire fonctionner le DateTime comme il faut si c'est possible.
TrollTop qui a mal a tête.
c++.net
-
J'écrit trop vite j'ai la solution pour le problème du 22:00 à 6:00 = -16:00
il s'uffisait dit dire que si l'heure de fin et plus petite que l'heure de début rajout 24 heures a heure de fin
DateTime TempDebut = Convert::ToDateTime(textBox3->Text);
DateTime TempFin = Convert::ToDateTime(textBox4->Text);
if (TempFin < TempDebut) TempFin = TempFin.Add(TimeSpan(1,0,0,0));
TimeSpan ^Ts = TempFin - TempDebut;
String ^TempTotal = Convert::ToString(Ts);
label22->Text = TempTotal;