22. januar 2010 - 12:42Der er
5 kommentarer og 1 løsning
StrToDate og Windows 7
Hej, For år tilbage har jeg lavet flere programmer der anvender funktionen StrToDate (skrevet i Delphi 7). Disse programmer har altid virket i Windows XP og Vista. Efter at have skiftet til Windows 7 virker det ikke??? Min Windows 7 er sat op til DK med datoformat 'dd-mm-yyyy'. Jeg har lavet et lille testprogram, der viser at det IKKE virker. Programmet er skrevet i Delphi 2009.
procedure TForm1.Button1Click(Sender: TObject); Var D: String; DD: TDateTime; begin D:='12-04-2003'; DD:=StrToDate(D); end;
procedure TForm1.FormCreate(Sender: TObject); begin Application.UpdateFormatSettings:=false; ShortDateFormat:='dd-mm-yyyy'; end;
Jeg får fejlmeddelelsen '12-04-2003' is not a valid date.
Uden Procedure FormCreate kan jeg detektere at Delphi har ShortDateFormat 'M/d/yyyy'. Hvis jeg skriver D:='4/12/2003' virker det!!
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
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"
>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.
>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)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.