![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Madest |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Когда программа первый раз исполняет этот код, выдается:
2- c:\ZEZO\p 3- c:\ZEZO\p1
2- c:\ZEZO\p1 3- c:\ZEZO\p11 Это сообщение отредактировал(а) Madest - 27.5.2004, 20:05 --------------------
|
|||
|
||||
kruchinin |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 19.4.2003 Репутация: нет Всего: нет |
strcat здесь не причем (и вообще есть APi-шные функции для работы в Windows - lstrcat)
попробуй не присваивать
а везде делать
или strcpy - просто зачем подключать еще одну библиотеку если при работе с Win приложением у тебя автоматически есть та функция |
||||
|
|||||
Madest |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Если так:
то тогда при передаче lp в
это не работает =( Это сообщение отредактировал(а) Madest - 27.5.2004, 19:57 --------------------
|
||||
|
|||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Только так
![]() Видимо не совсем понимаешь, что есть указатель. Ты сначала зарезервировал 80 байт. На них указывает твой указатель, а потом ты взял и поменял ему место, на которое он указывает, на адрес, где записан твой "c:\\" соотв. дальше ты делаешь примерно тоже самое, а в конце вообще кульминация. Ты дописываешь 1 в память, где была записана та константа, затирая то, что после неё.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Madest |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Эти мои изыскания от безысходности =)
Этот фрагмент, вообще, лишь для того, чтоб убедиться сам не знаю в чем:
В общем, цель удалить директорию с файлами. Взял из FAQ:
А мне путь заранее неизвестен. Вот и пытаюсь:
Так срабатывает, но только один раз. А так ни разу:
Пишет: "Не удается удалить файл. Не удается произвести чтение из файла или с диска." Что же делать?! --------------------
|
||||||||
|
|||||||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
нужно так:
char sz[MAX_PATH]; strcpy( sz, "c:\\zero\\" ); strcat( sz, 1 ); ну или через new, malloc распределить память. а то ты пытаешься менять область памяти со статическими данными. а вообще хороший стиль - пользоваться функциями _tcs* (например, _tcscpy) еще лучше - с проверкой длинны строк (_tcsncpy) |
|||
|
||||
Madest |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Как все просто =) Перемудрил =)
Спасибо! --------------------
|
|||
|
||||
Shootnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
Выдает такую же ошибку, как и у Madest'а. nameOfDirectory - имя папки, которую нужно удалить. Насколько я понял, здесь что-то с преобразованием char* в const char*. Но как это исправить. Буду очень благодарен, если напишите конкретный пример, так как моих знаний на понятия общих объяснений может не хватить. Заранее спасибо. Это сообщение отредактировал(а) Shootnik - 1.10.2008, 01:49 |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
||||
|
||||
Shootnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
||||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
я просто подумал возможно вы хотели написать "\\Temp\\Пробник\\0" и "0" - часть имени... |
|||
|
||||
xvr |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
![]()
|
||||||||
|
|||||||||
Shootnik |
|
||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
Если писать так
то все работает, но если имя папки, которую нужно удалить не фиксировано, т.е.
то выдается ошибка. |
||||
|
|||||
J0ker |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
(уродство какое-то ![]()
Это сообщение отредактировал(а) J0ker - 1.10.2008, 19:23 |
||||
|
|||||
Shootnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
и... ошибка то осталась, тем более если заменить "\\Temp\\Пробник\0" на какую-нибудь другую строку |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
||||
|
||||
Shootnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
Visual c++ 6.0 тоже не работает А где ее взять? Прога выполняется, вот только файл не удаляется: выскакивает ошибка: "Ошибка при удалении файла или папки" с текстом сообщения "Не удается удалить файл. Не удается произвести чтение из файла или с диска.". |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
SHFileOperation (&sh) возвращает int - это код ошибки Это сообщение отредактировал(а) J0ker - 1.10.2008, 21:56 |
|||
|
||||
Shootnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
1026 |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
если проект небольшой - перешлите мне я посмотрю
мыло в личку кину |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
SHFileOperation возвращает признак ошибки (0 или не 0), а код ошибки возвращает GetLastError(), которую надо позвать после этого. 2 Shootnik - что возвращает GetLastError() ? |
|||
|
||||
Dov |
|
||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Shootnik, попробуй так:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||
|
|||||
Madest |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Shootnik, попробуй в пути вместо "\\" - "/" использовать. Чего получится?
Эх, какие вопросы 4 года назад были. А разъяснение уважаемого Baa я тогда так и не понял, списал на чудеса. В указателях тогда уже разбирался, но со строками у меня взаимная неприязнь была =) --------------------
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Уже пошли советы из области плясок с бубном
![]() ![]() В колхоз назначили нового председателя (который совершенно не разбирался в животноводстве и пр) Колхоз занимается разведением кур (среди всего прочего). К председателю приходят с проблемой - куры мрут, что делать? Он дает распоряжение: - Перенести курятник на 200 метров вправо. - Сделано, все равно мрут - Тогда поднять в курятнике насесты на 23 см. - Сделано, падеж кур продолжается - Прорубить 2 дополнительных окна - Прорубили, куры продолжают дохнуть - Расширить входную дверь на 15.5 см - Расширили, все куры передохли. - Жаль, а у меня было еще столько свежих идей ![]() |
|||
|
||||
Shootnik |
|
||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
не помомгло
i = 0;
И опять же... та же ошибка |
||||
|
|||||
J0ker |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
![]() SHFileOperation возвращает код ошибки RTFM Добавлено через 4 минуты и 6 секунд
давай проще сделаем - я те пришлю консольный проект который работает у меня с eeшником на тестирование если работает - копипастишь сее функцию и приверяешь. только мне щас надо отойти - вернусь вечером только |
||||||||
|
|||||||||
xvr |
|
||||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Хм, отчасти ![]()
Ошибка 1026 соответствует
|
||||||||||||||
|
|||||||||||||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
это адаптированная для обывателя версия в оригинале было про службу техподдержки, нереботающий модем и строки инициализации |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |