-
и, кстати даты на сайте не обновлены. это я про KOLGIF KOLPNG.
Перечитал внимательно новости. хм. KOLZLIB тоже обновлен. Хорошо, значит из моих слов актуально только про kol.pas
-
Bug found with ListView. ListView.OnMouse up does not respond to button up messages. Instead it responds to mouse double click messages. Here is a simple demonstration: program test;
uses
KOL;
var
Counter: Integer;
procedure ListViewMouseUp(Dummy: Pointer; Sender: PControl; var Mouse: TMouseEventData);
begin
Applet.Caption := Int2Str(PControl(Sender).LVCurItem);
end;
begin
Applet := NewForm(nil,'Test');
with NewListView(Applet,lvsDetail,[lvoGridLines,lvoRowSelect],nil,nil,nil)^ do
begin
SetAlign(caClient);
LVColAdd('Column 1',taCenter,200);
LVColAdd('Column 2',taCenter,200);
LVColAdd('Column 3',taCenter,200);
OnMouseUp := TOnMouse(MakeMethod(nil,@ListViewMouseUp));
Counter := 0;
repeat
LVItemAdd(Int2Str(Counter));
Inc(Counter);
until Counter = 100;
end;
Run(Applet);
end. Tested in ASM and PAS version (D7 WinXP).
-
Заметил небольшой баг в MCK для меню с OwnerDraw := TRUE; свойство OwnerDraw := TRUE; устанавливается только для меню верхнего уровня, а вот для подменю нет. Пока исправил так (жирным - то что добавил):
procedure TKOLMenuItem.SetupAttributesLast(SL: TStringList; const MenuName: String); var I: Integer; MI: TKOLMenuItem; begin if FownerDraw then SL.Add( ' ' + MenuName + '.Items[ ' + IntToStr( ItemIndex ) + ' ].OwnerDraw := TRUE;' );
for I := 0 to Count - 1 do begin MI := SubItems[ I ]; MI.SetupAttributesLast( SL, MenuName ); end; end;
-
странно. при попытке распарсить пустую строку бабахает. очень странно. а дома работает.
-
Если обновлять от скаченного KOL&MCK-2.80 до 2.86, то на последнем апдейте kolmck285to286.upd не обновляется mckCtrls.pas, говорит об ошибке
-
У меня нормально обновилось с 2,85 на 2,86
-
Баг: asm-версия IndexOfStr зацикливается если в S нет Sub. С паскаль-версией всё нормально, возвращает -1.
-
Что-то Владимир пропал.
Вот еще баг нашел. Не понятно только, как вообще раньше работало, и долго уже....
procedure TWStrList.SetText(const Value: WideString); .... L := (Length( Value ) + 1) * Sizeof( WideChar ); GetMem( fText, L ); System.Move( Value[ 1 ], fText^, L );
fText[ L+1 ] := #0; // Вот здесь падает, что и не удивительно, т.к #0 заносится куда-то в двое дальше длины строки
fTextBufSz := Length( Value ); ....
Предлагаю такое исправление: procedure TWStrList.SetText(const Value: WideString); .... fTextBufSz := Length( Value ); L := (fTextBufSz + 1) * Sizeof( WideChar ); GetMem( fText, L ); System.Move( Value[ 1 ], fText^, L ); fText[ fTextBufSz ] := #0; ....
-
Не пропал. Не дождётесь. Версия 2.87: Новости от 21марта 2008 (KOL & MCK v2.87)
[+] Добавлены функции NextPowerOf2, ToRadix, FromRadiStr,
InsertSeparators, Str2File.
[*] UNICODE_CTRLS: обновлены функции IndexOfChar, IndexOfCharsMin,
IndexOfStr (с использованием типа KOLString).
[+] Добавлены функции CrackStack_MapInResource и CrackStack_MapInFile
(могут использоваться при отладке).
[-] Исправлена функция NormalizeUnixText.
[-] Свойство TStream.Size исправлено для memory stream для случая
присваивания значения 0 пустому потоку данных.
[+] Исправлена функция TWStrList.SetText (by mdw).
-
> Не пропал. Не дождётесь. Гы...
-
Vladimir Kladov © (21.03.08 18:45) [28] > > Версия 2.87: Владимир, подключите UNICODE_CTRLS. У меня 8 ошибок сразу выпало...
-
1. function CrackStack_MapInResource( const MapName: String; Max_length: Integer; HandleSuspiciousAddresses: Boolean ): String; Строка: Resource2Stream( MapStrm, hInstance, PChar( MapName ), RT_RCDATA ); 2е ошибки: несоответствие типов Char и WideChar... Еще насколько я понимаю надо в функции, String на KOLString заменить...
2. function ToRadix( number: Radix_Int; radix: Integer; min_digits: Integer ): KOLString; Ошибка: несовпадает объявление.
3. function InsertSeparators( const s: KOLString; chars_between: Integer; Separator: KOLChar ): KOLString; Ошибка: несовпадает объявление.
4. function IndexOfChar( const S : KOLString; Chr : KOLChar ) : Integer; Строка: F := StrScanLen( P, Chr, Length( S ) ); Ошибка: несоответствие типов Char и WideChar...
-
Вообще функция IndexOfChar как то странно поддержку UNICODE осуществляет... function IndexOfChar( const S : KOLString; Chr : KOLChar ) : Integer;
var P, F : PChar;
begin
P := PChar( S );
F := StrScan( P, Chr );
F := StrScanLen( P, Chr, Length( S ) );
Result := -1;
if (F = nil) or (S = '') then Exit;
Result := Integer( F ) - Integer( P )
+ 1 ;
if (S[ Result ] <> Chr) then
Result := -1;
end; Кроме объявления ничего и нет. В самом начале строка S - WideString приводится к PChar...да и потом Ansi-версия StrScanLen откуда-то взялась...
-
Еще один вопрос.
А чем собственно результат IndexOfChar(S, Chr) отличается от Pos(Chr, S)? Или я чего-то недопонимаю?
В любом случае, в 2.87 IndexOfChar не работает с UNICODE.
|