![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Antony41 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: нет Всего: 1 |
Привет!
Вот обычная фун-я перемещения файла в корзину.
Категорически отказывается удалить файл C:\Стас Михайлов\06 S. Mihailov - Luchshie pesni (2007)\02 Mama.mp3 Стоит его только переименовать C:\Стас Михайлов\06 S. Mihailov - Luchshie pesni (2007)\02 Mama1.mp3 и всё встаёт на своё место. Переименовываю обратно и снова нифига не работает Файл не занят ни какими процессами и стандартным методом удаляется (через explorer), хотя и тут функция ShellAPI Аттрибуты тоже сняты. Что же это может быть? зы длина строки и размер файла значения не меняют.
Это сообщение отредактировал(а) Rrader - 13.5.2009, 12:06 |
||||
|
|||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 1 Всего: 7 |
Попробуй ноль в конце имени добавить
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Вообще-то все функции возвращают код ошибки, если что-то отказываются делать. Код возвращается либо в результате ф-и, либо доступен через GetLastError. Что означает код ошибки можно посмотреть в MSDN В данном случае коды ошибок имеются на странице SHFileOperation Узнаете что за ошибка - можно будет ее устранять. |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
Попробуйте заменить PAnsiChar на PChar.
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Это почему? SHFileOperation доступна и в Ansi и в Unicode версиях. Какая из них задействуется по умолчанию - дело версии Delphi, о которой тут ни слова не было. Вроде, D2009 только задействовало Unicode по умолчанию? В любом случае - если PChar=PAnsiChar, то и SHFileOperation=SHFileOperationA по умолчанию. Добавлено через 1 минуту и 14 секунд А если SHFileOperation=SHFileOperationW, то PChar=PWideChar. Так что явное приведение к Ansi тут может быть лишним. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: нет Всего: 329 |
||||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
У меня в D2007 работают оба варианта (PAnsiChar и PChar, хотя все-таки это разные вещи). Надо смотреть либо код ошибки, либо есть особенности в конкретной версии Delphi.
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Это разные вещи для D2009, поскольку там PChar=PWideChar. Во всех предыдущих PChar=PAnsiChar, см. Character pointers в хелпе Delphi. Само собой, т.к. там вызывается Ansi версия SHFileOperation и PChar=PAnsiChar. Т.о. в итоге вызывается одна и та же ф-я с одними и теми же параметрами. За сим умолкаю и прошу прощения за отклонение от темы ветки. Это сообщение отредактировал(а) kami - 13.5.2009, 00:06 |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 1 Всего: 7 |
В самом деле, некоторые функи из этой оперы требуют дополнительного нуля после имени файла (см пост № 2).
Этот нуль призван ограничивать список имен, если таковое не одно. Но если даже оно одно, то нуль этот не помешает. Just try. ;-) --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Antony41 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: нет Всего: 1 |
Пробовал не помогает Delphi 7 Studio
Ошибка: Не удаётся удалить файл. Не удаётся произвести чтение из файла или с диска.
Файл один. помогло, но всё таки странно почему... Может ноль следует добавить и в функцию DeleteFile? входящую в комплект SysUtils? |
||||
|
|||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Да потому что в документации так написано. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Antony41 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 27.12.2008 Репутация: нет Всего: 1 |
||||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Нет, конечно же.
Подсказка: функция SHFileOperation работает с кучей файлов, вот почему ей нужен двойной разделитель, т.к. группа файлов задаётся так: 'файл1'#0'файл2'#0'файл3'#0#0. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
во выразился... куда применять? зачем?) Это сообщение отредактировал(а) MetalFan - 13.5.2009, 16:19 -------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |