[Résolue] Sauvegarde de donnée dans un ARRAY

Partie du forum pour tout ce qui concerne les interfaces homme machine ou IHM. Forum, conseil, astuce et entraide sur les interface homme machine ou IHM tels que les magelis, KEP, proface, XBT, .
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: [Résolue] Sauvegarde de donnée dans un ARRAY

Message par Theogar »

Bonjour Béryl,

Au début je suis passé par un tableau, mais je n'ai pas réussi à faire fonctionner ma sauvegarde donc, j'ai changé de méthode, mais je vais essayer votre réponse merci.
Modifié en dernier par Theogar le 03 sept. 2024, 15:09, modifié 1 fois.
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Sauvegarde de donnée dans un ARRAY

Message par Theogar »

Testé et validé, merci Béryl et tout le monde.
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1953
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: [Résolue] Sauvegarde de donnée dans un ARRAY

Message par Béryl »

Un truc du genre :

Code : Tout sélectionner

Historique[0].write(Cpt.getIntValue());

for (byte i=0; i<=30; i++)
{
 	Historique[i+1].write(Historique[i].getIntValue());
}  

Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: [Résolue] Sauvegarde de donnée dans un ARRAY

Message par Theogar »

Ce que vous avez écrit n'est pas ce que je recherche.
Cela rempli toutes les lignes de mon tableau dès la première sauvegarde. Je voulais qu'une seule ligne soit rempli chaque jour à 5h par la valeur précédente.
J'ai écrit ceci :
Historique_[30].write(Historique_[29].getIntValue());
Historique_[29].write(Historique_[28].getIntValue());
/////
Historique_[1].write(Historique_[0].getIntValue());
Historique_[0].write(CPT_journalier.getIntValue());

Cela prend sûrement trop de ligne pour ce que je veux faire et doit sûrement être optimisable, mais cela fait ce que je souhaite faire.

Edit: J'ai réussi à l'optimiser en remaniant ce que Béryl à écrit:

for (int i = 30; i > 0; i--) {
Historique_.write(Historique_.getIntValue());
}
Historique_[0].write(CPT_journalier.getIntValue());
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1953
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: [Résolue] Sauvegarde de donnée dans un ARRAY

Message par Béryl »

J'ai pas tout compris, là...
Mon code fait exactement la même chose que le tient, non ?
Que tu le fasses ligne par ligne ou dans une boucle revient au même !

De plus, je ne comprends pas la deuxième partie, avec ta boucle.
Tu n'utilises pas la variable i !

M'enfin, si ton problème est résolu, c'est toujours ça !
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: [Résolue] Sauvegarde de donnée dans un ARRAY

Message par Theogar »

je n'arrive pas à faire apparaître les "i" dans mon code ils s'effacent lors de l'envoie de celui-ci, mais j'ai un "i" après "Historique_" et j'ai "i-1" après "write(Historique_"

Par contre, de mon côté je suis désolé, mais votre code ne marchait pas, celui-ci remplissait mon tableau de l'historique 1 à 31 avec la valeur de mon niveau, alors que là, l'historique 1 prend la valeur de mon niveau, toutes les autres valeurs restent à zéro. Il faut attendre nouvelle journée pour que la valeur de mon historique 1 se décale sur l'historique 2 et l'historique 1 récupère la valeur du niveau, ainsi de suite jusqu'à que mon tableau soit rempli.
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: [Résolue] Sauvegarde de donnée dans un ARRAY

Message par DurandO »

Béryl a écrit : 03 sept. 2024, 15:30 Un truc du genre :

Code : Tout sélectionner

Historique[0].write(Cpt.getIntValue());

for (byte i=0; i<=30; i++)
{
 	Historique[i+1].write(Historique[i].getIntValue());
}  

Cela ne marche pas en effet, car tu écris Historique[0] dans Historique[1] puis tu écris Historique[1] dans Historique[2] etc...
Autrement dit, si tu 1 dans Historique[0] tu vas écrire cette même valeur dans le reste du tableau
Plutôt du genre décaler le tableau pour ensuite y écrire la valeur au premier emplacement comme cela :

Code : Tout sélectionner

for (byte i=0; i<=30; i++)
{
 	Historique[30-i].write(Historique[29-i].getIntValue());
}  
Historique[0].write(Cpt.getIntValue());
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: [Résolue] Sauvegarde de donnée dans un ARRAY

Message par philou77 »

Salut !
Laisse tomber Durando, de toute façon il voulais faire un décalage par jour et pas 30.

Donc il était plus rapide de prendre le numéro du jour et de le prendre en référence pour le nombre de boucle à faire pour décaler ses valeurs.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Répondre