Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: CL | DM;

Вниз

Пара новых багов   Найти похожие ветки 

 
Vadim Petrov   (2003-05-16 13:07) [0]

Вот нашел сегодня пару багов в KOL
1. Глючит Str2DateTimeFmt
При попытке вызова типа
=Str2DateTimeFmt("HH:mm:ss","12:20:00");

Как оказалось, причина в функции SystemTime2DateTime, пришлось поменять
if (wYear >= 1) and (wYear <= 9999) and (wMonth >= 1) and (wMonth <= 12) and
(wDay >= 1) and (wDay <= DayTable^[wMonth]) and
(wHour < 24) and (wMinute < 60) and (wSecond < 60) and (wMilliSeconds < 1000) then

на
if (wYear >= 0) and (wYear <= 9999) and (wMonth >= 0) and (wMonth <= 12) and
(wDay >= 0) and (wDay <= DayTable^[wMonth]) and
( wHour < 24)
Вот нашел сегодня пару багов в KOL
1. Глючит Str2DateTimeFmt
При попытке вызова типа
=Str2DateTimeFmt("HH:mm:ss","12:20:00");

Как оказалось, причина в функции SystemTime2DateTime, пришлось поменять
if (wYear >= 1) and (wYear <= 9999) and (wMonth >= 1) and (wMonth <= 12) and
(wDay >= 1) and (wDay <= DayTable^[wMonth]) and
(wHour < 24) and (wMinute < 60) and (wSecond < 60) and (wMilliSeconds < 1000) then

на
if (wYear >= 0) and (wYear <= 9999) and (wMonth >= 0) and (wMonth <= 12) and
(wDay >= 0) and (wDay <= DayTable^[wMonth]) and
(wHour < 24) and (wMinute < 60) and (wSecond < 60) and (wMilliSeconds < 1000) then


Плюс, после строки
I := wYear - 1;
добавил
if I<0 then i := 0;

2. Соответственно, сформированный таким образом DateTime неправильно отображался функцией DateTime2StrShort.
По аналогии с Time2StrFmt, первой строчкой добавил
if D < 1 then D := D + 1;


 
BaRToV   (2003-05-18 02:18) [1]

procedure TObj.Add2AutoFree(Obj: PObj);
begin
if fAutoFree = nil then
( 0, Obj ) [1] procedure TObj.Add2AutoFree(Obj: PObj);
begin
if fAutoFree = nil then
fAutoFree := NewList;
fAutoFree.Insert( 0, Obj );
fAutoFree.Insert( 0, Pointer( @TObj.Free ) );
end;

Хотелось бы добавить в TObj.Free:
Когда мы используем Add2AutoFree(xxx), и вызвали TObj.Free - чтоб ИЗ СПИСКА fAutoFree удалялся наш объект!!!


 
Кладов   (2003-05-18 08:50) [2]


> Когда мы используем Add2AutoFree(xxx), и вызвали TObj.Free
> - чтоб ИЗ СПИСКА fAutoFree удалялся наш объект!!!

Откуда Free должен узнать, из какого именно списка AutoFree должен удаляться объект?


 
BaRToV   (2003-05-18 11:26) [3]

Ну тгода при удалении должна проверка стоять!!!
А то ошибка вывыливается...

{$ELSE} //Pascal
procedure TObj.Final;
var I: Integer;
Proc: TObjectMethod;
begin
if Assigned( fOnDestroy ) then
begin
fOnDestroy( @Self );
fOnDestroy := nil;
end;
if fAutoFree <> nil then
begin
for I := 0 to fAutoFree.Count div 2 - 1 do
begin
if TObj <> nil then
begin
TMethod( Proc ).Code := fAutoFree.fItems[ I * 2 ];
TMethod( Proc ).Data := fAutoFree.fItems[ I * 2 + 1 ];
Proc;
end;
end;
( fAutoFree.fItems[ I ] ) [3] Ну тгода при удалении должна проверка стоять!!!
А то ошибка вывыливается...

{$ELSE} //Pascal
procedure TObj.Final;
var I: Integer;
Proc: TObjectMethod;
begin
if Assigned( fOnDestroy ) then
begin
fOnDestroy( @Self );
fOnDestroy := nil;
end;
if fAutoFree <> nil then
begin
for I := 0 to fAutoFree.Count div 2 - 1 do
begin
if TObj <> nil then
begin
TMethod( Proc ).Code := fAutoFree.fItems[ I * 2 ];
TMethod( Proc ).Data := fAutoFree.fItems[ I * 2 + 1 ];
Proc;
end;
end;
//PObj( fAutoFree.fItems[ I ] ).Free;
fAutoFree.Free;
fAutoFree := nil;
end;
end;
{$ENDIF}


 
Кладов   (2003-05-18 16:20) [4]


> if TObj <> nil then
>

А еще что?


 
BaRToV   (2003-05-18 16:54) [5]

2 Кладов (18.05.03 16:20)

> А еще что?
Ушло почтой...




Страницы: 1 вся ветка

Текущий архив: 2004.02.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
7-2386
Duk_777
2003-11-08 21:31
2004.02.02
Как отключить показ программы при нажатии alt+tab


14-2273
Kviz
2004-01-07 14:44
2004.02.02
Вот собрался новый мониторчик ЖК брать, прошу помощи.


3-2033
Term
2004-01-05 11:40
2004.02.02
Проблемы с фильтрациией по дате с помошью компонентов Halcyon...


1-2110
Натуся
2004-01-19 21:21
2004.02.02
Doule в string


3-1988
Алексеюшка
2004-01-08 13:19
2004.02.02
Не сохраняются изменения на сервере