Diman
Admin
 Admin
| Posts: 1482 |  | Karma: 19 |
|
Re:SEC_TO_TIME
|
|
Posted: 2007/09/12 23:31 |
|
|
|
|
Ясно, разобрался. Короче: - Delphi не поддерживает отрицательные значения времени. Если посмотреть как хранится время, то используются беззнаковые целые. - AnyDAC не ожидал таких значений 
Я поправил AnyDAC, что бы он не ругался и доносил значение с минусом до програмиста. Но DBGrid, DBEdit и т.д. будут отображать значение без минуса, но с правильной абсолютной величиной. ADExecutor же будет выводить время с минусом.
Изменения войдут в 2.0. Что бы AnyDAC не ругался, откройте daADPhysMySQL, найдите метод TADPhysMySQLCommand.MySQL2DataValue и там замените dtTime case на:
var
lNeg: Boolean;
....
dtTime:
begin
if ASrcData^ = '-' then begin
lNeg := True;
Inc(ASrcData);
end
else
lNeg := False;
ADStr2Int(ASrcData, 2, @wHour, SizeOf(Word), True);
ADStr2Int(ASrcData + 3, 2, @wMin, SizeOf(Word), True);
ADStr2Int(ASrcData + 6, 2, @wSec, SizeOf(Word), True);
PLongint(ADestData)^ := ADDateTime2Time(EncodeTime(wHour, wMin, wSec, 0));
// Delphi does not support negative time value, and TimeToStr for -0.123
// returns the same value as for 0.123
if lNeg then
PLongint(ADestData)^ := - PLongint(ADestData)^;
end;
|
|
|