FreePascal(FPC)には、Delphi互換モードがあるので便利。
拙作の、テキスト音楽「サクラ」は、Delphi7に加えて、FPCでもコンパイルできるようになっている。
それで、日本語プログラミング言語「なでしこv1」もFPCでコンパイルできるようにしようと思っているのだが、なかなか難しい。
試している中で分かったことを以下にメモする。
コンパイルコマンド
以下のように、-Mdelphiを指定して、fpcコマンドを実行する。すると、Delphi互換モードになる。
$ fpc -Mdelphi -g -gv -dFPC -vewh ファイル名.dpr
SysUtils.LeadBytes問題
SJISの1文字目をSysUtils.LeadBytesで判定したのだが、これがうまく設定されない。そのため、以下のようなSJISLeadBytesを定義して、SJISの1文字目を判定する。そもそも、SJIS使わないようにすれば良いのだが、Delphi7で書いた多くのプログラムはSJISである。
sjis.pas
type
TChars = set of AnsiChar;
const SJISLeadBytes: TChars = [#$81..#$9F,#$E0..#$FC];
2024/03/09 --- 上記値が間違っていたので修正。
ZeroMemory がないので FillByte を使う
パラメータが若干違うけど、単純に置換可能。
ただし、第一引数には、ポインタではなく、ポインタが指す値を指定する必要があり、利用には注意。