Здравствуйте, Bell, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
B>Что-то не очень понятно Судя по тому, что ты написал — все работает, и к чему тогда вопрос?
Как же все работает?
sh.pFrom=path;
SHFileOperation(&sh)
НЕ РАБОТАЕТ!
sh.pFrom="c:\\Home\\DIR";
SHFileOperation(&sh)
работает... Но мне нужно, чтобы заработал первый вариант, т.к. я априори не знаю путь...
Re[3]: В чем прикол LPCTSTR?, в SHFILEOPSTRUCT::pFrom?
Здравствуйте, wirt, Вы писали:
W>Здравствуйте, Bell, Вы писали:
B>>Здравствуйте, Аноним, Вы писали:
B>>Что-то не очень понятно Судя по тому, что ты написал — все работает, и к чему тогда вопрос?
W>Как же все работает? W>sh.pFrom=path; W>SHFileOperation(&sh) W>НЕ РАБОТАЕТ! W>sh.pFrom="c:\\Home\\DIR"; W>SHFileOperation(&sh) W>работает... Но мне нужно, чтобы заработал первый вариант, т.к. я априори не знаю путь...
В первом посте фраза "НЕ РАБОТАЕТ" отсутствовала. Потому я и переспросил.
Следующий вопрос: Что значит "НЕ РАБОТАЕТ"? Программа валится, или или что-то еще?
Терерь для справки: LPCTSTR — это typedef, и то, что он конкретно обозначает, зависит от настроек проекта (определен ли макрос _UNICODE), и может быть и const char*, и const wchar_t*.
Любите книгу — источник знаний (с) М.Горький
Re[4]: В чем прикол LPCTSTR?, в SHFILEOPSTRUCT::pFrom?
B>В первом посте фраза "НЕ РАБОТАЕТ" отсутствовала. Потому я и переспросил. B>Следующий вопрос: Что значит "НЕ РАБОТАЕТ"? Программа валится, или или что-то еще?
B>Терерь для справки: LPCTSTR — это typedef, и то, что он конкретно обозначает, зависит от настроек проекта (определен ли макрос _UNICODE), и может быть и const char*, и const wchar_t*.
согласен но фраза ек отсутствовала (а была "Работает")
Программа не валится, а появляеттся ShellMsgBox: Путь не найден...
Предвидя ответ проверь путь, проверил и не однократно...
Что такое LPCTSTR я знаю... _UNICODE — не определен... Пытался вручную повызывать как ВСЕ ANSI, так все UNICODE
(тоесть тыпи менял на wchar_t*, и SHFILEOPSTRUCTW и вызывал W — функцию) Не помогло...
Re[5]: В чем прикол LPCTSTR?, в SHFILEOPSTRUCT::pFrom?
Здравствуйте, wirt, Вы писали:
W> ... W>Предвидя ответ проверь путь, проверил и не однократно... W>Что такое LPCTSTR я знаю... _UNICODE — не определен... Пытался вручную повызывать как ВСЕ ANSI, так все UNICODE W>(тоесть тыпи менял на wchar_t*, и SHFILEOPSTRUCTW и вызывал W — функцию) Не помогло...
Здравствуйте, wirt, Вы писали:
W>Предвидя ответ проверь путь, проверил и не однократно...
Странно.
Может после GetEnvironmentVariable в home последний символ \ ? Короче смотри внимательнее в отладчике. Других вариантов пока в голову не приходит
Любите книгу — источник знаний (с) М.Горький
Re[5]: В чем прикол LPCTSTR?, в SHFILEOPSTRUCT::pFrom?
W>Программа не валится, а появляеттся ShellMsgBox: Путь не найден... W>Предвидя ответ проверь путь, проверил и не однократно... W>Что такое LPCTSTR я знаю... _UNICODE — не определен... Пытался вручную повызывать как ВСЕ ANSI, так все UNICODE W>(тоесть тыпи менял на wchar_t*, и SHFILEOPSTRUCTW и вызывал W — функцию) Не помогло...
1. GetEnvironmentVariable завершается нормально? какой результат?
2. Если напечатать home после GetEnvironmentVariable выводится правильно (то что ожидалось)?
3. Если напечатать path перед SHFileOperation выводится правильно?
4. это учли:
pFrom
Address of a buffer to specify one or more source file names. These names must be fully qualified paths. Standard Microsoft® MS-DOS® wild cards, such as "*", are permitted in the file-name position. 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 a single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom.
... << RSDN@Home 1.1.0 stable >>
---
С уважением,
Сергей Мухин
Re[6]: В чем прикол LPCTSTR?, в SHFILEOPSTRUCT::pFrom?
Здравствуйте, SergeMukhin, Вы писали:
SM>Здравствуйте, wirt, Вы писали:
W>>Программа не валится, а появляеттся ShellMsgBox: Путь не найден... W>>Предвидя ответ проверь путь, проверил и не однократно... W>>Что такое LPCTSTR я знаю... _UNICODE — не определен... Пытался вручную повызывать как ВСЕ ANSI, так все UNICODE W>>(тоесть тыпи менял на wchar_t*, и SHFILEOPSTRUCTW и вызывал W — функцию) Не помогло...
SM>1. GetEnvironmentVariable завершается нормально? какой результат? SM>2. Если напечатать home после GetEnvironmentVariable выводится правильно (то что ожидалось)? SM>3. Если напечатать path перед SHFileOperation выводится правильно? SM>4. это учли: SM>pFrom SM>Address of a buffer to specify one or more source file names. These names must be fully qualified paths. Standard Microsoft® MS-DOS® wild cards, such as "*", are permitted in the file-name position. 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 a single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom.
Путь правильный (b через отладчик и MessageBox), MSDN читал —
strcpy(path,home);
strcat(path,"\\directory1\0"); !!! писал
SHFILEOPSTRUCT sh;
memset(&sh,0,sizeof(sh));
sh.wFunc=FO_DELETE;
sh.pFrom=path;
SHFileOperation(&sh);
---------------
совет ctrcpy(sh.pFrom,path); не помог
И все предыдущие советы тоже не помогли... А советы пишутся не проверяя на работоспособность? (ко всем)
Re[6]: В чем прикол LPCTSTR?, в SHFILEOPSTRUCT::pFrom?
Здравствуйте, Константин, Вы писали:
К>Здравствуйте, wirt, Вы писали:
W>> ... W>>Предвидя ответ проверь путь, проверил и не однократно... W>>Что такое LPCTSTR я знаю... _UNICODE — не определен... Пытался вручную повызывать как ВСЕ ANSI, так все UNICODE W>>(тоесть тыпи менял на wchar_t*, и SHFILEOPSTRUCTW и вызывал W — функцию) Не помогло...
К>Какая реакция на такие три варианта? К>
W W>Путь правильный (b через отладчик и MessageBox), MSDN читал — W>strcpy(path,home); W>strcat(path,"\\directory1\0"); !!! писал
ну это бред, strcat будет работать до первого "\0" т.е. запишет один 0! т.е. это эквивалентно strcat(path,"\\directory1");
Лучше написать (для простоты) memset на весь path.
Нет ли пробелов в переменной HOME, их можно не заметить
если присвоили например так set home = xaxaxa то первым символом будет пробел (я не уверен, что это SHFileOperation понравится)
и еще проверь статический path
static path[300];
W>SHFILEOPSTRUCT sh; W>memset(&sh,0,sizeof(sh)); W>sh.wFunc=FO_DELETE; W>sh.pFrom=path; W>SHFileOperation(&sh); W>--------------- W>совет ctrcpy(sh.pFrom,path); не помог
xnj
W>И все предыдущие советы тоже не помогли... А советы пишутся не проверяя на работоспособность? (ко всем)
ну если бы приведен маленькая, но полная программа, что бы можно одним copy/paste ее создать, да и инструкция к применению ведь надо еще home присвоить, тогда может быть кто-нибудь и попробует. Может даже я (но завтра).
а так сколько надо текста набить что-бы проверить!