Passage struct plusieurs tableau par référence

Résolu
mbeuret Messages postés 4 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 22 juin 2006 - 22 juin 2006 à 11:54
mbeuret Messages postés 4 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 22 juin 2006 - 22 juin 2006 à 15:32
Bonjour, une chose m'échappe

j'ai créée un fonction pour remplir un tableau de données venant d'un fichier excel.

Pourqoui tout mes tableaux prennent la dernière valeur du dernier appel de la fonction ?

Exemple:

SECH.TabZone.TIn.Value   après appel de la fct  ExcelData.GetArrayData contient les bonnes valeurs
SECH.TabZone.HIn.Value  après appel de la fct  ExcelData.GetArrayData contient les bonnes valeurs MAIS
SECH.TabZone.TIn.Value a pris les valeurs de SECH.TabZone.HIn.Value

a la fin de mes 3 appels
SECH.TabZone.TCouche.Value = SECH.TabZone.TCouche.Value
SECH.TabZone.HIn.Value          = SECH.TabZone.TCouche.Value
SECH.TabZone.TIn.Value          = SECH.TabZone.TCouche.Value

Comment référencer mes tableaux de manière à être autonome l'un de l'autre ?

Merci pour votre réponse

Marc

--------- un bout de mon code pour mieux comprendre-----------------------

// DataGridView TIN_SECH
ExcelData.GetArrayData( SECH.TabZone.TIn.Excel_SheetName,
SECH.TabZone.TIn.Excel_FirstCell,
SECH.TabZone.TIn.Excel_LastCell,
SECH.TabZone.TIn.Value ,
SECH.TabZone.DefRow.NRange);

// DataGridView HIN_SECH
ExcelData.GetArrayData( SECH.TabZone.HIn.Excel_SheetName,
SECH.TabZone.HIn.Excel_FirstCell,
SECH.TabZone.HIn.Excel_LastCell,
SECH.TabZone.HIn.Value,
SECH.TabZone.DefRow.NRange);

// DataGridView TCouche_SECH
ExcelData.GetArrayData( SECH.TabZone.TCouche.Excel_SheetName,
SECH.TabZone.TCouche.Excel_FirstCell,
SECH.TabZone.TCouche.Excel_LastCell,
SECH.TabZone.TCouche.Value,
SECH.TabZone.DefRow.NRange);
this

.SECH =
new
Dryer.
Type();
class

Dryer{      

///<summary>
      /// Liste de toute les variables d'une sécheuse
      ///</summary>

public
struct
Type{

public
StructVariable Variante;

public
StructVariable Passage;

public
StructVariable Version;

public
StTab TabPar;

public
StTabZone TabZone;}

//Nom des données affichés ds les DataGridView Zone REF & SEC

public
struct
StTabZone
{

public
StructdGd_ZDef DefRow;

public
const
int NRange = 14;

public
StructCol TIn;

public
StructCol HIn;

public
StructCol TCouche;

public
StructCol QEau;

public
StructCol TRefonte;
}

}

5 réponses

mbeuret Messages postés 4 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 22 juin 2006
22 juin 2006 à 15:32
Chercher plus une grosse étourderie de ma part

J'ai eu la bonne idée d'initialié mes tableaux avec des valeur par défaut

SECH.TabZone.TIn.Value = newstring[14];

//LabeL Zone

string[] FillLabel = {"0","1","2","3","4","41","42","43","44","5","6","7","8","9"};
SECH.TabZone.TIn.Value =  FillLabel;
SECH.TabZone.Hin.Value =  FillLabel;
SECH.TabZone.TCouche.Value =  FillLabel;
SECH.TabZone.QEau.Value =  FillLabel;

=> bien évidemment cela ainsi on fait de joli clone !!! 
c'est dangereux la "fleme"

THE SOLUTION OF COURSE

SECH.TabZone.TIn.Value = newstring[14];

SECH.TabZone.Hin.Value = newstring[14];
SECH.TabZone.TCouche.Value = newstring[14];

SECH.TabZone.QEau.Value = newstring[14];

SECH.TabZone.TIn.Value = FillLabel;
 ......

Marc
3
mbeuret Messages postés 4 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 22 juin 2006
22 juin 2006 à 12:13
le problème vient d'ailleur.

c'est ma structure qui n'est pas juste !!!!

Si je change la valeur de



SECH.TabZone.TIn.Value[1] = "20"




alors SECH.TabZone.HIn.Value[1] par exemple prend la même valeur

Comment faut-il construire une classe contenant des structures

avec un seul constructeur (new) ? :   this.SECH = newDryer.Type();

j'aimerais obtenir des tableaux distincts J'ai fait quoi de faut ?

Marc
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
22 juin 2006 à 13:08
Salut,
Je t'avoue que j'ai eu un peu la flegme de tout lire, mais en ayant survoler le problème, je me demande si tu sais que les structs utilisent un passage par valeur et pas par référence ?
L'erreur pourrait alors provenir de là !

<hr size= "2" /> VC# forever
=13319
0
mbeuret Messages postés 4 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 22 juin 2006
22 juin 2006 à 14:23
oui, mais on a quand même le droit de créer un tableau dans une structure ?

Et si je veux atteindre le tableau de la structure, c'est un passage par reférence.

Mon but est de modifier un tableau intégré dans une structure via une  fct.

mon tableau structure = SECH.TabZone.HIn.Value

Je veux pouvoir modifier ce tableau à travers une fct
// DataGridView HIN_SECH
ExcelData.GetArrayData( SECH.TabZone.HIn.Excel_SheetName,
SECH.TabZone.HIn.Excel_FirstCell,
SECH.TabZone.HIn.Excel_LastCell,
SECH.TabZone.HIn.Value,
SECH.TabZone.DefRow.NRange);

Est-bien possible ? il me semble que oui

Marc
0

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

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
22 juin 2006 à 15:28
On a du mal à suivre.. on ne connait pas le type de tes variables.

Essaye de poster un exemple tout simple.
0
Rejoignez-nous