Главная страница
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.017 c
3-2005
New
2004-01-07 13:48
2004.02.02
Помогите с запросом


4-2418
Aleksandr
2003-11-25 13:39
2004.02.02
Как покрасить цвет текстка в Hint?


14-2312
hexone
2004-01-12 09:48
2004.02.02
Шрифт в редакторе Delphi


3-2021
dimkaaa
2004-01-06 16:07
2004.02.02
EOleException -


1-2156
OlegL
2004-01-21 17:03
2004.02.02
ComboBox