Delphi saute certains conditions

amanabkrim Messages postés 1 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 18 mai 2010 - 18 mai 2010 à 22:12
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 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)

merci pour votre aide....

1 réponse

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
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.

A +
Thierry
0
Rejoignez-nous