Каныш2901 0 / 0 / 0 Регистрация: 18.10.2016 Сообщений: 16 |
||||
1 |
||||
19.11.2016, 11:12. Показов 23631. Ответов 5 Метки нет (Все метки)
Ошибка:
__________________
0 |
Nanotentacle 884 / 404 / 174 Регистрация: 20.10.2016 Сообщений: 1,828 |
||||||||
19.11.2016, 11:16 |
2 |
|||||||
Причина кроется в том, что у вас функция не принадлежит классу TForm2. Поэтому она и не знает, что это за btnA.
И специально чтобы избежать подобных ситуаций придумали сочетание клавиш Ctrl+Shift+C.
0 |
5443 / 4267 / 1375 Регистрация: 14.04.2014 Сообщений: 19,204 Записей в блоге: 19 |
|
19.11.2016, 12:00 |
3 |
еще надежнее двойной клик по кнопке, чтобы сразу назначить обработчик, а не просто метод класса
0 |
Каныш2901 0 / 0 / 0 Регистрация: 18.10.2016 Сообщений: 16 |
||||
20.11.2016, 13:02 [ТС] |
4 |
|||
Тоже самый код, но ошибка другая
[Error] Unit2.pas(161): Incompatible types: ‘TObject’ and ‘Char’
0 |
5443 / 4267 / 1375 Регистрация: 14.04.2014 Сообщений: 19,204 Записей в блоге: 19 |
|
20.11.2016, 13:36 |
5 |
сейчас код вообще выглядит очень подозрительно но ошибка тут procedure TForm2. BtnAClick(Sender: TObject); процедура вызывает сама себя. т.е. один раз нажал и через 1-5 сек вывалится Stack overflow
0 |
D1973 Модератор 8255 / 5477 / 2249 Регистрация: 21.01.2014 Сообщений: 23,578 Записей в блоге: 3 |
||||||||||||||||
20.11.2016, 15:58 |
6 |
|||||||||||||||
Каныш2901, жуть какая-то…
а вот так нельзя было сделать?
Добавлено через 6 минут
if not (c in [‘A’..’Z’]) then exit; Вот тоже шедевр: сами-то понимаете, какую чушь написали? Добавлено через 7 минут
Не по теме: FindComponent? Не, не слыхали…
0 |
|
|
|
Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
… (продолжение следует) …
Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки бан.
Мат в разделе — бан на три месяца…
Undeclared identifier
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Извините за такое название темы. Проблема заключается в следующем но при этом проект компилится и компилятор никаких ворнингов не выдает. ПС Delphi 2010 |
andrew.virus |
|
VahaC, конечно я не провидец, но возможно вместо Appliction должно быть Application … |
VahaC |
|
Цитата andrew.virus @ 05.07.10, 21:05 но возможно вместо Appliction должно быть Application извините опечатался когда писал первый пост, в программе везде написано Application, да и второй рисунок этому подтверждение. |
ZBugZ |
|
Full Member Рейтинг (т): 6 |
У меня тоже самое |
Anatoly Podgoretsky |
|
Так наверно в uses не указаны нужные модули. |
ViktorXP |
|
попробуй написать forms.Application.ExeName если проблема исчезнет то значит в каком то еще модуле объявлена одноименная переменная (было один раз подобная. модуль не мой. посему не знал что там есть подобная переменная) |
Frees |
|
Цитата VahaC @ 05.07.10, 19:22 но при этом проект компилится и компилятор никаких ворнингов не выдает. может глюк IDE, открыть закрыть Delphi не помогает |
Domino |
|
Цитата Frees @ 06.07.10, 09:24 может глюк IDE
Скорее всего. У меня в окне Structure вечно куча ошибок (в т.ч. и ‘Unknown class TObject’), хотя всё прекрасно компилируется и работает. Немного мешает подчёркивание красной волнистой линией в редакторе, но через некоторое время начинаю не обращать внимания. |
Felan |
|
Да всю жизнь это дело в делфи глючило… И в D2010 тоже. Перезагрузишься — нормально. Через некоторое время опять. |
CodeMonkey |
|
А что, разве Structure хоть когда-то работало нормально, чтобы ожидать от него нормальной работы? |
VahaC |
|
Цитата ViktorXP @ 06.07.10, 08:29 попробуй написать forms.Application.ExeName если проблема исчезнет то значит в каком то еще модуле объявлена одноименная переменная да вроде как раз оно после написания forms.Application.ExeName подчеркивание пропало |
ZBugZ |
|
Full Member Рейтинг (т): 6 |
А у меня даже на кнопку красным пищет |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Общие вопросы
- Следующая тема
[ Script execution time: 0,0471 ] [ 16 queries used ] [ Generated: 10.02.23, 04:49 GMT ]
E2003 Undeclared identifier ‘ShortDateFormat’ error in Delphi XE3 or later versions
E2003 Undeclared identifier ‘ShortDateFormat’ error in Delphi XE3 or later versions
When we upgrade a Delphi old version application to Delphi XE3 or latest one then if we have used ‘ShortDateFormat‘ global variable in our project then we will get ‘E2003 Undeclared identifier ‘ShortDateFormat’ compiler error.
Why we get this error?
As some global variables typically pertain to Date, Time and Currency format (CurrencyString, ShorDateFormat, LongTimeFormat, ShortMonthNames, and so on) have been deprecated and removed declaration from Delphi XE3 or later versions. In old Delphi versions we can find this variables declaration in ‘System.SysUtils’ unit but from Delphi XE3 those are moved with TFormatSettings Record.
Workarounds to solve this error.
We can replace ‘ShortDateFormat‘ with ‘Formatsettings.ShortDateFormat’. And ‘FormatSettings‘ is a global variable of ‘TFormatSettings’ type declared in ‘SysUtils‘ which having these variables.
Errors when we migrate a project from Delphi 7 to Delphi XE3
Undeclared identifier DecimalSeparator
Undeclared identifier CurrencyFormat
Undeclared identifier ThousandSeparator
Undeclared identifier DateSeparator
Undeclared identifier TimeSeparator
Undeclared identifier ShortDateFormat
Undeclared identifier LongDateFormat
Solution to above errors
Formatsettings.DecimalSeparator
Formatsettings.CurrencyFormat
Formatsettings.ThousandSeparator
Formatsettings.DateSeparator
Formatsettings.TimeSeparator
Formatsettings.ShortDateFormat
Formatsettings.LongDateFormat
Following are some other global variables also having same issue:
Global Variable (System.SysUtils) |
Corresponding TFormatSettings Field |
---|---|
CurrencyDecimals |
CurrencyDecimals |
CurrencyFormat |
CurrencyFormat |
CurrencyString |
CurrencyString |
DateSeparator |
DateSeparator |
DecimalSeparator |
DecimalSeparator |
ListSeparator |
ListSeparator |
LongDateFormat |
LongDateFormat |
LongDayNames |
LongDayNames |
LongDayNames |
LongDayNames |
LongTimeFormat |
LongTimeFormat |
NegCurrFormat |
NegCurrFormat |
ShortDateFormat |
ShortDateFormat |
ShortDayNames |
ShortDayNames |
ShortMonthNames |
ShortMonthNames |
ShortTimeFormat |
ShortTimeFormat |
ThousandSeparator |
ThousandSeparator |
TimeAMString |
TimeAMString |
TimePMString |
TimePMString |
TimeSeparator |
TimeSeparator |
TwoDigitYearCenturyWindow |
TwoDigitYearCenturyWindow |
Popular posts from this blog
ShellExecute in Delphi
ShellExecute in Delphi – Launch external applications. ShellExecute is Delphi Windows API function that is mostly used for launch external applications from our Delphi application. This function is linked to the ShellExecute Windows API function. The function returns an integer that corresponds to an error code which is very useful when we need to show some status if the function worked or not . By using ShellExecute we can also do following operations…. Can print documents from within my program, without explicitly starting the application that created the document, such as: print a Word-document without starting Word. Can open browser with a local HTML page Can surf to a site i.e. open an external URL link from a Delphi application Can send mails thorugh outlook Syntax of Windows API function HINSTANCE ShellExecute( _In_opt_ HWND hwnd, _In_opt_ LPCTSTR lpOperation, _In_ LPCTSTR lpFile, _In_opt_ LPC
Drawing Shapes in Delphi
Believe me, drawing shapes in Delphi is so easy. To develop a software like CAD, Paint, CorelDraw Delphi provides large number of classes and members that supports to draw shapes on a form or on a graphic control. In Delphi, we draw shapes on canvas of a form or graphic controls. Canvas is an area of form where we can draw shapes, lines and can fill colors on shapes. In Delphi, every form or graphic controls have Canvas property which provides TCanvas object that can be used to draw shapes. TPen object is used to draw lines and we can set size, color of lines. TBrush object is used to set color and style to fill the shapes. Most frequently used classes for drawing shapes are TCanvas , TBitmap, TGraphics, TPen, TBrush TCanvas Use TCanvas as a drawing surface for objects that draw an image of themselves TBitmap Bitmap is a powerful graphics object used to create, manipulate (scale, scroll, rotate, and paint), and store images in memory and as files on a disk. TGraphics TGr
MS Excel Automation in Delphi
In this blog I will describe how to read and write data from and to an Excel file. Sometime in our application we use Excel for reporting purpose, for data import / export purpose and for other works. So here I will explain how to access an Excel file and use for data read / write. For this Excel 2003 or later should have installed in our system. First use Excel2000 unit to uses clause. This unit comes with Delphi installation it self. You can get the unit in installed path C:Program Files (x86)EmbarcaderoRAD Studio10.0OCXServers Uses Excel2000; Before proceed I would mention an important word LCID which is required at most places. So what it LCID? LCID = In Microsoft Excel, the LCID indicates the currency symbol to be used when this is an xlListDataTypeCurrency type. Returns 0 (which is the Language Neutral LCID) when no locale is set for the data type of the column. We can get LCID in Delphi by using GetUserDefaultLCID function.. privat
Типов сообщений компилятора — более двухсот. Рассмотрим перечень наиболее встречающихся сообщений класса Error
- 0. <Что-то1> expected but <Что-то2> found. Обычно это сообщение возникает при синтаксической ошибке.Например,в случае небаланса скобок,компилятор сообщит: ‘)’ expected but ‘;’ found (вместо ожидавшейся скобки найдена запятая).
Компилятор часто сообщает, что ‘end’ ожидается,например:x:= 5,7; здесь неуместен разделитель-запятая, а сообщается про end. (‘END’ expected but ‘,’ found)
- 1. <Имя> is not a type identifier. Данное <Имя> не является именем типа.
- 2. ‘;’ not allowed before ‘Else’. Перед else нельзя ставить точку с запятой
- 3. Abstract method must be virtual or dynamic. Абстрактный метод должен быть виртуальным или динамическим.
- 4. Ambiguous overloaded call to <Имя блока>. Компилятор не может однозначно выбрать перегружаемый блок. Измените параметр.
- 5. Array type required. Ошибка возникает в случаях, когда в индексе элемента массива указано больше уровней, чем предусмотрено описанием, и если массив не описан. Например, после объявления двумерного массива х или простой переменной х ошибочно записывают элемент х[2,1,1] (в нем показано три измерения).
- 6. Assignment to FOR-loop variable <Имя>. Присваивание значения параметру FOR-цикла в теле цикла.
Например, вследствие описки дважды используется имя i в кратном цикле:
For i:= 1 to n do For i:= 1 to m do ...
- 7. Break or Continue outside of loop. Break или Continue — не в цикле.
- 8. Cannot initialize local variables. Локальные переменные запрещено инициализировать (задавать им значения при описании).
- 9. Cannot assign to/read a read-only/write-only property. Присвоение значения свойству read/only и чтение свойства write/only запрещены.
- 10. Constant expression expected.В этом месте должна стоять константа или константное выражение, например константа выбора в структуре Case.
- 11. Constant expression violates subrange bounds. Выход значения константы из диапазона. Контроль не полон. Например, «сойдет с рук» присваивание x:=3000000000, где х имеет тип integer, но начение х будет искажено.
- 12. Constant or type identifier expected. Требуется имя типа или тип-диапазон.
- 13. Could not compile used unit <Имя>. Компиляция присоединенного модуля <Имя> невозможна.
- 14. Data type too large. Тип определяет структуру размером более 2 Гбайт; это слишком много.
- 15. Declaration expected but <Что-то> found. Пропущено описание или оператор.
- 16. Declaration of <Имя> differs from previous declarations… Данный заголовок блока не соответствует упреждающему объявлению блока.
- 17. Default parameter <Имя> must be by-value or constant. Необязательный параметр (со значением по умолчанию) не должен вызываться по ссылке.
- 18. Expression expected. В этом месте программы должно стоять выражение.
- 19. Expression too complicated. Выражение излишне сложно для компиляции.
- 20. File type not allowed here. В этом месте или в этой роли файловую переменную нельзя использовать. Например, она не может быть формальным параметром-значением.
- 21. For loop control variable must be simple local variable. Параметр цикла должен быть простой локальной (описанной в этом же блоке) переменной.
- 22. For loop control variable must have ordinal type. Параметр цикла должен иметь порядковый тип.Вещественный тип запрещен.
- 23. Function needs result type. В заголовке функции надо указывать тип ее результата.
- 24. Identifier expected but <Что-то> found. В этом месте должно стоять имя. Например, пропущено имя функции после Function.
- 25. Identifier redeclared <Имя>.<Имя> описано повторно, но в пределах блока имя можно описать лишь раз. Проверьте, не обозначена ли локальная переменная тем же именем, что и формальный параметр блока.
- 26. Illegal character in input file <знак>. Запретный знак, например «русская» буква, либо вы оставили скобку }, убрав открывающую скобку {.
- 27. Illegal type in Read/Readln (Write/Writeln) statement. Элемент запрещенного типа в списке ввода/вывода.
- 28. Incompatible types <указание типов>. Несоответствие типов по присваиванию или типов операндов одной операции. Сообщение выдается и при неверном использовании структур. Например, z — запись, ошибочно записано присваивание z:= 0 (работать надо с полями записи).
- 29. Invalid function result type. Недопустимый тип результата функции.
- 30. Label already defined: <Метка>. <Метка> уже помечает другой оператор.
- 31. Left side cannot be assigned to. He может быть такой левой части в присваивании. Примеры: попытка присвоить значение файловой переменной, присвоение значения формальному параметру-константе.
- 32. Line too long. В строке программного текста больше 255 знаков.
- 33. Low bound exceeds high bound. Нижняя граница превышает верхнюю.
- 34. Missing operator or semicolon.Пропуск операции (например перед скобкой) или пропуск точки с запятой. При пропуске ‘;’ маркер ошибки стоит на очередном предложении (объявлении или операторе).
- 35. Missing parameter type. He указан тип формального параметра-значения или параметра процедурного типа.
- 36. Not enough actual parameters. He хватает фактических параметров.
- 37. Need to specify at least one dimension … Нужно задавать в операторе SetLength хотя бы один размер динамического массива.
- 38. Number of elements differs from declaration. Число элементов в структурной константе не соответствует ее описанию.
- 39. Operator not applicable to this operand type. Операция не применима к операндам данного типа. Например: ‘А’ or ‘В’; ‘Text1’* ‘Text2’.
- 40. Order of fields in record constant differs from declaration. Порядок полей в записи-константе не соответствует описанию записи.
- 41. Ordinal type required. Требуется порядковый тип (например, в индексе).
- 42. Out of memory. Компилятору не хватает памяти.
- 43. Statement expected but <Что-то> found. В этом месте должен стоять оператор. Сообщение выдается во всех случаях, когда в тело блока или секцию инициализации ошибочно помещают описание (<Что-то>). Ошибочная форма обращения к процедуре Procedure <Имя> или к функции Function <Имя> также вызывает сообщение.
- 44. Sets may have at most 256 elements. Множество (тип Set) не может содержать более 256 элементов.
- 45. Slice standard function only allowed as open array argument. Функцию Slice можно использовать лишь как фактический параметр
- 46. Statement not allowed in interface part. Предложения в секции интерфейса программного модуля недопустимы.
- 47. Syntax error in real number. Синтаксическая ошибка в записи числа вещственного типа.
- 48. There is no overload version of <Имя> that can be called with these arguments.Не предусмотрен перегружаемый блок <Имя>, который мог бы вызываться с таким аргументом. Пример: IntToStr(x), где х – выражение вещественного типа.
- 49. Too many actual parameters. Фактических параметров больше, чем формальных.
- 50. Type actual and formal var parameters must be identical. Тип фактического параметра должен быть идентичен типу формального параметра-переменной.
- 51. Type of expression must be <Тип>. Выражение должно быть указанного типа. Например,после While и Until должно стоять логическое выражение.
- 52. Undeclared identifier: <Имя>.Не описано <Имя>. Проверьте есть ли описание в нужном месте,нет ли описок в имени. Если указано имя компонента формы, проверьте,поместили ли компонент на данную форму.
- 53. Unexpected end of file in comment started on line <N>. Неожиданный конец файла при незавершенном комментарии, начало комментария — в строке N.
- 54. Unit name mismatch: <Имя>. Имя модуля ошибочно.
- 55. Unsatisfied forward or external declaration <Имя>. Отсутствует описание блока, объявление которого было дано (заголовок в интерфейсе или в описании объектного типа, либо упреждающее описание).
- 56. Unterminate string. He закрыта апострофом строка-константа типа string.
Рассмотрим также некоторые сообщения классов warning и hint.
- Return value of function <Имя> might be undefined. В теле функции нет присваивания ее результата.
- Variable <Имя> might not have been initialized. Указывает имя переменой, которой не задали значения.
- For-Loop variable <Имя> may be undefined after loop. Попытка использования значения параметра For-цикла после завершения этого цикла.
- Text after final ‘END.’ ignored by compiler. Текст, идущий за конечной строкой модуля, игнорируется компилятором.
- Variable <Имя> is declared but never used in <Имя блока>. Обращает внимание на переменную <Имя>, описанную,но не нашедшую применения.
- Value assigned to <Имя> never used. Хотя бы одно значение переменной <Имя> никак не использовано.
Несколько рекомендаций
Сосредотачивайтесь на первом сообщении компилятора. Исправление хотя бы одной ошибки и повторная компиляция может значительно уменьшить число сообщений об ошибках,поэтому не упорствуйте, стремясь понять сразу причину каждого сообщения.
Не удаляйте прежний вариант кода,пока не убедитесь,что ошибка устранена. Лучше на время закомментировать код,заключив его в скобки: { код }
Компилятор не анализирует, как будет выполняться программа, поэтому выход значения индекса из диапазона выявляет только если индекс задан константным выражением. Деление на ноль вообще пропускается, кроме оператора div, в случае если делитель — константное выражение.