Конференция "KOL" » KOL v 3.00 [Delphi, Windows]
 
  • Dufa © (08.10.10 15:08) [80]
    Там надо добавить лишь "EV."
  • Vladimir Kladov © (08.10.10 22:56) [81]
    3.00.D
  • Vladimir Kladov © (08.10.10 23:22) [82]
    D:\KOL>"d:\delphi2010\embarcadero\Rad Studio\7.0\bin\dcc32.exe" -b -dUSE_MHTOOLT
    IP KOL.pas
    Embarcadero Delphi for Win32 compiler version 21.0
    Copyright (c) 1983,2009 Embarcadero Technologies, Inc.
    KOLDEF.INC(253)
    KOLDEF.INC(253)
    delphidef.inc(48)
    delphicommctrl.inc(1569)
    KOL_ansi.inc(2317)
    KOLMHToolTip.pas(944)
    KOLMHToolTip.pas(944)
    KOLMHToolTip.pas(944)
    KOLMHToolTip.pas(944)
    KOLMHToolTip.pas(944)
    MCKfakeClasses200x.inc(51)
    KOL_ansi.inc(2317)
    KOLMHToolTip.pas(944)
    KOLMHToolTip.pas(944)
    KOL_ASM.inc(15344)
    KOL.pas(63794)
    92540 lines, 1.25 seconds, 233183 bytes code, 68512 bytes data.

  • Jon © (09.10.10 00:45) [83]

    > Event OnDropFiles not working too.


    > Там надо добавить лишь "EV."


    No, the event does not fire. Tested with v3.00d too.
  • Jon © (09.10.10 01:11) [84]
    Sorry Vladimir, v3.00d does not compile with UNICODE_CTRLS:


    dcc32.exe -b -dUNICODE_CTRLS KOL.pas

    Borland Delphi Version 15.0
    Copyright (c) 1983,2002 Borland Software Corporation
    KOLDEF.INC(253)
    KOLDEF.INC(253)
    delphidef.inc(48)
    delphicommctrl.inc(1569)
    KOL_unicode.inc(1185)
    KOL_unicode.inc(1185)
    KOL.pas(19674) Error: Incompatible types: 'WideChar' and 'Char'
    KOL.pas(19896) Error: Incompatible types: 'WideChar' and 'Char'
    KOL.pas(19899) Error: Incompatible types: 'WideChar' and 'Char'
    KOL.pas(19902) Error: Incompatible types: 'WideChar' and 'Char'
    KOL_ASM.inc(2158) Error: Declaration of 'TextArea' differs from previous declaration
    KOL_ASM.inc(2164) Error: Undeclared identifier: 'TextExtent'
    KOL_ASM.inc(2451) Error: Identifier redeclared: 'Int2Hex'
    KOL_ASM.inc(2534) Error: Previous declaration of 'Hex2Int' was not marked with the 'overload' directive
    KOL_ASM.inc(2586) Error: Identifier redeclared: 'Int2Str'
    KOL_ASM.inc(15344)
    KOL.pas(63794)

  • Jon © (09.10.10 01:37) [85]
    Which version of KOLMHToolTip.pas are you using?
    Here is the latest: http://zalil.ru/29788607
    Can you add the correct one to the KOL release package please.
  • MTsv DN (09.10.10 13:26) [86]
    Версия 3.00.D
    ОШИБКИ ПРИ КОМПИЛЯЦИИ ПРОЕКТА


    mckCtrls.pas
    1.
    SL.Insert( IndexOfBeginLine, 'const ToolbarButtonsArray_' + Name + ': array[' +
              '0..' + IntToStr(Buttons_Count-1) + '] of PKOLChar = (' +
              Buttons_List + ');');



    KOL_ASM.inc
    1.
    procedure TCanvas.TextArea(const Text: KOLString; var Sz: TSize;
     var P0: TPoint);


    2.
    function Int2Hex( Value : DWord; Digits : Integer ) : KOLString;


    3.
    function Hex2Int( const Value : KOLString) : Integer;


    4.
    function Int2Str( Value : Integer ) : KOLString;



    KOL.PAS
    1.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal (mixed)
    function Int2Hex( Value : DWord; Digits : Integer ) : KOLString;


    2.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal
    function Hex2Int( const Value : KOLString) : Integer;


    3.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal
    function Int2Str( Value : Integer ) : KOLString;


    Другие ошибки
    1.
    procedure TForm1.KOLFormFormCreate(Sender: PObj);
    begin
    // Clear работает для этих элементов
    ListView1.Clear;
    ComboBox1.Clear;
    TreeView1.Clear;
    Toolbar1.Clear;

    // Clear НЕ работает для этих элементов, т.к. aClear = nil
    RichEdit1.Clear;
    Memo1.Clear;
    EditBox1.Clear;
    Label1.Clear;
    ListBox1.Clear;
    end;



    ВОПРОСЫ
    1. Зачем в StrReplace сделали KOLString? Для этих целей есть KOLStrReplace?
  • Vladimir Kladov © (09.10.10 14:28) [87]
    3.00.F

    Зачем в StrReplace сделали KOLString? Для этих целей есть KOLStrReplace? Автоматически. Слишком много было предупреждений от D2010. Вернул.

    По поводу MHToolTip. Новую версию я выложил. Просьба к авторам дальнейших версий учесть, что блок {$IFDEF interface} был изменен на {$IFDEF interface_part}.
  • Dufa © (09.10.10 14:36) [88]
    Может v3.00.E?

    Владимир, внесите фикс для 32битных битмапов, чтоб не терялся альфа канал. Давно писал об этом, а фикса все нету...


    function _GetDIBPixelsTrueColorWithAlpha( Bmp: PBitmap; X, Y: Integer ): TColor;
    var
     Pixel: DWORD;
     RGB:   TRGBQuad;
    begin
     Pixel := PDWORD( Integer(Bmp.fScanLine0) + Y * Bmp.fScanLineDelta +
                      X * Bmp.fBytesPerPixel )^ and $FFFFFFFF;
     RGB := TRGBQuad(Pixel);
     Swap(RGB.rgbBlue, RGB.rgbRed);
     Result := TColor( RGB );
    end;

    ...
    function TBitmap.GetDIBPixels(X, Y: Integer): TColor;
    ...
         pf32bit:
           begin
             fPixelsPerByteMask := 1;
             fBytesPerPixel := 4;
             fGetDIBPixels := _GetDIBPixelsTrueColorWithAlpha;
           end;
    ...

    procedure _SetDIBPixelsTrueColorWithAlpha(Bmp: PBitmap; X, Y: Integer; Value: TColor);
    var RGB: TRGBQuad;
       Pos: PDWord;
    begin
     RGB := TRGBQuad(Value);
     Swap(RGB.rgbBlue, RGB.rgbRed);

     Pos := PDWORD( Integer(Bmp.fScanLine0) + Y * Bmp.fScanLineDelta
                    + X * Bmp.fBytesPerPixel );
     Pos^ := Pos^ or DWORD(RGB);
    end;

    ...
    procedure TBitmap.SetDIBPixels(X, Y: Integer; const Value: TColor);
    ...
         pf32bit:
           begin
             fPixelsPerByteMask := 1;
             fBytesPerPixel := 4;
             fSetDIBPixels := _SetDIBPixelsTrueColorWithAlpha;
           end;
    ...


  • MTsv DN (09.10.10 15:57) [89]
    2 Кладов
    Владимир, повторяю ошибки которые вылазят при UNICODE_CTRLS:
    Версия 3.00.F
    mckCtrls.pas
    1.
    SL.Insert( IndexOfBeginLine, 'const ToolbarButtonsArray_' + Name + ': array[' +
             '0..' + IntToStr(Buttons_Count-1) + '] of PKOLChar = (' +
             Buttons_List + ');');



    KOL_ASM.inc
    1.
    procedure TCanvas.TextArea(const Text: KOLString; var Sz: TSize;
    var P0: TPoint);


    2.
    function Int2Hex( Value : DWord; Digits : Integer ) : KOLString;


    3.
    function Hex2Int( const Value : KOLString) : Integer;


    4.
    function Int2Str( Value : Integer ) : KOLString;



    KOL.PAS
    1.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal (mixed)
    function Int2Hex( Value : DWord; Digits : Integer ) : KOLString;


    2.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal
    function Hex2Int( const Value : KOLString) : Integer;


    3.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal
    function Int2Str( Value : Integer ) : KOLString;



    Жирным выделено то, что надо исправить...либо объявление в KOL.PAS.
  • MTsv DN (09.10.10 15:59) [90]
    Ошибся чуток:
    KOL.PAS
    1.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal (mixed)
    function Int2Hex( Value : DWord; Digits : Integer ) : KOLString;



    2.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal
    function Hex2Int( const Value : KOLString) : Integer;


    3.
    {$IFDEF ASM_VERSION}{$ELSE ASM_VERSION} //Pascal
    function Int2Str( Value : Integer ) : KOLString;

  • Dufa © (09.10.10 16:03) [91]
    Владимир, а для чего поменяли этот участок кода?


    function TThread.Execute: integer;
    ...
     if F_AutoFree then
     begin
        H := FHandle;
        FHandle := 0;
        Free;
        TerminateThread( H, 0 );
     end;



    старый вариант нормально работает
  • MTsv DN (09.10.10 16:18) [92]
    А зачем в Int2Str и прочих AnsiString заменено на KOLString?
  • MTsv DN (09.10.10 16:23) [93]
    Думаете там юникоде символы будут?
  • Vladimir Kladov © (09.10.10 16:31) [94]
    Где они вылазят? У меня ничего не вылазит на D2010 и D6.

    {$IFDEF ASM_VERSION}
    Надо именно ASM_UNICODE, если работа идет с KOLString.

    зачем в Int2Str и прочих AnsiString заменено на KOLStringДля D2010. Для чистого AnsiString в проекте с UNICODE_CTRLS и D2009+ осталась для Int2Str еще куча аналогов: Int2PChar, UInt2Str, Int2StrEx, ... а без UNICODE_CTRLS KOLString = AnsiString. Можно и вернуть, но только так, чтобы D2010 не возмущался.

    if F_AutoFree then
    begin
       H := FHandle;
       FHandle := 0;
       Free;
       TerminateThread( H, 0 );
    end;


    Нет, не работал прежний вариант нормально. Потоки не удаляются, по крайней мере в Win7, и продолжают висеть. Особенно это заметно, если создавать и убивать по 100 раз в секунду.
  • Vladimir Kladov © (09.10.10 16:33) [95]
    Думаете там юникоде символы будут? Уверен, что будут. Они занимают 2 байта. Асм-код надо переделывать. В Windows не используется UTF-8.
  • Dufa © (09.10.10 16:57) [96]

    > Нет, не работал прежний вариант нормально. Потоки не удаляются,
    >  по крайней мере в Win7, и продолжают висеть. Особенно это
    > заметно, если создавать и убивать по 100 раз в секунду.


    Вот мой тестовый проект

    program Project1;
    {$APPTYPE CONSOLE}

    uses
     Windows, KOL;

    function thread(dummy, Sender: PThread): Integer;
    begin
     Sleep(5000);
     Result := 0;
    end;  

    var
     i: Integer;
    begin
     for I := 0 to 99 do
       NewThreadAutoFree(TOnThreadExecute(MakeMethod(nil, @thread)));

     readln;
    end.



    Все нормально пашет. Покажите тот в котором прежний вариант не нормален
  • Dufa © (09.10.10 17:38) [97]
    Владимир, и еще есть к вам просьба. У вас в разделе скачать-колмск висит ссылка на свн nekki.ru, по-моему он давно не работает, можете заменить на рабочую http://sourceforge.net/projects/kolmck/
  • Vladimir Kladov © (09.10.10 17:44) [98]
    А вот почему у меня нет доступа к svn.

    А чем Вы смотрите, что все нормально пашет? Я, например, process explorer'ом (SysInternals) смотрел.
  • Dufa © (09.10.10 18:34) [99]

    > А вот почему у меня нет доступа к svn.


    Дык сколько раз я предлагал сделать вам доступ и каждый раз вы отказывались ссылаясь на неработоспособность свн клиентов...
    Зарегтесь на sourceforge.net и сделаю права вам..


    > А чем Вы смотрите, что все нормально пашет?


    Им же и смотрю..

    запустил..
    смортю - 101 поток...
    жду примерно 5 сек..
    и остается 1 поток
 
Конференция "KOL" » KOL v 3.00 [Delphi, Windows]
Есть новые Нет новых   [134430   +2][b:0.001][p:0.005]