Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

Версия 2.64   Найти похожие ветки 

 
Vladimir Kladov   (2007-06-02 19:52) [0]

Новости от 2 июня 2007 (KOL & MCK v2.64)

[*]  Опция  NEW_ALIGN  (символ условной компиляции) устанавливается по
умолчанию, если только не задана опция OLD_ALIGN.

[*]  Метод  TObj.Free  заменен свойством Free, которое просто вызывает
TObj.RefDec; метод RefDec теперь проверяет выполнение условие @Self <>
nil   перед   выполнением.  Это  изменение  может  быть  не  полностью
совместимо  со  всеми  Pascal-компиляторами,  поэтому  добавлен символ
условной  компиляуии  OLD_FREE, позволяющий возвратиться к предыдущему
состоянию.

[*]  Метод  TStream.SetCapacity  изменен  и позволяет теперь уменьшать
Capacity. Это добавляет немного кода, поэтому добавлен символ условной
компиляции  OLD_STREAM_CAPACITY,  возвращающий  это  поведение       в
предыдущее состояние.

[*] UNI
1.  Для  свойства  TControl.Selection, параметр типа String заменен на
KOLString для нормальной рабоы в приложениях с символом UNICODE_CTRLS.
2. Для метода TC_InsertControl, так же String заменен на KOLString.
3.  Свойство  RE_Text исправлено для Unicode (как чтение, так и запись
значения).

[*] Свойства TControl.SelLength (то же, что LVItemCount), ItemSelected
исправлены   для   случая  мемо,  содержащего  более  32767  символов.
Соответствующие  методы  изменены.  Имеется  сомнительный  момент: при
проверке ItemSeleted для combobox-а, функция использует "неправильное"
значение 2 вместо 0 (так надо), и это работает нормально в Windows XP,
хотя  в  документации  API SDK написано, что "0 must be there". Если у
вас  есть другая версия Windows, где этот метод не работает правильно,
пожалйста, сообщите мне об этом.

[+]  Функция  WinVer изменена для беспечения возможности детектировать
Windows   Server2003.   В   тип   TWindowsVersion  добавлено  значение
wvServer2003 (между wvXP и wvVista).

[*]  Функция  DirectoryExists  немного  изменена  и  теперь  на  время
проверки  устанавливает  SetErrorMode  для  предотвращения  системного
сообщения  по поводу отсутствующего диска (CD/DVD, floppy, Zip-drive и
т.п.).  По  окончании  проверки, предыдущее состояние обработки ошибок
восстанавливается.   Аналогично,  изменена  функция  DiskPresent  (для
восстановления  предыдущего  режима:  SetErrorMode  использовалась   и
раньше, но состяние не восстанавливалось).

[*]    Добавлено   свойство   TStrListEx.ObjectCount   для   получения
актуального  количества  сохраненных  Objects.  В  отличие  от  VCL, в
KOLовском  TStrListEx  свойство  Objects  сохраняется  разжельно,    и
вероятна  ситуация,  когда ObjectCount отличается от Count. Это ничему
не  пртиворечит,  т.к.  список строк можно условно считать бесконечным
(свойство  Items  с  индексами больше Count-1 просто возвращает пустую
строку).

[-]  Метод  TCanvas.TextExtent  (и  вызывающие  его методы TextWidth и
TextHeight)  наконец-то  исправлены. Долгое время они работали неверно
на   канве  TBitmap.Canvas,  разрушая  дескриптор  канвы.  Теперь  это
исправлено,  и стало возможным использовать TextWidth / TextHeight без
шаманских танцев с бубном вокруг них.

[+]  ToGRush  обновлен:  добавлена  функция OwnerDrawMenuItem, которая
может  быть  легко  использована  для  стилизации  меню в приложении в
GRush-подобные расцветки (хотя градиент не используется).

[+]  MCK  Для  зеркал  TKOLMenu  и  TKOLPupupMenu,  добавлено свойство
OwnerDraw, позволяющее устанавливатьили снимать свойство OwnerDraw для
всех  пунктов  меню  одновременно с одним двойным кликом по свойству в
Инспекторе Объектов.


 
Vladimir Kladov   (2007-06-02 20:04) [1]

Кстати, нашел интересную вещь.

Коло -древнейшее индоевропейское и доиндоевропейское (яфетическое) название Солнца(одновременно Кол - одно из названий полярной звезды.
Корневая основа "кол" типична для языков самых различных языковых семей. Его первоначальный смысл - "круг", что связано прежде всего с Солнечным "кругом". Интересно так же, что латинское название sol (Солнце)перекликается с русским "кол". Если записать его вот так: col, то в некоторых европейских языках его прочитают [кол], а в других [сол].

Слова с корнем "кол" встречаются во многих финно-угорских языках. Любопытно, что и название родины Ломоносова - Холмогоры (древнерусское Колмлгоры) происходит от древнечудского наименования данной местности Кольм - оно созвучно исконно русскому слову "холм", но генетически восходит к той общей доиндоевропейской лингвистической основе, которая связана с постоянно рождающимся и умирающим светилом Солнце-Коло (отсюда, кстати, и финская kalma - "смерть", "могила", и имя древнеиндийской богини смерти - Кали). Все это явственно свидетельствует о былой этно-лингвистической общности различных народов мира, казалось бы, таких непохожих теперь друг на друга.

Но и это еще не все. Индейцы-ацтеки (называвшие себя также мешики)считали себя этническими приемниками племени колуа (colua) (так их называл в своих посланиях испанскому королю великий завоеватель Эрнан Кортес) - прямого наследника древних тольтеков. В боливийских Андах, к югу от священного озера Титикака, на высоте четырех тысяч метров расположен знаменитый храмовый комплекс Тиануако, посвященный богу Солнца. Он открывается циклопическими, вытесанными из одного монолита Вратами Солнца с барельефом дневного светила. Уже инки - тоже солнцепоклонники - задолго до вторжения на их территорию испанских конкистадоров не знали, кем был построен поднебесный солнечный город. Не помнят этого, естественно, и индейские аборигены, ен имевшие письменности. Но поражает другое: индейцы аймара - исконные обитатели Андской областии молчаливые стражи Вечного города Солнца (им современный мир обязан культурой картофеля) - имеют еще одно, более древнее, название - колья. А их обширная страна, охватывающая ныне территорию Боливии, Северного Чили и части Аргентины, именовалась в старину Кольяо, со столицей Хатунколья. Наличие во всех трех словах архаичного корны "кол" свидетельствует о былом этнолингвистическом и культурно-мифилогическом единстве всех народов земли.


еще:
Русское коршун происходит от скифо-сарматских *кор-/кар с-ун - "Солнце - сияние", ср. скифо-сарматские кор-, кар-, кол-, кал- - "Солнце", со - "Солнце; сияние; жара; свет; глаз; яркий". Скифы - это сколоты, т.е. с колоты - "(люди) возле Солнца" (2). С другой стороны, скифо-сарматское скил-/скол- означает "сокол", ср. также русское сокол (Рябчиков 2001). Последнее слово может содержать корень кол- (коло - "Солнце") (Демин 1997: 121). В этом случае, скифо-сарматские скил-/скол- - "сокол", сколо-т- - "скифы" происходят от скифо-сарматских с- кил-/кол- - "сияние - Солнце".

Еще про день солнцестояния:
На Руси этот праздник называли "зимний коловорот" или "день рождения солнца", так как именно с этого момента солнце начинает "расти": день становится длиннее, а ночь короче. Здесь же: В Белоруссии и на Украине до сих пор святочную неделю называют "Коляда". В эти дни идут пиршества, увеселения, гадания, хождение ряженых, колядование. Аналогичное римским "календам" русское название "колядки" происходят из общего санскритского корня, где "кол" означает солнце или круг. Известно, что "круглое" имеет в русском языке корень "кол": колесо, кольцо, колобок, колодец, колокол, коловорот (солнцеворот). Например, у индийцев (по нынешний день) "Koleda" почитается за божество празднеств и так же называются некоторые обряды, а слово "koledovat" на языке хинди означает хождение детей по разным домам с песнями и плясками (!). Наконец, от этого же слова произошло в дальнейшем и "колдовство".


 
MTsv DN ©   (2007-06-03 09:23) [2]

Обновление доступно на http://www.kolnmck.ru/

2 Vladimir Kladov
Обновил все, что Вы просили... И сразу "косяк" вылетел.
Версия 2.64, при использовании USE_NAMES, в KOL_ASM.inc, в destructor TObj.Destroy;
       XCHG    EAX, ECX
       CALL    TObj.Free <- ЗДЕСЬ Inline assembler error
       POP             EAX

Если я правильно понял изменения, то патч такой:
       XCHG    EAX, ECX
{$IFDEF OLD_FREE}
       CALL    TObj.Free
{$ELSE}
       CALL    TObj.RefDec
{$ENDIF}
       POP             EAX


 
MTsv DN ©   (2007-06-03 09:24) [3]

На http://www.kolnmck.ru/ "неисправленная версия"


 
Vladimir Kladov   (2007-06-03 10:07) [4]

С USE_NAMES не проверил. Поправим. Накопилось уже 2 мелких баг-фикса. Вечером выпущу 2.64а, наверное. Может, до вечера еще что накопается.


 
MTsv DN ©   (2007-06-03 10:29) [5]

И еще:

procedure TControl.SelectAll;
begin
 SelStart := 0;
 SelLength := -1; // this can be not working for some controls... //*//*
end;

8) У меня не заработало на ЕдитБоксе. Вылетало на вызове Perform в:

function TControl.GetSelStart: Integer;
asm
        {XOR      EDX, EDX
        MOVZX    ECX, [EAX].fCommandActions.aGetSelStart
        JECXZ    @@check_aGetSelRange

        PUSH     EDX
        PUSH     EDX
        PUSH     ECX
        PUSH     EAX
        CALL     Perform
        RET

@@check_aGetSelRange:}
        MOVZX    ECX, [EAX].fCommandActions.aGetSelRange
        JECXZ    @@exit
        XOR      EDX, EDX
        PUSH     EDX // space for Result
        PUSH     EDX // 0
        LEA      EDX, [ESP+4]
        PUSH     EDX // @ Result
        PUSH     ECX // EM_GETSEL
        PUSH     EAX
        CALL     Perform
        POP      ECX // Result
@@exit:
        XCHG     EAX, ECX
end;

Выделенная строчка решила проблему...


 
Vladimir Kladov   (2007-06-03 13:54) [6]

Кончайте уже строчки жирным выделять, я в dolphinе их не вижу жирными, внутри code. Да, xor edx,edx я забыл вернуть из верхнего блока, когда закомментарил его за ненадобностью. Поправить. Это уже на версию тянет.


 
Vladimir Kladov   (2007-06-03 18:06) [7]

Новости от 3 июня 2007 (KOL & MCK v2.65)

[-] Восстановлена совместимость с Delphi2 / Delphi3 (MCK).

[-]  TControl.RESetOverwrite  исправлен (значение не присваивалось без
предварительного чтения значения свойства).

[-]  TObj.Destroy  исправлен  (asm-версия)  для  случая  USE_NAMES (не
компилировалось).

[-] TControl.GetSelStart исправлен (asm-версия).


 
Galkov ©   (2007-06-03 19:06) [8]


> Vladimir Kladov   (03.06.07 18:06) [7]
> [-] TControl.GetSelStart исправлен (asm-версия).


Все вопросы в топике:
http://delphimaster.net/view/11-1180718313/
- сняты :))


 
Vladimir Kladov   (2007-06-03 20:31) [9]

остается только вопрос насчет "хитрого" совмещения в SelLength одного Perform"а с одними и теми же параметрами для 4 видов контролов, при котором по документации вроде бы есть игнорирование официального требования must be 0 - для комбобокса. Завтра посмотрю для NT4, и еще на работе есть виртуальная машина. Жаль, Виста много места занимала, пришлось снести. Но дкмаю, и с ней все должно быть в порядке, единственное подозрение на NT4.


 
MTsv DN ©   (2007-06-03 21:28) [10]

> Новости от 3 июня 2007 (KOL & MCK v2.65)
Обновление доступно на http://www.kolnmck.ru/


 
Vladimir Kladov   (2007-06-04 15:50) [11]

И все-таки промахнулся я с ItemSelected[] для комбо. По идее, не очень часто потребно, так что недельку, наверное, подождет, все-таки. Кому вдруг срочно надо, Паскаль:

{$IFDEF ASM_VERSION}
{$ELSE ASM_VERSION} //Pascal
function TControl.GetItemSelected(ItemIdx: Integer): Boolean;
var SS: Integer;
begin
 if fCommandActions.aGetSelected <> 0 then
 begin
   SS := Perform( fCommandActions.aGetSelected, ItemIdx, LVIS_SELECTED );
   { Though it is written in docs that for combobox lParam for CB_GETCURSEL
     is not used and _must_ be 0, therefore this code is working for
     combobox too. }
   if fCommandActions.aGetSelected <> CB_GETCURSEL then
     ItemIdx := 1;
   Result := SS = ItemIdx;
 end
 else
 begin
   SS := SelStart;
   Result := (ItemIdx >= SS) and (ItemIdx < SS + SelLength);
 end;
end;
{$ENDIF ASM_VERSION}


Ассемблерная часть в KOL_ASM.inc:

function TControl.GetItemSelected(ItemIdx: Integer): Boolean;
asm
       MOVZX    ECX, [EAX].fCommandActions.aGetSelected
       JECXZ    @@check_range

       PUSH     1
       CMP      CL, CB_GETCURSEL and $FF
       JNZ      @@1
       MOV      [ESP], EDX
@@1:
       PUSH     LVIS_SELECTED // 2
       PUSH     EDX
       PUSH     ECX
       PUSH     EAX
       CALL     Perform
       POP      EDX
       CMP      EAX, EDX
       SETZ     AL
       RET

@@check_range:
       PUSH     EBX
       PUSH     ESI
       XCHG     ESI, EDX
       MOV      EBX, EAX

       CALL     GetSelStart
       XCHG     EBX, EAX
       CALL     GetSelLength

       SUB      ESI, EBX
       JL       @@ret_false

       CMP      EAX, ESI
@@ret_false:
       SETGE    AL
       POP      ESI
       POP      EBX
end;


 
Vilyammb   (2007-08-08 21:28) [12]

Hello! great idea of color of this siyte!



Страницы: 1 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.032 c
15-1203444046
MonsterHell
2008-02-19 21:00
2008.03.30
Переопределение днс


3-1194797551
soj
2007-11-11 19:12
2008.03.30
Проблема с не целыми числами


2-1204223376
arreke
2008-02-28 21:29
2008.03.30
Отправить письмо на email


2-1203587539
Pavelkq
2008-02-21 12:52
2008.03.30
Многострочный текст в CheckListBox


2-1204283662
Yurij-7
2008-02-29 14:14
2008.03.30
Как правильно написать SQL