Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Как поправить ?  (Прочитано 37355 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 25-08-2004 06:59 » 

Есть ошибка :
Код:
error C2664: 'void __cdecl CString::Format(const char *,...)' : cannot convert parameter 1 from 'unsigned short [10]' to 'const char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
в строке :
Код:
CString s;
s.Format(L"\\??\\COM%d",m_Port); // вот тут ругается

Как поправить ?
« Последнее редактирование: 30-11-2007 22:59 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Pu
Большой босс

ru
Offline Offline
78


« Ответ #1 : 25-08-2004 07:11 » 

а вместо L"\\??\\COM%d" сделать _T("\\??\\COM%d")
L - дает строку двубайтовых символов уникоды. А формат хочет char однобайтовые. Вчера npak очн хорошо обяснил для чего _Т надо.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Серж
Гость
« Ответ #2 : 25-08-2004 07:14 » 

s.Format((const char*)L"\\??\\COM%d",m_Port);
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #3 : 25-08-2004 07:17 » 

Цитата: Pu
а вместо L"\\??\\COM%d" сделать _T("\\??\\COM%d")
L - дает строку двубайтовых символов уникоды. А формат хочет char однобайтовые. Вчера npak очн хорошо обяснил для чего _Т надо.

Пробовал, тогда и вообще непонятно что выдаёт Жаль
Код:
SpyDoc.obj : error LNK2001: unresolved external symbol "void * hDevice" (?hDevice@@3PAXA)
SpyDoc.obj : error LNK2001: unresolved external symbol "bool * OpenedPorts" (?OpenedPorts@@3PA_NA)
nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
libc.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Похоже я что то набугил сильно Жаль
« Последнее редактирование: 30-11-2007 23:00 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #4 : 25-08-2004 07:18 » 

Цитата: Серж
s.Format((const char*)L"\\??\\COM%d",m_Port);


Щас попробую
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #5 : 25-08-2004 07:26 » 

Кароче всё постирал, вернул вчерашнюю версию из бэкапа Улыбаюсь Буду дальше париться Улыбаюсь Благо изменений не много Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Pu
Большой босс

ru
Offline Offline
78


« Ответ #6 : 25-08-2004 07:28 » 

MOPO3,  по моему плохая идея , явное преобразование типов   Ха-ха-ха . Не рекомендую. Компилятор съест но потом получишь по самое нихочу. Или я ничего не понимаю.
щас найду как перелопатить.
а что вот так просто нельзя? -
s.Format("\\??\\COM%d",m_Port);
без L
"\\??\\COM%d" - это и есть const char *
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #7 : 25-08-2004 07:32 » 

Pu, да похоже что не в этом дело. Линкер потом сильно ругается, я чего то набугил 100% Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 25-08-2004 07:36 » 

MOPO3,  Это юникодный проект? Если нет, то выброси L, если да то у тебя наверно не все defines определены, потому как _T("\\??\\COM%d")  абсолютно верно. Ошибки связаны с чем-то другим.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #9 : 25-08-2004 07:36 » 

Во, нарвался ещё на кусок кода, в котором используется гоуту Улыбаюсь
Код:
if (!StartService(hSrv,0,NULL))
{
qq: AfxMessageBox(_T("Cannot start device. lalala.sys maybe not found"),MB_OK);
DeleteService(hSrv);
CloseServiceHandle(hSrv);
return;
}
hDevice=CreateFile(_T("\\\\.\\LaLaLa"),GENERIC_READ | GENERIC_WRITE {
GENERIC_EXECUTE,FILE_SHARE_WRITE | FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL {
FILE_FLAG_OVERLAPPED,
NULL);
if (hDevice==INVALID_HANDLE_VALUE)
{
SERVICE_STATUS ss;
ControlService(hSrv,SERVICE_CONTROL_STOP,&ss);
goto qq;
}
Слышал я что прохо это гоуту использовать то. Это правда ? Надо переписывать ?
« Последнее редактирование: 30-11-2007 23:01 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #10 : 25-08-2004 07:38 » 

Джон, всё ОК, это _T("\\??\\COM%d") нормально работает Улыбаюсь Там я просто чёйто наделал и не понял чего сделал Улыбаюсь Вернул всё назад и заработало Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Pu
Большой босс

ru
Offline Offline
78


« Ответ #11 : 25-08-2004 07:43 » 

MOPO3,  я пользуюсь гото , но только строго в определенных целях. В частности для выхода из фунций, когда необходимы множественные проверки и освобождения ресурсов. Иначе получается масса дублированного кода. Но в твоем случае лучше переделать, не нравится мне когда идет передача внутрь
if(){}
этак можно   в for(;Ага{} изза чего и не рекомендуют.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Pu
Большой босс

ru
Offline Offline
78


« Ответ #12 : 25-08-2004 07:46 » 

хотя, присмотрелся - вроде тоже для выхода из фукции.  :oops: просто вверх тормашками все перевернуто.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #13 : 25-08-2004 08:15 » 

Pu,  если я ещё не надоел, пожалуйста взгляни на этот код :
Код:
CString s;
GetCurrentDirectory(MAX_PATH,s.GetBuffer(MAX_PATH));
s.ReleaseBuffer();
if (s.Right(1)!=_T("\\"))
s+=_T("\\");
s+=_T("blablabla.sys");
        AfxMessageBox(s, MB_OK);//сдесь для себя вывожу полученый путь чтобы убедиться в том что нужный файл там есть

SC_HANDLE hSrv;
hSrv=CreateService(sc,_T("BlaBlaBla"),_T("BlaBlaBla"),
SERVICE_ALL_ACCESS | GENERIC_EXECUTE | SERVICE_START | SERVICE_STOP,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_IGNORE,
s, NULL, NULL, NULL, NULL, NULL);
CloseServiceHandle(sc);
if (!hSrv)
{
AfxMessageBox(_T("Unexpected error. Cannot create service"),MB_OK);
return;
}
if (!StartService(hSrv,0,NULL))
{
qq: AfxMessageBox(_T("Cannot start device. blablabla.sys maybe not found"),MB_OK);
DeleteService(hSrv);
CloseServiceHandle(hSrv);
return;
}
hDevice=CreateFile(_T("\\\\.\\BlaBlaBla"),
GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL);
if (hDevice==INVALID_HANDLE_VALUE)
{
SERVICE_STATUS ss;
ControlService(hSrv,SERVICE_CONTROL_STOP,&ss);
goto qq;
}
Всегда вылетает с Cannot start device. blablabla.sys maybe not found .  Где я опять нагрибовал не пойму. Файл blablabla.sys лежит в нужном каталоге.
« Последнее редактирование: 30-11-2007 23:03 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Pu
Большой босс

ru
Offline Offline
78


« Ответ #14 : 25-08-2004 08:49 » 

MOPO3, вопрос, и совет одновременно,
 
Код:
 if (!StartService(hSrv,0,NULL)) 
   {
qq:  HRESULT hr = ::GetLastError(); // cкажи мене этот хэрэ и может все будет ясно.
      AfxMessageBox(_T("Cannot start device. blablabla.sys maybe not found"),MB_OK);
      DeleteService(hSrv);
      CloseServiceHandle(hSrv);
      return;
   }
 
и расскажи как код вставлять , а то уже както неудобно
 :oops:
« Последнее редактирование: 30-11-2007 23:03 от Алексей1153++ » Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #15 : 25-08-2004 08:51 » 

Pu,  код вставляется между тэгами code и /code обрамлёнными квадратными скобками
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Pu
Большой босс

ru
Offline Offline
78


« Ответ #16 : 25-08-2004 08:55 » 

MOPO3, уессссс!  :!:  получилось!!! Спасибо!  Отлично
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #17 : 25-08-2004 09:10 » 

Pu, не знаю как тебе этот хэрэ вывести  :oops:

делаю так :
Код:
switch(hr)
{
case S_OK :
AfxMessageBox(_T("S_OK"), MB_OK);
break;
case E_UNEXPECTED :
AfxMessageBox(_T("E_UNEXPECTED"), MB_OK);
break;
case E_NOTIMPL :
AfxMessageBox(_T("E_NOTIMPL"), MB_OK);
break;
case E_OUTOFMEMORY :
AfxMessageBox(_T("E_OUTOFMEMORY"), MB_OK);
break;
case E_INVALIDARG :
AfxMessageBox(_T("E_INVALIDARG"), MB_OK);
break;
case E_NOINTERFACE :
AfxMessageBox(_T("E_NOINTERFACE"), MB_OK);
break;
case E_POINTER :
AfxMessageBox(_T("E_POINTER"), MB_OK);
break;
case E_HANDLE :
AfxMessageBox(_T("E_HANDLE"), MB_OK);
break;
case E_ABORT :
AfxMessageBox(_T("E_ABORT"), MB_OK);
break;
case E_FAIL :
AfxMessageBox(_T("E_FAIL"), MB_OK);
break;
case E_ACCESSDENIED :
AfxMessageBox(_T("E_ACCESSDENIED"), MB_OK);
break;
}
В итоге ничего не получаю Улыбаюсь
« Последнее редактирование: 30-11-2007 23:04 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #18 : 25-08-2004 09:15 » 

А вот так :
Код:
switch(hr)
{
case 0x00000000 :
AfxMessageBox(_T("0x00000000"), MB_OK);
break;
case 0x8000FFFF :
AfxMessageBox(_T("0x8000FFFF"), MB_OK);
break;
case 0x80004001 :
AfxMessageBox(_T("0x80004001"), MB_OK);
break;
case 0x8007000E :
AfxMessageBox(_T("0x8007000E"), MB_OK);
break;
case 0x80070057 :
AfxMessageBox(_T("0x80070057"), MB_OK);
break;
case 0x80004002 :
AfxMessageBox(_T("0x80004002"), MB_OK);
break;
case 0x80004003 :
AfxMessageBox(_T("0x80004003"), MB_OK);
break;
case 0x80070006 :
AfxMessageBox(_T("0x80070006"), MB_OK);
break;
case 0x80004004 :
AfxMessageBox(_T("0x80004004"), MB_OK);
break;
case 0x80004005 :
AfxMessageBox(_T("0x80004005"), MB_OK);
break;
case 0x80070005 :
AfxMessageBox(_T("0x80070005"), MB_OK);
break;
default :
AfxMessageBox(_T("NOTHING!"), MB_OK);
break;
}
всё время получаю NOTHING!
« Последнее редактирование: 30-11-2007 23:05 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Pu
Большой босс

ru
Offline Offline
78


« Ответ #19 : 25-08-2004 09:17 » 

MOPO3, ты мне цифру скажи!!! Что это я сам посмотрю. Их там ошеньошень много.  Я шокирован! Если уж хочешь посмотреть что это надо пользываться FormatMessage.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 25-08-2004 09:27 » 

MOPO3,
Получи цифру и сделай из неё строчку.  Вот тебе функция, которая делает форматированный вывод в MsgBox

Код:
enum { MBF_BUF_LEN = 1024 };

int WINAPI MessageBoxFormat(HWND hWnd, PTSTR szCaption, int nType,
                            PTSTR szFormat, ...)
{
    TCHAR tzBuf[MBF_BUF_LEN];
    va_list vlist;

    va_start( vlist, szFormat );
    _vsntprintf( tzBuf, MBF_BUF_LEN, szFormat, vlist );
    va_end( vlist );

    return MessageBox( hWnd, tzBuf, szCaption, nType );
}

В том месте, где есть ошибка, получи код ошибки и выведи на экран
Код:
int error = ::GetLastError();
::MessageBoxFormat(NULL, TEXT("Error!"), MB_OK, TEXT("Error code: %d"), error);

То число, которое будет выведено в окне, скажи сюда, в эту тему.
« Последнее редактирование: 30-11-2007 23:06 от Алексей1153++ » Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Pu
Большой босс

ru
Offline Offline
78


« Ответ #21 : 25-08-2004 09:39 » 

а вот еще одна из мэсэдээн
Код:
void ErrorDescription(HRESULT hr) {
    if(FACILITY_WINDOWS == HRESULT_FACILITY(hr))
        hr = HRESULT_CODE(hr);
    char* szErrMsg;
    if(FormatMessage(
      FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
      NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
      (LPTSTR)&szErrMsg, 0, NULL) != 0) {
        printf("%s", szErrMsg);
        LocalFree(szErrMsg);
    } else
        printf("[Could not find a description for error # %#x.]\n", hr);
}
это тебе даст готовую расшифровку в стринге , причину ошибочки
« Последнее редактирование: 30-11-2007 23:08 от Алексей1153++ » Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #22 : 25-08-2004 10:04 » 

Error Code : 997
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 25-08-2004 10:36 » 

MOPO3,

выдержка из WinError.h:

Код:
// MessageId: ERROR_IO_PENDING
//
// MessageText:
//
//  Overlapped I/O operation is in progress.
//
#define ERROR_IO_PENDING                 997L
« Последнее редактирование: 30-11-2007 23:08 от Алексей1153++ » Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #24 : 25-08-2004 10:41 » 

Т.е.  что происходит ? Что то открыто в момент попытки открыть ?
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Pu
Большой босс

ru
Offline Offline
78


« Ответ #25 : 25-08-2004 10:54 » 

протекает наложенное событие ввода/вывода . Ьщжет просто надо делать слип и подождать время а не убивать сразу. я знаю что системе надо время чтобы запустить сервис. бегай какоето время в цикле и опрашивай состояние сервиса.
ControlService(); eсли будет давать  SERVICE_START_PENDING - значит еще не запустился.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Pu
Большой босс

ru
Offline Offline
78


« Ответ #26 : 25-08-2004 10:56 » 

и еще - откуда попадаешь на qq? при createfile or startservice
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #27 : 25-08-2004 10:56 » 

MOPO3, распечатай путь к blablabla.sys

Правильно ли он построен?
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #28 : 25-08-2004 11:01 » 

Цитата: npak
MOPO3, распечатай путь к blablabla.sys

Правильно ли он построен?


E:\project\spy\blablabla.sys
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #29 : 25-08-2004 11:05 » 

Цитата: Pu
и еще - откуда попадаешь на qq? при createfile or startservice

Код:
if (hDevice==INVALID_HANDLE_VALUE)
{
SERVICE_STATUS ss;
ControlService(hSrv,SERVICE_CONTROL_STOP,&ss);
goto qq;
}

Отсюда, тобиш при createfile
« Последнее редактирование: 30-11-2007 23:10 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines