C++ Builder XE4FireMonkey MAC OS Xでエラー「Runtime error 231 at 01C5D485」

早くも行き詰った。
同じFireMonkeyでもターゲットがWindowsなら動くが、Mac OS Xだとコンパイルは通っても「Runtime error 231 at 01C5D485」が出て起動しなくなった。
「01C5D485」の部分は固定ではなくソースを変更するとこの数値も変わる。
C++Builder XE4 Update1。Mac OS XはVMWare Playerで動かしている。
最初はエラーは出なかったが開発していくうちにエラーが出るようになった。
Embarcaderoの掲示板になぜかアクセスできないので情報が入らない。

後でデバッグして原因を突き止めた。

FireMonkeyはApplication->ExeNameが無いのでParamStr(0)を使ったが、Windowsでは正しく動いているのに対してMac OS XではNULLを返している。
Mac OS XでNULLをアクセスするとリリースでの実行で「Runtime error 231 at xxxx」のエラーで落ちる。デバッグでの実行でデバッガか何かしらないが「SIGSEGV(11)」(セグメンテーション違反)のエラーが出てデバッグ不能。
ParamStr(0)を使わないことでエラーは出なくなる。
代替になりそうなArgValues[0]も「Runtime error 0 at xxx」で落ちる。
コメントの情報から実際に動作確認したところ、GetModuleFileName(HMODULE hModule, char16_t *buf, int bufsize);のhModuleをNULLにすると、Application->ExeNameまたはParamStr(0)の代替になる。
ただし、ヘルプにはGetModuleFileNameは必ず成功するわけではないという警告がある。
データファイルを置くディレクトリを得るためならば、プログラムがあるディレクトリにデータを置くのではなくユーザーディレクトリをGetHomePathで求めてその下にデータに置く方法にしたほうがいいかも知れない。
WindowsもVista以降からあるUAEでProgram Filesなどの下にデータを書くと問題が起きるのでWindowsとの互換も兼ねることもできるし。
Mac OS XのパスはUTF-8のようなのでそこに注意する必要がある。