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

Вниз

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

 
Vladimir Kladov ©   (2007-10-28 17:54) [0]

            Новости от 28 октября 2007 (KOL & MCK v2.84)

[+] Важно: благодаря D[u]fa, MCK теперь работает и на BDS2005-BDS2007,
а  так  же  на  Turbo  Delphi.  Генерируемый код несколько отличается,
поэтому предусмотрена автоматическая конверсия при переходе от прежних
версий  Delphi  к  новым  и  наоборот,  при  загрузке  проекта  в IDE.
Изменения  начинают  работать начиная с Delphi6 и Delphi7 (хотя в этих
версиях  MCK работает и без нового кода). Для восстановления генерации
прежнего кода MCK следует пересобрать с опцией NO_NEWIF.

[*] TLIST_FAST:

-  добавлено  свойство  UseBlocks  в  секцию  public, чтобы легче было
изменять  его  при  создании  списков,  для  которых  эта  возможность
индивидуально не используется, даже при наличии TLIST_FAST в опциях;

- для ряда функций (методов), асм-версия которых не работает корректно
с TLIST_FAST, асм-код отключён;

-  для  многих  функций  и методов в Паскаль-версии обращение к fItems
заменено либо на Items безусловно, либо по условию TLIST_FAST.

[+] Добавлена возможность работать с потоками и файлами размером более
4Гбайт.  Для  этого  следует  в опции проекта включить символ условной
компиляции  STREAM_LARGE64.  В  любом случае объявления многих функций
потоков  несколько  изменились  и  это может вызвать несовместимость с
какими-либо  старыми  компонентами,  поэтому предусмотрена возможность
устранения  такой  несовместимости,  включив  символ STREAM_COMPAT. На
данный   момент  совместимость  обеспечена  для  пакета  KOLZlib,  при
необходимости  будут  выполнены  изменения  и  в  других  зависимых от
потоков пакетах.

Так же, изменена функция FileSeek и удалена функция FileFarSeek.

[+]   Добавлена   возможность   конкатенации   двух  потоков  (функция
NewConcatStream)  произвольной  природы и размера в один объект, делее
рассматриваемый программой как обычный поток данных.

[+]  Добавлен  метод  TIcon.SetHandleEx, позволяющий присвоить объекту
пиктограммы  дескриптор  иконки  без  извлечения  из неё битмапов и их
анализа  для  установки  размера  (размер  должен  быть предварительно
установлен  вашим  программным  кодом  тем  не  менее). Данный вариант
быстрее,  и  всегда  работает  в Windows9x (где извлечение битмапов по
дескриптору иконки может не работать).

[-] Для UNICODE_CTRLS:
- Str2DateTimeShort:Тип параметра изменён (String->KOLString);
- и исправлен порядок вычисления формата (строки).

[*]  Внутреннее  изменение:  во  избежание путаницы список подчинённых
элементов меню теперь называется FMenuItems вместо прежнего FItems.

[-]  В  обработчик  сообщений комбо-бокса добавлена проверка видимости
контрола  перед  обработкой  WM_COMMAND  (иначе  система  обеспечивала
выпадание  списка  для  невидимого  в  настоящий момент комбо-бокса по
кнопке  F4,  если  до  сокрытия  родительской панели комбо-бокс был (и
остался) в фокусе ввода.

[-]  В  обработчике  WndProcTransparent выполнены изменения (by homm),
которые  исправляют  прозрачность  для соседних контролов (учитывая не
только прозрачных родителей, но и DoubleBuffered).

[-]  MCK:  Для TKOLScrollox свойство OverrideScrollbars добавлено, для
TKOLScrollbar удалено.


Будете собирать общий пакет, обратите внимание: mckToolbarEditor.inc больше не нужен.

Эх, под Delphi2/3 не адаптировал. Но ничего, до следующего раза доживёт а там поправлю.


 
D[u]fa ©   (2007-10-28 18:46) [1]

Владимир, небольшая поправочка:

здесь нужно оставить по старому:
{$IFDef KOL_MCK}///<-
uses Windows, Messages, KOL {$IF Defined(KOL_MCK)}{$ELSE}, mirror, Classes,
mckObjs, Controls, mckCtrls, SysUtils {$IFEND (place your units here->)};
{$ELSE}
{$I uses.inc}
 Windows, Messages, Classes, Controls, Forms, mirror;
{$ENDif}//<---

а на данный момент МСК конвертит в:

{$IF Defined(KOL_MCK)}<<<
uses Windows, Messages, KOL {$IF Defined(KOL_MCK)}{$ELSE}, mirror, Classes,
mckObjs, Controls, mckCtrls, SysUtils {$IFEND (place your units here->)};
{$ELSE}
{$I uses.inc}
 Windows, Messages, Classes, Controls, Forms, mirror;
{$ifend}<<<

иначе в 2007 наблюдается глюк, код генерится форму вроде видно, но назначить события нельзя...


 
Vladimir Kladov ©   (2007-10-28 20:19) [2]

А в Delphi6-7 наоборот глюк получается. С IF Defined событие назначал на кнопку для теста, работало.

Сейчас погляжу, там кажется немного поправить можно чтобы и так было и эдак.


 
Vladimir Kladov ©   (2007-10-28 20:32) [3]


Сейчас погляжу, там кажется немного поправить можно чтобы и так было и эдак.


Всё проще. Строка в mirror.pas 11931б раскомментарить в фигурных скобках чтобы стало:
     if (Trim( Source[ i ] ) = "{$IFDEF KOL_MCK}") and
        ((Source[ I ][1] = " ")) then


Если руками испралять везде долго, то:
1. Открываем пакадж, ставим опцию NO_NEWIF, Build.
2. Закрывае пакадж, открываем проект, пробегаем по формам (всё вертается на IFDEF/ENDIF
3. Закрываем проект, открываем пакадж, убираем опцию NO_NEWIF, Build.
4. Закрывает пакадж, открываем проект, пробегаем по юнитам с формами, (теперь IF где надо, где не надо - IFDEF), Build. Теперь всё как надо. Сейчас в D6 проверил - всё тоже работает. Это я какой-то глюк словил и с испугу закомментарил :)


 
Vladimir Kladov ©   (2007-10-28 20:36) [4]

11931 (б вместо "," набил)


 
mdw ©   (2007-10-29 11:36) [5]

Доступно на http://www.kolnmck.ru/files1.shtml

KOL v.2.84 (28.10.2007)
KOL&MCK v.2.84 (28.10.2007)
KOLnMCK-CE v.2.80-Rev.219 (23.10.2007)


 
Vladimir Kladov ©   (2007-10-29 15:50) [6]

Я сегодня смотрел на bds2006, вроде работает. Но как там всё криво, однако. И на закрытии оболочки падает.


 
SergeR ©   (2007-10-29 15:56) [7]

Огромный респек
> Генерируемый код несколько отличается,
> поэтому предусмотрена автоматическая конверсия при переходе
> от прежних
> версий  Delphi  к  новым  и  наоборот,  при  загрузке  проекта
>  в IDE.

т D[u]fa и Владимиру.
Поставил на BDS2006. Работает
> Генерируемый код несколько отличается,
> поэтому предусмотрена автоматическая конверсия при переходе
> от прежних версий  Delphi  к  новым  и  наоборот,  при  загрузке  проекта
>  в IDE.

А вот тут чего то не работает у меня, всё остается по старому.


 
D[u]fa ©   (2007-10-29 16:10) [8]

Vladimir Kladov, криво в каком смысле?

кстати насчет автоконверта) не много не продумали, если запустить проект сделанный в 7ке на 2007 то автоконверт не сработает =) потому к форме доступа нету и мск не может генерить код =) зато запустив в 7ой срабатывает конверт и после этого мона на 2007 запускать.

падений у меня лично не наблюдалось. мб не из-за мск падает 2006 ?


 
D[u]fa ©   (2007-10-29 16:32) [9]

>А вот тут чего то не работает у меня, всё остается по старому.

старая иде это ниже 6ой =)


 
Vladimir Kladov ©   (2007-10-29 18:22) [10]

Да, старая, это ниде 6-й. Если надо обратный конверт, я уже писал: пока что символом NO_NEWIF в пакете. В принципе, наверное, стоит добавить в TKOLProject типа дезайнтайм свойство NewIf, чтобы попроще конвертить.

Мне не понравилось что в BDS сразу изменения не отображаются, а если переключиться куда-нибудь в чужое окно и обратно, только тогда он спохватывается, и спрашивает, что раз файл загруженный в IDE изменился извне, то не перезагрузить ли его.

Вообще в нем code insight глючит не по детски. Хочет тултип всплыть, но только дрожит пустое белое окно. При ребилде пакета, он его сносит, и приходится еще раз Install делать.

Мне вообще не по нутру пришлась идея нового дизайнера содранная из MS VC + .NET. Почему на гигантском экране в 22" я не могу одновременно писать код и видеть форму. Я так привык и мне так удобней - как было раньше. Не, не буду переходить. К тому же под bds тянуть fast type не получится (кажется). А я уже привык по-своему текст набирать :)


 
D[u]fa ©   (2007-10-29 19:29) [11]

насчет свойства NewIf поддерживаю. 2007 по лучше 2006 буит, хоть и не сильно. А вот к фаст тип я тоже привык, надо какой то порт под 2007, хотя эту версию еще не пробовал туда вставить


 
Jon ©   (2007-10-29 19:59) [12]


> A capability added to work easy with streams and files larger
> then 4Gbytes. To do so, a symbol STREAM_LARGE64 must be
> included to the project options.


Bu report: The size cannot be set greater than MaxInt.


begin
 with NewWriteFileStream("test")^ do
 try
   Size := Int64(MaxInt) + 1;
 finally
   Free;
 end;
end.


A file of 0 bytes is created :-(

The following VCL code works correctly:


begin
 with TFileStream.Create("test", fmCreate) do
 try
   Size := Int64(MaxInt) +1;
 finally
   Free;
 end;
end;


Conditional STREAM_LARGE64 is defined.


 
Jon ©   (2007-10-30 03:52) [13]

I have a fix for the stream size bug:

function FileSeek
Line 20780
    Result := SetFilePointer(Handle, DWORD( MoveTo ), nil, Ord( MoveMethod ) )
Change to:
    Result := SetFilePointer(Handle, I64(MoveTo).Lo , @I64(MoveTo).Hi , Ord( MoveMethod ) )

Also may need this:

procedure SetSizeFileStream
Line 25020
 P: DWORD;
Change to:
 P: TStrmSize;

Hope that it helps.


 
homm ©   (2007-10-30 07:21) [14]

> [5] mdw ©   (29.10.07 11:36)
> Доступно на http://www.kolnmck.ru/files1.shtml

Не плохо было бы включить туда пакеты для старших версий…

Сделал пакет для КОЛ, добавил файлы, поставилось.
Сделал пакет для Грашей, добавил файлов, он автоматически в requires добавил MirrorKOLPackageD2007, но при установке выдает:
[DCC Error] GRushControls_D2007.dpk(30): E1026 File not found: "MirrorKOLPackageD2007.drf"

Название пакета верное… Файла такого действительно нигде на жестком нет…


 
homm ©   (2007-10-30 07:36) [15]

> [0] Vladimir Kladov ©   (28.10.07 17:54)
> Генерируемый код несколько отличается,
> поэтому предусмотрена автоматическая конверсия при переходе
> от прежних
> версий  Delphi  к  новым  и  наоборот,  при  загрузке  проекта
> в IDE.
> Изменения  начинают  работать начиная с Delphi6 и Delphi7
> (хотя в этих
> версиях  MCK работает и без нового кода).

Вот тут поподробнее. Т.е. что-бы конвернуть старый проект, нужно открыть его на новом коле в дельфи 6 или 7 ?

Я открыл старый проект сразу в 2007, она его не распознает как VCL, считает его Вин32 проектом.


 
homm ©   (2007-10-30 07:42) [16]

> [15] homm ©   (30.10.07 07:36)
> Т.е. что-бы конвернуть старый проект, нужно открыть его
> на новом коле в дельфи 6 или 7 ?

Так и сделал, ИФДЕФЫ сменились, но 2007 все равно не считает проект VCL-ным.


 
D[u]fa ©   (2007-10-30 08:44) [17]

homm

а тут так?

{$IFDef KOL_MCK}///<-
uses Windows, Messages, KOL {$IF Defined(KOL_MCK)}{$ELSE}, mirror, Classes,
mckObjs, Controls, mckCtrls, SysUtils {$IFEND (place your units here->)};
{$ELSE}
{$I uses.inc}
Windows, Messages, Classes, Controls, Forms, mirror;
{$ENDif}//<---


 
homm ©   (2007-10-30 09:02) [18]

> [17] D[u]fa ©   (30.10.07 08:44)
> а тут так?

{IF Define(KOL_MCK)}

В самом файле проекта не сменились, остались {$IFDef}, поменял в ручную, эффект тот-же.


 
SergeR ©   (2007-10-30 10:00) [19]

{IF Define(KOL_MCK)}///<-
uses Windows,.....надо поменять на
{$IFDef KOL_MCK}, а то не работает.


 
D[u]fa ©   (2007-10-30 11:09) [20]

угу именно я ж писал выше, что надо менять. и после этого закрыть проект и заново открыть и в мирор.пас, как писал Владимир, надо сделать изменение что б  мск генерил пральный код


 
Vladimir Kladov ©   (2007-10-30 16:36) [21]

Thank you, I"ll fix it.


 
Vladimir Kladov ©   (2007-10-30 16:41) [22]

Я уже сделал, чтобы конверсия шла не сборкой пакета, а перез свойство в TKOLProject. Махом меняет, в любой Delphi.

У меня кстати в одном модуле конвертер не справился с конверсией IFDEF"ов которые внутри uses. Уж больно много там было еще и моих IFDEF"ов. А тут еще сам Delphi решил вмешаться, что-то продублировал, что-то куда-то перенёс, после у него совсем крыша съехала, и он стал проект загружать. Пришлось в блокноте открывать и всё руками исправлять. Так что с автоматикой поосторожнее надо.


 
Vladimir Kladov ©   (2007-10-30 17:02) [23]

Пакет лучше не конвертить, а новый сделать. Добавить mirror.pas, mckObjs.pas и mckCtrls.pas, и символ условной компиляции INPACKAGE. И сохранить, затем собрать и установить.


 
D[u]fa ©   (2007-10-30 18:53) [24]

а я выкладывал же, у меня с ним работает. хотя от 7ой подойдет тоже



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

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

Наверх




Память: 0.55 MB
Время: 0.017 c
2-1218186434
ProgRAMmer Dimonych
2008-08-08 13:07
2008.09.21
OnIdle в приложении на чистом WinAPI


2-1218521158
Sergey2
2008-08-12 10:05
2008.09.21
Доступ к базе по локальной сети через IP


15-1217745537
Nous Mellon_
2008-08-03 10:38
2008.09.21
Вопрос по регуляркам + php


2-1218444298
Neon-w
2008-08-11 12:44
2008.09.21
Собрать из двух один)


15-1217006131
Stan
2008-07-25 21:15
2008.09.21
Киноактер Пуговкин умер