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

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

ru
Offline Offline

« : 05-04-2008 12:20 » 

Или я правильно ошибаюсь?

ASSERT((IDM_ABOUTBOX &amt; 0xFFF0) == IDM_ABOUTBOX);

syntax error : ')'

if(filename.Left(2).CompareNoCase("a:")!=0 &amt;&amt; filename.Left(2).CompareNoCase("b:")!=0)

syntax error : missing ')' before ';'
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 05-04-2008 13:26 » 

"& a m t ;" - это какой то символ заменился при вставке в пост
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #2 : 05-04-2008 13:37 » 

amp?)
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #3 : 05-04-2008 13:39 » 

--
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #4 : 05-04-2008 13:41 » 

а где предыдущий ответ?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 05-04-2008 14:48 » 

marat_, я ничего не удалял...

Tomson, там же написано syntax error : missing ')' before ';' , без кода не понятно, где то синтаксическая ошибка
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #6 : 05-04-2008 15:44 » 

ну просто синтакс ероры на эти строчки, вообще вроде есть еше amp, поэтому модумалось про него...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 05-04-2008 15:48 » 

Tomson, а что за amp , amt ? )))
может проще так:
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

if(filename.Left(2).CompareNoCase("a:")!=0 && filename.Left(2).CompareNoCase("b:")!=0)

Записан

Tomson
Участник

ru
Offline Offline

« Ответ #8 : 05-04-2008 23:27 » 

хм, да, для этого случая помогло, но там такое не один раз
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #9 : 06-04-2008 09:55 » 

тут тоже
virtual BOOL SelChanged(LPCSTR lpcsSelection, CString&amt; csStatusText;)
 syntax error : missing ')' before ';'
что бы это могло быть?
Записан
Вад
Модератор

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

« Ответ #10 : 06-04-2008 10:03 » 

Tomson, а почему ";" перед скобкой стоит? =)
Записан
RXL
Технический
Администратор

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

WWW
« Ответ #11 : 06-04-2008 10:18 » 

Вад, а он, видимо, копипастит из HTML-кода...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 06-04-2008 10:40 » 

Tomson,

virtual BOOL SelChanged(LPCSTR lpcsSelection, CString& csStatusText);

а ты откуда копируешь то, на самом деле ?
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #13 : 06-04-2008 10:50 » 

да, каюсь за невнимательность, все победил, осталось несколько варненгов и еще кое-что

exe1.cpp(54) : warning C4996: 'CWinApp::Enable3dControls' was declared deprecated
        c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(4471) : see declaration of 'CWinApp::Enable3dControls'
        Message: 'CWinApp::Enable3dControls is no longer needed. You should remove this call.'
exe1.cpp(61) : warning C4244: 'initializing' : conversion from 'INT_PTR' to 'int', possible loss of data
exe1Dlg.cpp
exe1dlg.cpp(140) : warning C4390: ';' : empty controlled statement found; is this the intent?

AFX_DEPRECATED("CWinApp::Enable3dControls is no longer needed. You should remove this call.")
         BOOL Enable3dControls()

К стати, если сискол выключить, то обламывается на варненгах Здесь была моя ладья...
« Последнее редактирование: 06-04-2008 10:57 от Tomson » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #14 : 06-04-2008 11:01 » 

1) Message: 'CWinApp::Enable3dControls is no longer needed. You should remove this call.'
 - компилятор рекомендует удалить вызов этой функции

2)conversion from 'INT_PTR' to 'int', possible loss of data
 - покажи строчку, где это предупреждение

3) warning C4390: ';' : empty controlled statement found; is this the intent?
- тоже покажи строчку, скорее всего логически не правильно поставил точку с запятой , типа

if(...);
{
}

Записан

Tomson
Участник

ru
Offline Offline

« Ответ #15 : 06-04-2008 11:18 » 

CExe1Dlg dlg;
m_pMainWnd = & dlg;
int nResponse = dlg.DoModal(); <-  warning C4244: 'initializing' : conversion from 'INT_PTR' to 'int', possible loss of data
if (nResponse == IDOK)
{
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #16 : 06-04-2008 11:22 » 

Tomson, покажи, как перегрузил виртуальную DoModal() в классе CExe1Dlg

и  от чего производен CExe1Dlg тоже покажи
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #17 : 06-04-2008 11:41 » 

да вроде не перезагружал
Код:
class CExe1Dlg : public CDialog
{
public:
CExe1Dlg(CWnd* pParent = NULL);
enum { IDD = IDD_EXE1_DIALOG };
CEdit m_edit2;
CEdit m_edit1;
CButton m_button1;
CButton m_button3;
CButton m_buttonok;
CStatic m_ico;
CString m_FileName;
CString m_FileName1;
CString m_path2;

public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
А вот тут перезагружал....
Код:
class CDirDialog
{
public:

CDirDialog();
virtual ~CDirDialog();

BOOL DoModal(CWnd *pwndParent = NULL);
...etc...
private:
virtual BOOL SelChanged(LPCSTR lpcsSelection, CString& csStatusText)
{
return TRUE;
};
static int __stdcall CDirDialog::BrowseCtrlCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
};
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #18 : 06-04-2008 11:48 » 

Tomson, не "перезагружал" , а "перегружал" Ага

ну класс CDirDialog вообще даже и не произведён от CDialog , поэтому он вообще лесом, а кроме того ты в примере выше его и не показывал. Перепутал ?


ну а почему рагается на

CExe1Dlg dlg;
int nResponse = dlg.DoModal();

не пойму что то.... Где то ты что то не показал нам, мне кажется


typedef long INT_PTR, *PINT_PTR;

а DoModal вертает int , так что колись, где что делал ))
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #19 : 06-04-2008 12:09 » 

->> а DoModal вертает int , так что колись, где что делал ))

void CExe1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)//; <-- убрал тчк. с запятой
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
->а кроме того ты в примере выше его и не показывал. Перепутал ?
ээ, кого не показывал?
« Последнее редактирование: 06-04-2008 12:12 от Tomson » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #20 : 06-04-2008 12:13 » 

всё логично было, тогда уж так сделай
Код:
void CExe1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
  if (nID == IDM_ABOUTBOX)
  {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    return;
  }

  CDialog::OnSysCommand(nID, lParam);
}


что перепутал - не знаю, почему компилятор ругаецо на типы у тебя ?
« Последнее редактирование: 06-04-2008 12:16 от Алексей1153++ » Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #21 : 06-04-2008 12:18 » 

блин, кстати, а чего это ты сравниваешь с IDM_ABOUTBOX ? Зачем ?

Цитата: MSDN
The framework calls this member function when the user selects a command from the Control menu, or when the user selects the Maximize or the Minimize button.

afx_msg void OnSysCommand(
   UINT nID,
   LPARAM lParam
);
Parameters
nID
Specifies the type of system command requested. This parameter can be any one of the following values:
SC_CLOSE   Close the CWnd object.
SC_HOTKEY   Activate the CWnd object associated with the application-specified hot key. The low-order word of lParam identifies the HWND of the window to activate.
SC_HSCROLL   Scroll horizontally.
SC_KEYMENU   Retrieve a menu through a keystroke.
SC_MAXIMIZE (or SC_ZOOM)   Maximize the CWnd object.
SC_MINIMIZE (or SC_ICON)   Minimize the CWnd object.
SC_MOUSEMENU   Retrieve a menu through a mouse click.
SC_MOVE   Move the CWnd object.
SC_NEXTWINDOW   Move to the next window.
SC_PREVWINDOW   Move to the previous window.
SC_RESTORE   Restore window to normal position and size.
SC_SCREENSAVE   Executes the screen-saver application specified in the [boot] section of the SYSTEM.INI file.
SC_SIZE   Size the CWnd object.
SC_TASKLIST   Execute or activate the Windows Task Manager application.
SC_VSCROLL   Scroll vertically.
lParam
If a Control-menu command is chosen with the mouse, lParam contains the cursor coordinates. The low-order word contains the x coordinate, and the high-order word contains the y coordinate. Otherwise this parameter is not used.
SC_HOTKEY   Activate the window associated with the application-specified hot key. The low-order word of lParam identifies the window to activate.
SC_SCREENSAVE   Execute the screen-save application specified in the Desktop section of Control Panel.

Записан

Tomson
Участник

ru
Offline Offline

« Ответ #22 : 06-04-2008 12:34 » 

всякие события окна..
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
....
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
........
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #23 : 06-04-2008 12:36 » 

и работает ?

по моему тебе надо
Цитата: MSDN
virtual BOOL OnCommand(
   WPARAM wParam,
   LPARAM lParam
);
Parameters
wParam
The low-order word of wParam identifies the command ID of the menu item, control, or accelerator. The high-order word of wParam specifies the notification message if the message is from a control. If the message is from an accelerator, the high-order word is 1. If the message is from a menu, the high-order word is 0.
lParam
Identifies the control that sends the message if the message is from a control. Otherwise, lParam is 0.
Return Value
An application returns nonzero if it processes this message; otherwise 0.

Записан

Tomson
Участник

ru
Offline Offline

« Ответ #24 : 06-04-2008 12:49 » 

Ну должно работать, по сути похоже они одно и тоже делают.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #25 : 06-04-2008 12:57 » 

Tomson, ну а ты пробовал ? Улыбаюсь
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #26 : 06-04-2008 13:11 » 

Пока нет, да наверно перекраивать придется немало, пробую разрулить то что есть:)
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #27 : 06-04-2008 13:28 » 

кароче это победил, дело было в ресурсах...
Только теперь проблемс плавно перешел на сами ресурсы...
 error RC2104 : undefined keyword or key name: \u0410\u0446\u0428\u0408\u042b\u0459\u0433\u0430
и дело не в кирилице
LTEXT "rrrr",IDC_STATIC,26,160,105,8
undefined keyword or key name: rrrr
« Последнее редактирование: 06-04-2008 13:42 от Tomson » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #28 : 06-04-2008 13:55 » 

проект покажи ) Я так не смогу разобраться. Это повально....
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #29 : 06-04-2008 15:34 » 

отправил в мыл, к стати)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #30 : 06-04-2008 15:38 » 

а чё аж 6 метров ? )) Ты папки debug и release то удалил из проекта ? Они при пересылке ни к чему.

Сейчас то я скачаю, на будущее имей в виду
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #31 : 06-04-2008 15:49 » 

проект не могу открыть, у меня VC++6
попробуй удалить строку
LTEXT "rrrr",IDC_STATIC,26,160,105,8

перекомпилировать всё и снова кинуть контрол на форму
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #32 : 06-04-2008 20:56 » 

удалил и он дальше ругнулся
BLOCK "FileInfo"
error RC2104 : undefined keyword or key name: FileInfo
еще раз удалил, дальше...
BLOCK "080404b0"
error RC2108 : expected numerical dialog constant

Возможно ли, что lvalue функция какая-нибуть?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #33 : 07-04-2008 02:57 » 

ты в какой студии пишешь ?

а всё подряд удалять то не надо - не сработало, надо вернуть обратно и разбираться дальше
Записан

Tomson
Участник

ru
Offline Offline

« Ответ #34 : 07-04-2008 07:56 » 

студия 2005
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #35 : 07-04-2008 09:03 » 

у менянет такой. Может, кто отзовётся и поможет.
А пока попробуй пересоздать проект, кода то ещй наверное немного
Записан

Вад
Модератор

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

« Ответ #36 : 07-04-2008 09:11 » 

У меня 2005я на работе, только:
1. в чём проблема, довести до собираемого состояния?
2. кидать лучше в аську, т.к. на работе юзаю только корпоративную почту, а светить её неохота Улыбаюсь
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #37 : 07-04-2008 11:08 » 

->1. в чём проблема, довести до собираемого состояния?
да вот застрял на ресурсах
->2. кидать лучше в аську, т.к. на работе юзаю только корпоративную почту, а светить её неохота
а в почту та что в профиле?
Записан
Вад
Модератор

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

« Ответ #38 : 08-04-2008 06:13 » 

В exe1.rc проекта заменил китайскую кодировку на русскую - ресурсы стали собираться.
Код:
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
    //#ifdef _WIN32
    //LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
    //#pragma code_page(936)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32
Дальше уже проблемы линковки - может, сам разберёшься Улыбаюсь
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #39 : 08-04-2008 09:01 » 

А ты без Enable3dControls()  собрал?
Записан
Вад
Модератор

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

« Ответ #40 : 08-04-2008 09:14 » 

Tomson, я собирал в точности в таких конфигурациях, которые ты скинул. У меня проблема исчезла при замене кодировки. Осталась только проблема с линковкой, связанная с тем, что ты зачем-то CAboutDlg в двух cpp-шниках определил Улыбаюсь
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #41 : 08-04-2008 12:14 » 

Чорд, не выходит, если убираю все что после комента "used for App About" в exe1Dlg.cpp или changedircolor.cpp все ломается совсем(
Записан
Вад
Модератор

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

« Ответ #42 : 08-04-2008 14:05 » 

Объяви свой класс CAboutDlg в заголовочном файле. Для простоты, лучше в отдельном: AboutDlg.h - и соответственно определи методы в .cpp. Убери все остальные объявления этого класса из других .cpp, а затем делай себе на здоровье include из обоих .cpp, где у тебя он раньше был напрямую объявлен. Наведи порядок, словом Улыбаюсь
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #43 : 08-04-2008 14:52 » 

странно, а от виндовса зависить может? я на 2к3 собираю. Вот это запихал в хедер
Код:
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); 
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
но все равно все те же ошибки линковки
Записан
Вад
Модератор

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

« Ответ #44 : 08-04-2008 15:41 » 

Не зависит от винды.
Код:
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
- вот это запихивать в хедер совсем не стоило, надо было в .cpp-файл. Читай внимательнее Улыбаюсь
Ошибка линковки - потому что ты этот хедер в двух местах включаешь, а у тебя вне объявления класса методы определены - ругается на переопределение методов (они же в двух объектниках в итоге оказываются). Вынеси в .cpp - и будет тебе счастье.
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #45 : 08-04-2008 21:15 » 

вынес, только вот такое все равно осталось
error LNK2019: unresolved external symbol "public: __thiscall CMainFrame::CMainFrame(void)" (??0CMainFrame@@QAE@XZ) referenced in function "public: virtual int __thiscall CchangedircolorApp::InitInstance(void)" (?InitInstance@CchangedircolorApp@@UAEHXZ)
 fatal error LNK1120: 1 unresolved externals
Записан
Вад
Модератор

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

« Ответ #46 : 09-04-2008 04:16 » 

Это означает, что конструктор для CMainFrame, вызываемый в CchangedircolorApp::InitInstance, не определён. Посмотри, действительно ли это так (но линковщик врать не должен Улыбаюсь ). Я тоже посмотрю, только до работы доберусь.

P.S. Ну вот, .cpp для CMainFrame в проект вообще не включён оказался почему-то. Внимательнее надо быть Улыбаюсь
« Последнее редактирование: 09-04-2008 05:22 от Вад » Записан
Страниц: 1 2 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines