Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LPTSTR и strcat(), несуразица 
:(
    Опции темы
Madest
Дата 27.5.2004, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 27.11.2003
Где: Городок

Репутация: нет
Всего: нет



Код
CString sq;
LPTSTR lp=new char[80];

lp="c:\\";
sq.Format("1- %s",lp);
AfxMessageBox(sq);

lp="c:\\ZEZO\\p";
sq.Format("2- %s",lp);
AfxMessageBox(sq);

strcat(lp,"1");
sq.Format("3- %s",lp);
AfxMessageBox(sq);

Когда программа первый раз исполняет этот код, выдается:
    1- с:\
    2- c:\ZEZO\p
    3- c:\ZEZO\p1
Если не выходя из программы обратиться к этому коду еще раз, то выдает:
    1- с:\
    2- c:\ZEZO\p1
    3- c:\ZEZO\p11
Почему, когда я в части 2 присваиваю lp="c:\\ZEZO\\p"; lp получается с единичкой на конце?! Ведь присваивается нормально ей в части 1 "c:\\". Догадываюсь, что виной тому strcat(). А чего же делать?

Это сообщение отредактировал(а) Madest - 27.5.2004, 20:05
--------------------
PM MAIL   Вверх
kruchinin
Дата 27.5.2004, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 19.4.2003

Репутация: нет
Всего: нет



strcat здесь не причем (и вообще есть APi-шные функции для работы в Windows - lstrcat)
попробуй не присваивать
Код

lp="c:\\ZEZO\\p";

а везде делать
Код

lstrcpy(lp,"c:\\ZEZO\\p");

или strcpy - просто зачем подключать еще одну библиотеку если при работе с Win приложением у тебя автоматически есть та функция
PM MAIL   Вверх
Madest
Дата 27.5.2004, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 27.11.2003
Где: Городок

Репутация: нет
Всего: нет



Если так:
Код
lstrcpy(lp,"c:\\ZEZO\\p");
strcat(lp,"1");

то тогда при передаче lp в
Код
SHFILEOPSTRUCT sh;
...
sh.pFrom=lp;
...
SHFileOperation(&sh);

это не работает =(

Это сообщение отредактировал(а) Madest - 27.5.2004, 19:57
--------------------
PM MAIL   Вверх
Baa
Дата 27.5.2004, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Только так smile.gif При твоем варианте ты вообще не понятно зачем выделяешь память.
Видимо не совсем понимаешь, что есть указатель.
Ты сначала зарезервировал 80 байт.
На них указывает твой указатель, а потом ты взял и поменял ему место, на которое он указывает, на адрес, где записан твой "c:\\"
соотв. дальше ты делаешь примерно тоже самое, а в конце вообще кульминация.
Ты дописываешь 1 в память, где была записана та константа, затирая то, что после неё.
Код

CString sq;
LPTSTR lp = new TCHAR [80];

lstrcpy (lp, "c:\\");
sq.Format("1- %s",lp);
AfxMessageBox(sq);

lstrcpy(lp, "c:\\ZEZO\\p");
sq.Format("2- %s",lp);
AfxMessageBox(sq);

lstrcat(lp,"1");
sq.Format("3- %s",lp);
AfxMessageBox(sq);
delete [] lp;



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Madest
Дата 28.5.2004, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 27.11.2003
Где: Городок

Репутация: нет
Всего: нет



Эти мои изыскания от безысходности =)
Этот фрагмент, вообще, лишь для того, чтоб убедиться сам не знаю в чем:
Код
lp="c:\\";
sq.Format("1- %s",lp);
AfxMessageBox(sq);

В общем, цель удалить директорию с файлами. Взял из FAQ:
Код
SHFILEOPSTRUCT sh;
sh.hwnd=pFrame->m_hWnd;
sh.wFunc=FO_DELETE;
sh.pFrom="/*некий путь*/";
sh.pTo="NULL";
sh.fFlags=FOF_NOCONFIRMATION|FOF_SILENT;
sh.hNameMappings=0;
sh.lpszProgressTitle=NULL;
SHFileOperation(&sh);

А мне путь заранее неизвестен. Вот и пытаюсь:
Код
LPTSTR lp;
lp="c:\\ZEZO\\p";
strcat(lp,"допустим 1");

Так срабатывает, но только один раз.
А так ни разу:
Код
LPTSTR lp;
lstrcpy(lp,"c:\\ZEZO\\p");
lstrcat(lp,"1");

Пишет: "Не удается удалить файл. Не удается произвести чтение из файла или с диска."
Что же делать?!
--------------------
PM MAIL   Вверх
AndyY
Дата 28.5.2004, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



нужно так:
char sz[MAX_PATH];
strcpy( sz, "c:\\zero\\" );
strcat( sz, 1 );

ну или через new, malloc распределить память.

а то ты пытаешься менять область памяти со статическими данными.

а вообще хороший стиль - пользоваться функциями _tcs* (например, _tcscpy)
еще лучше - с проверкой длинны строк (_tcsncpy)


--------------------
PM MAIL WWW   Вверх
Madest
Дата 28.5.2004, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 27.11.2003
Где: Городок

Репутация: нет
Всего: нет



Как все просто =) Перемудрил =)
Спасибо!
--------------------
PM MAIL   Вверх
Shootnik
Дата 1.10.2008, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Код

            char sz[100];
            strcpy( sz, "\\Temp\\Пробник\0" );//strcpy( sz, nameOfDirectory );
            SHFILEOPSTRUCT sh;
            sh.hwnd   = GetSafeHwnd(); 
            sh.wFunc  = FO_DELETE;
            sh.pFrom  = sz;
            sh.pTo    = NULL;
            sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
            sh.hNameMappings = 0;
            sh.lpszProgressTitle = NULL;
            SHFileOperation (&sh);

Выдает такую же ошибку, как и у Madest'а. nameOfDirectory - имя папки, которую нужно удалить. Насколько я понял, здесь что-то с преобразованием char* в const char*. Но как это исправить. Буду очень благодарен, если напишите конкретный пример, так как моих знаний на понятия общих объяснений может не хватить. Заранее спасибо.

Это сообщение отредактировал(а) Shootnik - 1.10.2008, 01:49
PM MAIL ICQ   Вверх
J0ker
Дата 1.10.2008, 03:16 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Shootnik @  1.10.2008,  01:38 Найти цитируемый пост)
strcpy( sz, "\\Temp\\Пробник\0" );


чо это за \0 у вас?


--------------------
user posted image
PM MAIL   Вверх
Shootnik
Дата 1.10.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Цитата(J0ker @  1.10.2008,  03:16 Найти цитируемый пост)
чо это за \0 у вас? 

Удаляет все вложенные папки и файлы, включая "Пробник" - это не суть важно, можно и без этого обойтись. Здесь точно проблема не в этом...
PM MAIL ICQ   Вверх
J0ker
Дата 1.10.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Shootnik @ 1.10.2008,  10:22)
Цитата(J0ker @  1.10.2008,  03:16 Найти цитируемый пост)
чо это за \0 у вас? 

Удаляет все вложенные папки и файлы, включая "Пробник" - это не суть важно, можно и без этого обойтись. Здесь точно проблема не в этом...

я просто подумал возможно вы хотели написать "\\Temp\\Пробник\\0" и "0" - часть имени...


--------------------
user posted image
PM MAIL   Вверх
xvr
Дата 1.10.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Shootnik @ 1.10.2008,  01:38)
Код

            char sz[100];
            strcpy( sz, "\\Temp\\Пробник\0" );//strcpy( sz, nameOfDirectory );
            SHFILEOPSTRUCT sh;
            sh.hwnd   = GetSafeHwnd(); 
            sh.wFunc  = FO_DELETE;
            sh.pFrom  = sz;
            sh.pTo    = NULL;
            sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
            sh.hNameMappings = 0;
            sh.lpszProgressTitle = NULL;
            SHFileOperation (&sh);

Выдает такую же ошибку, как и у Madest'а. nameOfDirectory - имя папки, которую нужно удалить. Насколько я понял, здесь что-то с преобразованием char* в const char*. Но как это исправить. Буду очень благодарен, если напишите конкретный пример, так как моих знаний на понятия общих объяснений может не хватить. Заранее спасибо.

Цитата

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.
Судя по \0 в strcpy( sz, "\\Temp\\Пробник\0" ) такое намеренье было, но вся проблема в том, что strcpy не скопирует лишний 0  smile Так что напиши просто
Код

sh.pFrom  = "\\Temp\\Пробник\0";


PM MAIL   Вверх
Shootnik
Дата 1.10.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Если писать так
Код

            SHFILEOPSTRUCT sh;
            sh.hwnd   = GetSafeHwnd(); 
            sh.wFunc  = FO_DELETE;
            sh.pFrom  =" \\Temp\\Пробник";
            sh.pTo    = NULL;
            sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
            sh.hNameMappings = 0;
            sh.lpszProgressTitle = NULL;
            SHFileOperation (&sh);

то все работает, но если имя папки, которую нужно удалить не фиксировано, т.е.
Код

            char sz[100];
            strcpy( sz, "\\Temp\\Пробник" );
            SHFILEOPSTRUCT sh;
            sh.hwnd   = GetSafeHwnd(); 
            sh.wFunc  = FO_DELETE;
            sh.pFrom  = sz;
            sh.pTo    = NULL;
            sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
            sh.hNameMappings = 0;
            sh.lpszProgressTitle = NULL;
            SHFileOperation (&sh);

то выдается ошибка.
PM MAIL ICQ   Вверх
J0ker
Дата 1.10.2008, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Shootnik @  1.10.2008,  18:48 Найти цитируемый пост)
то выдается ошибка. 

Код

pFrom
Note  This string must be double-null terminated.

(уродство какое-то  smile )
Код

char sz[100];
memcpy( sz, "\\Temp\\Пробник\0", strlen("\\Temp\\Пробник")+2 );



Это сообщение отредактировал(а) J0ker - 1.10.2008, 19:23


--------------------
user posted image
PM MAIL   Вверх
Shootnik
Дата 1.10.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Код

                        char sz[100];
                        memcpy( sz, "\\Temp\\Пробник\0", strlen("\\Temp\\Пробник")+2 );
            SHFILEOPSTRUCT sh;
            sh.hwnd   = GetSafeHwnd(); 
            sh.wFunc  = FO_DELETE;
            sh.pFrom  = sz;
            sh.pTo    = NULL;
            sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
            sh.hNameMappings = 0;
            sh.lpszProgressTitle = NULL;
            SHFileOperation (&sh);

и...
ошибка то осталась, тем более если заменить "\\Temp\\Пробник\0" на какую-нибудь другую строку
PM MAIL ICQ   Вверх
J0ker
Дата 1.10.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Shootnik @  1.10.2008,  19:38 Найти цитируемый пост)
и...
ошибка то осталась, тем более если заменить "\\Temp\\Пробник\0" на какую-нибудь другую строку 

у меня работает
какой компайлер?
проверь работает-ли на именах в латинице

и номер ошибки давай

Это сообщение отредактировал(а) J0ker - 1.10.2008, 19:59


--------------------
user posted image
PM MAIL   Вверх
Shootnik
Дата 1.10.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Цитата(J0ker @  1.10.2008,  19:54 Найти цитируемый пост)
у меня работает
какой компайлер?

Visual c++ 6.0

Цитата(J0ker @  1.10.2008,  19:54 Найти цитируемый пост)
проверь работает-ли на именах в латинице

тоже не работает


Цитата(J0ker @  1.10.2008,  19:54 Найти цитируемый пост)
и номер ошибки давай

А где ее взять? Прога выполняется, вот только файл не удаляется: выскакивает ошибка: "Ошибка при удалении файла или папки" с текстом сообщения "Не удается удалить файл. Не удается произвести чтение из файла или с диска.".
PM MAIL ICQ   Вверх
J0ker
Дата 1.10.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Shootnik @  1.10.2008,  21:28 Найти цитируемый пост)
А где ее взять? Прога выполняется, вот только файл не удаляется: выскакивает ошибка: "Ошибка при удалении файла или папки" с текстом сообщения "Не удается удалить файл. Не удается произвести чтение из файла или с диска.". 

SHFileOperation (&sh) возвращает int - это код ошибки

Это сообщение отредактировал(а) J0ker - 1.10.2008, 21:56


--------------------
user posted image
PM MAIL   Вверх
Shootnik
Дата 1.10.2008, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Код

int iterator;
...
iterator=SHFileOperation (&sh);

1026
PM MAIL ICQ   Вверх
J0ker
Дата 1.10.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



если проект небольшой - перешлите мне я посмотрю
мыло в личку кину


--------------------
user posted image
PM MAIL   Вверх
xvr
Дата 2.10.2008, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(J0ker @ 1.10.2008,  21:56)
Цитата(Shootnik @  1.10.2008,  21:28 Найти цитируемый пост)
А где ее взять? Прога выполняется, вот только файл не удаляется: выскакивает ошибка: "Ошибка при удалении файла или папки" с текстом сообщения "Не удается удалить файл. Не удается произвести чтение из файла или с диска.". 

SHFileOperation (&sh) возвращает int - это код ошибки

SHFileOperation возвращает признак ошибки (0 или не 0), а код ошибки возвращает GetLastError(), которую надо позвать после этого.

Shootnik - что возвращает GetLastError() ?
PM MAIL   Вверх
Dov
Дата 2.10.2008, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Цитата(Shootnik @  1.10.2008,  18:48 Найти цитируемый пост)
но если имя папки, которую нужно удалить не фиксировано, то выдается ошибка.

Shootnik, попробуй так:
Код
sh.pFrom  = (LPCTSTR)sz;



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Madest
Дата 2.10.2008, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 27.11.2003
Где: Городок

Репутация: нет
Всего: нет



Shootnik, попробуй в пути вместо "\\" - "/" использовать. Чего получится? 
Эх, какие вопросы 4 года назад были. А разъяснение уважаемого Baa я тогда так и не понял, списал на чудеса. В указателях тогда уже разбирался, но со строками у меня взаимная неприязнь была =)
--------------------
PM MAIL   Вверх
xvr
Дата 2.10.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Уже пошли советы из области плясок с бубном  smile 
 smile Анекдот:
В колхоз назначили нового председателя (который совершенно не разбирался в животноводстве и пр)
Колхоз занимается разведением кур (среди всего прочего). К председателю приходят с проблемой - куры мрут, что делать? Он дает распоряжение:
- Перенести курятник на 200 метров вправо.
- Сделано, все равно мрут
- Тогда поднять в курятнике насесты на 23 см.
- Сделано, падеж кур продолжается
- Прорубить 2 дополнительных окна
- Прорубили, куры продолжают дохнуть
- Расширить входную дверь на 15.5 см
- Расширили, все куры передохли.
- Жаль, а у меня было еще столько свежих идей  smile 

PM MAIL   Вверх
Shootnik
Дата 2.10.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Цитата(Dov @  2.10.2008,  08:53 Найти цитируемый пост)
Shootnik, попробуй так:
Выделить всёкод C++
1:
    
sh.pFrom  = (LPCTSTR)sz;

не помомгло

Цитата(xvr @  2.10.2008,  08:23 Найти цитируемый пост)
2 Shootnik - что возвращает GetLastError() ? 

Код

            ...
                        SHFILEOPSTRUCT sh;
            sh.hwnd   = GetSafeHwnd(); 
            sh.wFunc  = FO_DELETE;
            sh.pFrom  = sz;
            sh.pTo    = NULL;
            sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
            sh.hNameMappings = 0;
            sh.lpszProgressTitle = NULL;
            SHFileOperation (&sh);
            i=GetLastError();

i = 0;
Цитата(Madest @  2.10.2008,  10:15 Найти цитируемый пост)
Shootnik, попробуй в пути вместо "\\" - "/" использовать. Чего получится? 

И опять же... та же ошибка
PM MAIL ICQ   Вверх
J0ker
Дата 2.10.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(xvr @  2.10.2008,  08:23 Найти цитируемый пост)
SHFileOperation возвращает признак ошибки (0 или не 0), а код ошибки возвращает GetLastError(), которую надо позвать после этого.

2 Shootnik - что возвращает GetLastError() ? 

 smile 
SHFileOperation возвращает код ошибки
RTFM

Добавлено через 4 минуты и 6 секунд
Цитата(Shootnik @ 2.10.2008,  13:19)
Цитата(Dov @  2.10.2008,  08:53 Найти цитируемый пост)
Shootnik, попробуй так:
Выделить всёкод C++
1:
    
sh.pFrom  = (LPCTSTR)sz;

не помомгло

Цитата(xvr @  2.10.2008,  08:23 Найти цитируемый пост)
2 Shootnik - что возвращает GetLastError() ? 

Код

            ...
                        SHFILEOPSTRUCT sh;
            sh.hwnd   = GetSafeHwnd(); 
            sh.wFunc  = FO_DELETE;
            sh.pFrom  = sz;
            sh.pTo    = NULL;
            sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
            sh.hNameMappings = 0;
            sh.lpszProgressTitle = NULL;
            SHFileOperation (&sh);
            i=GetLastError();

i = 0;
Цитата(Madest @  2.10.2008,  10:15 Найти цитируемый пост)
Shootnik, попробуй в пути вместо "\\" - "/" использовать. Чего получится? 

И опять же... та же ошибка

давай проще сделаем - я те пришлю консольный проект который работает у меня с eeшником на тестирование
если работает - копипастишь сее функцию и приверяешь.
только мне щас надо отойти - вернусь вечером только


--------------------
user posted image
PM MAIL   Вверх
xvr
Дата 2.10.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(J0ker @ 2.10.2008,  16:40)
Цитата(xvr @  2.10.2008,  08:23 Найти цитируемый пост)
SHFileOperation возвращает признак ошибки (0 или не 0), а код ошибки возвращает GetLastError(), которую надо позвать после этого.

2 Shootnik - что возвращает GetLastError() ? 

 smile 
SHFileOperation возвращает код ошибки
RTFM

Добавлено @ 16:44
Цитата(Shootnik @ 2.10.2008,  13:19)
Цитата(Dov @  2.10.2008,  08:53 Найти цитируемый пост)
Shootnik, попробуй так:
Выделить всёкод C++
1:
    
sh.pFrom  = (LPCTSTR)sz;

не помомгло

Цитата(xvr @  2.10.2008,  08:23 Найти цитируемый пост)
2 Shootnik - что возвращает GetLastError() ? 

Код

            ...
                        SHFILEOPSTRUCT sh;
            sh.hwnd   = GetSafeHwnd(); 
            sh.wFunc  = FO_DELETE;
            sh.pFrom  = sz;
            sh.pTo    = NULL;
            sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
            sh.hNameMappings = 0;
            sh.lpszProgressTitle = NULL;
            SHFileOperation (&sh);
            i=GetLastError();

i = 0;
Цитата(Madest @  2.10.2008,  10:15 Найти цитируемый пост)
Shootnik, попробуй в пути вместо "\\" - "/" использовать. Чего получится? 

И опять же... та же ошибка

давай проще сделаем - я те пришлю консольный проект который работает у меня с eeшником на тестирование
если работает - копипастишь сее функцию и приверяешь.
только мне щас надо отойти - вернусь вечером только

Хм, отчасти  smile 

Цитата

Return Value

Returns zero if successful; otherwise nonzero. Applications normally should simply check for zero or nonzero.

Do not use GetLastError with the return values of this function.

To examine the nonzero values for troubleshooting purposes, they largely map to those defined in Winerror.h. However, several of its possible return values are based on pre-Win32 error codes, which in some cases overlap the later Winerror.h values without matching their meaning. 


Ошибка 1026 соответствует
Цитата

An unknown error occurred. This is typically due to an invalid path in the source or destination.

PM MAIL   Вверх
J0ker
Дата 3.10.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(xvr @  2.10.2008,  10:45 Найти цитируемый пост)
Уже пошли советы из области плясок с бубном 
 Анекдот:

это адаптированная для обывателя версия
в оригинале было про службу техподдержки, нереботающий модем и строки инициализации


--------------------
user posted image
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1268 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.