-
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.
__________________
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 |
|||
Вот весь код:
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
1 |
Antonio:))) 18 / 18 / 7 Регистрация: 21.01.2010 Сообщений: 58 |
||||
25.04.2010, 13:48 [ТС] |
6 |
|||
ok=)
0 |
13207 / 6595 / 1041 Регистрация: 10.01.2008 Сообщений: 15,069 |
|
25.04.2010, 14:17 |
7 |
РешениеУ Вас кнопка RenameFile скрывает функцию RenameFile, которую Вы хотите вызвать. Переименуйте кнопку(-и все) Добавлено через 38 секунд
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 )