Boucle While do sans fin [Résolu]

Messages postés
270
Date d'inscription
mercredi 14 avril 2004
Dernière intervention
5 mai 2015
- - Dernière réponse : codial
Messages postés
270
Date d'inscription
mercredi 14 avril 2004
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
24 septembre 2008
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Loulibier
Messages postés
163
Date d'inscription
dimanche 20 octobre 2002
Dernière intervention
31 juillet 2008
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de exyacc
Messages postés
270
Date d'inscription
mercredi 14 avril 2004
Dernière intervention
5 mai 2015
0
Merci
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
Commenter la réponse de codial
Messages postés
270
Date d'inscription
mercredi 14 avril 2004
Dernière intervention
5 mai 2015
0
Merci
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
Commenter la réponse de codial
Messages postés
163
Date d'inscription
dimanche 20 octobre 2002
Dernière intervention
31 juillet 2008
0
Merci
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
Commenter la réponse de exyacc
Messages postés
270
Date d'inscription
mercredi 14 avril 2004
Dernière intervention
5 mai 2015
0
Merci
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
Commenter la réponse de codial

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.