Error missing operator comma or semicolon

Имею простой пример взятый их Help'а:

Scazi

Пользователь
Сообщения: 4
Зарегистрирован: Чт ноя 10, 2005 11:24 am

Работа со скриптами

Имею простой пример взятый их Help’а:

syms rho f;

rho = sym(‘(1 + sqrt(5))/2’);

f = rho^2 — rho — 1;

f

Он работает тока в окне команд, почему он не работает в м-файле, в смысле что я хочу создать некий скрипт, выполняющий данный перечень команд. Матлаб вываливается с ошибкой: Error: Missing operator, comma, or semicolon.

Объясните плиз…


iglin

Эксперт
Сообщения: 1584
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Работа со скриптами

Сообщение iglin » Чт ноя 10, 2005 11:38 am

Не знаю — у меня это пример работает. Вот результат запуска скрипта:

f =

(1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2)

С.П.Иглин


Scazi

Пользователь
Сообщения: 4
Зарегистрирован: Чт ноя 10, 2005 11:24 am

Сообщение Scazi » Чт ноя 10, 2005 11:49 am

:? , в том то и дело, что это смахивает на бред, но вываливается с ошибкой и все тут, еще проще пример взял, то же самое, где какую галку не поставил???


klinkin

Пользователь
Сообщения: 39
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение klinkin » Чт ноя 10, 2005 12:54 pm

Scazi писал(а): :? , в том то и дело, что это смахивает на бред, но вываливается с ошибкой и все тут, еще проще пример взял, то же самое, где какую галку не поставил???

Так на что ругается?

Текст ошибки хотя бы напиши..


Scazi

Пользователь
Сообщения: 4
Зарегистрирован: Чт ноя 10, 2005 11:24 am

Сообщение Scazi » Чт ноя 10, 2005 2:13 pm

a=1;

for i=1:5

a=a*i;

end

a

Если пытаться запустить как скрипт, то пишет :

Error: Missing variable or function.

Если запускать в окне команд, то выполняется без ошибок


vitalij

Пользователь
Сообщения: 575
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Работа со скриптами

Сообщение vitalij » Чт ноя 10, 2005 2:19 pm

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

С уважением


Scazi

Пользователь
Сообщения: 4
Зарегистрирован: Чт ноя 10, 2005 11:24 am

Сообщение Scazi » Чт ноя 10, 2005 3:58 pm

трабла была из-за русского имени в названии файла и если аглицкими буквами, то незя чтоб начинался с цифр…

сцука подлая, весь день потерял…


klinkin

Пользователь
Сообщения: 39
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение klinkin » Чт ноя 10, 2005 4:00 pm

Scazi писал(а):трабла была из-за русского имени в названии файла и если аглицкими буквами, то незя чтоб начинался с цифр…
сцука подлая, весь день потерял…

))) бывает):):)


Antonio:)))

18 / 18 / 7

Регистрация: 21.01.2010

Сообщений: 58

1

25.04.2010, 12:10. Показов 54494. Ответов 7

Метки нет (Все метки)


Подскажите, почему происходит такая ошибка? [DCC Error] Unit1.pas(67): E2066 Missing operator or semicolon.
Вот код:

Delphi
1
2
NewName:='123.txt';
RenameFile(FName, NewName);// здесь ошибка, компилятор не пропускает

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



873 / 544 / 117

Регистрация: 24.11.2009

Сообщений: 1,329

25.04.2010, 12:13

2

Надо бы побольше кода



1



Antonio:)))

18 / 18 / 7

Регистрация: 21.01.2010

Сообщений: 58

25.04.2010, 12:18

 [ТС]

3

Вот весь код:

Delphi
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
var
  Form1: TForm1;
  F: TextFile;
  str, FName,NewName: string;
  priz:boolean;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.CreateFileClick(Sender: TObject);
begin
 FName:='Text1.txt';
 SaveDialog1.FileName:=FName;
 if SaveDialog1.Execute then FName:=SaveDialog1.FileName;
 
 end;
 
procedure TForm1.OpenReadFileClick(Sender: TObject);
 begin
  if (OpenDialog1.Execute) and (FileExists(OpenDialog1.FileName)) then FName:=OpenDialog1.FileName;
   AssignFile(F, FName);
   Reset(F);
   Memo1.Lines.Clear;
  while not Eof(F) do
   begin
    Readln(F, str);
    Memo1.Lines.Add(str) ;
   end;
  CloseFile(F);
 
 end;
 
procedure TForm1.RenameFileClick(Sender: TObject);
begin
 NewName:='123.txt';
 RenameFile(FName, NewName);
end;
 
procedure TForm1.ReWriteFileClick(Sender: TObject);
 begin
  AssignFile(F, FName);
  Append(F);
  Write(F, Memo1.Text);
  CloseFile(F);
 end;
 
procedure TForm1.WriteFileClick(Sender: TObject);
 begin
  AssignFile(F, FName);
  Rewrite(F);
  Write(F, Memo1.Text);
  CloseFile(F);
 end;
 
end.



0



13207 / 6595 / 1041

Регистрация: 10.01.2008

Сообщений: 15,069

25.04.2010, 12:22

4

Ищите, где не хватает ;

Добавлено через 2 минуты
Выглядит правильно.



2



ﻌﺹ ﺦ ﺖﻀ ﺹ ﻙ ﺵﻔ ﺊ ﺘﺝ

607 / 387 / 81

Регистрация: 15.12.2009

Сообщений: 753

25.04.2010, 13:42

5

Antonio)), выложи весь проект или весь код(то что выше VAR тоже выложи)



1



Antonio:)))

18 / 18 / 7

Регистрация: 21.01.2010

Сообщений: 58

25.04.2010, 13:48

 [ТС]

6

ok=)

Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    CreateFile: TButton;
    ReWriteFile: TButton;
    OpenReadFile: TButton;
    RenameFile: TButton;
    DeleteFile: TButton;
    WriteFile: TButton;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure CreateFileClick(Sender: TObject);
    procedure WriteFileClick(Sender: TObject);
    procedure ReWriteFileClick(Sender: TObject);
    procedure OpenReadFileClick(Sender: TObject);
    procedure RenameFileClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  F: TextFile;
  str, FName,NewName: string;
  priz:boolean;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.CreateFileClick(Sender: TObject);
begin
 FName:='Text1.txt';
 SaveDialog1.FileName:=FName;
 if SaveDialog1.Execute then FName:=SaveDialog1.FileName;
 
 end;
 
procedure TForm1.OpenReadFileClick(Sender: TObject);
 begin
  if (OpenDialog1.Execute) and (FileExists(OpenDialog1.FileName)) then FName:=OpenDialog1.FileName;
   AssignFile(F, FName);
   Reset(F);
   Memo1.Lines.Clear;
  while not Eof(F) do
   begin
    Readln(F, str);
    Memo1.Lines.Add(str) ;
   end;
  CloseFile(F);
 
 end;
 
procedure TForm1.RenameFileClick(Sender: TObject);
begin
 NewName:='123.txt';
 RenameFile(FName, NewName);
end;
 
procedure TForm1.ReWriteFileClick(Sender: TObject);
 begin
  AssignFile(F, FName);
  Append(F);
  Write(F, Memo1.Text);
  CloseFile(F);
 end;
 
procedure TForm1.WriteFileClick(Sender: TObject);
 begin
  AssignFile(F, FName);
  Rewrite(F);
  Write(F, Memo1.Text);
  CloseFile(F);
 end;
 
end.



0



13207 / 6595 / 1041

Регистрация: 10.01.2008

Сообщений: 15,069

25.04.2010, 14:17

7

Лучший ответ Сообщение было отмечено Joey как решение

Решение

У Вас кнопка RenameFile скрывает функцию RenameFile, которую Вы хотите вызвать. Переименуйте кнопку(-и все)

Добавлено через 38 секунд
Используйте префиксы: btnRenameFile, btnWriteFile



2



18 / 18 / 7

Регистрация: 21.01.2010

Сообщений: 58

25.04.2010, 14:28

 [ТС]

8

Помогло! Спасибо!



0



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

Несколько рекомендаций

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

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

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

Особенности среды Delphi

Наиболее распространённые ошибки в Delphi

Сообщение компилятора Смысл Комментарий
Missing operator or semicolon Пропущен оператор или точка с запятой Операторы должны быть обязательно разделены точкой с запятой
Operator not applicable to this operand type Оператор не применим к операндам такого типа Вызывается, например, выражением 0.2 mod 3 — оба операнда при mod должны быть целочисленными
Undeclared identifier Необъявленный идентификатор Попытка вызвать неопределённую функцию или обратиться к переменной, которая не описана в разделе var
Left side cannot be assigned to Невозможно присвоение Нет смысла в выражениях 2:=a или read(b+c)
Assignment to FOR-Loop variable Присвоение переменной цикла for Внутри цикла for нельзя изменять переменную цикла — нельзя писать что-то вроде for a:=1 to 4 do a:=b;

Пропустить Оглавление

Работа со скриптами

Форум, посвященный общим вопросам, связанным с MATLAB

Модератор: Admin

Scazi Пользователь Сообщения: 4 Зарегистрирован: Чт ноя 10, 2005 11:24 am

Работа со скриптами

Сообщение Scazi » Чт ноя 10, 2005 11:29 am

Имею простой пример взятый их Help’а:

syms rho f;
rho = sym(‘(1 + sqrt(5))/2’);
f = rho^2 – rho – 1;
f

Он работает тока в окне команд, почему он не работает в м-файле, в смысле что я хочу создать некий скрипт, выполняющий данный перечень команд. Матлаб вываливается с ошибкой: Error: Missing operator, comma, or semicolon.
Объясните плиз…

iglin Эксперт Сообщения: 1584 Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Работа со скриптами

Сообщение iglin » Чт ноя 10, 2005 11:38 am

Не знаю – у меня это пример работает. Вот результат запуска скрипта:
f =
(1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2)
С.П.Иглин

Scazi Пользователь Сообщения: 4 Зарегистрирован: Чт ноя 10, 2005 11:24 am

Сообщение Scazi » Чт ноя 10, 2005 11:49 am

:?

, в том то и дело, что это смахивает на бред, но вываливается с ошибкой и все тут, еще проще пример взял, то же самое, где какую галку не поставил???

klinkin Пользователь Сообщения: 39 Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение klinkin » Чт ноя 10, 2005 12:54 pm

Scazi писал(а)::? , в том то и дело, что это смахивает на бред, но вываливается с ошибкой и все тут, еще проще пример взял, то же самое, где какую галку не поставил???

Так на что ругается?

Текст ошибки хотя бы напиши..

Scazi Пользователь Сообщения: 4 Зарегистрирован: Чт ноя 10, 2005 11:24 am

Сообщение Scazi » Чт ноя 10, 2005 2:13 pm

a=1;
for i=1:5
a=a*i;
end
a

Если пытаться запустить как скрипт, то пишет :
Error: Missing variable or function.

Если запускать в окне команд, то выполняется без ошибок

vitalij Пользователь Сообщения: 575 Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Работа со скриптами

Сообщение vitalij » Чт ноя 10, 2005 2:19 pm

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

Scazi Пользователь Сообщения: 4 Зарегистрирован: Чт ноя 10, 2005 11:24 am

Сообщение Scazi » Чт ноя 10, 2005 3:58 pm

трабла была из-за русского имени в названии файла и если аглицкими буквами, то незя чтоб начинался с цифр…
сцука подлая, весь день потерял…

klinkin Пользователь Сообщения: 39 Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение klinkin » Чт ноя 10, 2005 4:00 pm

Scazi писал(а):трабла была из-за русского имени в названии файла и если аглицкими буквами, то незя чтоб начинался с цифр…
сцука подлая, весь день потерял…

))) бывает):):)

Присвоение указателя переменной

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Сообщение Sphinx » 27.09.2005 21:03:03

Может вопрос и глупый…но надеюсь на ответ

:)

Передаю из одной процедуры указатель на другую, примерно таким способом

Код: Выделить всёtype
 TSomeFunc = function(inValue: Double): HResult; stdcall;
 pSomeFunc = ^TSomeFunc;

callFunc(@MyCoolFunc);

procedure callFunc(pFunc: pSomeFunc);
var
 MyFunc: TSomeFunc;
begin
 @MyFunc = pFunc;
 if Assigned(MyFunc) then MyFunc;
…в Делфи и режиме фрипаскаля <span style=’color:blue’>{$MODE DELPHI}</span> компилируется без проблем, а вот в режиме <span style=’color:blue’>{$MODE OBJFPC}</span> отказывается.

Хотелось бы использовать не режим совместимости с делфи, а режим объектного паскаля…

Как правильно передать и вызвать функцию в этом режиме ???

Или я вообще все принципиально не правильно делаю ?

Sphinx  

Сообщение STAKANOV » 27.09.2005 21:06:20

Ругается на

callFunc(@MyCoolFunc)

?

Попробуй callFunc(pSomeFunc(@MyCoolFunc))

Аватара пользователя
STAKANOV энтузиаст   Сообщения: 1069Зарегистрирован: 14.05.2006 21:26:24Откуда: Зеленоград

  • Профиль
  • Сайт
  • ICQ

Сообщение Guest » 27.09.2005 21:07:15

STAKANOV
Нет, ругается на @MyFunc = pFunc; сорри что забыл сказать

Guest  

Сообщение Sphinx » 27.09.2005 21:08:48

Зарегиться чтоли

:)

Вот что конкретно говорит:

Error: Can’t assign values to an address

Sphinx  

Сообщение STAKANOV » 27.09.2005 21:09:53

Guest писал(а): STAKANOV
Нет, ругается на @MyFunc = pFunc; сорри что забыл сказать

замени на


MyFunc = pFunc^;
хотя я бы сделал

Код: Выделить всёprocedure callFunc(pFunc: pSomeFunc);
var
MyFunc: pSomeFunc;  {<<===== см. сюда}
begin
MyFunc = pFunc;
if Assigned(MyFunc) then MyFunc;
но все зависит от того, что там далбше ;)

Аватара пользователя
STAKANOV энтузиаст   Сообщения: 1069Зарегистрирован: 14.05.2006 21:26:24Откуда: Зеленоград

  • Профиль
  • Сайт
  • ICQ

Сообщение Sphinx » 27.09.2005 21:15:15

STAKANOV
Пробовал, компилится (и в Делфи и в фрипаскале), но при вызове функции приложение падает с AV (опять же и в Делфи и в фрипаскале)

Sphinx  

Сообщение STAKANOV » 27.09.2005 21:17:25

Sphinx писал(а): STAKANOV
Пробовал, компилится (и в Делфи и в фрипаскале), но при вызове функции приложение падает с AV (опять же и в Делфи и в фрипаскале)

Это наверняка из-за

if Assigned(MyFunc) then MyFunc;

я тут выше свон сообщение дополнял немного :rolleyes:

Аватара пользователя
STAKANOV энтузиаст   Сообщения: 1069Зарегистрирован: 14.05.2006 21:26:24Откуда: Зеленоград

  • Профиль
  • Сайт
  • ICQ

Сообщение Sphinx » 27.09.2005 21:30:08

Убрал if Assigned(MyFunc) then MyFunc;

остался просто вызов MyFunc(0.05);

на такое компиляторы ругнулись:

FPC 2.0.1:

Fatal: Syntax error, “)” expected but “(” found

Delphi7

Missing operator or semicolon

переделал на

MyFunc^(0.05);

скомпилировалось, при вызове – AV.

А дальше там ни чего нет.

Суть задачи – в dll находится код создания окна и основной цикл

Код: Выделить всёwhile (recRenderTargetWindow.WindowMessage.message <> WM_QUIT) doи пероидически управление возвращается из dll в приложение, для этого и передается ссылка на процедуру обратного вызова.

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

Предполагаю из-за того, что поразному передаются параметры, но для этого и указал явно, что процедура с параметром “stdcall”.

Sphinx  

Сообщение STAKANOV » 27.09.2005 21:54:05

переделал на

MyFunc^(0.05);скомпилировалось, при вызове – AV.

Если

MyFunc

по прежнему типа

TSomeFunc

, то так и должно быть. ты обращаешься к функции как к указателю, а это уже функции. Корректно

MyFunc(0.05)

.

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

эээ…. чего? ;)

на самом деле здесь вся тонкость в работе с указателями (сам путаюсь в них иногда)

ключ в @MyFunc = pFunc, такое можно только с {$MODE DELPHI}

покажи получившийся последний код, примерно так как это в первом сообщении

Аватара пользователя
STAKANOV энтузиаст   Сообщения: 1069Зарегистрирован: 14.05.2006 21:26:24Откуда: Зеленоград

  • Профиль
  • Сайт
  • ICQ

Сообщение Sphinx » 27.09.2005 22:04:12

STAKANOV

Переделал как написали в примере:

Вот компилируюшийся вариант (но вылетающий с ошибкой):

Код: Выделить всёtype
 TSomeFunc = function(inValue: Double): HResult; stdcall;
 pSomeFunc = ^TSomeFunc;

function MyCoolFunc(inValue: Double): HResult; stdcall;
begin
 Result := S_OK;
end;

callFunc(@MyCoolFunc);

procedure callFunc(pFunc: pSomeFunc);
var
 MyFunc: pSomeFunc;
begin
 MyFunc = pFunc;
 MyFunc^(0.05); // <- тут выскакивает AV

Sphinx новенький   Сообщения: 33Зарегистрирован: 27.09.2005 21:52:09

Сообщение Sphinx » 27.09.2005 22:08:58

ключ в @MyFunc = pFunc, такое можно только с {$MODE DELPHI}

Вот собственно и вопрос…почему именно <span style=’color:blue’>{$MODE DELPHI}</span>

На этом сайте в статьях написано следующее:

{$MODE DELPHI} от {$MODE OBJFPC} отличается весьма незначительно:

    * Во-первых, необязательно в секции implementation повторять заголовок процедуры или функции.

    * И, во-вторых, не разрешена перегрузка функций, процедур и операторов.

Поэтому и понять не могу…

Сперва FPC ругнулся что он не желает присваивать значение функции вида pSomeFunc функции function(inValue: Double): HResult; register; после чего я принудительно указал stdcall – прогресс, мне просто говорят не могу и всё тут

:)

Sphinx новенький   Сообщения: 33Зарегистрирован: 27.09.2005 21:52:09

Сообщение STAKANOV » 27.09.2005 22:10:13

Странно, но все правильно.

А callFunc и MyCoolFunc у тебя не в разных бинарниках? (просто ты что-то говорил про dll)

Аватара пользователя
STAKANOV энтузиаст   Сообщения: 1069Зарегистрирован: 14.05.2006 21:26:24Откуда: Зеленоград

  • Профиль
  • Сайт
  • ICQ

Сообщение STAKANOV » 27.09.2005 22:13:45

Sphinx писал(а):

ключ в @MyFunc = pFunc, такое можно только с {$MODE DELPHI}

Вот собственно и вопрос…почему именно <span style=’color:blue’>{$MODE DELPHI}</span>

не знаю, но факт :huh:

Аватара пользователя
STAKANOV энтузиаст   Сообщения: 1069Зарегистрирован: 14.05.2006 21:26:24Откуда: Зеленоград

  • Профиль
  • Сайт
  • ICQ

Сообщение Sphinx » 27.09.2005 22:14:58

STAKANOV
В разных !!!
конкретно MyCoolFunc в .exe, а callFunc в .dll

Sphinx новенький   Сообщения: 33Зарегистрирован: 27.09.2005 21:52:09

Сообщение STAKANOV » 27.09.2005 22:23:51

Sphinx писал(а): STAKANOV
В разных !!!
конкретно MyCoolFunc в .exe, а callFunc в .dll

подозриваю, что дело только в этом

B)

Аватара пользователя
STAKANOV энтузиаст   Сообщения: 1069Зарегистрирован: 14.05.2006 21:26:24Откуда: Зеленоград

  • Профиль
  • Сайт
  • ICQ

Вернуться в Free Pascal Compiler

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

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

понедельник, 10 марта 2014 г.

Ошибки в Delphi

Undeclared identifier – необъявленный идентификатор.
Unterminated string – незавершенная строка.
Incompatible types – несовместимые типы.
Missing operator or semicolon – отсутствует оператор или точка с запятой.
Could not create output file – невозможно создать exe-файл.

Автор:Юрий Мордовинна15:16

Ярлыки:Delphi

Комментариев нет:

Отправка комментария

Want to reply to this thread or ask your own question?

You’ll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.

( 1 оценка, среднее 5 из 5 )

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error missing keyring cannot use cephx for authentication
  • Error missing key prop for element in iterator
  • Error missing in texturedef u
  • Error missing from clause entry for table users
  • Error missing from clause entry for table rank

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии