Delphi7からDelphi10.3へ移行しております。Win10です。
Delphi7で作成したプロジェクトをDelphi10.3で開き、リソースDLLウィザードを実行しました。処理は完了し、JPNフォルダも作成されトランスレーションエディタで翻訳もできます。
ところが、すべてのプロジェクトをビルドを実行するとエラーが発生します。メッセージには「CGRCコマンドライン:」「失敗」と表示されます。
Delphi10.3で適当に新規にプロジェクトを作成すると、リソースが作成されて翻訳されたプロジェクトが起動できます。
何かご存じであれば、アドバイス願います。
補足です。
Delphi10.3では、「プロジェクトフォルダ/Win32/Debug」フォルダにexeファイルが作成されていますが、Delphi7からの移行なのでプロジェクトフォルダの直下にexeファイルが作成されます。
これが原因かとおもい、ツールオプション>言語>Delphiオプション>ライブラリでフォルダを指定しましたが、指定されたフォルダにexeファイルが作成されません。
dof、cfgファイルを削除してもうまくいきません。
これだけの情報だとなんともいえないのですが、自分ならこうするということで…
Delphi 7のプロジェクトを10.3.x用にコピーし、その上でIDEで新規プロジェクトを作成し、デフォルトで作成されるフォーム(Unit1)を削除して
そこにユニットを全部追加し、プロジェクトに名前を付けて保存で元のプロジェクト名で保存。これでまず全部コンパイルが通るようにする。
次にリソースDLLウイザードでローカライズリソースを作成(JPNの下とJPN\Debugの下にいろいろできる)。
もしDelphi 7のローカライズデータを生かしたいなら一旦プロジェクトを閉じて、JPNの下の*.dfmとdfnと、JPN\Win32\Debugの下の*.rcと*.rcnを
Delphi 7のもので上書き。ローカライズデータを作り直しならこれは不要で、普通にトランスレーションエディタで作業。
なおどこかのバージョンからローカライズリソースのうちresourcestringがビルド別(Debug/Release)に扱われるようになってしまっているので、
通常はDebugビルドで作業しておいて、Releaseビルドするときはビルドを切り替えてもう一度リソースDLLウイザードを実行し、
そのあとでJPN\Win32\Debugの内容をJPN\Win32\Releaseにコピーし、それからプロジェクトを全ビルド、としています。
参考にしてください。
HFUKUSHI様アドバイスありがとうございます。
ご指示いただきましたようにDelphi10.3で新規にプロジェクト作成し、既存ユニットをコピーしました。リソース用のJPNフォルダも作成できましたし、exe用のWin32フォルダも作成できましたが、同じようにビルドに失敗します。(「CGRCコマンドライン:」「失敗」)
メッセージを展開すると以下のように表示されます。
==========
CGRC コマンド ライン:
CGRC.exe
"D:\DelphiWork\***\***\JPN\Win32\Debug\****_DRC.rc"
-I..
失敗
==========
もちろん上述のファイルは存在しています。
今現在は、Delphi7でローカライズしたリソースは使用しておりません。後々は使用したいと思います。
このエラーメッセージはメッセージタブのコンパイルタブに表示されているはずですが、CGRC出力タブにはなにが出ていますか?
正常な場合は
> CodeGear Resource Compiler/Binder
> Version 1.2.2 Copyright (c) 2008-2012 Embarcadero Technologies Inc.
>
> Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
>
> Copyright (C) Microsoft Corporation. All rights reserved.
となると思うんですが(このあたりはエラーが非常にわかりにくいんですよね)。
エラーメッセージは、CGRC出力タブに出力されていたのですか!?(気づきませんでした)
エラーメッセージは以下です。
D:\DelphiWork\***\***\JPN\Win32\Debug\****_DRC.rc(1065) : error RC2104 : undefined keyword or key name: UDP
****_DRC.rc(1065) の定義は、
IdResourceStringsCore_RSSocksUDPNotSupported, L"UDP *************
です。Indy関係のエラーでしょうか?
で、解決しました。
この定義の一つ上に
SystemParam_FOLDER_SEPARATOR, L"¥""
がありました。
resourcestringで
FOLDER_SEPARATOR = '¥';
を定義しています。これをconstに変更したところリソースDLLが作成できました。
resourcestringで”¥”定義できないということですかね。
エラー情報が確認できたので、解決の糸口が見つかりました。HFUKUSHI様アドバイスありがとうございました。
これからもよろしくお願いします。