-
Замечена некорректная работа нек-х ф-ций, использующих __DelimiterLast/WStrRScan (при включенном UNICODE_CTRLS, само собой)
ExtractFileName('d:\dir\file.ext') например даёт 'ile.ext' ExtractFilePath(...) даёт 'd:\dir\f'
И ещё просьба к ув. тов. Кладову: можно ли вынести ShGetFileInfo в interface? или уж тогда сделать ф-ции типа FileIconSystemIdx для определения типа файла?
-
ParanoiS, у Вас исходник есть - посмотрите почему так происходит (если оно действительно так) - поправьте и расскажите, что было неправильно.
-
уже год бодаю UNICODE_CTRLS и именно с этими функциями все норм но у меня везде стоит еще и PAS_VERSION
-
Это проявилось недавно, в последней версии походу (я давно кол не обновлял) видимо автором была изменена ф-ция WStrRScan. При PAS_VERSION тоже самое.
-
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; > Это проявилось недавно
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;
-
а может, всё же преобразование dword изменить на что-то более.... совместимое с 64 битами? Типа, uint_ptr
-
Awkward, можно, но для 32bit и так пойдёт. А вот кто и что хотел сказать строчкой else inc(Result); Кстати, из-за этого MCK wizard не создает нужных inc файлов для проекта
-
Одно лечим, другое калечим... Видимо, какая то ДРУГАЯ ф-ция от этого заработала :)
И вообще, есть же виндозные ф-ции для ParamStr(n) и ExtractFileXXX. чё бы на них не сделать.
-
Удалено модератором
|