Конференция "KOL" » KOL v 3.00 [Delphi, Windows]
 
  • Vladimir Kladov © (30.10.10 15:22) [240]
    Поправил ошибку в StrLComp_NoCase2. IndexOfName работает. 3.00.Y+
  • Vladimir Kladov © (31.10.10 19:58) [241]
    Если что, в kol.zip и mck.zip теперь лежит версия koldef.inc, учитывающая версию XE (VER220, символы _DXE и _DXEorHigher). Заодно немного поправил символы для _D2005.._D2010.
  • SPeller © (01.11.10 03:45) [242]

    > Потом, кому на протяжении 20 лет могло в голову прийти писать
    > умножение на размер оф чар, если он всегда = 1 ?

    Ну тут как бы не всё однозначно :) Сегодня он 1 байт, завтра 2, послезавтра 3. Тут просто нужно сразу писать с учетом будущего роста размерностей. Идеально конечно не напишешь, но свести к минимуму будущий геморрой - можно.


    > Кто теперь будет просматривать миллионы строк старого кода

    Тут тоже палка о двух концах. Старый код с миллионами строк конечно нет смысла тащить на новую платформу просто потому что потому. Но с другой стороны либо иде и компилятор полностью поддерживают юникод, либо нет. Это такая особенность дельфей. Нет у теперешней команды разработчиков оной достаточно ресурсов чтобы делать идеальные продукты. Я не углублялся, но говорят что борланд с кодгиром очень и очень сильно запустили дельфи, и теперь новой команде с ограниченными ресурсами надо не только наверстать технологические отставания (юникод, 64 бита, кросс-платформенность (линукс, мак), поддержка новых осей), но и исправить тысячи багов, которые тянулись издревле, но в погоне за выручкой на их решение закрывали глаза. Появился у них интересный продукт - RadPHP. Мне очень понравился. Очень сыроват еще, но начало сделано очень хорошее. Поэтому тут всем не угодишь.
    А новые проекты начинать на юникоде - вполне нормально и удобно.

    В 2010, кстати, вернули прежнюю палитру компонентов :)


    > на висту/семерку/восьмерку никто здесь переходить не планирует
    > до 2020 года точно

    Для некоторых это наоборот, критично )


    > А если будут переходить, то уже не на delphi точно. C#,
    > J#

    Не панацея. С этими фреймворками тоже не всё так просто. 4-й уже до 400 мбайт распух. Причем, при установке без спросу лезет в интернет и чего-то там качает. да, у микрософта больше возможностей по поддржке и развитию. Но нет ничего такого сверхъестественного с их продуктах чтобы прям стремиться туда. Да и дельфи к 2020 году может уже стать серьезным продуктом, избавившись от лихорадки наследственных проблем )
  • Mr (01.11.10 08:38) [243]

    > Да и дельфи к 2020 году может уже стать серьезным продуктом,
    >  избавившись от лихорадки наследственных проблем )
    >

    Супер, надо записать цитату "к 2020 году может уже стать". Прошу прощения за офтоп.
  • SPeller © (02.11.10 08:47) [244]
    Предлагаю в koldef.inc добавить для д2010 и выше вот такие строки:
    {$WEAKLINKRTTI ON}
    {$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}
    Это говорит компилятору не компилировать в бинарник новое rtti. Бинарник от этого пухнет очень заметно при использовании классов.
  • SPeller © (02.11.10 08:47) [245]
    и возможно не только классов
  • Vladimir Kladov © (02.11.10 19:36) [246]
    Обновил KOL.zip и MCK.zip до 3.00.Z.
  • Дмитрий К © (03.11.10 00:18) [247]
    StrList.Values не работает. Похоже, что сравнивается только первый символ Name.
    program Project1;
    uses
     kol;
    var sl: PStrList;
    begin
     sl := NewStrList;
     try
       sl.SetText('001=a'#13'002=b'#13'003=c', false);
       msgok(sl.Values['002'] + #13#10 + sl.Values['015']);
     finally
       sl.Free;
     end;
    end.

  • Jon © (03.11.10 04:01) [248]
    The following result is incorrect - it worked in v3.00w:

    if StrLComp_NoCase('01', '02', MaxInt) = 0 then MsgOK('EQUAL');

  • Vladimir Kladov © (03.11.10 04:55) [249]
    In Z, there ir no message. It was fixed with Y+.
  • Jon © (03.11.10 10:06) [250]
    Definitely using KOL VERSION 3.00.Z
    KOL.pas 2,212,205 bytes 02/11/2010 22:27


    program Test;

    uses KOL;

    begin
     if StrLComp_NoCase('11', '12', MaxInt) = 0 then MsgOK('EQUAL');
    end.



    No conditional defines used. D7, WinXP.
  • Vladimir Kladov © (03.11.10 13:26) [251]
    Sorry. You are right. I incorrectly tested another function. And still it worked I decided that StrLComp_NoCase is fixed (still I remember that there was a fix for it in Y+). This is another fix uploaded, v3.00.Z1.
  • MTsv DN (03.11.10 21:03) [252]
    2 бага в версии Z.
    1.
    procedure TDirList.Sort(Rules: array of TSortDirRules);
    begin
     if FListPositions = nil then Exit;
     SortDirData.CaseSensitive := false; // надо добавить
     J := 0;


    Иначе sdrCaseSensitive не работает.

    2. При использовании USE_OLD_FLAGS и тем, в асм-версии не работает OnLeave.
    Вот проект: http://zalil.ru/29914948
  • Jon © (04.11.10 02:28) [253]
    Sorry, but it's still not working correctly:


    program Test;

    uses KOL;

    const
     x: PAnsiChar = '001';
     y: PAnsiChar = '002';

    begin
     if StrLComp_NoCase(x, y, 1) = 0 then MsgOK('EQUAL: 1 char');
     if StrLComp_NoCase(x, y, 2) = 0 then MsgOK('EQUAL: 2 char');
     if StrLComp_NoCase(x, y, 3) = 0 then MsgOK('EQUAL: 3 char');
     if StrLComp_NoCase(x, y, MaxInt) = 0 then MsgOK('EQUAL: Max char');
    end.



    Last working version was v2.912 - broken in v2.921 with introduction of StrLComp_NoCase2
  • Vladimir Kladov © (04.11.10 12:24) [254]
    3.00.Z2, fixes for StrLComp_NoCase, DirList.Sort

    2MTsvDn: в вашем проекте нет нигде OnLeave. Когда я добавил на кнопку и чекбокс, работает. С темами, с USE_OLD_FLAGS.
  • Dufa © (04.11.10 12:35) [255]

    function TStrList.GetLineName(Idx: Integer): AnsiString;
    var s: AnsiString;
       Q: PAnsiChar;
    begin
     s := ItemPtrs[ Idx ];
     Q := StrScan( PAnsiChar(s), fNameDelim );
     if Assigned(Q) then // без этого падает
       Q^ := #0;
     Result := PAnsiChar(s);
    end;



    Код для проверки:


    list := newstrlist;
    list.Add('name');
    msgok(list.LineName[0]);

  • Vladimir Kladov © (04.11.10 13:11) [256]
    3.00.Z3

    +Некоторые исправления visual_xp_styles.inc: были глюки с отображением текста.
  • MTsv DN (04.11.10 13:18) [257]
    2 Кладов
    В проект ничего не надо. Вот директивы: KOL_MCK;GRAPHCTL_XPSTYLES;UNICODE_CTRLS;USE_OLD_FLAGS;nil_events Наводишь курсор на уже существующий чекбокс он "загорается" (состояние hot), отводишь курсор все остается так же. В пас-версии все работает нормально.
  • MTsv DN (04.11.10 13:31) [258]
    Ну, и еще один вопрос. Вот код:
    NewForm2(Form2, Applet);
    Form2.Form.ShowModal;
    Free_And_Nil(Form2.Form);


    Form2 в первый вызов NewForm2 равно nil, а во второй нет. Разве не должно уничтожаться всё? Т.к.у меня в рабочем проекте при втором вызове создания дочерней формы все уже создано, nil равно только Form.

    Если так задумано, то как правильно уничтожать форму, чтобы всё уничтожалось?
  • Vladimir Kladov © (04.11.10 15:18) [259]
    3.00.Z4 на сайте. Неправильно использовалась команда BTR.

    Правильно уничтожать с обнулением так:
    Form2.Form.Free;
    Form2 := nil;

    Free_And_Nil нужен для многопоточности при работе с объектами. Да и он не панацея, еще корректнее защищать объекты семафорами или крит. секциями. Если не лень, можно в каждую форму добавлять метод для безопасного уничтожения, псевдокод:

    TmyForm.FreeNil( var F: PMyForm );
    var tmp: PMyForm;
    begin
       tmp := F;
       F := nil;
       tmp.Form.Free;
    end;



    Что-то такое.
 
Конференция "KOL" » KOL v 3.00 [Delphi, Windows]
Есть новые Нет новых   [134430   +2][b:0.001][p:0.002]