Stockage de la date sytème dans un tableau

Résolu
cs_Shany Messages postés 29 Date d'inscription samedi 24 avril 2004 Statut Membre Dernière intervention 3 juin 2007 - 11 mai 2006 à 23:47
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 12 mai 2006 à 21:20
Salut tout le monde,

Je code avec Visual studio .net en C#. J'ai un petit problème. J'aimerais pouvoir stocker ma date système dans un tableau Pour compliquer un peu :

j'ai une form avec un bouton

pour chaque click sur le bouton, je veux stocker l'heure du click dans un tableau.

afin d'avoir au final : click1 => heure 1, click 2 => heure2, etc.

Je pensais faire une petite boucle for du style :
int i compteur 0;

for (click sur le bouton)
{
tab (i) = heure système;

compteur = compteur + 1;

i = i + 1;
}

le compteur doit me permettre de savoir le nombre de click total sur le bouton.

Merci à ceux qui pourons m'aider .

8 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 mai 2006 à 12:28
En .NET 1.1 tu ne peux pas utiliser les listes génériques comme dans mon exemple précédent, à la place utilise un ArrayList, c'est une collection d'objets, tu peux aussi créer ta propre liste fortement typée, c-à-d une liste de DateTime. La solution du tableau est valable uniquement si tu sais exactement combien de DateTime tu vas stocker car les tableaux ont une taille fixe contrairement aux listes..

// NET 1.1
public partial class Form1 : Form
{
private ArrayList list = null;


public Form1( )
{
InitializeComponent( );
list = new ArrayList( );
this.button1.Click += new EventHandler( button1_Click );
this.button2.Click += new EventHandler( button2_Click );
}


private void button1_Click( object sender, EventArgs e )
{
list.Add( DateTime.Now );
}


private void button2_Click( object sender, EventArgs e )
{
// Affiche les dates contenues dans la liste.
foreach( DateTime dt in list )
MessageBox.Show( dt.ToLongTimeString( ) );
}
}
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 mai 2006 à 12:30
J'ai laissé le mot clé partial, il ne faut pas l'utiliser en NET 1.1
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 mai 2006 à 00:22
Salut, il faut gerer l'évènement Click de ton bouton..

// NET 2.0
private List< DateTime > list = new List< DateTime >( );

// ..

myButton.Click += MyButton_Click;

// ..

private void MyButton_Click( object sender, EventArgs e )
{
list.Add( DateTime.Now );
}
0
cs_Shany Messages postés 29 Date d'inscription samedi 24 avril 2004 Statut Membre Dernière intervention 3 juin 2007
12 mai 2006 à 01:32
Salut Lutinore,

Merci pour ta réponse, si j'ai bien compris je ne dois pas faire un tableau mais une liste contenant toutes les dates !? Cependant je me pose une petite question : le code devra -t-il être de ce style

namespace Z
{
public class A : System.Windows.Forms.Form
{
private DateTime HeureSys;

public A()
{
InitializeComponent();

Btn_batmnt.click += Btn_batmnt_click
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
static void Main()
{
Application.Run(new Poul());
}

private void Btn_batmnt_click(objet ......)
{
list.Add(HeureSys.Now);
}
}
}

Aussi est-ce que grâce à cette méthode je pourrais comparer les dates entre elles, je m'explique :

j'ai une heure1 et une heure2 (heures qui seront dans la liste si j'ai bien compris)

je veux faire la différence les 2 heures : heure2 - heure1 après heure3 - heure2 etc (jusqu'à la fin de la liste)

car au final je veux faire la somme de toutes ces différences.

Le faire en algo c'est simple le problème pour moi c'est de le retranscrire en C#

Merci encore une fois de répondre à mes petites intérogations.

ps : petite précision => j'utilise Microsoft Developpement Environnement 2003 avec Microsoft .NET Framework 1.1 et je débute en C#
0

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

Posez votre question
cs_Shany Messages postés 29 Date d'inscription samedi 24 avril 2004 Statut Membre Dernière intervention 3 juin 2007
12 mai 2006 à 17:45
Bonjour Lutinore,

Encore une fois merci pour tes répones. Toutefois, je ne vois pas pourquoi tu utilises un 2eme bouton pour afficher les dates contenu dans la liste. Je l'utiliserais plutôt pour faire mon calcul.

Ce que je voulais faire, c'est en cliquant sur le bouton1, je mémorise l'heure o moment du clique (ca c'est fait).

Par la suite je souhaite faire la différence entre les heures contenus dans la liste, du style :

Tant que (je ne suis pas à la fin de la liste)
{
diff = heure2 - heure1
}

Mais le problème qui va se poser est que je n'orais pas toutes les différences entre mes 2 valeurs.

Faudrait-il que je crée une autre liste pour les stocker et à ce moment pourrais-je faire la somme de ces valeurs !??

Voici comment je vois le code :

public class Form1 : Form
{
private ArrayList list = null;

private ArrayList list2 = null;
public Form1( )
{
InitializeComponent( );
list = new ArrayList( );
this.button1.Click += new EventHandler( button1_Click );
this.button2.Click += new EventHandler( button2_Click );

list2 = new ArrayList();

}

private void button1_Click( object sender, EventArgs e )
{
list.Add( DateTime.Now );

}

private void button2_Click( object sender, EventArgs e )
{
// Calcul la différence entre les dates contenues dans la liste.

foreach( NonFin de liste)
{

la diff entre chaque heures (heure2 - Heure1, Heure3 - heure2 , etc) = heure2 - heure1;

list2.Add(la diff entre chaque heures);

somme de toutes les différences;

moyenne de toutes les différences = somme de toutes les différences / nbre d'entrée dans la liste;
resultat = moyenne de toutes les différences * 60;

}

}
}

Voilà merci de m'aider une toute dernière fois afin que mon problème soit résolu.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 mai 2006 à 18:09
J'ai mis un 2ème bouton qui affiche les dates juste pour te montrer comment on parcourt une liste avec la syntaxe foreach.

Euh. si tu veux la somme de toutes les différences c'est pas mieux de calculer la différence entre le premier clique et le dernier !?
0
cs_Shany Messages postés 29 Date d'inscription samedi 24 avril 2004 Statut Membre Dernière intervention 3 juin 2007
12 mai 2006 à 18:32
Euh non parce que ce que je veux c'est avoir la moyene, c'est à dire savoir en moyenne combien de temps je mets entre 2 click. Si je fais comme tu me dis la différence entre le premier et le dernier click celà ne me donnera pas le résultat souhaité !!

Je ne sais toujours pas comment arranger ce petit problème. Je ne vois pas comment parcourir la liste et faire la différence entre les dates pour en avoir la somme.

Si j'arrive à résoudre ce seul et dernier problème, mon application sera sauvée et je ne serais plus desespérée.

Moi qui pensais que celà aurais été simple à faire, je constate que c'est plus compliqué que prévu, mais je ne vais pas baisser les bras.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 mai 2006 à 21:20
Si c'est juste pour la moyenne ont peut essayer de se passer de la liste :

public class Form1 : Form
{
private long time = 0;
private long span = 0;
private int count = 0;


public Form1( )
{
InitializeComponent( );
this.button1.Click += new EventHandler( button1_Click );
this.button2.Click += new EventHandler( button2_Click );
}


private void button1_Click( object sender, EventArgs e )
{
if ( time == 0 )
{
time = DateTime.Now.Ticks;
}
else
{
long now = DateTime.Now.Ticks;
span += now - time;
time = now;
}


count++;
}


private void button2_Click( object sender, EventArgs e )
{
if ( count >= 2 )
MessageBox.Show( TimeSpan.FromTicks( span / count ).ToString( ), "Moyenne" );
}
}
0
Rejoignez-nous