Ошибка считан неверный символ восьмеричный 0

Перейти к содержимому раздела

Форумы CADUser

Информационный портал для профессионалов в области САПР

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Дерево сообщений Активные темы Темы без ответов

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

#1 3 мая 2008г. 19:45:53

  • Вика
  • Восстановленный участник
  • На форуме с 13 апреля 2008г.
  • Сообщений: 9
  • Спасибо: 0

Тема: openDCL

первый раз сегодня столкнулась с openDCL. Методом тыка вроде что-то наваяла, а когда подгружаю это диалоговое окно в Автокад, выдает: «считан неверный символ восьмеричный». Не подскажете, что не так делаю? Спасибо))

#2 Ответ от Вика 3 мая 2008г. 22:17:19

  • Вика
  • Восстановленный участник
  • На форуме с 13 апреля 2008г.
  • Сообщений: 9
  • Спасибо: 0

Re: openDCL

чувствую себя полным тупарем. Здесь достаточно много написано про ObjectDCL, но так до конца и не поняла. Что надо делать подетально после того как создала всякие кнопочки, текстики в диалоговом окне

#3 Ответ от Юрий 4 мая 2008г. 14:22:18

  • Юрий
  • Восстановленный участник
  • На форуме с 10 апреля 2006г.
  • Сообщений: 178
  • Спасибо: 0

Re: openDCL

> Вика
А OpenDCL.XX.arx загружен без проблем. Версия OpenDCL.XX.arx соответствует версии ACAD.

> Вика
Как говаривал В.В.Маяковский: «OpenDCL и ObjectDCL близнецы братья. Кто более … » и далее по тексту.
Но тем не менее разница есть. На чем остановимся?

#4 Ответ от Вика 4 мая 2008г. 16:02:25

  • Вика
  • Восстановленный участник
  • На форуме с 13 апреля 2008г.
  • Сообщений: 9
  • Спасибо: 0

Re: openDCL

Юрий, да, все загрузилось, все соответствует. Я бы хотела понять саму систему, как и что работает (после создания диалогового окна в openDCL), была бы Вам зa это благодарна

#5 Ответ от Юрий 5 мая 2008г. 08:08:19

  • Юрий
  • Восстановленный участник
  • На форуме с 10 апреля 2006г.
  • Сообщений: 178
  • Спасибо: 0

Re: openDCL

Все очень и очень просто. Для начала давай выясним, что не работает: твои хомуты или ODCL шалит.
Попробуй создать проект test.odcl. В нем одно чистое модальное окно безо всяких элементов управления (кнопок, переключателей и т.п.). Выход из него по <ESC>.
И простенький test.lsp. Пути и имена пропиши свои.

(defun test ( / )
  (print (arxload "C:\Program Files\Common Files\OpenDCL\OpenDCL.16.arx")) ; сюда обычно прописывается RunTime OpenDCL. В примере я подгружаю для AutoCAD 2004.
  (print (dcl_Project_Load "C:\test.odcl"))
  (print (dcl_Form_Show test_Form1))
  (print (dcl_Form_Close test_Form1))
) ; defun

После выполнения должно получится что-то типа
«C:\Program Files\Common Files\OpenDCL\OpenDCL.16.arx»
«C:\test.odcl»
2
nil nil
Если все получилось добавляй элементы управления.
А сама система «работает» на реакторах. Но если в «чистом» DCL от Autodesk, реакторы надо создавать и отслеживать самому, то в ODCL необходимые реаторы уже созданы. Их надо только прописать в программе и указать что надо сделать при свершении того или иного события.

Сообщения 5

Тему читают: 1 гость

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

int arr[20][20] = {
                    {08,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,08},
                    {49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00},
                    {81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65},
                    {52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91},
                    {22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80},
                    {24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50},
                    {32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70},
                    {67,26,20,68,02,62,12,20,95,63,94,39,63,08,40,91,66,49,94,21},
                    {24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72},
                    {21,36,23,09,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95},
                    {78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,09,53,56,92},
                    {16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57},
                    {86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58},
                    {19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40},
                    {04,52,08,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66},
                    {88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69},
                    {04,42,16,73,38,25,39,11,24,94,72,18,08,46,29,32,40,62,76,36},
                    {20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16},
                    {20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54},
                    {01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48}
                  };

Я получаю следующую ошибку

q11.c:8:10: error: invalid digit "8" in octal constant
q11.c:8:67: error: invalid digit "8" in octal constant
q11.c:15:49: error: invalid digit "8" in octal constant
q11.c:17:19: error: invalid digit "9" in octal constant
q11.c:18:58: error: invalid digit "9" in octal constant
q11.c:22:16: error: invalid digit "8" in octal constant
q11.c:24:46: error: invalid digit "8" in octal constant

Invalid octal digit error in Ruby, how do I by pass that? I have a number, 0962833, which I need to send to an API but I can’t send it since I get this invalid octal digit error.

I need a work around for that without turning that number into a string, the zero can’t be removed, it’s a must.

Andrew Marshall's user avatar

asked Jun 24, 2012 at 12:08

Paz Aricha's user avatar

2

Octal numbers use the digits 0 to 7. Maybe the error could be the digit 9, and digit 8 in your number.
If you want to pass the number ‘962833’, try converting it first to a correct octal number with an online converter. Then add the leading ‘0’ and pass it to your function.

answered Jun 24, 2012 at 12:15

Wouter's user avatar

WouterWouter

6522 gold badges7 silver badges27 bronze badges

2

0962833 is an octal number because of the leading zero, so you can’t have digits higher than 7. If you need the leading zero, why can’t you turn it into a string? Leading zeroes have no mathematical significance, so why should there be a way to represent them in a numerical type?

answered Jun 24, 2012 at 13:09

Michael Kohl's user avatar

Michael KohlMichael Kohl

66.1k13 gold badges138 silver badges158 bronze badges

Поэтому моя проблема сейчас заключается в том, что когда я компилирую свой код, я получаю ошибку «недопустимая цифра в восьмеричной константе», когда я пытаюсь проанализировать значение года «08» для одного из моих объектов Date. Видимо, причина этого в том, что это шестнадцатеричное или что-то в этом роде. Прямо сейчас у меня есть переменная Year, хранящаяся как тип int, так что, каков наилучший тип данных для хранения переменной Year, чтобы предотвратить возникновение этой ошибки?

И прежде чем вы спросите, нет, я не могу сохранить переменную Year в виде четырех цифр (т.е. «2008»), а не двух цифр (то есть. «08), потому что файл, из которого мне нужно прочитать входные данные в данный момент, имеет год хранится в виде двух цифр.

2013-10-08 08:49

3
ответа

Целые числа, начинающиеся с 0 восьмеричные Например 010 такой же, как десятичный 8, Но 08 неверно, потому что 8 не является действительной восьмеричной цифрой.

Если вам нужно использовать его как целое число, используйте 8 вместо. Есть несколько способов вывода 8 в виде двух цифр или сохраните введенный двузначный номер.

2013-10-08 08:54

Любой литерал, который начинается с 0 интерпретируется как восьмеричный, так и восьмеричный 8 не имеет смысла (действительные цифры 0 через 7). Это было бы как 0xG, В базе 8 символ 8 не имеет смысла, как в базе 16, G не делает.

Просто сохраните это как 8,

Значение должно быть отделено от представления. Если вы хотите отобразить его как 08это нормально, но вы должны хранить его как 8 (при условии, 2008 не может быть и речи).

2013-10-08 08:51

Лучший способ помешать компилятору считать ваш год восьмеричным (а затем жаловаться, что он слишком велик для базы 8) — это не писать

const int year = 08;

но пиши

const int year = 8;

вместо. 0 Приставка означает восьмеричное.

2013-10-08 08:53

Другие вопросы по тегам
c++

101  ERROR:
Ошибка пользователя при работе с директивами.

 
102 Out of memory.
Недостаточно памяти для макроса. #define или внутренней обработки.
Закройте открытые приложения и попробуйте выполнить компиляцию снова. Если данная ошибка произошла при выполнении компиляции MPASM DOS версии, попробуйте выполнить компиляцию MPASM Windows версией.

 
103 Symbol table full.
Недостаточно памяти для размещения таблицы символов.
Закройте открытые приложения и попробуйте выполнить компиляцию снова. Если данная ошибка произошла при выполнении компиляции MPASM DOS версии, попробуйте выполнить компиляцию MPASM Windows версией или MPASM_DP версией.

 
104 Temp file creation error.
Невозможно создать временный файл. Проверьте объем свободного места на диске.

 
105 Cannot open file.
Ошибка при открытии файла. Проверьте существование указанного файла. Ошибка также возникает при открытии исходного файла старой версии MPASM или защищенного от изменений файла.

 
106 String substitution too complex.
Слишком много вложений #define.

 
107 Illegal digit.
Неправильная цифра в числе. Допускаются следующие цифры в числах:
     Двоичном 0-1;
     Восьмеричном 0-7;
     Десятичном 0-9;
     Шестнадцатеричном 0-F.

 
108 Illegal character.
Использование недопустимого символа в имени метки. Допускаются следующие символы в именах меток: a..z; A..Z; 0..9; _. Имя метки не должно начинаться с цифры.

 
109 Unmatched (
Левая скобка не имеет соответствующую правую скобку. Например. «DATA (1+2».

110 Unmatched )
Правая скобка не имеет соответствующую левую скобку. Например, «DATA 1+2)».

111  Missing symbol.
Отсутствие символа. Директива EQU или SET не имеет <label> для присвоения значения.

 
112 Missing operator.
Отсутствие арифметического оператора в выражении. Например, «DATA 1   2».

 
113 Symbol not previously defined.
Использование не определенной переменной. Только метки адреса могут использоваться перед их определением. Константы и переменные должны быть сначала объявлены пользователем.

114 Divide by zero.
Обнаружение деления на нуль во время оценки выражения.

 
115 Duplicate label.
Объявление переменной более одного раза (например, в директивах EQU или CBLOCK).

 
116 Address label duplicated or different in second pass.
Определение метки адреса в памяти программ более одного раза.
Метка определена один раз, но адрес размещения изменился при втором проходе компилятора. Это может произойти когда пользователь изменяет биты указателя страницы памяти программ в макрокомандах, генерирующие различные значения на основе текущего адреса.

 
117 Address wrapped around 0.
Адрес выполнения программы может достигать значения FFFF, после чего будет иметь адрес 0.

 
118 Overwriting previous address contents.
Код был предварительно определен для данного адреса.

 
119 Code too fragmented.
Код программы имеет слишком много частей. Данная ошибка возникает очень редко, только при попытке обращения к памяти программ с адресом выше 32Кбайт (включая биты конфигурации).

 
120 Call or jump not allowed at this address.
Переход не может быть выполнен. Например, все команды CALL для микроконтроллеров Р1С16С5х должны обращаться к младшей страницы памяти программ.

 
121  Illegal label.
Метка не может быть указана на этой строке. Разместите метку выше директивы. Так же HIGH, LOW, PAGE и BANK не допустимые имена меток.

 
122 Illegal opcode.
Недопустимый код инструкции.

 
123 Illegal directive.
Недопустимая директива для данного типа микроконтроллера. Например, директива___IDLOCS не может
использоваться для микроконтроллеров PIC17C42.

 
124 Illegal argument.
Неправильный аргумент. Например, LIST STUPID.

125 Illegal condition.
Неправильный блок условий. Например, отсутствие директивы ENDIF.

 
126 Argument out of range.
Значение аргумента инструкции или директивы выходят за допустимые рамки. Например, TRIS 10.

 
127 Too many arguments.
Слишком много аргументов для вызываемого макроса.

 
128 Missing argument(s).
Указаны не все аргументы в вызываемом макросе или команде.

 
129 Expected.
Ожидался иной тип аргумента. Ожидаемый список будет указан.

 
130 Processor type previously defined.
Выбраны разные типы микроконтроллеров.

 
131  Processor type is undefined.
Тип микроконтроллера указан после части текста программы. Обратите внимание, что покатил микроконтроллера не определен — набор поддерживаемых команд не известен.

 
132 Unknown processor.
Выбран неподдерживаемый тип микроконтроллера.

 
133 Hex file format INHX32 required.
Был определен адрес больше 32Кбайт. Например, указывая биты конфигурации для микроконтроллеров семейства PIC17CXX.

134 Illegal hex file format.
В директиве LIST был определен незнакомый формат HEX файла.

 
135 Macro name missing.
Попытка определения макроса без названия.

136 Duplicate macro name.
Дублирование имени макроса.

137 Macros nested too deep.
Превышен максимальный уровень вложенности макросов.

 
138 Include files nested too deep.
Превышен максимальный уровень вложенности файлов.

 
139 Maximum of 100 lines inside WHILE-ENDW.
Цикл содержит более 100 строк.

 
140 WHILE must terminate within 256 iterations.
Цикл имеет более 256 повторений. Предотвращение бесконечного цикла.

 
141  WHILES nested too deep.
Превышен максимальный уровень вложений циклов.

 
142 IFs nested too deep.
Превышен максимальный уровень вложений блоков условий.

 
143 Illegal nesting.
Недопустимое использование директив цикла, определения макроса или блока условия. Например, если вы имеете блок условия IF внутри цикла WHILE и обнаружена директива ENDW раньше INDIF.

 
144 Unmatched ENDC.
Найдена директива ENDC без директивы CBLOCK.

 
145 Unmatched ENDM.
Найдена директива ENDM без директивы MACRO.

 
146 Unmatched EXITM.
Найдена директива EXITM без директивы MACRO.

147 Directive not allowed when generating an object file.
Найдена недопустимая директива ORG при генерации объектного файла. Вместо директивы ORG создайте секцию .code и если необходимо укажите адрес.

 
148 Expanded source line exceeded 200 characters.
Превышена максимальная длина (200 знаков) символьной строки в директиве #DEFINE или в параметре макроса. Обратите внимание, что в директиву #DEFINE комментарии не включаются в отличие от макросов.

 
149 Directive only allowed when generating an object file section.
Использование директив, предназначенных для формирования объектного файла (например. GLOBAL и EXTERN), при непосредственной генерации кода программы.

 
150 Labels must be defined in a code or data section when making an object file.
Все переменные должны быть определены внутри секции объявления данных, he допускается использование директив EQU или SET вне секций объявления данных при генерации объектного файла.

 
151  Operand contains unresolvable labels or is too complex.
При генерации объектного кода операнды должны иметь следующий синтаксис: [HlGH|LOW]([<relocatable address label>]+[<offset>]).

 
152 Executable code and data must be defined in an appropriate section.
При генерации объектного файла блоки исходного текста программы и определение данных должны быть помещены в соответствующих секциях.

 
153 Page or Bank bits cannot be evaluated for the operand.
Страница памяти программ или банк памяти не могут быть определены для операнда <relocatable address label> или <constant> директивами PAGESEL, BANKSEL или BANKISEL.

154 Each object file section must be contiguous.
Объявленная секция данных, кроме секции UDATA_OVR, имеет уже существующее имя в данном исходном файле. Разрешить эту проблему можно, назвав каждый раздел собственным именем или определять все данные в одном разделе. Эта ошибка возникает и при присвоении двум разделам разных типов одинакового имени.

 
155 All overlaid sections of the same name must have the same starting address.
Объявлена секция UDATA_OVR с существующим именем, но другим адресом.

 
156 Operand must be an address label.
Возникает во время генерации объектного файла при попытке объявить метки созданные директивой SET или EQU (а не в секции данных) как глобальные.

 
157 UNKNOWN ERROR.
Произошла ошибка, которую MPASM не может распознать. Это не является ошибкой, описанном в этом приложении. Свяжитесь с инженерами компании Microchip <FAE), если Вы не можете устранить эту ошибку.

Понравилась статья? Поделить с друзьями:
  • Ошибка счетчика энергомера се 301 ошибка 37
  • Ошибка счетчика производительности 0x800007d0
  • Ошибка счетчика меркурий 234 е1
  • Ошибка счетчика меркурий 230 e 01
  • Ошибка счетчика е 01 что это