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.


MTsv DN   (2008-03-28 09:06:00) [41]

Ну, т.е. результат один и тот же... Да, работает с подстрокой, и медленнее, поэтому по совету mdw, заменил код в IndexOfChar на:

Result := -1;
if S = '' then exit;
for I := 1 to Length(S) do
 begin
  if S[I] = Chr then
   begin
    Result := I;
    break;
   end;
 end;


GMax   (2008-03-27 23:10:00) [42]

Pos ведь с подстрокой работает ?
или в дельфях есть оптимизация на Pos(char...) ???
значит IndexOf должен быстрее работать.


D[u]fa   (2008-03-27 17:23:00) [43]

Не уловил суть вопроса.. я так понял обновление кол у тебя есть, а почему бы не проверить?) лично я не обновлялся


MTsv DN   (2008-03-27 17:21:00) [44]

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


D[u]fa   (2008-03-27 15:41:00) [45]

либо что б не юзать встроенную функцию Pos, либо для поддержки уникода, либо чтоб параметры местами поменять, либо я хз =)


MTsv DN   (2008-03-27 11:20:00) [46]

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


=BuckLr=   (2008-03-27 10:37:00) [47]


> скинул б сюда исправление

Всё есть по ссылке. Это очень небольшой фикс, но лично для меня очень важный.


D[u]fa   (2008-03-26 12:28:00) [48]

скинул б сюда исправление, видимо у Владимира времени нету просто...


=BuckLr=   (2008-03-26 11:01:00) [49]

Владимиру Кладову:
Будет ли официальное исправление того, о чём я писал здесь http://www.delphimaster.ru/cgi-bin/forum.pl?id=1201946463&n=10

Я исправил свой KOL.pas, но хотелось бы видеть это исправление и в будущих версиях...


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

Наверх

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