Bonjour,

je tente peut être de réinventer la roue , dans ce cas merci de me le signaler.

Je voudrai à partir d'une date formatée (par exemple sous la forme ddd dd mmm yyyy soit Lun. 2 Juil. 2018) récupéré la dite date

j'ai donc écrit cette fonction
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
function FormatedDateToDate(Format,FormatedDate : String) : TDate;
   var i : Word;
   begin
//   try
     for I := 1 to 7 do
     begin
      S:=StringReplace(S,FormatSettings.ShortDayNames[i],'',[rfReplaceAll,rfIgnoreCase]);
      S:=StringReplace(S,FormatSettings.LongDayNames[i],'',[rfReplaceAll,rfIgnoreCase]);
     end;
     for I := 1 to 12 do
       begin
         S:=StringReplace(S,FormatSettings.ShortMonthNames[i],FormatSettings.DateSeparator+i.ToString+FormatSettings.DateSeparator,[rfReplaceAll,rfIgnoreCase]);
         S:=StringReplace(S,FormatSettings.LongMonthNames[i],FormatSettings.DateSeparator+i.ToString+FormatSettings.DateSeparator,[rfReplaceAll,rfIgnoreCase]);
       end;
 
     Result:=StrToDateDef(S,-1);
//    except
//    end;
   end;
si elle fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
procedure TForm15.Button1Click(Sender: TObject);
var S,Format : String;
    ADate : TDate;
begin
 Format:='ddd dd mmm yyyy';
 S:=FormatDateTime(Format,Date);
 Showmessage(s);
 ADate:=FormatedDateToDate(Format,S);
 if ADate>=0 then Label1.Text:=FormatDateTime(FormatSettings.ShortDateFormat,ADate);
end;
je voudrai quand même l'étendre à plus de possibilités
quelques tests avec d'autres format fonctionnent aussi 'dd mmm yy','dd/mm/yy','dddd dd mmmm e','dd/mm' ...
et certains formats comme 'ddd dd mmm' non (celui là c'est normal, j'ai un / en trop à la fin)

mais elles ont toutes l'obligation d'être sous la forme jour mois <an>
J'ai fait quelques tentatives avec StrToDate(string,TFormatSettings) mais sans succès (si quelqu'un peut m'expliquer )

en gros j'ai testé ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
AFormatSettings : TFormatSettings;
ADate : TDate;
...
AFormatSettings:=TFormatSettings.Create();
AFormatSettings.LongDateFormat:='ddd dd mmm yyyy'; 
ADate:=StrToDate(FormatDateTime(AFormatSettings.LongDateFormat,Date);