OberonCore
https://forum.oberoncore.ru/

коммандер - incompatible parameter list - что я нетак делаю?
https://forum.oberoncore.ru/viewtopic.php?f=1&t=2201
Страница 1 из 1

Автор:  Виталий [ Понедельник, 14 Декабрь, 2009 11:26 ]
Заголовок сообщения:  коммандер - incompatible parameter list - что я нетак делаю?

Всем доброго, пишу профайлер для форматирования кода (ну чтоб программа все ключевые слова жирным шрифтом писала, большими буквами, а комментарии курсивом и т.д.)
Столкнулся с небольшой проблемкой
Есть в модуле главная процедура
Код:
PROCEDURE Do*(IN Путь:ARRAY OF CHAR);

И на коммандер посажена команда
Код:
Профайлер.Do("C:\Documents and Settings\5097\Рабочий стол\GAME.PAS");

Так вот компилятор выдает при клике по коммандеру сообщение в Log:
Цитата:
Профайлер unloaded
command error: incompatible parameter list in Профайлер.Do

Что это означает, и как правильно вызывать такие процедуры?

Автор:  Valery Solovey [ Понедельник, 14 Декабрь, 2009 11:48 ]
Заголовок сообщения:  Re: incompatible parameter list - что я нетак делаю?

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

Где-то на форуме давалась ссылка на полный перечень принимаемых параметров. Нужно поискать.

P.S. Попробуйте для начала изменить кавычки.

Автор:  Евгений Темиргалеев [ Понедельник, 14 Декабрь, 2009 11:49 ]
Заголовок сообщения:  Re: incompatible parameter list - что я нетак делаю?

Valery Solovey писал(а):
P.S. Попробуйте для начала изменить кавычки.

^Q "Профайлер.Do('C:\Documents and Settings\5097\Рабочий стол\GAME.PAS')"

Примеры можно найти в описании меню Info->Menus

Автор:  Виталий [ Понедельник, 14 Декабрь, 2009 15:13 ]
Заголовок сообщения:  Re: коммандер - incompatible parameter list - что я нетак делаю?

Спасибо. Поставил так - прошло, но...

"Профайлер.Do('c:\temp\game.txt')"

Вот так вот пытаюсь открыть:
Код:
PROCEDURE Do*(AFileName:ARRAY OF CHAR);
VAR c:CHAR;i:INTEGER;
BEGIN
  StdLog.Clear;
 TabCount:=0;
 IF ~connect(AFileName) THEN
  StdLog.String("Неудача");
  RETURN;
 END;
...

Код:
(*Открывает файл и готовит к работе*)
PROCEDURE connect(a:ARRAY OF CHAR):BOOLEAN;
VAR ask:BOOLEAN; 
  loc:Files.Locator;
  FileName:Files.Name;  conv:Converters.Converter;
BEGIN
 conv:=NIL;
 IF a='' THEN
  loc:=NIL;
  obj.v:=Views.Old(TRUE,loc,FileName,conv);
 ELSE
  loc:=Files.dir.This(a$);
  FileName:=a$;
  obj.v:=Views.Old(FALSE,loc,FileName,conv);
 END;

 IF (obj.v#NIL)&(obj.v IS TextViews.View) THEN
  obj.m:=obj.v(TextViews.View).ThisModel();
  scan.ConnectTo(obj.m);
  scan.type:=TextMappers.string;
  RETURN TRUE;
 ELSE
  IF loc.res#0 THEN
   StdLog.String("Неверный локатор");StdLog.Tab;
   StdLog.Int(loc.res);StdLog.Ln; END;
  RETURN FALSE;
 END;
END connect;


В результате нарываюсь на
Цитата:
Неверный локатор 1

Тот самый который invalid parameter (name or locator)
В TRAP заглянул там .path HostFiles.FullName "c:\temp\game.txt"
т.е. вроде бы имя файла верно.

Или я чего-то неувидел?
Что я не так делаю?

Автор:  Valery Solovey [ Понедельник, 14 Декабрь, 2009 17:07 ]
Заголовок сообщения:  Re: коммандер - incompatible parameter list - что я нетак делаю?

locator - это директория, а name - это имя файла внутри директории.

Автор:  Евгений Темиргалеев [ Понедельник, 14 Декабрь, 2009 17:11 ]
Заголовок сообщения:  Re: коммандер - incompatible parameter list - что я нетак делаю?

Код:
  loc:=Files.dir.This(a$);
  FileName:=a$;
  obj.v:=Views.Old(FALSE,loc,FileName,conv);
и получается что Вы открываете файл "c:\temp\game.txt" из директории "c:\temp\game.txt"

Автор:  Виталий [ Понедельник, 14 Декабрь, 2009 17:11 ]
Заголовок сообщения:  Re: коммандер - incompatible parameter list - что я нетак делаю?

А-а-а-а....
Вот елки... Действительно.
Надо бы еще пару шишок таких получить чтоб запомнить.
Спасибо :wink:

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/