Para recuperarlo de la forma correcta de tu BBDD, lo único que necesitas es esto:
Código Delphi
[-]
Cells[4,i]:= FormatDateTime('dd/mm/yyyy',
SQLTres.FieldByName('kar_finicio').AsDateTime);
Para asignar una fecha a un campo usa:
Código Delphi
[-]
fechaInicio := StrToDateTime(Cells[4,i]);
sqltres.FieldByName('kar_finicio').AsDateTime := fechaInicio;
El punto está en usar "
.AsDateTime := " dejando que delphi resuelva el formato con tu BBDD. Tú te quitas de problemas.
Tarde o temprano, necesitarás pedir un listado por rango de fechas, en ese caso, haz lo mismo, que delphi se encargue de traducir las fechas:
Código Delphi
[-]
query.sql.text := ' select * from tabla where kar_finicio >= :fInicio';
query.Parambyname('fInicio').AsDateTime := StrToDateTime(Cells[4,2]);
Saludos