Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "KOL";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
3-1999
PavelOKES
2004-01-08 10:46
2004.02.02
Список алиасов


3-2017
Ермек
2004-01-06 17:57
2004.02.02
помогите с генератором


7-2400
Pirate
2003-11-15 18:38
2004.02.02
Надо програмным путём сделать Shut Down компа. КАК?


14-2325
wl
2004-01-11 13:27
2004.02.02
TChart + zoom


6-2255
Интересующийся
2003-11-26 01:43
2004.02.02
TServerSocet и TClientSocet





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский