Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > LPTSTR и strcat() |
Автор: Madest 27.5.2004, 19:25 | ||
Когда программа первый раз исполняет этот код, выдается:
2- c:\ZEZO\p 3- c:\ZEZO\p1
2- c:\ZEZO\p1 3- c:\ZEZO\p11 |
Автор: kruchinin 27.5.2004, 19:41 | ||||
strcat здесь не причем (и вообще есть APi-шные функции для работы в Windows - lstrcat) попробуй не присваивать
а везде делать
или strcpy - просто зачем подключать еще одну библиотеку если при работе с Win приложением у тебя автоматически есть та функция |
Автор: Madest 27.5.2004, 19:56 | ||||
Если так:
то тогда при передаче lp в
это не работает =( |
Автор: Baa 27.5.2004, 22:36 | ||
Только так ![]() Видимо не совсем понимаешь, что есть указатель. Ты сначала зарезервировал 80 байт. На них указывает твой указатель, а потом ты взял и поменял ему место, на которое он указывает, на адрес, где записан твой "c:\\" соотв. дальше ты делаешь примерно тоже самое, а в конце вообще кульминация. Ты дописываешь 1 в память, где была записана та константа, затирая то, что после неё.
|
Автор: Madest 28.5.2004, 00:31 | ||||||||
Эти мои изыскания от безысходности =) Этот фрагмент, вообще, лишь для того, чтоб убедиться сам не знаю в чем:
В общем, цель удалить директорию с файлами. Взял из FAQ:
А мне путь заранее неизвестен. Вот и пытаюсь:
Так срабатывает, но только один раз. А так ни разу:
Пишет: "Не удается удалить файл. Не удается произвести чтение из файла или с диска." Что же делать?! |
Автор: AndyY 28.5.2004, 01:23 |
нужно так: char sz[MAX_PATH]; strcpy( sz, "c:\\zero\\" ); strcat( sz, 1 ); ну или через new, malloc распределить память. а то ты пытаешься менять область памяти со статическими данными. а вообще хороший стиль - пользоваться функциями _tcs* (например, _tcscpy) еще лучше - с проверкой длинны строк (_tcsncpy) |
Автор: Madest 28.5.2004, 01:39 |
Как все просто =) Перемудрил =) Спасибо! |
Автор: Shootnik 1.10.2008, 01:38 | ||
Выдает такую же ошибку, как и у Madest'а. nameOfDirectory - имя папки, которую нужно удалить. Насколько я понял, здесь что-то с преобразованием char* в const char*. Но как это исправить. Буду очень благодарен, если напишите конкретный пример, так как моих знаний на понятия общих объяснений может не хватить. Заранее спасибо. |
Автор: J0ker 1.10.2008, 03:16 |
чо это за \0 у вас? |
Автор: Shootnik 1.10.2008, 10:22 |
Удаляет все вложенные папки и файлы, включая "Пробник" - это не суть важно, можно и без этого обойтись. Здесь точно проблема не в этом... |
Автор: J0ker 1.10.2008, 15:36 | ||
я просто подумал возможно вы хотели написать "\\Temp\\Пробник\\0" и "0" - часть имени... |
Автор: xvr 1.10.2008, 17:07 | ||||||||
![]()
|
Автор: Shootnik 1.10.2008, 18:48 | ||||
Если писать так
то все работает, но если имя папки, которую нужно удалить не фиксировано, т.е.
то выдается ошибка. |
Автор: J0ker 1.10.2008, 19:21 | ||||
(уродство какое-то ![]()
|
Автор: Shootnik 1.10.2008, 19:38 | ||
и... ошибка то осталась, тем более если заменить "\\Temp\\Пробник\0" на какую-нибудь другую строку |
Автор: Shootnik 1.10.2008, 21:28 |
Visual c++ 6.0 тоже не работает А где ее взять? Прога выполняется, вот только файл не удаляется: выскакивает ошибка: "Ошибка при удалении файла или папки" с текстом сообщения "Не удается удалить файл. Не удается произвести чтение из файла или с диска.". |
Автор: J0ker 1.10.2008, 21:56 | ||
SHFileOperation (&sh) возвращает int - это код ошибки |
Автор: Shootnik 1.10.2008, 22:40 | ||
1026 |
Автор: J0ker 1.10.2008, 23:54 |
если проект небольшой - перешлите мне я посмотрю мыло в личку кину |
Автор: xvr 2.10.2008, 08:23 | ||||
SHFileOperation возвращает признак ошибки (0 или не 0), а код ошибки возвращает GetLastError(), которую надо позвать после этого. 2 Shootnik - что возвращает GetLastError() ? |
Автор: Dov 2.10.2008, 08:53 | ||||
Shootnik, попробуй так:
|
Автор: Madest 2.10.2008, 10:15 |
Shootnik, попробуй в пути вместо "\\" - "/" использовать. Чего получится? Эх, какие вопросы 4 года назад были. А разъяснение уважаемого Baa я тогда так и не понял, списал на чудеса. В указателях тогда уже разбирался, но со строками у меня взаимная неприязнь была =) |
Автор: xvr 2.10.2008, 10:45 |
Уже пошли советы из области плясок с бубном ![]() ![]() В колхоз назначили нового председателя (который совершенно не разбирался в животноводстве и пр) Колхоз занимается разведением кур (среди всего прочего). К председателю приходят с проблемой - куры мрут, что делать? Он дает распоряжение: - Перенести курятник на 200 метров вправо. - Сделано, все равно мрут - Тогда поднять в курятнике насесты на 23 см. - Сделано, падеж кур продолжается - Прорубить 2 дополнительных окна - Прорубили, куры продолжают дохнуть - Расширить входную дверь на 15.5 см - Расширили, все куры передохли. - Жаль, а у меня было еще столько свежих идей ![]() |
Автор: Shootnik 2.10.2008, 13:19 | ||||
не помомгло
i = 0;
И опять же... та же ошибка |
Автор: J0ker 2.10.2008, 16:40 | ||||||||
![]() SHFileOperation возвращает код ошибки RTFM Добавлено через 4 минуты и 6 секунд
давай проще сделаем - я те пришлю консольный проект который работает у меня с eeшником на тестирование если работает - копипастишь сее функцию и приверяешь. только мне щас надо отойти - вернусь вечером только |
Автор: xvr 2.10.2008, 16:51 | ||||||||||||||
Хм, отчасти ![]()
Ошибка 1026 соответствует
|
Автор: J0ker 3.10.2008, 00:11 |
это адаптированная для обывателя версия в оригинале было про службу техподдержки, нереботающий модем и строки инициализации |