On Mon, 4 Jul 2016, Larry Dalton wrote:
I use the following function to read a date from a Libre Office dbase file.
The field is stored as
a string, ie '04/08/2016'.
function db_date(const dog_base:tdbf;const t_field:string):tdatetime;
var test_date:tdatetime;
test_bool:boolean;
test_string:string;
begin {starts function db_date(const dog_base:tdbf;const
t_field:string):tdatetime;}
test_bool:=dog_base.FieldByName(t_field).Value<>null;
if test_bool then test_date:=dog_base.FieldByName(t_field).AsDateTime
else test_date:=now;
result:=test_date;
end; {ends function db_date(const dog_base:tdbf;const
t_field:string):tdatetime;}
I am running lazarus 1.6, on both Windows 8 and Linux Mint 17. The above
function works fine on the Windows 8 box, but on the Linux Mint box, I get
the following error: “04/08/2016” is not a valid date format. Why does it
work on Windows but not Linux? How can I rewrite it to work on both?
under linux, add the clocale unit to the uses clause of your project.
Make sure that the locale is set to the correct locale.
Alternatively, set
DefaultFormatSettings.ShortDateFormat:='dd/mm/yyyy';
DefaultFormatSettings.DateSeparator:='/';
at the start of your program or input routine.
Yet another way would be to use the scandatetime function
test_date:=scanDateTime('dd/mm/yyyy',dog_base.FieldByName(t_field).AsString);
See
http://www.freepascal.org/docs-html/rtl/dateutils/scandatetime.html
Michael.--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus-ide.org/listinfo/lazarus