amanabkrim
Messages postés1Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention18 mai 2010
-
18 mai 2010 à 22:12
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 2013
-
19 mai 2010 à 14:33
salut tout le monde....
j'ai une procédure sous delphi7 qui vérifiée (6 conditions successives et j'ai utilise la porte logique {AND}; le problème est que lors de l'exécution par fois le programme marche bien, mais pour une notre exécution il saute certains conditions et ainsi de suite,,,,est ce qu'il une solution pour décomposer ces conditions ou bien un ordre d'exécution dans le bloc {IF}?
voici le bloc "if":
procedure TForm12.SpeedButton1Click(Sender: TObject);
begin
DM.Tordrem.Edit;
DM.TordremH_dej1.Value:=StrToTime('11:00:00');
DM.TordremH_dej2.Value:=StrToTime('14:00:00');
DM.Tordrem.Post;
///****************Frais Déjeuner Pour Les Cadres (Jour=0)************************
if (StrToInt(DBEdit10.Text)>50 )THEN
BEGIN
IF (CompareTime(DM.TordremH_Dep.Value,DM.TordremH_dej1.Value)=-1)
AND (CompareTime(DM.TordremH_Ret.Value,DM.TordremH_dej2.Value)=1)
AND (DM.TordremP_Jour.Value=0)
AND (DM.TordremTyp_Mission.Value='Commandée')
AND (DM.TordremPrise_Charge.Value='NON')
AND (DM.TordremCategorie.Value='CADRE')
AND ((DM.TordremMoyen_Transp.Value='Véhicule Personnel')OR (DM.TordremMoyen_Transp.Value='Véhicule NAFTAL'))
then
begin
DM.Tordrem.Edit;
DBEdit16.Text:=IntToStr(600);
DM.Tordrem.Post;
end;
END
ELSE
begin
DM.Tordrem.Edit;
DBEdit16.Text:=IntToStr(0);
ShowMessage('Pas De Frais Déjeuner Pour Cette Mission..');
DM.Tordrem.Post;
end;
cette procédure est repetée pour la catégorie 'MAITRISE' et 'EXECUTION' (Différence de frais de mission)
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 19 mai 2010 à 14:33
Salut.
Quelques remarques :
1) "Delphi saute certaines conditions" : Delphi traite toujours les conditions dans l'ordre, et si tu n'as pas modifié les directives de compilation par défaut, il arrête de tester les conditions AND dès qu'une condition n'est pas remplie (=false).
2) Tu fais des comparaisons (=) sur des chaines de caractères : es-tu certain que ces chaines soient toujours écrites de la même façon ("Véhicule Personnel" <> "véhicule personnel" <> "Vehicule Personnel").
3) Entre un Edit et un Post, ce n'est pas la propriété Text du DBEdit qu'il faut modifier, mais directement la valeur du champ.