Конференция "KOL" » Просьба к Кладову, и проблема с WStrRScan
 
  • ParanoiS © (13.10.14 17:01) [0]
    Замечена некорректная работа нек-х ф-ций, использующих __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]
    Удалено модератором
 
Конференция "KOL" » Просьба к Кладову, и проблема с WStrRScan
Есть новые Нет новых   [118665   +33][b:0][p:0.002]