har du ikke mulighed for at udskrive "Datetime Now", så du evt. kan se om det er den rigtige dato-format. Måske skrives det med "/" istedet for "-" eller også godtager den måske ikke "04" men istedet "4"
Der kan være mange små fiduser i det her.
Mvh. Nicolai
Hej
Dit problem ligger i din definition af TIDSFORMATET.
Se lidt på kommndoerne
ShortDateFormat / LongDateformat
finder du årsagen.
Held og lykke
(Er på job nu - derfor det lidt korte svar- middagspause..)
KRIS
>Flope & snestrup. Tak for svar, men det løser ikke rigtigt mit problem. Jeg har en fornemmelse af at jeg skal skive noget kode der finder ud af hvilket datoformat Delphi bruger og konvertere mine datoer til det format.
Du skal bare sige please til Delphi !
Demo:
program dfmt;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
fmt : TFormatSettings;
begin
fmt.DateSeparator := '-';
fmt.ShortDateFormat := 'dd mm yyyy';
writeln(datetostr(strtodate('12-04-2003', fmt)));
fmt.DateSeparator := '/';
fmt.ShortDateFormat := 'm d yyyy';
writeln(datetostr(strtodate('4/12/2003', fmt)));
readln;
end.
>alle: Tak for svar.
>arne_v: Dit eksempel virker ikke? Output bliver det samme i begge tilfælde, nemlig 4/12/2003. Jeg tror mere at inkompabiliteten ligger i windows 7. Jeg har imidlertid skrevet noget kode, der virker i alle windows/Delphi systemer:
procedure TForm1.Button1Click(Sender: TObject);
Var
D: String;
DD: TDateTime;
begin
D:='12-04-2003';
DD:=ConvertDKDate(D);
Label1.Caption:=DateToStr(DD);
ShortDateFormat:='dd-mm-yyyy';
Label2.Caption:=DateToStr(DD);
end;
Function TForm1.ConvertDKDate(DKDate: String): TDateTime;
Var
DD, MM, YYYY: Integer;
Begin
DD:=StrToInt(Copy(DKDate, 1, 2));
MM:=StrToInt(Copy(DKDate, 4, 2));
YYYY:=StrToInt(Copy(DKDate, 7, 4));
ConvertDKDate:=EncodeDate(YYYY, MM, DD);
End;
At min kode udskriver det samme i begge tilfælder viser netop at den virker !!
strtodate kan parse det format man beder den parse.
(hvis du ikke kan lide det format datetostr skriver i, så tager den også en parameter 2 med format)