Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Просьба к Кладову, и проблема с WStrRScan


ParanoiS ©   (13.10.14 17:01

Замечена некорректная работа нек-х ф-ций, использующих __DelimiterLast/WStrRScan (при включенном UNICODE_CTRLS, само собой)

ExtractFileName('d:\dir\file.ext') например даёт 'ile.ext'
ExtractFilePath(...) даёт 'd:\dir\f'

И ещё просьба к ув. тов. Кладову: можно ли вынести ShGetFileInfo в interface? или уж тогда сделать ф-ции типа FileIconSystemIdx для определения типа файла?


NoUser ©   (13.10.14 20:35[1]

ParanoiS,  у Вас исходник есть - посмотрите почему так происходит (если оно действительно так) - поправьте и расскажите, что было неправильно.


QAZ   (13.10.14 20:38[2]

уже год бодаю UNICODE_CTRLS и именно с этими функциями все норм
но у меня везде стоит еще и PAS_VERSION


ParanoiS ©   (13.10.14 20:58[3]

Это проявилось недавно, в последней версии походу (я давно кол не обновлял) видимо автором была изменена ф-ция WStrRScan. При PAS_VERSION тоже самое.


NoUser ©   (14.10.14 02:25[4]


// VERSION 3.18
function WStrRScan(const Str: PWideChar; Chr: WideChar): PWideChar;
begin
 Result := Str;
 while Result^ <> #0 do inc( Result );
 while (DWORD( Result ) >= DWORD( Str )) and
       (Result^ <> Chr) do dec( Result );
 if (DWORD( Result ) < DWORD( Str )) then
   Result := nil
end;


> Это проявилось недавно


// VERSION 3.22
function WStrRScan(const Str: PWideChar; Chr: WideChar): PWideChar;
begin
 Result := Str;
 while Result^ <> #0 do inc( Result );
 while (DWORD( Result ) >= DWORD( Str )) and
       (Result^ <> Chr) do dec( Result );
 if (DWORD( Result ) < DWORD( Str )) then
   Result := nil
 else inc(Result);                /// ???
end;


Awkward ©   (14.10.14 10:45[5]

а может, всё же преобразование dword изменить на что-то более.... совместимое с 64 битами? Типа, uint_ptr


NoUser ©   (14.10.14 12:18[6]

Awkward, можно, но для 32bit и так пойдёт. А вот кто и что хотел сказать строчкой else inc(Result);

Кстати, из-за этого MCK wizard не создает нужных inc файлов для проекта


ParanoiS ©   (14.10.14 16:58[7]

Одно лечим, другое калечим... Видимо, какая то ДРУГАЯ ф-ция от этого заработала :)

И вообще, есть же виндозные ф-ции для ParamStr(n) и ExtractFileXXX. чё бы на них не сделать.


Manzano   (25.11.15 02:39[8]

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


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо