Error incompatible types got extended expected longint

Incompatible types: got "Extended" expected "LongInt" Delphi Решение и ответ на вопрос 1551485
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
Classes, SysUtils, LResources, Forms,
 Controls, Graphics, Dialogs, StdCtrls, Grids;
 
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 
  private
    { private declarations }
  public
    { public declarations }
  end;
adress = record
city, street : string; //город, улица,
house, apartment: integer;//дом, квартира.
end;
 
student = record
surname , name : string; //фамилия, имя,
group : string; //группа,
//оценки,
estimation: array [1..5] of integer;
residence : adress; //адрес,
s_ball: real; //средний балл.
end;
var
  Form1: TForm1;
  x: array [0..100] of student;
//Локальная переменная для подсчета
  i: integer;
 
implementation
{$R *.lfm}
//Процедура инициализации формы.
procedure TForm1.FormCreate(Sender: TObject);
begin
//Label1.Visible:=False;
i:=0;
end;
 
//Процедура работы кнопки «Запомнить данные».
procedure TForm1.Button1Click(Sender: TObject);
var sum, j,sotka:Integer;
  price, sckidka: Integer;
begin
//Чтение данных из полей ввода.
x[i].surname:= Edit1.Text;
x[i].name:= Edit2.Text;
x[i].group:= Edit3.Text;
x[i].residence.city:=Edit4.Text ;
x[i].residence.street:= Edit5.Text;
x[i].residence.house:=StrToInt(Edit6.Text);
price:= StrToInt(Edit3.Text);
sckidka:= StrToInt(Edit7.Text);
//sotka:= 100;
//Цена без скидки * (Скидка в % / 100)
x[i].residence.apartment:= Price*(sckidka/100);
//нужная хрень
x[i].estimation[1]:=1;
x[i].estimation[2]:=2;
x[i].estimation[3]:=3;
x[i].estimation[4]:=4;
x[i].estimation[5]:=5;
 
sum:=0;
for j:=1 to 5 do
sum:=sum+x[i].estimation[j];
x[i].s_ball:=sum/5; inc(i);
//Очищение полей ввода для следующих данных.
Edit1.Text:= ''; Edit2.Text:= '';
Edit3.Text:= ''; Edit4.Text:= '';
Edit5.Text:= ''; Edit6.Text:= '';
Edit7.Text:= ''; //Edit8.Text:= '';
//Edit9.Text:= ''; Edit10.Text:= '';
//Edit11.Text:= ''; Edit12.Text:= '';
end;
 
//Процедура работы кнопки «Вывести данные».
procedure TForm1.Button2Click(Sender: TObject);
var f:textfile; j: integer; s: string;
begin
//Количество строк в таблице StringGrid
//одна строка для шапки таблицы.
StringGrid1.RowCount:= i+1;
//Вывод шапки таблицы.
StringGrid1.Cells[1,0]:='Название' ;
StringGrid1.Cells[2,0]:='Фабрика' ;
StringGrid1.Cells[3,0]:='Цена' ;
StringGrid1.Cells[4,0]:='Год выпуска' ;
StringGrid1.Cells[5,0]:='Количество' ;
StringGrid1.Cells[6,0]:='Цена со скидкой' ;
StringGrid1.Cells[7,0]:='Партия' ;
//Вывод сведений 
for j:=1 to i do
begin
StringGrid1.Cells[1,j]:=x[j-1].surname ;
StringGrid1.Cells[2,j]:=x[j-1].name;
StringGrid1.Cells[3,j]:=x[j-1].group;
StringGrid1.Cells[4,j]:=x[j-1].residence.city;
StringGrid1.Cells[5,j]:=x[j-1].residence.street;
 
s:=inttostr(x[j-1].residence.house);
StringGrid1.Cells[6,j]:=s ;
StringGrid1.Cells[7,j]:=inttostr(x[j-1].residence.apartment);
end;
//Вывод результатов в текстовый файл.
assignfile(f,'student.txt');
rewrite(f);
for j:=1 to i do
begin
writeln(f,x[j-1].surname:20,
x[j-1].name:15,
x[j-1].residence.city:15,',',
x[j-1].residence.street:15,
x[j-1].residence.house:4,'/',
x[j-1].residence.apartment,
' Sr_ball=',x[j-1].s_ball:4:1);
end;
closefile(f);
end;
 
//Процедура работы кнопки
//«Сортировать по алфавиту».
procedure TForm1.Button3Click(Sender: TObject);
var j, k :integer;
temp: student; //Переменная для сортировки.
f:textfile;
Begin
//Сортировка по полю surname методом пузырька.
for j:= 0 to i-1 do
for k:=j+1 to i-1 do
if x[j].surname > x[k].surname then
begin
//Строки меняются местами.
temp:=x[j]; x[j]:=x[k];x[k]:=temp;
end;
end;
initialization
{$I unit1.lrs}
 
 
//
 
end.

Topic: [SOLVED] Incompatible types  (Read 34235 times)

function SomeFunc(): Integer;
var
  i: Integer;

begin
  i:= 1440 / 2;
end; 

Error: unit1.pas(49,12) Error: Incompatible types: got «Extended» expected «LongInt»

help

« Last Edit: November 19, 2012, 05:40:59 pm by deepaak99 »


Logged

Holiday season is online now. :-)


You are assigning a real value to an integer variable. Change «i: integer» to «i: double» and you are fine.

« Last Edit: November 19, 2012, 11:13:29 am by JD »


Logged

Windows (10) — Lazarus 2.1/FPC 3.2 (svn 64160 built using fpcupdeluxe),
Linux Mint — Lazarus 2.1/FPC 3.2 (svn 64380 built using fpcupdeluxe),
Delphi

Indy 10.6 series; mORMot; Zeos 7.3; SQLite, Firebird, PostgreSQL & MariaDB; VirtualTreeView 5.5.3 R1


/ is a floating point division
div is an integer division


Logged



Logged

Dear Confucius you said {A picture is worth a thousand words}
I say {a good example is worth a thousand words}



Logged

Lazarus Trunk / fpc 2.6.2 / Win32


or

function SomeFunc(): Integer;
var
  i: Integer;

begin
  i:= round(1440 / 2);
end; 


or

function SomeFunc(): Integer;
var
  i: Integer;

begin
  i:= trunc(1440 / 2);
end; 

« Last Edit: November 19, 2012, 01:02:43 pm by Fred vS »


Logged


orfunction SomeFunc(): Integer;
var
  i: Integer;

begin
  i:= round(1440 / 2);
end; 


orfunction SomeFunc(): Integer;
var
  i: Integer;

begin
  i:= trunc(1440 / 2);
end; 

i:= 1440 Div 2

/ is a floating point division
div is an integer division

Thank you. div was new for me, as in c «/» is used for division, round() and trunk() is also a treat  :)


Logged

Holiday season is online now. :-)


If DIV was new for you, you should also look at MOD.


Logged

Lazarus Trunk / fpc 2.6.2 / Win32


Модератор: Модераторы

Деление переменной Integer

Код: Выделить всё
var a:integer;

~

a:=a/255;

Компилятор говорит unit1.pas(35,6) Error: Incompatible types: got «Extended» expected «LongInt»

Я так понимаю нужно использовать другой тип данных, какой? Будет ли он совместим в применение с типом данных Integer?

Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Деление переменной Integer

Сообщение coyot.rush » 05.01.2011 22:07:57

можно

Код: Выделить всё
a:=round(a/255);

Integer-целочисленный тип, результат деления число с плавающий запятой.

Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 306
Зарегистрирован: 14.08.2009 08:59:48


Re: Деление переменной Integer

Сообщение dunin » 06.01.2011 02:02:25

такой костыль a:= round(a/255) не проканает? :roll:

Добавлено спустя 5 минут 39 секунд:

qivi писал(а):Я так понимаю нужно использовать другой тип данных, какой?

var a: double;

Добавлено спустя 1 минуту 24 секунды:
coyot.rush, сорри, не заметил.

Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
  • Профиль
  • Сайт
  • ICQ


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Содержание

  1. Почему выдаёт ошибку? Где я накосячила? Ошибка: unit1.pas(120,5) Fatal: Syntax error, «;» expected but «ELSE» found
  2. Fatal: Syntax error, «.» expected but «;» found
  3. 1 Answer 1
  4. Pascal Help ? 6 errors that I do not know how to fix
  5. TacticalMaestro
  6. [Паскалъ] Need Help
  7. Why does syntax error appear after running code?
  8. 1 Answer 1

Почему выдаёт ошибку? Где я накосячила? Ошибка: unit1.pas(120,5) Fatal: Syntax error, «;» expected but «ELSE» found

procedure TForm1.RadioButton1Change(Sender: TObject);
begin
if radiobutton1.checked then
begin
edit1.text := IntToStr(Bin2Dec(edit1.text));
CS := 10;
s:=edit1.text
end;
else begin
edit1.text := IntToStr(Oct2Dec(edit1.text));
CS := 10;
s:=edit1.text;

Button1.Enabled:=True;
Button2.Enabled:=True;
Button3.Enabled:=True;
Button4.Enabled:=True;
Button5.Enabled:=True;
Button6.Enabled:=True;
Button7.Enabled:=True;
Button8.Enabled:=True;
Button9.Enabled:=True;
Button10.Enabled:=True;
Button11.Enabled:=True;
Button12.Enabled:=True;
Button13.Enabled:=True;
Button15.Enabled:=True;
Button16.Enabled:=True;
Button17.Enabled:=True;
Button18.Enabled:=True;
Button14.Enabled:=True;
Button19.Enabled:=True;
Button20.Enabled:=True;
Button21.Enabled:=True;
Button22.Enabled:=True;
Button23.Enabled:=True;
end;

—-исходный кусок ————
CS := 10;
s:=edit1.text
end;
else begin
————неправильно, д. б. так ——————-
CS := 10;
s:=edit1.text;
end
else begin

З. Ы. внимательнее с синтаксисом. лучше код форматировать отступами, вроде так:
begin
begin
.
end;
end;
сразу ясно какой энд какому бегину принадлежит )))

Источник

Fatal: Syntax error, «.» expected but «;» found

1 Answer 1

The reason for this is that your begin s and end s are not balanced; disregarding the opening begin and closing end. for the program’s syntax to be correct, you should have equal numbers of each, but you have 4 begin s and 8 end s.

Obviously, your code is to compute the solutions of a quadratic equation. What I think you should do is to adjust the layout of your code so that it reflects that and then correctly the begin s and end s. In particular, your program is trying to detect whether any of a, b and d is zero and, if so, write a diagnostic message, otherwise calculate the roots by the usual formula.

Unfortunately, your begin s and end s do not reflect that. Either the whole of the block starting d := . needs to be executed or none of it does, so the else on the line before needs to be followed by a begin , as in

(You don’t say which Pascal compiler you are using, but the above fixes two points which are flagged as errors in FreePascal.

If you need more help than that, please ask in a comment.

Btw, there are some grammatical constructs in Pascal implementations where an end can appear without a matching preceding begin such as case . of . end .

Источник

Pascal Help ? 6 errors that I do not know how to fix

TacticalMaestro

Estimable

Program TypeofCreditCard;
Var
AppliName: array[1..99] of String;
SSnum: array[1..99] of Integer;
GSal: array[1..99] of Integer;
TSalD: array[1..99] of Integer;

Name, CC : String;
Rep,Exp, GS,NS,Sum,TSD , YS,SSN,i,C_Amt,PofIncome : integer ;

Begin
Writeln ( ‘Enter applicants who applied for a type of credit card’);
Readln (Rep,Exp,GS,YS,NS,Sum,TSD,SSN,CC,PofInco. ;

While ( Name <> ‘ Stop ‘ ) do
Begin
NS:= GS-TSD ;
Sum:= Exp + Rep ;
PofIncome:=(NS * 0.45);
Begin
If ( GS >4000) AND ( CC = ‘Bronze Card’ ) then
YS:= GS * 12 ;
C_Amt := YS * 0.25;
i:= i + 1;
AppliName := Name;
SSNum := SSN ;
GSal [ i]:= GS ;
TSalD := TSD ;
End ;
Begin
If (GS >= 7500) AND [CC= ‘Gold Card’] then
YS:= GS * 12 ;
C_Amt:= YS * 0.3;
i:= i + 1 ;
AppliName := Name;
SSnum:=SSN;
GSal:=GS;
TSalD:=TSD;
End;
Begin
If (GS>=10,000) AND ( CC = ‘ Platinum Card’) then
YS := GS * 12;
C_Amt: = YS * 0.4;
i:= i + 1;
A ppliName := Name;
SSNum := SSN;
GSal :=GS;
TSalD := TSD;

End if
End if
End if
End While
End.

The five errors are :
1. Error:Incompatible types: got «Boolean» expected «LongInt» — For this line : If (GS >= 7500) AND [CC= ‘Gold Card’] then

2.Error:Incompatible types: got » Set of Boolean» expected » LongInt» — for the same line (If (GS >= 7500) AND [CC= ‘Gold Card’] then )

3.Error:Incompatible types: got «single» expected «smallint» — for C_Amt := YS * 0.25 ; in Bronze Card

4.Error:Incompatible types: got «extended» expected «smallint» for C_Amt := YS * 0.3; in Gold Card

5.Fatal:syntax error , «)» expected but «,» found — (If GS >= 10000) AND [CC= ‘Platinum’] then )

Thanks for any help. I know my program is by no means perfect because I am awful at Pascal and desperately need help on fixing these things. So I am open to anything that will get this program running in Pascal. Thanks.

Источник

[Паскалъ] Need Help

Что программа должна делать(на пхп)

ЕМНИП перед else там точка с запятой не ставится.

Не, ругается на другое, и спасибо это пофиксил.

> перед else там точка с запятой не ставится.

> ругается на другое

Условия в скобки попробуй.

Перед else ; не ставится.

У readln точно такой синтаксис? (я уже запамятовал)

Условия в скобки не надо?

Операции сравнения в скобки возьми.

А теперь, дружище, запомни, что вот этот выхлоп

untitled.pas(26,7) Error: Incompatible types: got «Boolean» expected «LongInt»
untitled.pas(28,2) Fatal: Syntax error, «;» expected but «ELSE» found

должен читать ТЫ сам, а не ЛОР.

Свободно говорю на Русском, Литовском, Английском.

Свободно говорю на Английском

Error: Incompatible types: got «Boolean» expected «LongInt»

Fatal: Syntax error, «;» expected but «ELSE» found

Источник

Why does syntax error appear after running code?

presently learning how to code in pascal and vba. Assisting my daughter who is preparing for examinations next year. I am stuck on a problem concerning her present assignment. After running the code the following errors were received:

main.pas(1,2) Fatal: Syntax error, «BEGIN» expected but «identifier N» found Fatal: Compilation aborted

Tried fixing the code, but as i said I have just started learning to code.

The expected result is to choose a candidate by his ID number which would lead to his name, the number of vote available in a district and the number of votes the candidate obtained being displayed. it would then result in a calculation between the two vote counts (division) and if the percentage is greater than 20% he would receive a refund, if less than 20% he would not receive a refund. either result should be displayed.

1 Answer 1

I’m afraid that you q, as it currently stands, isn’t really suited to SO because SO is really about specific (single) programming problems, not incrementally debugging source code (see Sertac’s comment), nor providing online tutorials, which I think you probably need at this point. And I feel rather uncomfortable about posting this as an answer, because it isn’t one in the normal SO sense. However it seems to me that you could use a few pointers:

Unless you absolutely have to use the online compiler, download and use a free online one like Free Pascal, which is well supported, uses standard Pascal syntax, and I’m sure there are basic first-time tutorials available. See here to download Lazarus, which is an excellent IDE for Free Pascal (which is included in the install) and here for an introductory tutorial.

Secondly, there are structural and syntactic elements of your source-code which are definitely not standard Pascal, in particular endif and elseif . Another example is that in standard Pascal, you have to surround a string (like your Richards, etc) with single-quotes ‘ , not precede the string by a back-quote. This is very possibly the cause of your «illegal character» error

For a decent Free Pascal introductory tutorial see here and this youtube tutorial, both found by googling

«free pascal» introductory tutorial.

Fourthly, your online compiler ought to be complaining about the endif abd elseif s, the incorrectly string formatting and the fact that several of your variables are duplicated ( DV and VR used as the names of an integer variable and an array, for example as in Pascal, identifiers within the same ‘scope’ need to have unique names (the fact that I should explain what ‘scope’ means is a sign that what the q needs is a tutorial).

Источник

You have several syntactical errors in your code. I did not check if your quicksort is actually correct. You can debug that.

Array types

You are confusing several different things:

  • dynamic arrays (e.g. type array of double),
  • static arrays (e.g. type array[a..b] of double) and probably
  • open array parameters (parameter array of double).

Your parameter is a dynamic array type (TVector), but you pass a static array. These are not compatible.

To be able to pass a dynamic as well as a static array, you can use the mentioned open array parameters (note that they look like, but are not the same as dynamic arrays).

procedure QuickSort(var apod: array of Double; iLo, iHi: Integer);

More about open array parameters in an article of mine: Open array parameters and array of const.

Var (reference) parameters

But there is another problem: var parameters must have the exact type (or base type). No conversion will take place. So your a, b, c, apod and af parameters must contain Doubles too:

var
  a, b, c, apod, af: array[1..100000] of Double;

Unbound blocks

Then the loose begin endblocks after the QuickSort function don’t make sense. That is not Pascal. Rather do something like this in the main block (the last begin ... end. — note the final .):

begin
  for i := Low(apod) to High(apod) do
    apod[i] := (a[i] - ((a[i] * b[i]) / 3000) - ((c[i] * a[i]) / 40));
  QuickSort(apod, Low(apod), High(apod));
end.

But note that the code above doesn’t make a lot of sense. Probably all values in apod will be 0, since a, b, c, etc. are not initialized yet (so a[i] etc. are probably all 0).

I have no idea where you got that code, but you may want to try to understand it, before you start translating it to Pascal.

Lo and Hi

Note that you should use Low and High. Lo and Hi are something totally different: they get the low and high byte of a 16 bit word, respectively. Low and High get the bounds of arrays, sets and types.

В этом разделе описаны все ошибки, которые могут случиться при проверке типов.

Сообщение

Описание

Error: Type mismatch

Это может произойти во многих случаях:

Назначенная вами переменная отличается от типа, который используется в выражении

Вы вызываете функцию или процедуру с параметрами, которые несовместимы с параметрами в объявлении функции или процедуры

Error: Incompatible types: got «Сообщ1» expected «Сообщ2»

Невозможно преобразование между двумя типами. Ещё одна причина – типы объявлены в разных объявлениях:

Var A1 : Array[1..10] Of Integer;
  A2 : Array[1..10] Of Integer;
Begin
A1:=A2; {Этот оператор также даёт такую ошибку, потому
          что выполняется строгая проверка типов Pascal}
End.

Error: Type mismatch between «Сообщ1» and «Сообщ2»

Типы не являются эквивалентными.

Error: Type identifier expected

Идентификатор не является типом, или вы забыли указать идентификатор type.

Error: Variable identifier expected

Это случается, если вы помещаете константу в процедуру (такую как Inc или Dec), в то время как процедура требует переменной. Для таких процедур в качестве параметров можно помещать только переменные.

Error: Integer expression expected, but got «Сообщение»

Компилятор ожидает выражения типа integer, но получает другой тип.

Error: Boolean expression expected, but got «Сообщение»

Выражение должно быть типа boolean. Оно должно возвращать True или False.

Error: Ordinal expression expected

Выражение должно быть порядкового типа, то есть максимум типа Longint. Эта ошибка случается, например, если вы указали второй параметр процедуры Inc или Dec, который не соответствует порядковому типу.

Error: pointer type expected, but got «Сообщение»

Переменная или выражения не являются указателем. Это случается, если вы помещаете переменную, которая не является указателем, в New или Dispose.

Error: class type expected, but got «Сообщение»

Переменная или выражение не являются типом class. Это обычно случается, если

1.Родительский класс в объявлении класса не является классом

2.Обработчик исключения (On) cсодержит идентификатор типа, который не является классом.

Error: Can’t evaluate constant expression

Эта ошибка может случиться, если границы объявленного вами массива не обозначены порядковыми константами.

Error: Set elements are not compatible

Вы пытаетесь выполнить операцию с двумя множествами, в то время как типы элементов этих множеств не являются одинаковыми. Базовые типы множеств должны быть одинаковыми при объединении.

Error: Operation not implemented for sets

Некоторые бинарные операторы не определены для множеств. Это операторы: div, mod, **, >= и <=. Последние два могут быть определены для множеств в будущих версиях.

Warning: Automatic type conversion from floating type to COMP which is an integer type

Обнаружено явное преобразование типов из real в comp. s encountered. Поскольку comp – это 64-битное целое число, то это может вызвать ошибку.

Hint: use DIV instead to get an integer result

Если подсказки включены, то целочисленное деление с оператором ‘/‘ приведёт к этому сообщению, потому что результатом будет вещественный тип.

Error: string types doesn’t match, because of $V+ mode

Если выполняется компиляция в режиме {$V+}, то строка, передаваемая вами в качестве параметра, должна быть точно такого же типа, как параметр процедуры.

Error: succ or pred on enums with assignments not possible

Если вы объявили перечисляемый тип в стиле С, например, так:

Tenum = (a,b,e:=5);

То вы не сможете использовать функции Succ или Pred с этим перечислением.

Error: Can’t read or write variables of this type

Вы пытаетесь прочитать или записать переменную из файла или в файл текстового типа, который не поддерживает тип переменной. Только целочисленные типы, вещественные, pchars и strings можно читать из файла или записывать в текстовый файл. Логические переменные можно только записывать в текстовый файл.

Error: Can’t use readln or writeln on typed file

readln и writeln можно использовать только с текстовыми файлами.

Error: Can’t use read or write on untyped file.

read и write допускаются только для текстовых или типизированных файлов.

Error: Type conflict between set elements

Это означает, что не менее одного элемента множества имеют неправильный тип.

Warning: lo/hi(dword/qword) returns the upper/lower word/dword

Free Pascal поддерживает перегруженную версию lo/hi для longint/dword/int64/qword, которые возвращают наименьшее/наибольшее (результат типа слово/двойное слово) значение аргумента. Turbo Pascal позволяет использовать 16-битные lo/hi, которые возвращают биты 0..7 для lo и биты 8..15 для hi. Если вы хотите получить поведение, аналогичное Turbo Pascal, вы должны использовать приведение типов к word или integer.

Error: Integer or real expression expected

Первый аргумент для str должен быть типа real или integer.

Error: Wrong type «Сообщение» in array constructor

Вы пытаетесь использовать тип в конструкторе массива, который недопустим.

Error: Incompatible type for arg no. Сообщ1: Got «Сообщ2», expected «Сообщ3»

Вы пытаетесь передать неправильный тип в указанный параметр.

Error: Method (variable) and Procedure (variable) are not compatible

Вы не можете связать метод с процедурной переменной или процедуру с указателем на метод.

Error: Illegal constant passed to internal math function

Аргумент-константа, переданный в функцию ln или sqrt выходит за пределы диапазона для этой функции.

Error: Can’t take the address of constant expressions

Невозможно получить адрес выражения-константы, потому что оно не записывается в память. Вы можете попробовать сделать типизированную константу. Эта ошибка может также появиться, если вы пытаетесь поместить свойство в параметр var.

Error: Argument can’t be assigned to

Только выражение, которое может быть в левой части присваивания, может быть передано как вызов по ссылке аргумента. Примечание: Свойства могут использоваться в левой части присваивания, тем не менее, они не могут использоваться как аргументы.

Error: Can’t assign local procedure/function to procedure variable

Не допускается присваивать локальные процедуры/функции процедурным переменным, потому что соглашение о вызовах локальных процедур/функций отличаются. Вы можете только присвоить локальную процедуру/функцию пустому указателю.

Error: Can’t assign values to an address

Не допускается присваивать значение адресу переменной, константы, процедуры или функции. Вы можете попытаться выполнить компиляцию с опцией -So, если идентификатор является процедурной переменной.

Error: Can’t assign values to const variable

Не допускается присваивать значение переменной, которая объявлена как константа. Обычно параметр объявляется как константа. Чтобы иметь возможность изменять значение, передавайте параметр по значению или параметр по ссылке (используя var).

Error: Array type required

Если вы хотите получить доступ к переменной, используя индекс ‘[<x>]‘, то тип должен быть массивом. В режиме FPC указатель также допускается.

Error: interface type expected, but got  «»Сообщение»

Компилятор ожидал для нумератора имя типа интерфейса, но получил нечто другое. Следующий код приведёт к этой ошибке:

Type
TMyStream = Class(TStream,Integer)

Hint: Mixing signed expressions and longwords gives a 64bit result

Если вы делите (или вычисляете модуль) выражения со знаком с типом longword (или наоборот), или если вы имеете переполнение и/или включена проверка диапазона и используется арифметическое выражение (+, -, *, div, mod), в котором оба числа со знаком и появляется longwords, то всё это вычисляется как 64-битная арифметическая операция, которая медленнее, чем обычная 32-битная. Вы можете избежать этого при помощи преобразования типа одного из операндов в подходящий для результата и другого операнда.

Warning: Mixing signed expressions and cardinals here may cause a range check error

Если вы используете бинарный оператор (and, or, xor) и один из операндов — это longword, в то время как другой – это выражение со знаком, то, если проверка диапазона включена, вы можете получить ошибку проверки диапазона, потому что в этом случае оба операнда преобразуются в longword перед выполнением операции. Вы можете избежать этого при помощи преобразования типа одного из операндов в подходящий для результата и другого операнда.

Error: Typecast has different size (Сообщ1 -> Сообщ2) in assignment

Преобразование типа при отличающихся размерах не допускается, когда переменная используется в присваивании.

Error: enums with assignments can’t be used as array index

Если вы объявили перечисляемый тип, который имеет С-подобные присваивания, как показано ниже:

Tenum = (a,b,e:=5);

Вы не можете использовать его как индекс массива.

Error: Class or Object types «Сообщ1» and «Сообщ2» are not related

Выборка из одного класса в другой, в то время как класс/объект не являются связанными. Вероятно, это ошибка ввода.

Warning: Class types «arg1» and «arg2» are not related

Выборка из одного класса в другой, в то время как класс/объект не являются связанными. Вероятно, это ошибка ввода.

Error: Class or interface type expected, but got «arg1»

Компилятор ожидал имя класса или интерфейса, но получил другой тип или идентификатор.

Error: Type «Сообщение» is not completely defined

Эта ошибка случается, если тип не завершён, например, тип pointer, который указывает на неопределённый тип.

Warning: String literal has more characters than short string length

Размер строки-константы, которая связана с shortstring, больше максимального размера для shortstring (255 символов).

Warning: Comparison is always false due to range of values

Это сравнение беззнакового значения и константы со знаком, которая меньше нуля. По причине преобразования оператор всегда будет возвращать FALSE. Выполните явное преобразование константы в правильный диапазон, чтобы избежать этой проблемы.

Warning: Comparison is always true due to range of values

Это сравнение беззнакового значения и константы со знаком, которая меньше нуля. По причине преобразования оператор всегда будет возвращать TRUE. Выполните явное преобразование константы в правильный диапазон, чтобы избежать этой проблемы.

Warning: Constructing a class «Сообщ1» with abstract method «Сообщ2»

Например, создаваемый класс содержит неисполняемые абстрактные методы. Имеется вероятность, что случится ошибка времени исполнения 211 в коде, если эта процедура будет когда-либо вызвана. Все абстрактные методы должны быть перегружаемыми.

Hint: The left operand of the IN operator should be byte sized

Левый операнд в операторе IN не является порядковым или перечислением, который помещается в 8 бит. Это может привести к ошибке проверки диапазона. На текущий момент оператор in поддерживает левый оператор только в пределах байта. В случае с перечислениями, размер элемента перечисления может изменяться опциями {$PACKENUM} или {$Zn}.

Warning: Type size mismatch, possible loss of data / range check error

Это случается, когда меньшему типу присваивается значение, большее, чем исходный тип. Это означает, что может произойти ошибка проверки диапазона или уменьшение значения.

Hint: Type size mismatch, possible loss of data / range check error

Это случается, когда меньшему типу присваивается значение, большее, чем исходный тип. Это означает, что может произойти ошибка проверки диапазона или уменьшение значения.

Error: The address of an abstract method can’t be taken

Не найдено тело абстрактного метода, поэтому адрес абстрактного метода не может быть назначен.

Error: Assignments to formal parameters and open arrays are not possible

Вы пытаетесь присвоить значение формальному параметру (нетипизированный var, const или out), или открытому массиву.

Error: Constant Expression expected

Компилятор ожидал выражение-константу, но получил выражение- переменную.

Error: Operation «Сообщ1» not supported for types «Сообщ2» and «Сообщ3»

Операция не допускается для указанных типов.

Error: Illegal type conversion: «Сообщ1» to «Сообщ2»

Когда выполняете преобразование типов, вы должны понимать, что размеры переменной и типа назначения одинаковы.

Hint: Conversion between ordinals and pointers is not portable

Если вы преобразуете тип pointer в longint (или наоборот), то код не будет компилироваться на машинах, использующих 64-разрядную адресацию.

Warning: Conversion between ordinals and pointers is not portable

Если вы преобразуете тип pointer в порядковый тип с другим размером (или наоборот), то могут возникнуть проблемы. Это предупреждение помогает в поиске 32-битного специального кода, где cardinal/longint используются для преобразования указателей в порядковые типы. Решением проблемы является использование вместо этого типов ptrint/ptruint.

Error: Can’t determine which overloaded function to call

Вы вызываете перегруженную функцию с параметром, который не связан с каким-либо объявленным списком параметров, например, когда вы имеете объявленную функцию с параметрами word и longint, а затем вызываете её с параметром типа integer.

Error: Illegal counter variable

Переменная для цикла for должна быть порядкового типа. Переменные циклов не могут быть вещественными числами или строками.

Warning: Converting constant real value to double for C variable argument, add explicit typecast to prevent this.

В C значения вещественных констант по умолчанию имеют тип double. Из этих соображений, когда вы передаёте вещественную константу в функцию С в качестве параметра, компилятор FPC по умолчанию преобразует её в тип double. Если вы хотите контролировать этот процесс, добавьте для константы явное преобразование в нужный тип.

Error: Class or COM interface type expected, but got «Сообщение»

Некоторые операторы, такие как AS, применяются только для классов или COM-интерфейсов.

Error: Constant packed arrays are not yet supported

Вы не можете объявить битовый (упакованный) массив как типизированную константу.

Error: Incompatible type for arg no. Сообщ1: Got «Сообщ2» expected «(Bit)Packed Array»

Компилятор ожидает битовый (упакованный) массив как указанный параметр.

Error: Incompatible type for Сообщение no. Сообщ1: Got «Сообщ2» expected «»(not packed) Array»

Компилятор ожидает регулярный (то есть НЕ упакованный) массив как указанный параметр.

Error: Elements of packed arrays cannot be of a type which need to be initialised

Поддержка упакованных массивов, которым необходима инициализация (таких как ansistrings, или записей, содержащих ansistrings), пока не реализована.

Error: Constant packed records and objects are not yet supported

Вы не можете объявить битовый (упакованный) массив как типизированную константу в данное время.

Warning: Arithmetic «Сообщение» on untyped pointer is unportable to {$T+}, suggest typecast

Сложение/вычитание из нетипизированных указателей может работать по разному в {$T+}. Используёте преобразование типов для типизированных указателей.

Error: Can’t take address of a subroutine marked as local

Нельзя получить адрес подпрограммы, помеченной как локальная.

Error: Can’t export subroutine marked as local from a unit

Подпрограмма, помеченная как локальная, не может быть экспортирована из модуля.

Error: Type is not automatable: «Сообщение»

Только byte, integer, longint, smallint, currency, single, double, ansistring, widestring, tdatetime, variant, olevariant, wordbool и все интерфейсы являются automatable.

Hint: Converting the operands to «Сообщение» before doing the add could prevent overflow errors.

Сложение двух типов может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед сложением.

Hint: Converting the operands to «Сообщение» before doing the subtract could prevent overflow errors.

Вычитание между двумя типами может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед вычитанием.

Hint: Converting the operands to «Сообщение» before doing the multiply could prevent overflow errors.

Умножение между двумя типами может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед умножением.

Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned

Виртуальное адресное пространство на виртуальных машинах располагается от $00000000 до $ffffffff. Многие операционные системы позволяют выделять память с адресами выше $80000000. Например, как WINDOWS, так и LINUX, допускают использование указателей в диапазоне от $0000000 до $bfffffff. Если вы преобразуете типы со знаком, это может вызвать ошибки переполнения и проверки диапазона, но также $80000000 < $7fffffff. Это может вызвать случайную ошибку в коде, подобно этому: «if p>q».

Error: Interface type Сообщение has no valid GUID

Если применяется оператор as для интерфейса или класса, то интерфейс (то есть правый операнд оператора as) должен иметь правильный GUID.

Error: Invalid selector name

Селектор Objective-C не может быть пустым, он должен быть правильным идентификатором или одинарным двоеточием, а если он содержит менее одного двоеточия, он также должен быть завершён.

Error: Expected Objective-C method, but got Сообщение

Селектор может быть создан только для методов Objective-C, не для любых других процедур/функций/методов.

Error: Expected Objective-C method or constant method name

Селектор может быть создан только для методов Objective-C, при задании имени используются строковые константы или идентификатор метода Objective-C, который является видимым из текущей области видимости.

Error: No type info available for this type

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

Error: Ordinal or string expression expected

The expression must be an ordinal or string type.

Error: String expression expected

The expression must be a string type.

Warning: Converting 0 to NIL

Use NIL rather than 0 when initialising a pointer.

Error: Objective-C protocol type expected, but got ”arg1”

The compiler expected a protocol type name, but found something else.

Error: The type ”arg1” is not supported for interaction with the Objective-C runtime

Objective-C makes extensive use of run time type information (RTTI). This format is defined by the maintainers of the run time and can therefore not be adapted to all possible Object Pascal types. In particular, types that depend on reference counting by the compiler (such as ansistrings and certain kinds of interfaces) cannot be used as fields of Objective-C classes, cannot be directly passed to Objective-C methods, and cannot be encoded using objc_encode.

Error: Class or objcclass type expected, but got ”arg1”

It is only possible to create class reference types of class and objcclass

Error: Objcclass type expected

The compiler expected an objcclass type

Warning: Coerced univ parameter type in procedural variable may cause crash or memory corruption: arg1 to arg2

univ parameters are implicitly compatible with all types of the same size, also in procedural variable definitions. That means that the following code is legal, because single and longint have the same size:

{$mode macpas}

Type

  TIntProc = procedure (l: univ longint);

  procedure test(s: single);

    begin

      writeln(s);

    end;

  var

    p: TIntProc;

  begin

    p:=test;

    p(4);

  end.

This code may however crash on platforms that pass integers in registers and floating point values on the stack, because then the stack will be unbalanced. Note that this warning will not flagg all potentially dangerous situations. when test returns.

Error: Type parameters of specializations of generics cannot reference the currently specialized type

Recursive specializations of generics like Type MyType = specialize MyGeneric<MyType>; are not possible.

Error: Type parameters are not allowed on non-generic class/record/object procedure or function

Type parameters are only allowed for methods of generic classes, records or objects

Error: Generic declaration of ”arg1” differs from previous declaration

Generic declaration does not match the previous declaration

Error: Helper type expected

The compiler expected a class helper type.

Error: Record type expected

The compiler expected a record type.

Error: Derived class helper must extend a subclass of ”arg1” or the class itself

If a class helper inherits from another class helper the extended class must extend either the same class as the parent class helper or a subclass of it

Error: Derived record helper must extend ”arg1”

If a record helper inherits from another record helper it must extend the same record that the parent record helper extended.

    msm.ru

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

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

    В этом разделе можно создавать темы, которые относятся к поколению 32-битных компиляторов.
    Здесь решаются вопросы портирования кода из старого доброго Турбо Паскаля в FPC, TMT, VP, GPC компиляторы, а также особенностей программирования на них для Windows/Linux и других ОС.
    Указывайте тип компилятора, его версию, а также платформу (Windows/Linux/..) компиляции, другими словами, Target.


    • Библиотека MSDN MSDN Library Online | RSDN — RUSSIAN SOFTWARE DEVELOPER NETWORK
    • Free Pascal manuals [по-русски] | TMT Pascal Reference | VP Manuals

    >
    Вопросы новичка. Я раньеш писал на VB, сейчас перехожу на паскаль.
    , Возникает много вопроссов.., не предлагайте мне читать учебники по так

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

      


    Сообщ.
    #1

    ,
    29.08.07, 18:02

      Вопросы новичка. Я раньеш писал на VB, сейчас перехожу на паскаль.
      Возникает много вопросов.., не предлагайте мне читать учебники по таким вопросам, учебники у меня некоторые есть и сначала я гляну там, прежде чем задавать их.

      Встретился с простейшими проблемами, в VB не приходилось с ними сталкиваться. :wall:

      Начну с первого, дальше буду продолжать.

      Задача такова:
      нужно одно число разделить на другое

      Пытался я это в лазарусе сделать

      ExpandedWrap disabled

        unit deng;

        {$mode objfpc}{$H+}

        interface

        uses

          Classes,  SysUtils,  LResources,  Forms,  Controls,  Graphics,  Dialogs,  StdCtrls,  Buttons,  Menus, ActnList;

        . . . . . . . . .

        var

          MForm: TMForm;

          inf: Text;

          outf: Text;

          u, v, w : string;//ansistring;

          p, m: string;

          code1, code2: integer;

          uu, vv, ww: integer;

          pp, mm : integer;

          vr: integer;

        implementation

        { TMForm }

        . . . . . . . . .

        procedure TMForm.Button3Click(Sender: TObject);

        begin

            u := Edit1.text;

            w := Edit3.text;

            Val(u, uu, code1 );

            Val(w, ww, code2 );

            vv := uu / ww;

            Str(vv, v);

            Edit2.text := v;

        end;

        . . . . . . . . .

        initialization

          {$I deng.lrs}

        end.

      Происходит ошибка.
      Мотивипует он это так:

      deng.pas(111,14) Hint: use DIV instead to get an integer result
      deng.pas(111,18) Hint: Type size mismatch, possible loss of data / range check error
      deng.pas(111,14) Error: Incompatible types: got «Extended» expected «LongInt»
      deng.pas(189) Fatal: There were 1 errors compiling module, stopping

      DIV — не подходит, т. к. необходимо расчитать с сотыми (до сотых)

      Добавлено 29.08.07, 18:03

      Цитата simsergey @ 29.08.07, 18:02

      Мотивипует

      Я имел ввиду мативирует


      e-moe



      Сообщ.
      #2

      ,
      29.08.07, 18:15

        В результате деления получается дробное число. Используй переменную приемник вещественного типа: real, double, extended…
        и не забывай про деление на 0.

        Сообщение отредактировано: e-moe — 29.08.07, 18:16


        simsergey



        Сообщ.
        #3

        ,
        29.08.07, 19:36

          Програмка простенькая (пока ее пишу для себя)

          Сказать пользователю программы вот это нельзя

          Баланс: 200 рублей
          Кол-во дней: 30 дней
          В день: 6.666666666666667E+000 рублей

          Надо хотяб округлить до копеек… Например: 6.67 рублей
          :no:


          ZenIA



          Сообщ.
          #4

          ,
          30.08.07, 04:27

            Senior Member

            ****

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

            Говорили же — Паскаль сначала изучите ;)
            Str(X:Width:Decimals; var S:String)


            simsergey



            Сообщ.
            #5

            ,
            30.08.07, 09:00

              Цитата ZenIA @ 30.08.07, 04:27

              Str(X:Width:Decimals; var S:String)

              Приведи пример пожалуйста…


              e-moe



              Сообщ.
              #6

              ,
              30.08.07, 10:51

                Цитата simsergey @ 29.08.07, 18:02

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

                Добавлено 30.08.07, 10:51
                намек ясен?


                simsergey



                Сообщ.
                #7

                ,
                30.08.07, 12:30

                  Значит, так…

                  Цитата e-moe @ 30.08.07, 10:51

                  намек ясен?

                  Ясен… 8-) Не нашел я этого в учебниках.

                  Цитата ZenIA @ 30.08.07, 04:27

                  Str(X:Width:Decimals; var S:String)

                  Я догадался, о чем речь…
                  В моем случаи это наверно выглядит так

                  ExpandedWrap disabled

                        u := Edit1.text;

                        w := Edit3.text;

                        Val(u, uu, code1 );

                        Val(w, ww, code2 );

                        vv := uu / ww;

                        Str(vv:1:2, v);

                        Edit2.text := v;

                  Переменные vv, uu, ww — double.
                  Да, так все работает нормально…

                  Сообщение отредактировано: simsergey — 30.08.07, 12:31

                  Guru

                  volvo877



                  Сообщ.
                  #8

                  ,
                  30.08.07, 12:52

                    Moderator

                    *******

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

                    Цитата simsergey @ 30.08.07, 12:30

                    Не нашел я этого в учебниках.

                    Значит, читай другие учебники + Руководство по языку


                    simsergey



                    Сообщ.
                    #9

                    ,
                    30.08.07, 13:23

                      Цитата volvo877 @ 30.08.07, 12:52

                      Значит, читай другие учебники + Руководство по языку

                      Спасибо, гляну :)

                      А как выполнить действие при выходе из проги?

                      Добавлено 30.08.07, 13:28

                      Цитата volvo877 @ 30.08.07, 12:52

                      Чтобы получить ответ, нужно задать правильный вопрос. Но чтобы правильно задать вопрос, нужно знать большую часть ответа…

                      Но если знаешь ответ, зачем задавать вопросс? :)


                      ZenIA



                      Сообщ.
                      #10

                      ,
                      30.08.07, 13:38

                        Senior Member

                        ****

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

                        ???
                        Аварийно процедурой Halt, а корректно путем завершения главной процедуры (код между устанвками begin и end. — она в тексте стоит последняя) или выхода из нее командой Exit.

                        Перед этим при необходимости освободить динамическую память, контексты дисплея, уничтожить объекты Виндовс, прервать сеанс связи и т.д.

                        u := Edit1.text;
                        w := Edit3.text;
                        Val(u, uu, code1 );
                        Val(w, ww, code2 );
                        vv := uu / ww;
                        Str(vv:1:2, v);
                        Edit2.text := v;

                        А для рубликов циферок не маловато ли???

                        Ps. А хелпов у Вас что нету?

                        Сообщение отредактировано: ZenIA — 30.08.07, 13:51


                        simsergey



                        Сообщ.
                        #11

                        ,
                        30.08.07, 13:56

                          Цитата ZenIA @ 30.08.07, 13:38

                          А для рубликов циферок не маловато ли???

                          На самом деле я про гривни…

                          Цитата ZenIA @ 30.08.07, 13:38

                          у Вас

                          Пожалуйста, давайте перейдем на ТЫ, а то мне не по себе как-то…

                          Добавлено 30.08.07, 14:20

                          Цитата ZenIA @ 30.08.07, 13:38

                          Аварийно процедурой Halt, а корректно путем завершения главной процедуры (код между устанвками begin и end. — она в тексте стоит последняя) или выхода из нее командой Exit.

                          При нажатии на красный крестик (справо вверху) необходим выполнить пару действи, перед закрытием программы

                          Guru

                          volvo877



                          Сообщ.
                          #12

                          ,
                          30.08.07, 14:33

                            Moderator

                            *******

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

                            Лазарусом не пользуюсь, но по аналогии с Дельфи должно быть нечто вроде OnCloseQuery формы?


                            ZenIA



                            Сообщ.
                            #13

                            ,
                            31.08.07, 10:45

                              Senior Member

                              ****

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

                              Или, на пример, если не поддерживаются события, перехватив сообщение wm_close главного окна

                              ExpandedWrap disabled

                                type

                                  TForm1 = class(TForm)

                                  procedure wmClose(var I);message wm_close;{Обработчик сообщения wm_close}

                                  end;

                                  procedure TForm1.wmClose(var I);

                                  begin

                                {Щас чего-то натворю !!!!!}

                                  MessageBox(Handle,’Программа закрывается!’,’До свидания’,0);

                                  Close;

                                  end;

                                end.

                              Завершение программы зависит от объектной и операционной систем…
                              Ну поскольку, похоже, работаете с объектной системой Дельфи под Винду (говорил же, берите сразу Дельфу) — значит надо разрывать главный цикл программы ОДНИМ ИЗ ПРИВЕДЕННЫХ СПОСОБОВ:
                              1. Закрыть приложение Application.Terminate;
                              2. Разрушить главное окно DestroyWindow(Handle) или Close
                              3. Послать всем окнам сообщение wm_close путем вызова PostQuitMessage(0)

                              или, что менее принято, закрыв процесс функциями ExitProcess или TerminateProcess.

                              Цитата

                              Пожалуйста, давайте перейдем на ТЫ, а то мне не по себе как-то…

                              Обращайтесь ко мне как хотите, а у меня вежливая форма обращения — это профессиональная привычка.

                              Сообщение отредактировано: ZenIA — 01.09.07, 04:22


                              simsergey



                              Сообщ.
                              #14

                              ,
                              31.08.07, 15:23

                                Ладно, будем подумать…

                                Добавлено 31.08.07, 15:54

                                Цитата ZenIA @ 31.08.07, 10:45

                                MessageBox(Handle,’Программа закрывается!’,’До свидания’,0);

                                А как MessageBox будет в лазарусе…


                                simsergey



                                Сообщ.
                                #15

                                ,
                                31.08.07, 16:56

                                  Наверное, пока вопрос закрыт.
                                  Буду искать другой компилятор и учить другой язык.
                                  Спасибо за ВАШИ ответы… :(

                                  Добавлено 31.08.07, 16:58

                                  Цитата ZenIA @ 31.08.07, 10:45

                                  говорил же, берите сразу Дельфу

                                  Надо будет поискать! 8-)

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

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

                                  • Предыдущая тема
                                  • 32-битные компиляторы
                                  • Следующая тема

                                  Рейтинг@Mail.ru

                                  [ Script execution time: 0,0907 ]   [ 16 queries used ]   [ Generated: 9.02.23, 14:03 GMT ]  

                                  Понравилась статья? Поделить с друзьями:
                                • Error incompatible types got double expected longint
                                • Error incompatible types got constant string expected char
                                • Error incompatible types got boolean expected real
                                • Error incompatible types got boolean expected longint
                                • Error incompatible types got boolean expected int64