Главная страница
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.02 c
4-2407
Lin7
2003-11-23 20:08
2004.02.02
Выравнивание иконок на рабочем столе под XP


14-2351
Nick-From
2004-01-09 11:31
2004.02.02
Вред от компа людям, болеющим онкологическим заболеванием


7-2396
Demetrius2003
2003-11-16 13:11
2004.02.02
Как дебагнуть ДЛЛ???


1-2101
GRF
2004-01-19 20:37
2004.02.02
Как отобразить CHM-справку?


7-2398
Duk_777
2003-11-10 22:23
2004.02.02
Директивы компилятора