v16R4:オブジェクト記法で記述するとプリエンティブ実行できない?

メソッドをプリエンティブ実行可能に設定して、コンパイルしてみたのですが下記のようなエラーがでました。
オブジェクト記法している部分なのですが、この部分をコマンド(OB SET/OB GETなど)で置き換えてみるとエラーはなくなりました。
仕様でしょうか :frowning:
[]19713073;“Your comment here…”[/]

オブジェクト記法のコンパイルには,
プリプロセッサ方式が採用されています。

たとえば,

c:=a.b

のようなコードは

c:=_4D_OB_GET(a;“b”)

また

a.b:=c

のようなコードは

_4D_OB_SET(a;“b”;c)

に展開された上で,コンパイラーに渡されます。

コンパイラーのエラー画面に出ているのは,
オブジェクト記法が内部的に使用しているプリプロセッサ(マクロ)です。

このコマンドがスレッドセーフではない,という件ですが,
16R4では,オブジェクト記法が「プレビュー」扱いであり,
コンパイラーが開発途上であることが関係しています。

記録のために: ACI0097114

: Keisuke MIYAKO

オブジェクト記法のコンパイルには,
プリプロセッサ方式が採用されています。

たとえば,

c:=a.b

のようなコードは

c:=_4D_OB_GET(a;“b”)

また

a.b:=c

のようなコードは

_4D_OB_SET(a;“b”;c)

に展開された上で,コンパイラーに渡されます。

コンパイラーのエラー画面に出ているのは,
オブジェクト記法が内部的に使用しているプリプロセッサ(マクロ)です。

このコマンドがスレッドセーフではない,という件ですが,
16R4では,オブジェクト記法が「プレビュー」扱いであり,
コンパイラーが開発途上であることが関係しています。
今後のバージョンで対応されるということですね。了解いたしました。

ところで、プリプロセッサ方式ということですがこちらを公開してもらえないでしょうかね? :slight_smile:
予定などありましたらおしらせください。

プリプロセッサでいろいろやりたいことがあります。
例えば、文字列連結で文字列以外の変数のString変換とか、Begin/End textで囲った改行つき文字列を連結文字列コードに変換など
いろいろできそうですよね。

追加で、正規表現リテラルも導入してもらえるとありがたいです。
4Dの文字列エスケープシーケンスと正規表現のエスケープシーケンスがごっちゃになるので
できれば助かります。

こんなやつです。
C_TEXT($pattern_t)
$pattern_t:=/^(https?://.+)$/

http://forums.4d.fr/Post//19725668/1/

転記しました。

ありがとうございます。