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

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

Не совсем корректная работа ExtractFileName [Delphi, Windows]


Lex1 ©   (2007-07-26 17:56:00) 

MessageBox( 0, PChar(ExtractFileName('C:\Totalcmd\Totalcmd.exe /O')), '',  48 );
Результат.
SysUtils: Totalcmd.exe /O
KOL: O

Или это так и задумано?


Vladimir Kladov   (2007-07-31 03:34:00) [1]

В данном случае ошибка именно в Паскаль-версии, строка должна быть ':\/', как в константе DirDelimiters несколькими строками выше. Поправлю.


Lex1   (2007-07-31 00:18:00) [2]

Эээ... Даже если согласиться с этим (хотя вероятность встретить командную строку с таким ключём, по-моему больше), то почему паскаль-версия ведёт себя иначе? Непоследовательно ;)

function ExtractFileName( const Path : KOLString ) : KOLString;
var P: PKOLChar;
begin
 P := __DelimiterLast( PKOLChar( Path ), ':\' );
 if P^ = #0 then
   Result := Path
 else
   Result := P + 1;
end;


Vladimir Kladov   (2007-07-26 19:01:00) [3]

Вот я в окне проводника набираю C:\WEB\KOL/upd вместо C:\WEB\KOL\upd и тем не менее показывает директорию одинаково. Имена директорий с расширением так же допускаются (или = имена директорий с символом '.' ). Вывод: '/' может быть разделителем в пути. Другое дело, что директория с пробелами на конце вроде как ошибка. Но вот я набираю C:\WEB\KOL /upd (пробел видно?) - и работает так же. Окончательный вывод: в KOL верно, в SysUtils ошибка. Потому что если и вправду речь о поддиректории Totalcmd.exe по пути C:\Totalcmd и о файле O в этой директории, то SysUtils облажается.


Наверх

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