Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Вниз

Версия 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 вся ветка

Форум: "KOL";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.008 c
2-1218109791
Ябеда
2008-08-07 15:49
2008.09.21
Снова потоки


4-1196809281
GanibalLector
2007-12-05 02:01
2008.09.21
EFOpenError Процесс не может получить доступ к файлу


2-1218437805
fulkon
2008-08-11 10:56
2008.09.21
Диалог выбора директории


2-1218441081
BioStaR
2008-08-11 11:51
2008.09.21
Запуск exe файла


2-1218196607
TUserClass
2008-08-08 15:56
2008.09.21
Вытащить текст из "чужого" RichEdit а





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский