Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 02:53   #11
LexiusUA
 
Регистрация: 22.03.2009
Сообщений: 8
По умолчанию

1>.\formon2.cpp(306) : error C2415: improper operand type
Пробывал путь давать в char и в string. ошибка и так и так.

Последний раз редактировалось LexiusUA; 25.03.2009 в 02:58.
LexiusUA вне форума Ответить с цитированием
Старый 25.03.2009, 02:56   #12
Mega
Пользователь
 
Регистрация: 14.03.2009
Сообщений: 41
По умолчанию

Не забудь #include <windows.h>
В какой строке ошибка
Mega вне форума Ответить с цитированием
Старый 25.03.2009, 03:02   #13
LexiusUA
 
Регистрация: 22.03.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Mega Посмотреть сообщение
Не забудь #include <windows.h>
В какой строке ошибка
Windows.h присутствует. У меня все остальные функции на ВинАПИ.

Ошибка в строчке
push offset path //put' k papke
LexiusUA вне форума Ответить с цитированием
Старый 25.03.2009, 03:05   #14
Mega
Пользователь
 
Регистрация: 14.03.2009
Сообщений: 41
По умолчанию

какого типа переменная path?
Не забыл ее??
Mega вне форума Ответить с цитированием
Старый 25.03.2009, 03:07   #15
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Оффсет это смещение в переводе, я о нем говорю а не о OFFSET - команде которая возвращает смещение чего либо(метка, функция, переменная...).
Mega сказал почти правильно, за исключением одного нюанса - встроенный ассемблер не имеет понятия о том что есть функции. Для того что б что то вызвать ему надо передать адрес функции.

Код:
#include <windows.h>
#include <shellapi.h>
void DeleteFolder(LPSTR pszFolder);
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	int FuncAddr=(int)&DeleteFolder;
    char sz[]="F:\\Test\\";
	_asm
	{
		lea eax,sz
		push eax
		mov eax,[FuncAddr]
		call eax
		pop eax ;чистим стек от аргументов.
	};
	return 0;
}


void DeleteFolder(LPSTR pszFolder)
{
	SHFILEOPSTRUCT fos = {0};
	fos.wFunc = FO_DELETE;
	fos.pFrom = pszFolder; 
	SHFileOperation(&fos); 
}
У меня он не работает, вернее не выполняет свою функцию, но это скорее всего связано с моей ОС.
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 25.03.2009, 03:09   #16
LexiusUA
 
Регистрация: 22.03.2009
Сообщений: 8
По умолчанию

path - string
wstr - char[256]
пробывал и ту, и ту.
сначала запрашивается строчка у юзера, аргумент пишется в path. Потом
Код:
char wstr[256];
OemToAnsi(path.append("\0").c_str(), wstr);
LexiusUA вне форума Ответить с цитированием
Старый 25.03.2009, 03:14   #17
Mega
Пользователь
 
Регистрация: 14.03.2009
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
встроенный ассемблер не имеет понятия о том что есть функции
Разве?помоему он знает о функциях
Mega вне форума Ответить с цитированием
Старый 25.03.2009, 03:19   #18
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Mega, а вы код который советовали, компилировали вобще?
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 25.03.2009, 03:19   #19
Mega
Пользователь
 
Регистрация: 14.03.2009
Сообщений: 41
По умолчанию

path Должен быть массив символов
попробый без оффсета так как зфер сам по себе адрес а мы еще оффсет берем
Mega вне форума Ответить с цитированием
Старый 25.03.2009, 03:20   #20
LexiusUA
 
Регистрация: 22.03.2009
Сообщений: 8
По умолчанию

Иван_32 ваша програма у меня не откомпилировалась.
Выдало ошибку:
error C2440: '=' : cannot convert from 'LPSTR' to 'LPCWSTR'
в строке:
fos.pFrom = pszFolder;
LexiusUA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Studio 2008 Растаманов Visual C++ 7 26.11.2008 12:59
C++ и Visual Studio 2008 Born to kill Общие вопросы C/C++ 0 12.11.2008 22:22
Visual Studio 2008 bullvinkle Помощь студентам 4 10.11.2008 23:44
Visual C# Studio 2008 werat Общие вопросы .NET 6 17.10.2008 16:38