Boucle While do sans fin

Résolu
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 - 2 juin 2005 à 13:09
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 - 3 juin 2005 à 05:30
Bonjour à tous,

je vous soumets un bout de code car j'ai un problème compréhension et je galère. En effet la boucle en rouge et gras quand elle arrive au dernier enregistrement, elle devient sans fin et si je rajoute à la ligne while D1.tbl_res.fieldbyname('Code_Comp').asstring = lCode or not D1.tbl_res.Eof j'ai un message d'erreur; Type incompatible "String et Boolean".

while not D1.tbl_res.Eof do
begin
lCode: =D1.tbl_res.fieldbyname('Code_Comp').asstring;
StringsValides:=0;
Min:=0;
Sec:=0;
cent:=0;
while D1.tbl_res.fieldbyname('Code_Comp').asstring = lCode do
begin
inc(StringsValides);
STmp:=D1.tbl_res.fieldbyname('CO_Tp').asstring;
Min:=Min + StrToInt(Copy(STmp, 1, Pos(':', STmp) -1));
Delete(STmp, 1, Pos(':', STmp));
Sec:=Sec+StrToInt(Copy(STmp, 1, Pos(':', STmp) -1));
Delete(STmp, 1, Pos(':', STmp));
Cent := Cent + StrToInt(STmp);
D1.tbl_res.next; ==============> Boucle sans fin sur le dernier enregistrement ????
end;
Cent := Cent + Sec * 100 + Min * 6000;
Cent := Cent div StringsValides;
Sec := Cent div 100;
Cent := Cent mod 100;
Min := Sec div 60;
Sec := Sec mod 60;
// Enregistrement des moyenne
D1.tbl_Myn.insert;
D1.tbl_Myn.FieldByName('Code_Comp').asstring:= lCode;
D1.tbl_Myn.FieldByName('CO_Moyenne').asstring:=Format('%.1d:%.2d:%.2d', [Min, Sec, Cent]); //lblTemp;
D1.tbl_Myn.Post;
end;
showmessage('Mise à jour terminée.');

d'avance merci

Codial

6 réponses

Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
2 juin 2005 à 13:56
Je n'ai pas regardé tout ton code, mais il me semble que ton problème viens en fait que tu ne puisses pas mettre cette ligne : while D1.tbl_res.fieldbyname('Code_Comp').asstring = lCode or not D1.tbl_res.Eof

en fait pour ne pas avoir ton erreur de compilation il faut écrire :

while ( D1.tbl_res.fieldbyname('Code_Comp').asstring = lCode) or not D1.tbl_res.Eof do

Et la ton code compilera correctement...

Bonne Prog,

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
3
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
2 juin 2005 à 17:01
vi j'suis d'accord faut entourer ton OR avec parentheses, faut croire que le OR soit prioritaire au =...

et qd tu tapes : a=b or c=d , il fait peut etre a= (b or c) =d et
du coup il compare une string avec boolean....enfin peut etre... ;o)

exyacc
3
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
2 juin 2005 à 18:28
Bonsoir et merci pour les réponses:

En fait je me plantais lamentablement la bonne syntaxe c'est And au lieu de Or

while D1.tbl_res.fieldbyname('Code_Comp').asstring = lCode and not D1.tbl_res.Eof do

Cordialement

Codial
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
2 juin 2005 à 18:35
Re bonsoir:

Précision vos remarques sont justes car si j'enlève les parenthèses j'ai le message d'erreur: Type incompatible "String et Boolean".

Encore merci de me libérer de cette prise de tête !!!

Cordialement
0

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

Posez votre question
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
2 juin 2005 à 18:46
de toute facon, des que tu mets des AND ou OR, mets des parentheses,
car la t'as de la "chance" car tes donnees sont pas compatibles
(boolean et string) donc t'as eu une erreur...mais le pire c'est qd y'a
pas d'erreur de compilation et que ca merde dans les resultats
justement a cause du manque des parentheses...je dis ca par vecu.......
;o).

exyacc
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
3 juin 2005 à 05:30
Bonjour,

merci beaucoup du conseil j'en tiendrait compte. Venant du VB je débute avec Delphi aussi je perds beaucoup de temps sur ce genre de syntaxe.

Encore merci. Cordialement.

Codial
0
Rejoignez-nous