Bonjour,
Je crois que je vais devenir dingo ...
J'avais une petite fonction que je replace souvent dans mes programmes, qui permet de reformater les heures en fonction de la saisie plus ou moins respectueuse du format heure hh:ss, et surtout je ne voulais pas obliger les agents qui saisissent à aller chercher les ':' pour séparer heure et minute.
Cette fonction fonctionnait très bien et voilà que j'ai des petits soucis
Tout d'abord, à la ligne 13, si je ne met pas le stringreplace entre begin et end, l'instruction pour p2>0 correspondant à vrai ne s'exécutait pas ...?? pas compris mais en mettant begin ends; la ligne 15 s'exécute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 function reformateheure(s: string): string; var sheures, sminutes: string; p1, p2: integer; begin p1:=pos(':',s); p2:=pos('.',s); if p1=0 then begin if length(s)<2 then s:=formate(s,'0',2,0); if p2>0 then begin stringreplace(s,'.',':',[rfReplaceAll, rfIgnoreCase]); end else begin insert(':',s,length(s)-1); end; end; sheures:=copy(s,1,pos(':',s)-1); sminutes:=copy(s,pos(':',s)+1,2); if sheures='' then insert('0',s,1); if length(sminutes)<2 then s:=sheures+':'+formate(sminutes,'0',2,1); result:=s; end;
Mais, si s comporte un '.', et bien il n'est pas remplacé par les ':' comme cela devrait être.
En pas à pas, je passe bien par l'instruction de la ligne 15 mais la chaine s ressort identique ???
Auriez_vous une idée ? un truc dans le compilateur ?
Je précise que j'ai essayé cette fonction dans un programme test avec que un tedit, et ça fonctionne très bien !
J'en perd mon latin
merci d'avance
Partager