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": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
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).
Вам нужно иметь только одну переменную для ваших данных и одну для вашего элемента управления для ваших сгруппированных элементов управления:
int m_RBData;
CRadio m_RBControl;
Затем вам нужно сгруппировать все элементы управления ID в связанной функции следующим образом:
ON_CONTROL_RANGE (BN_CLICKED, IDC_RB, IDC_RB3, OnClickRb)
Вам также необходимо добавить ссылку на таблицу строк:
1R__C 0,1,2 в вашем первом идентификаторе (IDC_RB).
Теперь ваша переменная данных принимает значения 0,1 или 2, когда вы нажимаете первый, второй или третий переключатель соответственно.
|
cmath 2525 / 1751 / 152 Регистрация: 11.08.2012 Сообщений: 3,349 |
||||
|
1 |
||||
Синтаксическая ошибка12.08.2012, 12:39. Показов 7219. Ответов 7 Метки нет (Все метки)
Писал программу средствами win api которая рисует график кардиоиды, столкнулся со следующей проблемой:
Компиллятор (VC++ 2010) выдает синтаксические ошибки в строке где у меня начинается цикл for():
0 |
|
Модератор 8811 / 6593 / 896 Регистрация: 14.02.2011 Сообщений: 23,188 |
|
|
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 |
|
Модератор 8811 / 6593 / 896 Регистрация: 14.02.2011 Сообщений: 23,188 |
|
|
13.08.2012, 09:14 |
4 |
|
angle — переменная, тип double, объявлена глобально. вот именно определили локально
1 |
|
4982 / 3089 / 456 Регистрация: 10.11.2010 Сообщений: 11,165 Записей в блоге: 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 |
|
Модератор 8811 / 6593 / 896 Регистрация: 14.02.2011 Сообщений: 23,188 |
|
|
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 |

Запускал этот же цикл в другой программе и он там работал, а в этой компиллятор ругается. Что интересно если цикл вырезать то прога нормально компилируется и запускается, а с циклом не хочет
Подскажите плиз в чем проблема. Заранее благодарен.
. Проблема решена. Проблема в макросе M_PI. Хотя до меня все равно никак не доходит почему. Заменил на его числовое значение.