Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Версия 2.87


Страницы:   1 2 3

MTsv DN ©   (2008-03-25 09:14:00) 

Новости от 21марта 2008 (KOL & MCK v2.87)

[+]    Добавлены    функции    NextPowerOf2,   ToRadix,   FromRadiStr,
InsertSeparators, Str2File.

[*]  UNICODE_CTRLS:  обновлены  функции  IndexOfChar, IndexOfCharsMin,
IndexOfStr (с использованием типа KOLString).

[+]  Добавлены функции CrackStack_MapInResource и CrackStack_MapInFile
(могут использоваться при отладке).

[-] Исправлена функция NormalizeUnixText.

[-]  Свойство  TStream.Size  исправлено  для  memory stream для случая
присваивания значения 0 пустому потоку данных.

[+] Исправлена функция TWStrList.SetText (by mdw).


Решил создать отдельную тему...
Ошибки при подключенной UNICODE_CTRLS
1. function CrackStack_MapInResource( const MapName: String; Max_length: Integer; HandleSuspiciousAddresses: Boolean ): String;
Строка:
Resource2Stream( MapStrm, hInstance, PChar( MapName ), RT_RCDATA );
2е ошибки: несоответствие типов Char и WideChar... Еще насколько я понимаю надо в функции, String на KOLString заменить...

2. function ToRadix( number: Radix_Int; radix: Integer; min_digits: Integer ): KOLString;
Ошибка: несовпадает объявление.

3. function InsertSeparators( const s: KOLString; chars_between: Integer; Separator: KOLChar ): KOLString;
Ошибка: несовпадает объявление.

4. function IndexOfChar( const S : KOLString; Chr : KOLChar ) : Integer;
Строка:
 F := StrScanLen( P, Chr, Length( S ) );
Ошибка: несоответствие типов Char и WideChar...

Вообще функция IndexOfChar как то странно поддержку UNICODE осуществляет...
function IndexOfChar( const S : KOLString; Chr : KOLChar ) : Integer;
var P, F : PChar;
begin
 P := PChar( S );
 {$IFDEF INPACKAGE}
 F := StrScan( P, Chr );
 {$ELSE}
 F := StrScanLen( P, Chr, Length( S ) );
 {$ENDIF}
 Result := -1;
 if (F = nil) or (S = '') then Exit;
 Result := Integer( F ) - Integer( P )
        {$IFDEF INPACKAGE} + 1 {$ENDIF};
 if {(Result > Length(S)) or} (S[ Result ] Chr) then
   Result := -1;
end;
Кроме объявления ничего и нет. В самом начале строка S - WideString приводится к PChar...да и потом Ansi-версия StrScanLen откуда-то взялась...


Еще один вопрос.

А чем собственно результат IndexOfChar(S, Chr) отличается от Pos(Chr, S)? Или я чего-то недопонимаю?

В любом случае, в 2.87 IndexOfChar не работает с UNICODE.


  (2009-04-01 14:17:00) [1]

Удалено модератором


MTsv DN   (2008-09-19 12:10:00) [2]

2 Dimaxx
Исправил...насколько хватило знаний асма :)


Dimaxx   (2008-09-18 23:48:00) [3]


> Скиньте минимальный нерабочий проект. Так и не смог добиться ошибки...

Пожалуйста... http://dimaxx.fatal.ru/scanline_nil.zip

Версия 2.87. Пока не поставишь принудительно pixelformat после изенения размера - любое изменение высоты картинки дает nil. С шириной все в порядке.


MTsv DN   (2008-09-17 20:13:00) [4]

2 Dimaxx ©   (11.08.08 17:00) [39]
Скиньте минимальный нерабочий проект. Так и не смог добиться ошибки...


MTsv DN   (2008-09-17 19:59:00) [5]

L`Autour ©   (08.09.08 06:01) [41]
Да простит меня КодГир за "стыренный" код.


MTsv DN   (2008-09-17 19:40:00) [6]

Разобрался. Разный TColor.

Подправлена асм-версия...


MTsv DN   (2008-09-17 19:35:00) [7]

Кстати, интересный вопрос поднял Hallif...и дело даже не в АСМ версии.

Дельфи:
function ColorToRGB(Color: TColor): Longint;
begin
 if Color < 0 then
   Result := GetSysColor(Color and $000000FF) else
   Result := Color;
end;


KOL:
function Color2RGB( Color: TColor ): TColor;
begin
 if Color < 0 then
   Result := GetSysColor(Color and $7F) else
   Result := Color;
end;

Кому верить?


Hallif   (2008-09-08 23:07:00) [8]

Модуль: KOL_ASM
Функция: Color2RGB
Описание: Очевидно, что если не SMALLEST_CODE Цвет некоторых контролов будет иметь черный цвет.
function Color2RGB( Color: TColor ): TColor;
asm
        BTR  EAX, 31
        JNC  @@exit
       AND  EAX , $7F   // <- a Fix    
        PUSH      EAX
        CALL      GetSysColor
@@exit:
end;
P.S Проверить немогу, но и без этого очевидно.


L`Autour   (2008-09-08 06:01:00) [9]

в процедуре:

function _WStrComp(S1, S2: PWideChar): Integer;
var Buf0: array[ 0..0 ] of WideChar;
begin
 Buf0[ 0 ] := #0;
 if S1 = nil then S1 := @ Buf0[ 0 ];
 if S2 = nil then S2 := @ Buf0[ 0 ];
 while TRUE do
 begin
   Result := Ord( S1^ ) - Ord( S2^ );
   if Result <> 0 then Exit;
   if S1^ = #0 then Exit;
 end;
end;

нехватает инкремента указателей сравниваемых строк


L`Autour   (2008-08-19 06:34:00) [10]

Никто работу ToolBar под Win98se не проверял? У меня при включенном для ToolBar ToolTip прога стабильно вылетает с ошибкой при их всплывании над кнопками ToolBar. Win98se у меня стоит под VMWare.


Dimaxx   (2008-08-11 17:00:00) [11]

Спасибо, буду знать. Установка PixelFormat после изменения размеров решила проблему. А мб это "сунуть" в FormatChanged, чтоб не писать каждый раз.


Vladimir Kladov   (2008-08-11 15:38:00) [12]

PixelFormat присвоить, или есть ещё свойство HandleType. В общем, после изменения размера надо снова превратить его в DIB.


Dimaxx   (2008-08-11 02:35:00) [13]

Владимир, проблема у Bitmap при доступе через ScanLine. При создании битмапа с фиксированными размерами все ок. Но стоит изменить высоту (с шириной все в порядке), как ScanLine возвращает nil. Пробовал и DIB-битмап. Тоже самое - nil выдается и в ScanLine, и в DIBBits. Придется изворачиваться, но это не есть гуд. Если кто знает способ решения проблемы - подскажите.


L`Autour   (2008-07-31 06:07:00) [14]

И по 2.86 -> 2.87++, там действительно KOL_ASM.inc не меняется  хотя
для 2.86 -> 2.87 он менялся (матюгов нет). Без изменения KOL_ASM.inc - идут матюги при компиляции прог.
(на работе делал 2.86 -> 2.87 -> 2.87+ ->  2.87++, а дома решил попробовать 2.86 -> 2.87++)


MTsv DN   (2008-07-29 09:02:00) [15]

2 L`Autour
Пардон. Это мне понадобилось, забыл убрать... Просто подправьте mirror.pas и пересоберите все...


L`Autour   (2008-07-29 07:53:00) [16]

А зачем генерация констант  в 2.87++ для  Menu и PopupMenu стала типизированной?
Теперь Case Item of с ними не проходит.


MTsv DN   (2008-06-23 16:31:00) [17]

> KOL_Asm не изменялся ни в одном из обновлений + или ++. Или в + всё-таки изменялся?
С версии 2.86 на 2.87 изменялся же или нет? Вы же обновления выложили:
2.86 -> 2.87++ (непонятно зачем?)
и
2.87+ -> 2.87++


Vladimir Kladov   (2008-06-23 15:46:00) [18]

KOL_Asm не изменялся ни в одном из обновлений + или ++. Или в + всё-таки изменялся? Win Merge разницы не показывает.

Правильно именно Items использовать, тогда TLIST_FAST должен включаться в работу.


mdw   (2008-06-23 14:49:00) [19]


> Вот здесь исправление бага с fast tlist: http://kolmck.net/upd/to287++.
> rar

Попробовал. Вроде работает.

Возникло пару неясностей.

1. В результате апдейтов kolmck286to287++.upd и kolmck287+to287++.upd получаются разные KOL_ASM.inc. Я тестировал то, что получается с помощью kolmck287+to287++.upd. Какой правильный?

2. Я посмотрел KOLadd.pas. Вы вернули все как было до kolmck287to287+.upd.
Хотя ошибка и не возникает сейчас, но сдается мне, что все же там ошибка присутствует. Посмотрите сами, например:

procedure TTree.Add(Node: PTree);
var Previous: PTree;
begin
 Node.Unlink;
 if fChildren = nil then
   fChildren := NewList;
 Previous := nil;
 if PCrackList( fChildren ).fCount > 0 then
   Previous := PCrackList( fChildren ).fItems[ PCrackList( fChildren ).fCount - 1 ];
//Вот здесь идет обращение к fItems, но если элементов больше 256, при
//TLIST_FAST то fItems будет nil. Или я что-то не понимаю?

 if Previous <> nil then
 begin
   Previous.fNext := Node;
   Node.fPrev := Previous;
 end;
 fChildren.Add( Node );
 Node.fParent := @Self;
end;


Yury Sidorov   (2008-06-21 10:31:00) [20]

Официально объеденить две ветки вряд ли получится, но я скоро сделаю синхронизацию с последней версией KOL и получится как раз та объединенная версия.
До этого не делал синхронизацию, т. к. боялся занести новых багов :)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо