Et si tu faisais l'inverse : 22/02/2024 + 301 jours = ?
Peut-être que l'erreur (flagrante) te sautera aux yeux
Et si tu faisais l'inverse : 22/02/2024 + 301 jours = ?
Peut-être que l'erreur (flagrante) te sautera aux yeux
Le lundi n'est jamais mon jour (jour kiné), surtout l'après-midi.
J'ai fini par prendre le temps de tester ce que j'ai pu écrire comme c...s en ouvrant Delphi (bon évidemment pas D6, j'aurais pu D3 mais la flemme).
résultat
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
30
31
32
33
34
35
36
37
38
39 uses DateUtils; procedure TForm1.Button1Click(Sender: TObject); var d : TDate; moisencours, i, JoursRestants : integer; DatesLimite: array [1..12] of TDate; procedure chargerdates; const Dates ='24/01/2024,27/02/2024,21/03/2024,23/04/2024,23/05/2024,21/06/2024,'+ // j'ai changé la date de février pour test du jour de paiement '24/07/2024,23/08/2024,23/09/2024,24/10/2024,22/11/2024,20/12/2024'; var SL : TStringList; I : Integer; begin SL:=TStringlist.Create; try SL.CommaText:=Dates; for I := 0 to 11 do DatesLimite[i+1]:=StrToDate(SL[i]); finally SL.Free; end; end; begin ChargerDates; Memo1.Lines.Clear; moisencours:=MonthOf(Date); for i:=1 to 12 do begin d:=Dateslimite[i]; if (monthOf(d)>moisencours) OR (d>Date) then begin JoursRestants := DaysBetween(date,d); Memo1.Lines.Add(Format('Il reste %d jours jusqu''au %s.', [JoursRestants, FormatDateTime('dd/mm/yyyy',Dateslimite[i])])); end else Memo1.Lines.Add('Paiement échu le '+FormatDateTime('dd/mm/yyyy',d)); end; end;
Paiement échu le 24/01/2024
Paiement échu le 27/02/2024
Il reste 23 jours jusqu'au 21/03/2024.
Il reste 56 jours jusqu'au 23/04/2024.
Il reste 86 jours jusqu'au 23/05/2024.
Il reste 115 jours jusqu'au 21/06/2024.
Il reste 148 jours jusqu'au 24/07/2024.
Il reste 178 jours jusqu'au 23/08/2024.
Il reste 209 jours jusqu'au 23/09/2024.
Il reste 240 jours jusqu'au 24/10/2024.
Il reste 269 jours jusqu'au 22/11/2024.
Il reste 297 jours jusqu'au 20/12/2024.
Bonjour à Toutes et à tous,
@ Andnotor, à première vue en corrigeant ceci : j'ai un autre résultat pour avant la date, jour j mais pour après la date "il reste" devrait être "Echu depuis 5 jours".
@ SergioMaster, merci pour ton temps, je testerai cet après midi après mon baxter sinon demain matin.
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 procedure TForm1.Button1Click(Sender: TObject); var d : TDatetime; moisencours, i : integer; JoursRestants : integer; begin // Charger les dates depuis le fichier ChargerDatesDepuisFichier(chappli + 'dates.txt'); moisencours:=MonthOf(now); for i:=1 to 12 do begin d:=Dateslimite[i]; if monthOf(d)>= moisencours then begin //JoursRestants := DaysBetween(Now, d); JoursRestants := DaysBetween(Now, DatesLimite[MoisEnCours]) ; if JoursRestants=0 then Edcalcul.Text := 'Jour de paiement' else Edcalcul.Text := Format('Il reste %d jours jusqu''au %s.', [JoursRestants, FormatDateTime('dd/mm/yyyy',Dateslimite[Moisencours])]); end else Edcalcul.Text := 'Paiement échu'; end; end;
Bonne journée.
@+,
cincap
Bonjour à toutes et à tous,
@ SergioMaster, je viens de tester avec les dates reprises dans une variable "Const", je suppose que l'on pourra utiliser le fichier "Dates.txt" ?
Le résultat obtenu à la date de ce jour dans le Tmemo est uniquement ceci :
Décidément apparemment cela fonctionne sur ton Pc.Il reste 177 jours jusqu'au 23/08/2024.
Il reste 208 jours jusqu'au 23/09/2024.
Il reste 239 jours jusqu'au 24/10/2024.
Il reste 268 jours jusqu'au 22/11/2024.
Il reste 296 jours jusqu'au 20/12/2024.
Je chercherai encore tantôt en vérifiant sur une application test seine.
@+,
cincap
@ Andnotor,
Ta solution me parait très bien et en testant voici les erreurs constatées sur :
Ici :[Erreur] Unit1.pas(67): Expression constante attendue
[Erreur] Unit1.pas(68): Expression constante attendue
[Erreur] Unit1.pas(69): Expression constante attendue
[Erreur fatale] Project1.dpr(6): Impossible de compiler l'unité utilisée 'Unit1.pas'
@ SergioMaster merci de ta réponse et pour les valeurs dans Tmemo c'est voulu que le calcul de ce jour commence au 23/08/2024 ?.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 case CompareDate(Next, Date) of LessThanValue : Edcalcul.Text := Format('Paiement échu depuis %d jour(s)', [Days]); EqualsValue : Edcalcul.Text := 'Paiement aujoud''hui'; GreaterThanValue : Edcalcul.Text := Format('Paiement dans %d jour(s)', [Days]); end;
@+,
cincap
Ces trois constantes ne sont pas déclarées dans Types sous D6 ?
Mais tu peux les remplacer par respectivement -1, 0 et 1.
@ Andnotor, merci de ta correction, cela fonctionne correctement en changeant l'heure système du Pc pour test, chapeau bas pour ton aide.
Je vais refaire une petite fiche pour afficher le fichier "Dates.txt" et pouvoir le mettre à jour en 2025 si je suis toujours la !
Merci à tous pour les solutions et votre patience.
Je ferme ce topic.
@+,
cincap
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager