![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия 2.86 [Delphi, Windows]
Vladimir Kladov © (2008-01-19 17:00:00)Новости от 19-Jan-2007 (KOL & MCK v2.86)
[*] KOL: символ условной компиляции TOOLBAR_FORCE_CHILDALIGN больше не
действует для Win98 т.к. может там приводит к краху приложения. При
создании совместимых с Win9x приложений, избегайте размещения на
инструментальной линейке выравниваемых дочерних контролов.
[+] Добавлены метод TWStrList.Last и функция WCharIn. В методе
TWStrList.MergeFromStream, обеспечивается удаление ведущего символа
$FEFF при загрузке текста Unicode из файла. В методе
TWStrList.SetText, обеспечивается терминирующий символ 0.
[*] UNICODE_CTRLS: может теперь комбинироваться с символом USE_PROP
(константы ID_SELF и ID_PREVPROC объявлены как KOLString).
[-] Для UNICODE_CTRLS, исправлено свойство TOpenDirDialog.InitialPath.
[+] Добавлены функции: Scrollbar_GetMinPos, Scrollbar_SetMinPos,
Scrollbar_SetAll, Scrollbar_GetMaxPos, Scrollbar_SetMaxPos,
Scrollbar_GetCurPos, Scrollbar_SetCurPos, Scrollbar_SetPageSz,
Scrollbar_GetPageSz, Scrollbar_SetLineSz, Scrollbar_GetLineSz - для
использования вместе с модулем ToGRush в дуальном коде.
[*] IndexOfChar, IndexOfStr изменены и понимают #0 как обычный символ,
не обязательно завершающий строку.
[-] MCK: при генерации кода для установки нестандартного цвета (Color)
добавлено приведение типа для предотвращения выдачи предупреждения
компилятором.
[-] Дл случаев, когда CanResize = false или запрещены иконки
минимизации и/или максимизации формы, так же окну отправляется
сообщение WM_INITMENU, что обеспечивает корректное запрещение
соответствующих пунктов системного меню.
[+] Свойство LikeSpeedButton обеспечено для зеркальных контролов
TKOLCheckBox, TKOLRadioBox, и теперь может быть обеспечено для любого
потомка TKOLCustomControl простым перечислением свойства в списке
публикуемых.
[*] Обновлены компоненты TKOLGif, TKOLPng.
MTsv DN (2008-03-24 07:35:00) [1]Еще один вопрос.
А чем собственно результат IndexOfChar(S, Chr)отличается от Pos(Chr, S)? Или я чего-то недопонимаю?
В любом случае, в 2.87 IndexOfCharне работает с UNICODE.
MTsv DN (2008-03-23 16:35:00) [2]Вообще функция IndexOfChar как то странно поддержку UNICODE осуществляет...
function IndexOfChar( const S : KOLString; Chr : KOLChar ) : Integer;
var P, F : PChar;
begin
P := PChar( S );
{$IFDEF INPACKAGE}
F := StrScan( P, Chr );
{$ELSE}
F := StrScanLen( P, Chr, Length( S ) );
{$ENDIF}
Result := -1;
if (F = nil) or (S = '') then Exit;
Result := Integer( F ) - Integer( P )
{$IFDEF INPACKAGE} + 1 {$ENDIF};
if {(Result > Length(S)) or} (S[ Result ] <> Chr) then
Result := -1;
end;
Кроме объявления ничего и нет. В самом начале строка S - WideString приводится к PChar...да и потом Ansi-версия StrScanLen откуда-то взялась...
MTsv DN (2008-03-23 16:22:00) [3]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...
MTsv DN (2008-03-23 16:16:00) [4]Vladimir Kladov © (21.03.08 18:45) [28]
>
> Версия 2.87:
Владимир, подключите UNICODE_CTRLS. У меня 8 ошибок сразу выпало...
MTsv DN (2008-03-21 19:43:00) [5]> Не пропал. Не дождётесь.
Гы...
Vladimir Kladov (2008-03-21 18:45:00) [6]Не пропал. Не дождётесь.
Версия 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).
mdw (2008-03-21 12:46:00) [7]Что-то Владимир пропал.
Вот еще баг нашел. Не понятно только, как вообще раньше работало, и долго уже....
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;
....
Rocket (2008-02-24 20:55:00) [8]Баг: asm-версия IndexOfStr зацикливается если в S нет Sub. С паскаль-версией всё нормально, возвращает -1.
=BuckLr= (2008-02-11 19:49:00) [9]У меня нормально обновилось с 2,85 на 2,86
shin (2008-02-11 19:13:00) [10]Если обновлять от скаченного KOL&MCK-2.80до 2.86, то на последнем апдейте kolmck285to286.updне обновляется mckCtrls.pas, говорит об ошибке
Barloggg (2008-02-04 15:00:00) [11]странно. при попытке распарсить пустую строку бабахает. очень странно. а дома работает.
mdw (2008-01-30 18:13:00) [12]Заметил небольшой баг в 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;
Jon (2008-01-30 02:37:00) [13]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).
Barloggg (2008-01-29 12:48:00) [14]и, кстати даты на сайте не обновлены. это я про KOLGIF KOLPNG.
Перечитал внимательно новости. хм. KOLZLIB тоже обновлен. Хорошо, значит из моих слов актуально только про kol.pas
Barloggg (2008-01-29 12:37:00) [15]о, гм, вижу запись об обновлении KOLPNG :)
Barloggg (2008-01-29 12:36:00) [16]в KOL.pas много раз встречается несостыковка
в interface стоит
{$IFNDEF STREAM_COMPAT} const {$ENDIF}
а в implementation стоит
const
без скобок.
строки
25169
25204
25242
25267
25635
бяка всплыла при использовании KOLPNG которая в свою очередь использует KOLZLIB в которой сопсно и используются эти недопереписанные строки.
кстати в сам KOLZLIB надо тогда внести эти директивы компиляции если уж руководствоватсья такой логикой.
D[u]fa (2008-01-29 12:08:00) [17]дык наверное нет директивы на тот случай если юзаете 20 фпц а не 21
_vadim (2008-01-29 10:00:00) [18]Тогда поправка к моему предыдущему постингу. :)
Файл kol.pas не править, а в файл koldef.inc добавить DEFINE:
{$DEFINE FPC}
{$DEFINE FPC21}
{$DEFINE VER2}
Vladimir Kladov (2008-01-28 15:19:00) [19]Символы условной компиляции для того и придуманы, чтобы их можно было задавать не модифицируя исходный файл. В опциях проекта, например, или в командной строке компилятора. FPC21 отличается от FPC из-за бага в FPC2.0, который был исправлен в 2.1. Соответственно, надо ставить оба символа в FPC выше 2.0.
_vadim (2008-01-28 09:47:00) [20]Если кому интересно.
Версия 2.86 нормально компилируется в FreePascal вот с такой доработкой:
1. В файле koldef.inc:
- перед строчками
{$IFDEF FPC}
{------------------------------------
by Thaddy de Koning:
поставить
{$DEFINE FPC}
{$DEFINE VER2}
(Рекомендую работать именно с FreePascal версии 2)
В результате получается:
{$DEFINE FPC}
{$DEFINE VER2}
{$IFDEF FPC}
{------------------------------------
by Thaddy de Koning:
2. В файле kol.pas, в той строчке, которую указал Jon:
fDefWndProc := {$ifdef FPC21}@{$endif}Params.WindowClass.lpfnWndProc;
изменить {$ifdef FPC21} на {$ifdef FPC}:
fDefWndProc := {$ifdef FPC}@{$endif}Params.WindowClass.lpfnWndProc;
Теперь у меня компилируется без ошибок.
Но с кучей варнингов... :)
Компилятор FPC 2.2.0.