![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия 2.41 (unstable, beta) [Delphi, Kylix, FPC, Windows, Linux, KOL/MCK]
Vladimir Kladov © (2006-10-28 20:39:00)Новости от 28 октября 2006 г.
Первая важная новость: этот сайт переехал на (это) новое место. Как вы можете видеть, у нас теперь короткое и запоминающееся имя: http://kolmck.net.Огромное спасибо за этот вклад Thaddy de Koning!
Новости KOL и MCK (v2.41):
[*]KOL: очень важно: поддержка UNICODE значительно улучшена. С символом UNICODE_CTRLS, приложение перекомпилируется практически с полной поддержкой UNICODE, включая работу визуальных контролов, реестра, файловых имен, и т.п. (Примечание: для использования UNICODE, загрузите дополнительно KOL_unicode.zip, содержащий необходимый файл KOL_unicode.inc, с перенаправлением большинсва функций и типов API Windows к их версиям UNICODE). Соответствующие изменения так же выполнены для delphicommctrl.inc, содержащемся в основном архиве kol.zip.
[*]KOL: другая важная новость: начат процесс портирования KOL для Linux (используется GTK+ как основной инструмент GUI-строительства). Так что, KOL.pas теперь содержит множество опционального кода, закрытого скобками {$IFDEF}...{$ENIF}. На данный момент, возможно загрузить дополнительно необходимые модули GTK (портированные из изначально заготовленных авторами для работы с компилятором Free Pascal и несколько измененные для обеспечения возможности компиляции их из Delphi) и проверить эту функциональность под Windows (так же понадобится установить пакет GTK for Windows, линк дан в архиве с модулями GTK+).
[*]KOL: большая часть ассемблерного кода вынесена в отдельный файл KOL_ASM.inc. Тем не менее правила использования asm-версии те же: добавление символа PAS_VERSION к опциям проекта приводит к отказу от использования ассемблерной версии кода. (С этим изменением, существенно уменьшено число строк в модуле KOL.pas, и образуется дополнительное пространство для добавления новых возможностей. Так, объекты TWStrList и TWStrListEx вновь возвращены в KOL.pas из KOLadd.pas, еще и потому, что они требуются для более полной поддержки UNICODE).
[*]KOL: дополнительно к SMALLEST_CODE, вводится символ SMALLER_CODE, обеспечивающий промежуточный уровень экстремальной оптимизации размера кода. Различие в том, что при его использовании функциональность и внешний вид не изменится, единственное, что может несколько пострадать скорость работы приложения и не будет уделяться особого внимания экономии ресурсов.
[*]KOL: символ BUTTON_DBLCLICK_AS_CLICK удален и введен противоположный по смыслу BUTTON_DBLCLICK. Без него, все кнопки не отлавливают более двойной клик как отдельное события, просто срабатывая дважды. Используйте BUTTON_DBLCLICK, если копки должны отдельно реагировать на событие двойного клика мыши (но в этом случае OnClick только один раз на двойной клик).
[*]KOL: некоторое количество методов и типов объявлены как устаревшие ("deprecated") и перемещены в отдельный включаемый файл KOL_deprecated.inc. Для использования этих объявлений, загрузите архив KOL_deprecated.zip и разрешите использование устаревших методов символом ENABLE_DEPRECATED.
[+]KOL: добавлены функции Find_First, Find_Next и Find_Close, вместе с типомTFindFileData - для абстрагирования процедуры поиска файлов от особенностей операционной системы. Если вы в своих проектах использовали FindFirstFile из Windows.pas или FindFirst из стандартного модуля SysUtils, перепишите свой код, если это возможно (изменения не слишком велики, но в последующем облегчается портирование приложения на другие платформы).
[-]KOL: переписан метод TObj.Final (и asm-, и Pascal-версии), для обеспечения максимально корректного и стабильного рекурсивного разрушения объектов.
[*]MCK: т.к. тип KOLChar объявлен теперь как не точный эквивалент типа Char (type KOLChar = type Char), то существующие обработчики события OnChar могут становиться несовместимым с новой декларацией. В этом случае, пересоздайте обработчики (сохраните прежний код, удалите старый обработчик, возможно, вручную поправив dfm, затем создайте новый обработчик, и скопируйте старый код на его место, оставив только обновленный заголовок).
[*]MCK: Событие OnLVDataW удалено, используйте OnLVData с символом UNICODE_CTRLS.
[*] Как видите, в этой версии число изменений огромно. Так что, ошибки весьма вероятны. Версия 2.41 выпускается с пометкой "unstable beta" (нестабильная, отладочная). Загружайте ее, устанавливайте в отдельную директория и активно тестируйте. Когда будет устранено большинство ошибок,версия будет заменена стабильной с четным номером.
MTsv DN (2006-10-29 09:34:00) [21]> {$IFNDEF _D2}
> FOnLVDataW: TOnLVDataW;
> {$ENDIF _D2}
А вот это уже исправлено... Щас перезалью...
MTsv DN (2006-10-29 09:33:00) [22]> mirror.pas: * VERSION 2.40 %)
Он ни чем не отличается от того, что на сервере у Владимира... Только вместо 2.40 написано 2.41 8) Сравните сами...
D[u]fa (2006-10-29 09:27:00) [23]MTsv DN ©, в одно время написали %) ошибка в архивчике у тебя =)
D[u]fa (2006-10-29 09:27:00) [24]MTsv DN © kol_mck241beta.7z содержит
mirror.pas: * VERSION 2.40 %)
MTsv DN (2006-10-29 09:26:00) [25]Пропиши в interfaceчасть mckCtrls.pas:
type
TOnLVDataW = procedure( Sender: PControl; Idx, SubItem: Integer;
var Txt: WideString; var ImgIdx: Integer; var State: DWORD;
var Store: Boolean ) of object;
{* Event type for OnLVDataW event (the same as OnLVData, but for unicode verion
of the control OnLVDataW allows to return WideString text in the event
handler). Used to provide virtual list view control
(i.e. having lvoOwnerData style) with actual data on request. Use parameter
Store as a flag if control should store obtained data by itself or not. }
Еще исправления по UNICODE:
function DirectorySize( const Path: String): I64;
String -> KOLString...
D[u]fa (2006-10-29 09:20:00) [26]хм.. новую версию даже установить не могу %)
{$IFNDEF _D2}
FOnLVDataW: TOnLVDataW;
{$ENDIF _D2}
[Error] mckCtrls.pas(1186): Undeclared identifier: 'TOnLVDataW'
[Fatal Error] mckCtrls.pas(1858): Could not compile used unit 'mckCtrlDraw.pas'
MTsv DN (2006-10-28 23:39:00) [27]> это не оно?
Спасибо... Забыл подключить... Заработало лучше, но не до конца... Вот 4 исправления:
TDirList = object( TObj )
{* Allows easy directory scanning. This is not visual object, but
storage to simplify working with directory content. }
protected
FList : PList;
FPath: string;
...
{* Number of items. }
property Names[ Idx : Integer ] : KOLString read GetNames;
{* Full long names of directory items. }
property Path : stringread FPath;
{* Path of scanned directory. }
procedure Clear;
...
function NewDirList( const DirPath, Filter: String; Attr: DWORD ): PDirList;
...
function NewDirList( const DirPath, Filter: String; Attr: DWORD ): PDirList;
begin
{-}
New( Result, Create );
...
String -> KOLString...
Еще раз извиняюсь, за вводение в заблюждение 8)
Ketmar (2006-10-28 22:52:00) [28]>[8] MTsv DN(c) 28-Oct-2006, 22:30
>(Примечание: для использования UNICODE,
>загрузите дополнительно KOL_unicode.zip, содержащий
>необходимый файл KOL_unicode.inc, с перенаправлением
>большинсва функций и типов API Windows к их версиям
>UNICODE).
это не оно?
MTsv DN (2006-10-28 22:47:00) [29]Если хотите, могу заняться этим... Только версию "стабильните" какую-нибудь,а я Вам апдейт вышлю,быстро не обещаю,но думаю за неделю PAS-версию осилю...
MTsv DN (2006-10-28 22:36:00) [30]Тоже самое: GetModuleHandle(W), GetDiskFreeSpace(W) итдитп... Иначе 100% поддержки UNICODE не будет :'(
MTsv DN (2006-10-28 22:31:00) [31]> И так во везде...
В смысле: "И так везде..."
MTsv DN (2006-10-28 22:30:00) [32]> UNICOD хорошо потестировать, если кому интересно.
С ЮНИКОДОМ полный "косяк"... Я в глубины не лез, ввел первое попавшееся исправление, что я Вам отправлял.
Вот:
function FileExists( const FileName : KOLString ) : Boolean;
{$IFDEF FILE_EXISTS_EX}
var FD: TFindFileData;
F: DWORD;
LFT: TFileTime;
Hi, Lo: Word;
{$ELSE}
var Code: Integer;
{$ENDIF}
begin
{$IFDEF FILE_EXISTS_EX}
Result := FALSE;
F := Find_First( Filename, FD );
if F = INVALID_HANDLE_VALUE then Exit;
Find_Close( F );
if FD.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0 then Exit;
FileTimeToLocalFileTime( FD.ftLastWriteTime, LFT );
if FileTimeToDosDateTime( LFT, Hi, Lo ) then Result := TRUE;
{$ELSE}
Code := GetFileAttributes(PKOLChar(FileName));
Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code = 0);
{$ENDIF}
end;
Мало написать "PKOLChar(FileName)"... Надо:
Code := {$IFDEF UNICODE_CTRLS}GetFileAttributesW{$ELSE}GetFileAttributes{$END}(PKOLChar(FileName ));
И так во везде...
Vladimir Kladov (2006-10-28 21:56:00) [33]тестируйте лучше обычные проекты, без линукса. UNICOD хорошо потестировать, если кому интересно. А если очень линкс-порт хочется глянуть, берите gtk_pas...., устанавливайте GTK for Windows (линк я там в тесктовик положил, около 10 метров качать), и можно тестировать из-под Delphi под Windows. Хотя тут как раз тестировать особо нечего. Есть форма, кнопка, метка, paintbox, канва, карандаш, кисть - все в начальной стадии. Главное, почин сделан, и можно теперь дальше идти, углублять и расширять. Через месяц глядишь и под линуксом можно будет на что-то посмотреть.
Vladimir Kladov (2006-10-28 21:51:00) [34]а я еще 2.40 когда выкладывал, подумал: и чего он так разросся. Сейчас же удалю, спасибо. Нечего дублировать.
MTsv DN (2006-10-28 21:45:00) [35]Обновление доступно на http://www.kolnmck.ru(архивы исправлены)
MTsv DN (2006-10-28 21:32:00) [36]2 Vladimir Kladov
Владимир, архив mck.zip содержит старые версии KOL.PAS, KOLadd.pas, KOLDirDlgEx.pas и delphicommctrl.inc...
Vladimir Kladov (2006-10-28 21:26:00) [37]Поправил. Но вообще-то _эту_ часть я еще вовсе не тестировал.
ANTPro (2006-10-28 21:17:00) [38]http://kolmck.net/KOL_linux.zip
404 Not Found :(
Vladimir Kladov (2006-10-28 21:02:00) [39]А, кстати - забыл в новостях написать, что SetParent работает правильно, и сам отсоединяет из списка на автоудаление от прежнего родителя. В эдакой куче изменений мимо проскочил, а само не вспомнилось.
Все выложил, забирайте.