FPC LUA

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

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

Re: FPC LUA

Сообщение Снег Север » 06.11.2016 08:47:54

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

Паскальскрипт - это подмножество языка паскаль. Он не обязан полностью совпадать с текущими версиями делфи или FPC.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: FPC LUA

Сообщение скалогрыз » 06.11.2016 10:00:01

Снег Север писал(а):В делфи включается и отключается в параметрах проекта

я не могу себе такого представить.

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

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

И использовать оба вида модулей в одном проекте не получится, а это непрактично.
По-этому если и есть такая настройка, то она должна иметь эквивалент (в виде ключа компиляции) для отдельно взятых модулей.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: FPC LUA

Сообщение runewalsh » 06.11.2016 16:54:27

Код: Выделить всё
{$B+} — complete boolean eval
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: FPC LUA

Сообщение Снег Север » 06.11.2016 21:43:35

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

runewalsh писал(а):
Код: Выделить всё
{$B+} — complete boolean eval

Да, на уровне модуля можно включать и отключать этой директивой.
Просто в делфи можно это сделать на уровне всего проекта, а в лазарусе, похоже, нет.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: FPC LUA

Сообщение скалогрыз » 06.11.2016 22:01:24

runewalsh писал(а):{$B+} — complete boolean eval

Красота же!
теперь
Код: Выделить всё
Program test;
{$BOOLEVAL ON}
{$RANGECHECKS ON}
{$LONGSTRINGS ON}
var
   s: string;
   i: integer;
begin
s:='123456789';
i:=1;
while (i<=length(s)) and (s[i]<>' ') do inc(i);
// writeln(IntToStr(i));
writeln(i);
end.

вылетает с run-time ошибкой! .

А теперь внимание!
Код: Выделить всё
  c := TPSPascalCompiler.Create;

    c.BooleanShortCircuit:=true;

    c.Compile(src).

и PascalScript работает как надо - приведённый ранее пример не вылетает с ошибкой, а возвращает "10"!
Война настроек по-умолчанию! (X хуже чем Y, потому что настройки по-умолчанию в X не такие как у Y)
всё таки PascalScript крут :mrgreen:
Последний раз редактировалось скалогрыз 06.11.2016 23:47:01, всего редактировалось 3 раз(а).
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: FPC LUA

Сообщение runewalsh » 06.11.2016 22:17:40

Это локальный свич, можно хоть для отдельных выражений, как и {$rangechecks} {$overflowchecks}. Я иногда заворачиваю в
Код: Выделить всё
{$define unchecked := {$push} {$rangechecks off} {$overflowchecks off} {$define end_unchecked := {$pop} {$undef end_unchecked}}}

Код: Выделить всё
function Hash(const s: string): cardinal;
var
  i: integer;
begin
  result := 0;
  for i := 1 to length(s) do
    unchecked result := result * 101 + ord(s[i]); end_unchecked
end;
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: FPC LUA

Сообщение скалогрыз » 06.11.2016 22:36:34

ну вот, теперь ещё и макросы.
Код же стал... странным.

почему бы не?:
Код: Выделить всё
unchecked
function Hash(const s: string): cardinal;
var
  i: integer;
begin
  result := 0;
  for i := 1 to length(s) do
    result := result * 101 + ord(s[i]);
end;
end_unchecked
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: FPC LUA

Сообщение runewalsh » 06.11.2016 23:07:22

Да, сначала так и было хд, я чтоб подчеркнуть локальность относительно отдельных выражений.
Ну и для части кода проверки всё же могут понадобиться. Если ты захочешь брать не все символы подряд, будет разумно не выключать проверку для вычисляемого номера символа.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: FPC LUA

Сообщение CynicRus » 10.11.2016 00:42:01

Раз уж зашла речь о скриптовых языках для FPC, рекоммендую обратить внимание на Lape. Интерпретатор паскалеподобных скриптов, на мой взгляд повеселее PascalScript, и главное - умеет указатели. В отличие от того же PS.
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Re: FPC LUA

Сообщение zub » 10.11.2016 00:44:22

CynicRus
object`ы умеет?

Добавлено спустя 3 минуты 37 секунд:
Нет, не умеет((
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: FPC LUA

Сообщение CynicRus » 10.11.2016 00:51:50

zub писал(а):CynicRus
object`ы умеет?


Не совсем обжекты. Умеет типа классы через Record'ы. Например вот так:
Код: Выделить всё
type
  PTest = ^TTest;
  TTest = record
    __object: Integer;
    __parent: PTest;
  end;

procedure TTest.create(obj: Integer; parent : PTest);
begin
  self.__object := obj;
  self.__parent := parent;
end;

function TTest.test: Integer;
begin
  writeln(self.__parent^);
  result := self.__parent^.__object;
end;

var
  test: TTest;
  parent : TTest;

begin
  parent.create(50, nil);
  test.create(100, @parent);
  writeln(test);
  writeLn(test.__parent^);
end.

В результате будет:
Код: Выделить всё
Compiled successfully in 703 ms.
{__OBJECT = 100, __PARENT = "parent"::0x96B9AD0 ({__OBJECT = 50, __PARENT = nil})}
{__OBJECT = 50, __PARENT = nil}
Successfully executed.


Туда спокойно экспортируются классы, он вообще адски гибок в этом плане. Ах, да - если экспортировать туда класс, потом из скрипта его можно наследовать:)
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Re: FPC LUA

Сообщение Alex2013 » 28.11.2016 15:42:53

"За что погибли мухи..." :roll:
А почему бы просто не соединить DLL + EXE (или в ресурсы спрятать ) ?
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Пред.

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

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

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

Рейтинг@Mail.ru