Declaration expected but identifier windows found

Типов сообщений компилятора — более двухсот. Рассмотрим перечень наиболее встречающихся сообщений класса Error

Типов сообщений компилятора — более двухсот. Рассмотрим перечень наиболее встречающихся сообщений класса 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, в случае если делитель — константное выражение.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
unit Unit1;
 
interface
 
uses shellapi, Classes, Controls, StdCtrls,
  Windows, Messages, SysUtils, Variants, Graphics, Forms,
  Dialogs, jpeg, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Image1: TImage;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(form1.handle,'open','wow.exe',nil,nil,sw_show);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
if Form1.CloseQuery then Form1.Close;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
ShellExecute (Form1.Handle, nil, 'http://wowcircle.com', nil, nil, SW_RESTORE);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
ShellExecute (Form1.Handle, nil, 'http://virgin.wowcircle.com/', nil, nil, SW_RESTORE);
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
ShellExecute (Form1.Handle, nil, 'http://cp2.wowcircle.com/', nil, nil, SW_RESTORE);
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
ShellExecute (Form1.Handle, nil, 'http://cp.wowcircle.com/', nil, nil, SW_RESTORE);
end;
 
procedure TForm1.Image2Click(Sender: TObject);
begin
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 
end;
 
end.

Не работает

RegisterClass(Tfolder); //(для последующей сериализации)

Выдает ошибку

[Error] Unit1.pas(327): Declaration expected but identifier 'RegisterClass' found

хотя модуль Classes подключен.

angry's user avatar

angry

8,63717 золотых знаков72 серебряных знака180 бронзовых знаков

задан 24 фев 2012 в 12:51

ivan89's user avatar

ivan89ivan89

1,56411 золотых знаков56 серебряных знаков105 бронзовых знаков

1

В uses Windows подключен или SysUtils, точно не знаю, в каком из них этот метод. Так что проверь оба.

angry's user avatar

angry

8,63717 золотых знаков72 серебряных знака180 бронзовых знаков

ответ дан 27 фев 2012 в 6:40

Horus's user avatar

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 parametersHe хватает фактических параметров.

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.

Не удаляйте прежний вариант кода,пока не убедитесь,что ошибка устранена. Лучше на время закомментировать код,заключив его в скобки: { код } 

Компилятор не анализирует, как будет выполняться программа, поэтому выход значения индекса из диапазона выявляет только если индекс задан константным выражением. Деление на ноль вообще пропускается, кроме оператора div, в случае если делитель — константное выражение.

Hi I have the following code

unit WirelessLoading;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, AdPort, OoMisc, AdProtcl, ExtCtrls, Buttons, serialComm,
  profileInterface, registry, AdPStat, jpeg;

type
  TfrmWirelessLoading = class(TForm)
    Image1: TImage;
    lblCommStatus: TLabel;
    loadProgress: TProgressBar;
    //procedure lblCommStatusClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

//procedure Testing;
var
  frmWirelessLoading: TfrmWirelessLoading;
  lblCommStatus: TLabel;
  loadProgress: TProgressBar;
  //lblCommStatus: string;
  //loadProgress: TProgressBar;
  //lblCommStatus: string;

implementation
    //begin
{$R *.DFM}

      lblCommStatus.Caption := ‘Loading Please Wait’;
      lblCommStatus.Repaint;
      loadProgress.Max := 100;
      loadProgress.Position := 10;
      lblCommStatus.Caption := ‘Loading Please Wait’;
      lblCommStatus.Repaint;
      sleep(500);
      loadProgress.Position := 80;
      lblCommStatus.Caption := »;
      lblCommStatus.Repaint;
      Sleep(500);
      lblCommStatus.Caption := ‘Loading Please Wait’;
      lblCommStatus.Repaint;
      sleep(500);

end.

*** I am getting the error declaration expected on lblCommStatus, if i comment it I also get it on the progressload….. I have both elements on the design form.

Topic: Syntax error, «.» expected but «identifier I» found  (Read 16198 times)

hello everyone,

i learned pascal years ago, now a friend of mine asked me to help them with some problem, so i’m not very familiar with pascal’s errors, i’ve fixed a few but can’t figure out this one. i’m using an online compiler, and i get this error: Syntax error, «.» expected but «identifier I» found

here’s the code (getting the error on line 18):

  1. program p;

  2. var a,n,i,j,k : integer;

  3. var x : array[1..50] of integer;

  4. begin

  5. write(‘a = ‘);

  6. read(a);

  7. write(‘n = ‘);

  8. read(n);

  9.     k:=1;

  10.     i:=a;

  11. while(k<=n) do

  12. for j:=2 to trunc(i/2) do

  13. if (i mod j <> 0) then begin

  14.                 x[k]:= i;

  15.                 k:=k+1;

  16. end

  17. end

  18.         i:=i+1;

  19. end

  20. for i:=1 to k do writeln(x[k]);

  21. end.

« Last Edit: November 15, 2016, 08:00:45 am by user4592357 »


Logged


Hi user4592357,

Try this:

  1. program p;

  2. var a,n,i,j,k : integer;

  3. var x : array[1..50] of integer;

  4. begin

  5. write(‘a = ‘);

  6. read(a);

  7. write(‘n = ‘);

  8. read(n);

  9.     k:=1;

  10.     i:=a;

  11. while(k<=n) do begin

  12. for j:=2 to trunc(i/2) do begin

  13. if (i mod j <> 0) then begin

  14.                 x[k]:= i;

  15.                 k:=k+1;

  16. end;

  17. end;

  18.         i:=i+1;

  19. end;

  20. for i:=1 to k do writeln(x[k]);

  21. end.


Logged


You need the semicolon after the «end»s.
I think the only exception is when it’s «end else»… http://wiki.freepascal.org/Else


Logged

Getting back into programming after 8+ years.


You need the semicolon after the «end»s.
I think the only exception is when it’s «end else»… http://wiki.freepascal.org/Else

No, end end end … <at infinitum minus 1> is legal, provided the last end; has a terminating ; and there is really no code at all in between the end’s.

  1. {%NORUN}

  2. program untitled;

  3. uses initc;

  4. begin

  5. while true do

  6. begin

  7. while true do

  8. begin

  9. while true do

  10. begin

  11. end //<—

  12. end //<—

  13. end; //<—

  14. end.

« Last Edit: November 15, 2016, 09:23:14 am by Thaddy »


Logged

The only thing I can say about Putin — born st Petersburg- is that he is indeed Russian, as opposed to Stalin, who was Georgian. Depending of historical time frame they could both be Lithuanian or Polish…even German. Shut him up!


You need the semicolon after the «end»s.
I think the only exception is when it’s «end else»… http://wiki.freepascal.org/Else

No, end end end … <at infinitum minus 1> is legal, provided the last end; has a terminating ; and there is really no code at all in between the end’s.

Ah, learned something new today!  :)


Logged

Getting back into programming after 8+ years.


Added example ;)


Logged

The only thing I can say about Putin — born st Petersburg- is that he is indeed Russian, as opposed to Stalin, who was Georgian. Depending of historical time frame they could both be Lithuanian or Polish…even German. Shut him up!


@Thaddy
It might be legal but still ugly or confusing at least.  :)


Logged


yeah the semicolons were missing, and i learned that too :D thanks for the help


Logged



Logged

The only thing I can say about Putin — born st Petersburg- is that he is indeed Russian, as opposed to Stalin, who was Georgian. Depending of historical time frame they could both be Lithuanian or Polish…even German. Shut him up!


yeah the semicolons were missing, and i learned that too :D thanks for the help

Actually you miss only two semicolons in two of the ends, lines 17 and 19.  The other one (line 16) is the last statement of the block so it doesn’t need a semicolon.   You don’t need a semicolon before an END keyword.

The way to understand is to read the Pascal BNF description.  The trick is at the StatementSequence production:

  StatementPart     = CompoundStatement .

  CompoundStatement = "begin" StatementSequence "end" .

  StatementSequence = Statement { ";" Statement } .

  Statement         = [ Label ":" ]
                      [   AssignmentOrCall
                        | CompoundStatement
                        | GotoStatement
                        | WhileStatement
                        | RepeatStatement
                        | IfStatement
                        | CaseStatement
                        | ForStatement
                        | WithStatement ] .

  AssignmentOrCall  = Designator ( ":=" Expression | [ ActualParams ] ) .

  WhileStatement    = "while" BooleanExpression "do" Statement .

  RepeatStatement   = "repeat" StatementSequence "until" BooleanExpression .

  IfStatement       = "if" BooleanExpression "then" Statement
                      [ "else" Statement ] .

  ForStatement      = "for" ControlVariable ":=" OrdinalExpression
                      ( "to" | "downto" ) OrdinalExpression "do" Statement .


Semicolon is used to separate statements in a statement sequence, not to mark where a statement ends as used in C and derivatives.

BASIC does the same, but using colon («:»). ;)

[edit]
I’ve found this other BNF-esque description. May be it’s more clear.

« Last Edit: November 15, 2016, 11:46:03 am by Ñuño_Martínez »


Logged


    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Отображение логического поля

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему

      


    Сообщ.
    #1

    ,
    02.08.09, 08:41

      Full Member

      ***

      Рейтинг (т): 1

      В таблице Access имеется поле — тип которого «логический» (Да/Нет). Ну так вот, после связи, содержимое поля отображается в DBGrid, как True или False.
      Access:
      Поле
      Да
      Да
      Нет
      Да
      Delphi:
      True
      True
      False
      True

      Как сделать, что бы содержимое отображалось: в место True — Да, а в место False — Нет. А еще лучше будет, если поле будет иметь вид как в Accesse, вместо True/False и Да/Нет, поле с галочкой если (Да/True) и без галочки если (Нет/False).

      Сообщение отредактировано: ~WARlock~ — 02.08.09, 08:43

      Master

      ViktorXP



      Сообщ.
      #2

      ,
      02.08.09, 09:07

        в компоненте TADOTable (или TADOQuery) в нужной колонке делаешь настройки DisplayValues = ‘Да;Нет’


        Игорь Акопян



        Сообщ.
        #3

        ,
        03.08.09, 11:17

          DBGridEh умеет казать галки на логические поля :)


          vladimir74



          Сообщ.
          #4

          ,
          03.08.09, 11:25

            Цитата Игорь Акопян @ 03.08.09, 11:17

            DBGridEh умеет казать галки на логические поля :)

            ага только если мне не изменяет память, то если = null он пишет знак вопроса… Или я его с кем то путаю?


            Павел Калугин



            Сообщ.
            #5

            ,
            03.08.09, 11:29

              Читать на Королевстве, Разноцветный DBGrid для начала. http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168

              Добавлено 03.08.09, 11:34
              В дополнение это
              http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1193
              http://www.delphikingdom.com/asp/viewitem.asp?catalogid=667

              Wizard

              Bas



              Сообщ.
              #6

              ,
              03.08.09, 12:12


                ~WARlock~



                Сообщ.
                #7

                ,
                04.08.09, 05:52

                  Full Member

                  ***

                  Рейтинг (т): 1

                  Paul_K — благодарю за инфу.

                  Не запускается из-за ошибки.

                  Выделяю DBGrid, перехожу на поле «Событие», затем в OnDrawColumnCell прописываю код, который показан в примере:э

                  ExpandedWrap disabled

                    Var

                    Style:Integer;

                    begin

                        if Column.FieldName = ‘Кол-во’ then

                        if Column.Field.AsInteger > 0 then

                        Style := DFCS_CHECKED

                        else

                        Style := DFCS_BUTTONCHECK;

                        end;

                        DrawFrameControl(TDBGrid(Sender).Canvas.Handle, Rect, DFC_BUTTON, Style); // в этой строке ошибка

                    end;

                  Ошибка — Declaration expected but identifier ‘DrawFrameControl’ found


                  Павел Калугин



                  Сообщ.
                  #8

                  ,
                  04.08.09, 06:29

                    Обратите внимание что пример в статье писан, если мне не изменяет память в пятой версии Delphi. Надо смотриеть что в Вашей версии соответствует этой функции. Опяить же надо обратить внимание на текс чуть ниже примера:

                    Цитата

                    Функция DrawFrameControl рисует на канве в определенном прямоугольнике стандартный windows-control, тип и состояние которого определяется передаваемыми параметрами.

                    ExpandedWrap disabled

                      BOOL DrawFrameControl(

                          HDC hdc,    // handle to device context

                          LPRECT lprc,    // pointer to bounding rectangle

                          UINT uType, // frame-control type

                          UINT uState // frame-control state

                         );

                    Подробнее о том, что еще может рисовать эта функция, смотрите help по Windows API (или MSDN или win32.hlp в поставке Delphi) .

                    Добавлено 04.08.09, 06:30
                    Вполне возможно, что данная функция устарела и есть ее аналог.

                    Сообщение отредактировано: Paul_K — 04.08.09, 06:30


                    ~WARlock~



                    Сообщ.
                    #9

                    ,
                    04.08.09, 07:16

                      Full Member

                      ***

                      Рейтинг (т): 1

                      У меня Delphi 7.
                      Как быть в этой ситуации?


                      Павел Калугин



                      Сообщ.
                      #10

                      ,
                      04.08.09, 07:42

                        Почитать что написано в win32.hlp
                        Наверняка надо в USES подключить соответствующий модуль.
                        Может быть этот модуль даже название WinAPI имеет, а может и нет. сам посмотреть сейчас не имею возможности.

                        Сообщение отредактировано: Paul_K — 04.08.09, 07:44


                        ~WARlock~



                        Сообщ.
                        #11

                        ,
                        04.08.09, 08:42

                          Full Member

                          ***

                          Рейтинг (т): 1

                          А без подключения модулей можно сделать, поле с галочками?


                          vladimir74



                          Сообщ.
                          #12

                          ,
                          04.08.09, 08:57

                            это зависит от компонента, если создатель его подумал за тебя то можно…
                            как уже сказали…

                            Цитата Игорь Акопян @ 03.08.09, 11:17

                            DBGridEh умеет казать галки на логические поля :)


                            Игорь Акопян



                            Сообщ.
                            #13

                            ,
                            04.08.09, 09:23

                              Цитата vladimir74 @ 03.08.09, 11:25

                              если = null он пишет знак вопроса

                              врядли, скорее серый чекбокс состояние unknown. Что, кстати, логично ;)

                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                              0 пользователей:

                              • Предыдущая тема
                              • Delphi: Базы данных
                              • Следующая тема

                              Рейтинг@Mail.ru

                              [ Script execution time: 0,0454 ]   [ 16 queries used ]   [ Generated: 4.02.23, 11:54 GMT ]  

                              Понравилась статья? Поделить с друзьями:
                            • Decibel meter free для windows 10
                            • Debugging tools for windows что это за программа
                            • Debugging tools for windows скачать торрент
                            • Debugging tools for windows как установить
                            • Debugging tools for windows как пользоваться