furax13
Messages postés90Date d'inscriptionmardi 28 octobre 2003StatutMembreDernière intervention24 avril 2008
-
2 août 2006 à 12:07
jinh68
Messages postés215Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 1 septembre 2006
-
3 août 2006 à 17:23
dans mon application , j'ai une classe COoptimisation qui contient une liste de contraintes (classe COContrainte).
Chaque contrainte peut être d'un type différent:
TYPE
typeContraintesOptimisation = (Contrainte_Heating_Speed_1,
Contrainte_Natural_Gaz_Flow_1, Contrainte_Natural_Gaz_Flow_2,
Contrainte_Carbon_Deposition_1, Contrainte_Carbon_Deposition_2,
COContrainte_Carbon_Deposition_3,);
j'ai donc créé autant de classes que de types différents, classes qui héritent de ma classe COcontrainte :
exemple :
TYPE
COContrainte_Heating_Speed_1 = CLASS(COContrainte)
PRIVATE
Fpriorite : integer;
FTypeDeContrainte : integer;
FTemperature : double;
FVitesseChauffe : double;
FtoleranceTemperaturePlus : double;
FtoleranceTemperatureMoins : double;
FtolerancevitesseChauffePlus : double;
FtolerancevitesseChauffeMoins : double;
dans mon programme principal, je récupère la contrainte (COCOntrainte) la plus récente et en fonction du type de la contrainte, j'aimerai récupérer la contrainte du type associée pour effectuer un traitement particulier (code non fourni pour le traitement)
Malheureusement, je n'arrive pas récupérer la contrainte du type associé.
comment faire?
BEGIN
fOptimisation := NIL;
TRY
//construction de l'objet fOptimisation
fOptimisation := COOptimisation.creation(1, 4, 10, '415', 4, 'DoublePenteBreme');
//destruction de l'objet fOptimisation
nbTrouveContraintes := fOptimisation.NbContraintes;
contrainteCourante := fOptimisation.getContrainteLaPlusRecente(0);
ShowMessage('Le nom est : ' + contrainteCourante.NomContrainte);
ShowMessage('La date est : ' + FloatToStr(contrainteCourante.temps));
//on essaye de récupèrer la contrainte de type
labeltype := GetEnumName(TypeInfo(typeContraintesOptimisation), contraintecourante.TypeContrainte);
CASE AnsiIndexStr(labeltype, ['Contrainte_Heating_Speed_1', 'Contrainte_Natural_Gaz_Flow_1']) OF
0: BEGIN
fContrainteHeatingSpeed := COCOntrainte_Heating_speed_1(contrainteCourante);
ShowMessage('La température est : ' + FloattoStr(fContrainteHeatingSpeed.temperature) + ' °C');
END;
1: BEGIN
FContrainteNaturalGazFlow := COContrainte_Natural_gaz_flow_1(contrainteCourante);
ShowMessage('La température est : ' + FloattoStr(FContrainteNaturalGazFlow.temperature) + ' °C');
END;
END;
//fNewOptim := contrainteCourante.Optimisation;
FOR i := 0 TO fOptimisation.NbContraintes - 1 DO
BEGIN
//On récupère la ième contrainte
contrainteCourante := fOptimisation.getContrainteDepuisListe(0);
ShowMessage('Le nom est :' + contrainteCourante.NomContrainte);
jinh68
Messages postés215Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 1 septembre 2006 3 août 2006 à 17:23
Ce n'est pas une superbe idée de poster tout un source, cela ne donne pas forcément envie de le lire. Analyse un peu ton problème, et sois plus concis, ça sera d'autant plus facile pour nous de t'aider efficacement ;).