旧バージョンのプロジェクトのリソースDLL作成

解決


ナカシン  2020-04-06 16:45:04  No: 148699

Delphi7からDelphi10.3へ移行しております。Win10です。
Delphi7で作成したプロジェクトをDelphi10.3で開き、リソースDLLウィザードを実行しました。処理は完了し、JPNフォルダも作成されトランスレーションエディタで翻訳もできます。
ところが、すべてのプロジェクトをビルドを実行するとエラーが発生します。メッセージには「CGRCコマンドライン:」「失敗」と表示されます。

Delphi10.3で適当に新規にプロジェクトを作成すると、リソースが作成されて翻訳されたプロジェクトが起動できます。

何かご存じであれば、アドバイス願います。


ナカシン  2020-04-06 16:46:50  No: 148700

補足です。

Delphi10.3では、「プロジェクトフォルダ/Win32/Debug」フォルダにexeファイルが作成されていますが、Delphi7からの移行なのでプロジェクトフォルダの直下にexeファイルが作成されます。
これが原因かとおもい、ツールオプション>言語>Delphiオプション>ライブラリでフォルダを指定しましたが、指定されたフォルダにexeファイルが作成されません。
dof、cfgファイルを削除してもうまくいきません。


HFUKUSHI  2020-04-06 19:45:49  No: 148701

これだけの情報だとなんともいえないのですが、自分ならこうするということで…

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にコピーし、それからプロジェクトを全ビルド、としています。

参考にしてください。


ナカシン  2020-04-07 10:48:20  No: 148702

HFUKUSHI様アドバイスありがとうございます。
ご指示いただきましたようにDelphi10.3で新規にプロジェクト作成し、既存ユニットをコピーしました。リソース用のJPNフォルダも作成できましたし、exe用のWin32フォルダも作成できましたが、同じようにビルドに失敗します。(「CGRCコマンドライン:」「失敗」)
メッセージを展開すると以下のように表示されます。
==========
  CGRC コマンド ライン:
    CGRC.exe
    "D:\DelphiWork\***\***\JPN\Win32\Debug\****_DRC.rc"
    -I..
  失敗
==========
もちろん上述のファイルは存在しています。
今現在は、Delphi7でローカライズしたリソースは使用しておりません。後々は使用したいと思います。


HFUKUSHI  2020-04-07 13:18:48  No: 148704

このエラーメッセージはメッセージタブのコンパイルタブに表示されているはずですが、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.
となると思うんですが(このあたりはエラーが非常にわかりにくいんですよね)。


ナカシン  2020-04-07 14:39:55  No: 148705

エラーメッセージは、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様アドバイスありがとうございました。
これからもよろしくお願いします。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加