что возвращает SHFileOperation?
От: Mith  
Дата: 24.05.04 07:50
Оценка:
Подскажите, плз.
Как можно интерпретировать результат выполнения ф. SHFileOperation?
Вероятно, если не ноль, то это код ошибки. Как из этого кода получить
сообщение об ошибке?

Спасибо.
Re: что возвращает SHFileOperation?
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.05.04 08:01
Оценка:
Здравствуйте, Mith, Вы писали:

M>Подскажите, плз.

M>Как можно интерпретировать результат выполнения ф. SHFileOperation?
M>Вероятно, если не ноль, то это код ошибки. Как из этого кода получить
M>сообщение об ошибке?

А GetLastError() вызывать не пробовали (сразу после возврата нуля)?
- Искренне ваш, Поросенок Пафнутий
Re[2]: что возвращает SHFileOperation?
От: Mith  
Дата: 24.05.04 08:11
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Здравствуйте, Mith, Вы писали:


M>>Подскажите, плз.

M>>Как можно интерпретировать результат выполнения ф. SHFileOperation?
M>>Вероятно, если не ноль, то это код ошибки. Как из этого кода получить
M>>сообщение об ошибке?

SDB>А GetLastError() вызывать не пробовали (сразу после возврата нуля)?


GetLastError не реагирует. SHFileOperation сама может что возвращать.
Например, может возвратить 1223. Как по этому числу узнать, что не так?
Re[3]: что возвращает SHFileOperation?
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.05.04 08:16
Оценка:
Здравствуйте, Mith, Вы писали:

M>GetLastError не реагирует. SHFileOperation сама может что возвращать.

M>Например, может возвратить 1223. Как по этому числу узнать, что не так?

М-м-м... а пихать возвращаемое значение в FormatMessage() пробовали? Или в тулзу Error Lookup?
- Искренне ваш, Поросенок Пафнутий
Re[3]: что возвращает SHFileOperation?
От: Sergeant Украина www.photomirror.com.ua
Дата: 24.05.04 08:41
Оценка:
Здравствуйте, Mith, Вы писали:

M>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>Здравствуйте, Mith, Вы писали:


M>>>Подскажите, плз.

M>>>Как можно интерпретировать результат выполнения ф. SHFileOperation?
M>>>Вероятно, если не ноль, то это код ошибки. Как из этого кода получить
M>>>сообщение об ошибке?

SDB>>А GetLastError() вызывать не пробовали (сразу после возврата нуля)?


M>GetLastError не реагирует. SHFileOperation сама может что возвращать.

M>Например, может возвратить 1223. Как по этому числу узнать, что не так?

Хм... Вообще-то, в МСДН есть пример, в котором нарисовано следующее:
HRESULT hr;
........
hr = SHFileOperation(&sfo);


То есть, возвращается HRESULT. В том же МСДН-е есть пример, как этот самый HRESULT декодировать. Я вот, например, на приведенное Вами значение 1223 получил ERROR_CANCELED.
Стало быть, если действительно возвращается HRESULT, можно попробовать действовать таким вот способом.
Курить я буду, но пить не брошу.
Re[4]: что возвращает SHFileOperation?
От: Mith  
Дата: 24.05.04 08:42
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Здравствуйте, Mith, Вы писали:


M>>GetLastError не реагирует. SHFileOperation сама может что возвращать.

M>>Например, может возвратить 1223. Как по этому числу узнать, что не так?

SDB>М-м-м... а пихать возвращаемое значение в FormatMessage() пробовали? Или в тулзу Error Lookup?


Error Lookup не знает такие ошибки (например 1026). FormatMessage() мне может помочь, но нужно
знать какие парамерты ему передать
Re[5]: что возвращает SHFileOperation?
От: Sergeant Украина www.photomirror.com.ua
Дата: 24.05.04 08:51
Оценка:
Здравствуйте, Mith, Вы писали:

M>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>Здравствуйте, Mith, Вы писали:


M>>>GetLastError не реагирует. SHFileOperation сама может что возвращать.

M>>>Например, может возвратить 1223. Как по этому числу узнать, что не так?

SDB>>М-м-м... а пихать возвращаемое значение в FormatMessage() пробовали? Или в тулзу Error Lookup?


M>Error Lookup не знает такие ошибки (например 1026). FormatMessage() мне может помочь, но нужно

M>знать какие парамерты ему передать

А вот тут мы подошли к самому интересному
Как показывает практика, ошибка 1026 вылетает вот из-за чего:

The pFrom member is a double NULL-terminated string that contains one or more source file names. These names can be either fully qualified paths or standard DOS wildcards such as *.*. Although this member is declared as a NULL-terminated string, it is used as a buffer to hold multiple file names. Each file name must be terminated by the usual single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom.
Почему-то, если не задавать второй 0, вылетает эта ошибка. Что она означает — загадка... Проверьте, может у Вас как раз тот случай.
Курить я буду, но пить не брошу.
Re[4]: что возвращает SHFileOperation?
От: Mith  
Дата: 24.05.04 09:05
Оценка:
Здравствуйте, Sergeant, Вы писали:

S>Здравствуйте, Mith, Вы писали:


M>>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>>Здравствуйте, Mith, Вы писали:


M>>>>Подскажите, плз.

M>>>>Как можно интерпретировать результат выполнения ф. SHFileOperation?
M>>>>Вероятно, если не ноль, то это код ошибки. Как из этого кода получить
M>>>>сообщение об ошибке?

SDB>>>А GetLastError() вызывать не пробовали (сразу после возврата нуля)?


M>>GetLastError не реагирует. SHFileOperation сама может что возвращать.

M>>Например, может возвратить 1223. Как по этому числу узнать, что не так?

S>Хм... Вообще-то, в МСДН есть пример, в котором нарисовано следующее:

S>
S>HRESULT hr;
S>........
S>hr = SHFileOperation(&sfo);
S>


S>То есть, возвращается HRESULT. В том же МСДН-е есть пример, как этот самый HRESULT декодировать. Я вот, например, на приведенное Вами значение 1223 получил ERROR_CANCELED.

S>Стало быть, если действительно возвращается HRESULT, можно попробовать действовать таким вот способом.

Я видел этот пример! Но, к сожалению, это не то... Ошибка 1223 возникает когда задаешь кривой путь. "Действие отменено", согласись не в тему...
А на ошибку 1026 он вообще не реагирует.
Re[6]: что возвращает SHFileOperation?
От: Mith  
Дата: 24.05.04 09:07
Оценка:
Здравствуйте, Sergeant, Вы писали:

S>А вот тут мы подошли к самому интересному

S>Как показывает практика, ошибка 1026 вылетает вот из-за чего:

S>The pFrom member is a double NULL-terminated string that contains one or more source file names. These names can be either fully qualified paths or standard DOS wildcards such as *.*. Although this member is declared as a NULL-terminated string, it is used as a buffer to hold multiple file names. Each file name must be terminated by the usual single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom.

S>Почему-то, если не задавать второй 0, вылетает эта ошибка. Что она означает — загадка... Проверьте, может у Вас как раз тот случай.

Да, я знаю про эту фишку! В общем это не загадка, а задумка разработчиков. Но задача стоит именно получить сообщение об ошибке и выдать её пользователю, потому как он может указать кривой путь.
Re[6]: что возвращает SHFileOperation?
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.05.04 09:09
Оценка:
Здравствуйте, Sergeant, Вы писали:

S>Здравствуйте, Mith, Вы писали:


M>>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>>Здравствуйте, Mith, Вы писали:


M>>>>GetLastError не реагирует. SHFileOperation сама может что возвращать.

M>>>>Например, может возвратить 1223. Как по этому числу узнать, что не так?

SDB>>>М-м-м... а пихать возвращаемое значение в FormatMessage() пробовали? Или в тулзу Error Lookup?


M>>Error Lookup не знает такие ошибки (например 1026). FormatMessage() мне может помочь, но нужно

M>>знать какие парамерты ему передать

S>А вот тут мы подошли к самому интересному

S>Как показывает практика, ошибка 1026 вылетает вот из-за чего:

S>The pFrom member is a double NULL-terminated string that contains one or more source file names. These names can be either fully qualified paths or standard DOS wildcards such as *.*. Although this member is declared as a NULL-terminated string, it is used as a buffer to hold multiple file names. Each file name must be terminated by the usual single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom.

S>Почему-то, если не задавать второй 0, вылетает эта ошибка. Что она означает — загадка...

Чего же тут загадочного? В переменную, имеющую формальный тип LPTSTR, может записываться несколько сишных строк, каждая из которых кончается нулем. Как же функция сможет понять, какой из этих нулей является концом последней строки? Вот для этого второй нулевой символ и нужен.
- Искренне ваш, Поросенок Пафнутий
Re[7]: что возвращает SHFileOperation?
От: Sergeant Украина www.photomirror.com.ua
Дата: 24.05.04 09:25
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

S>>Почему-то, если не задавать второй 0, вылетает эта ошибка. Что она означает — загадка...


SDB>Чего же тут загадочного? В переменную, имеющую формальный тип LPTSTR, может записываться несколько сишных строк, каждая из которых кончается нулем. Как же функция сможет понять, какой из этих нулей является концом последней строки? Вот для этого второй нулевой символ и нужен.


Я имею в виду, что загадка — это не два нуля в конце строки, это понятно А загадка — это код ошибки 1026 в данном случае. В win32 errror codes ее нет, но в других местах она проскакивает как File System Error, и означает недостаток места на диске. Железная логика.
Курить я буду, но пить не брошу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.