Passage struct plusieurs tableau par référence [Résolu]

Signaler
Messages postés
4
Date d'inscription
mardi 23 mai 2006
Statut
Membre
Dernière intervention
22 juin 2006
-
Messages postés
4
Date d'inscription
mardi 23 mai 2006
Statut
Membre
Dernière intervention
22 juin 2006
-
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

Messages postés
4
Date d'inscription
mardi 23 mai 2006
Statut
Membre
Dernière intervention
22 juin 2006

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
Messages postés
4
Date d'inscription
mardi 23 mai 2006
Statut
Membre
Dernière intervention
22 juin 2006

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
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
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
Messages postés
4
Date d'inscription
mardi 23 mai 2006
Statut
Membre
Dernière intervention
22 juin 2006

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
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
On a du mal à suivre.. on ne connait pas le type de tes variables.

Essaye de poster un exemple tout simple.