You need to have only one variable for your data and one for your control for your grouped Controls:
int m_RBData;
CRadio m_RBControl;
Then you need to group all ID Controls within the linked function like this:
ON_CONTROL_RANGE(BN_CLICKED,IDC_RB,IDC_RB3,OnClickRb)
You also need to add reference to String Table:
1R__C 0,1,2 in your first ID (IDC_RB).
Now your data variable, takes the values 0,1 or 2 whenever you click the first, the second or the third radio button respectively.
You need to have only one variable for your data and one for your control for your grouped Controls:
int m_RBData;
CRadio m_RBControl;
Then you need to group all ID Controls within the linked function like this:
ON_CONTROL_RANGE(BN_CLICKED,IDC_RB,IDC_RB3,OnClickRb)
You also need to add reference to String Table:
1R__C 0,1,2 in your first ID (IDC_RB).
Now your data variable, takes the values 0,1 or 2 whenever you click the first, the second or the third radio button respectively.
cmath 2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
||||
1 |
||||
Синтаксическая ошибка12.08.2012, 12:39. Показов 6798. Ответов 7 Метки нет (Все метки)
Писал программу средствами win api которая рисует график кардиоиды, столкнулся со следующей проблемой:
Компиллятор (VC++ 2010) выдает синтаксические ошибки в строке где у меня начинается цикл for(): 0 |
Модератор 8756 / 6546 / 887 Регистрация: 14.02.2011 Сообщений: 22,962 |
|
12.08.2012, 15:53 |
2 |
Подскажите плиз в чем проблема.
for(angle=0.0; angle<(2*M_PI); angle+=0.1) angle где определено??? это что? 0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
13.08.2012, 03:06 [ТС] |
3 |
angle — переменная, тип double, объявлена глобально. Не в ней проблема. Если бы это было так то компиллятор выдал бы мне ошибку о необъявленном идентификаторе (я не совсем новичок и уже сталкивался с разными ошибками, но такое у меня в первый раз) 0 |
Модератор 8756 / 6546 / 887 Регистрация: 14.02.2011 Сообщений: 22,962 |
|
13.08.2012, 09:14 |
4 |
angle — переменная, тип double, объявлена глобально. вот именно определили локально 1 |
4978 / 3085 / 456 Регистрация: 10.11.2010 Сообщений: 11,164 Записей в блоге: 10 |
|
13.08.2012, 09:24 |
5 |
Hydrogen, а определение HDC hdc; и PAINTSTRUCT ps; у тебя есть? 0 |
cmath 2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
||||
13.08.2012, 10:10 [ТС] |
6 |
|||
ValeryS спс
чтобы не прописывать значение математических констант типа 0 |
Модератор 8756 / 6546 / 887 Регистрация: 14.02.2011 Сообщений: 22,962 |
|
13.08.2012, 10:35 |
7 |
Проблема в макросе M_PI. Хотя до меня все равно никак не доходит почему. А хто его знает 0 |
2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
|
13.08.2012, 11:24 [ТС] |
8 |
Нашел еще один вариант решения проблемы P.S. Все равно интересно, почему получилась синтаксическая ошибка, а не сообщение о необъявленном идентификаторе? 0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
13.08.2012, 11:24 |
8 |
У меня есть 2 переключателя под групповым полем, и я сделал первую группу как истинную. но когда я добавляю переменную радиокнопки, в которой отображается сообщение «Не удалось вернуть новый элемент кода, возможно, синтаксическая ошибка», в чем будет причина?
2 ответа
Лучший ответ
Удалите файл Class Wizard (.clw) и файл Intellisense (.ncb) из каталога решения и повторите попытку.
2
Martin Broadhurst
22 Янв 2016 в 19:38
Вам нужно иметь только одну переменную для ваших данных и одну для вашего контроля для ваших сгруппированных Controls:
int m_RBData;
CRadio m_RBControl;
Затем вам нужно сгруппировать все элементы управления ID в связанной функции следующим образом:
ON_CONTROL_RANGE (BN_CLICKED, IDC_RB, IDC_RB3, OnClickRb)
Вам также необходимо добавить ссылку на String Table:
1R__C 0,1,2 в вашем первом идентификаторе (IDC_RB).
Теперь ваша переменная данных принимает значения 0,1 или 2 всякий раз, когда вы нажимаете первый, второй или третий переключатель соответственно.
0
Sunscreen
12 Ноя 2010 в 14:00
Есть код ниже. Компилятор говорит синтаксическая ошибка (тоже ниже). Но мне не совсем понятно, что именно не так. Создал шаблонный класс ParagraphTests
, внутри него в методе FailsOnInvalidParameters
пользуюсь статическим шаблон-методом Create
из класса Paragraph
.
Файл ParagraphTests.h:
#pragma once
#include <cassert>
#include "ConfigableTests.h"
template <typename T>
class ParagraphTests : public ConfigableTests
{
public:
ParagraphTests(OutputConfig config);
void FailsOnInvalidParameters(const wchar_t* const text);
};
template<typename T>
inline ParagraphTests<T>::ParagraphTests(OutputConfig config) : ConfigableTests(config)
{
}
template<typename T>
inline void ParagraphTests<T>::FailsOnInvalidParameters(const wchar_t* const text)
{
try
{
/*** ВОТ ЗДЕСЬ ОШИБКА ***/
T* paragraph = Paragraph::Create<T>(text, Config);
delete paragraph;
}
catch (int e)
{
return;
}
assert(false && "FailsOnInvalidParameters");
}
Файл Paragraph.h (удалил ненужные для этого вопроса поля и методы):
#pragma once
#include <cstdio>
#include "OutputConfig.h"
class Paragraph
{
public:
virtual ~Paragraph() = default;
public:
/*** ВОТ ОН ***/
template <typename T>
static T* Create(const wchar_t* const text, OutputConfig config);
void Init(const wchar_t* const text, OutputConfig config);
};
/*** ВОТ ОН ***/
template<typename T>
inline T* Paragraph::Create(const wchar_t* const text, OutputConfig config)
{
T* paragraph = new T();
paragraph->Init(text, config);
return paragraph;
}
Возникающая ошибка:
1>CodeTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): error C3878: синтаксическая ошибка: непредвиденный маркер "catch" после "try_block"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): message : пропущено восстановление ошибки: "catch"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C2760: синтаксическая ошибка: непредвиденный элемент "идентификатор". Ожидается "выражение"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C3878: синтаксическая ошибка: непредвиденный маркер "идентификатор" после "expression"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): message : пропущено восстановление ошибки: "идентификатор"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C2760: синтаксическая ошибка: непредвиденный элемент ")". Ожидается ";"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C3878: синтаксическая ошибка: непредвиденный маркер ")" после "expression_statement"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): message : пропущено восстановление ошибки: ")"
1>Header.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSHeader.cpp(90,45): warning C4267: аргумент: преобразование из "size_t" в "const int"; возможна потеря данных
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSHeader.cpp(115,54): warning C4267: аргумент: преобразование из "size_t" в "const int"; возможна потеря данных
1>HeaderTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): error C3878: синтаксическая ошибка: непредвиденный маркер "catch" после "try_block"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): message : пропущено восстановление ошибки: "catch"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C2760: синтаксическая ошибка: непредвиденный элемент "идентификатор". Ожидается "выражение"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C3878: синтаксическая ошибка: непредвиденный маркер "идентификатор" после "expression"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): message : пропущено восстановление ошибки: "идентификатор"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C2760: синтаксическая ошибка: непредвиденный элемент ")". Ожидается ";"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C3878: синтаксическая ошибка: непредвиденный маркер ")" после "expression_statement"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): message : пропущено восстановление ошибки: ")"
1>Paragraph.cpp
1>ParagraphTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): error C3878: синтаксическая ошибка: непредвиденный маркер "catch" после "try_block"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): message : пропущено восстановление ошибки: "catch"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C2760: синтаксическая ошибка: непредвиденный элемент "идентификатор". Ожидается "выражение"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C3878: синтаксическая ошибка: непредвиденный маркер "идентификатор" после "expression"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): message : пропущено восстановление ошибки: "идентификатор"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C2760: синтаксическая ошибка: непредвиденный элемент ")". Ожидается ";"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C3878: синтаксическая ошибка: непредвиденный маркер ")" после "expression_statement"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): message : пропущено восстановление ошибки: ")"
Здесь, как я понял, всё-таки основными являются эти ошибки:
1>CodeTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
1>HeaderTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
1>ParagraphTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
У вас должна быть только одна переменная для ваших данных и одна для вашего управления для ваших сгруппированных элементов управления:
int m_RBData;
CRadio m_RBControl;
Затем вам нужно сгруппировать все элементы управления идентификатором в связанной функции следующим образом:
ON_CONTROL_RANGE (BN_CLICKED, IDC_RB, IDC_RB3, OnClickRb)
Вам также нужно добавить ссылку на таблицу строк:
1R__C 0,1,2 в вашем первом идентификаторе (IDC_RB).
Теперь ваша переменная данных принимает значения 0,1 или 2 при каждом нажатии первого, второго или третьего переключателя соответственно.
I have a simple MFC application, using Visual Studio 2019. My problem is that when I want to add a variable to any control I get the pop up message:
Failed to return new Code Element. Possibly syntax error. New Element Name test
To clarify: The problem is in the Visual C MFC Dialog Editor. Not in my code as it runs fine. I have tried all possible solutions that I found using Google. Nothing helps. The app is very simple. The only «extra» is that I am using tinyxml2
.
What I found out by Google is that this is not a new problem, and the solution was to not use precompiled headers. And I am not using precompiled headers. so…
I am stuck. A long shot: Note the «Element» in the error text, and all the «elements» in tinyxml2. Some collision of symbols ??
I hint (maybe): I have got this message once before when I was using a long variable name. I shorted the name and the error was gone.
This is my second try. When the problem turned up I removed all changes since it was OK. But the problem is still there. Somthing I did has left some, not reversable, mark in the code (or database).