Watch, Follow, &
Connect with Us

For forums, blogs and more please visit our
Developer Tools Community.


Welcome, Guest
Guest Settings
Help

Thread: C++Builder10.1 ユニットが見つからなかった場合の対応



Permlink Replies: 2 - Last Post: Oct 10, 2016 5:47 PM Last Post By: 朋則 北山
朋則 北山

Posts: 22
Registered: 8/14/15
C++Builder10.1 ユニットが見つからなかった場合の対応
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 7, 2016 4:06 AM
C++Builder6で作成されたアプリケーションのC++Builder10.1への移行作業を 行っています。

ユニットが見つからなかった場合の対応として、以下は正しいでしょうか。



[DCC 致命的エラー] QRImageCustom.pas(28): F2613 ユニット 'Graphics' が見つかりません。

上記のエラーについては、C++Builder6の以下ファイルをC++Builder10.1環境にコピーすることで、対応できました。
C:\Program Files\Borland\CBuilder6\Source\vcl\graphics.pas

この対応方法で問題ないものでしょうか。



同様にSysutilsユニットも使用していましたので、以下ファイルをC++Builder10.1環境にコピーしたのですが、
C:\Program Files\Borland\CBuilder6\Source\vcl\sysutils.pas 

こちらはSysUtils.pas 内で、以下のようなエラーが出ます。
[DCC エラー] sysutils.pas(3722): E2010 'PAnsiChar' と 'PWideChar' には互換性がありません
[DCC エラー] sysutils.pas(4236): E2250 指定された引数で呼び出すことのできるオーバーロード関数 'EnumResourceModules' が定義されていません
[DCC エラー] sysutils.pas(5122): E2015 この型には指定した演算子は使えません
[DCC エラー] sysutils.pas(6907): E2003 未定義の識別子 : '@VarToWStr'
[DCC エラー] sysutils.pas(7199): E2107 オペランドサイズの不一致
[DCC エラー] sysutils.pas(10190): E2003 未定義の識別子 : 'SAccessViolation'
[DCC エラー] sysutils.pas(11170): E2064 代入できない左辺値です
[DCC エラー] sysutils.pas(11290): E2010 'AnsiChar' と 'Char' には互換性がありません
[DCC エラー] sysutils.pas(13172): E2010 'PAnsiChar' と 'array[0..1023] of Char' には互換性がありません
[DCC 致命的エラー] classes.pas(29): F2063 'SysUtils.pas' ユニットはコンパイルできませんでした

こちらの対応方法としては、SysUtils.pasを修正して、エラーを潰していく
という手順が正しいのでしょうか。

Hikaru FUKUSHI

Posts: 65
Registered: 11/11/02
Re: C++Builder10.1 ユニットが見つからなかった場合の対応
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 7, 2016 7:17 AM   in response to: 朋則 北山 in response to: 朋則 北山
北山さん、こんばんは。福士です。

C++Builder6で作成されたアプリケーションのC++Builder10.1への移行作業を 行っています。

ユニットが見つからなかった場合の対応として、以下は正しいでしょうか。
(以下略)

どちらも極めて不適切です。まず『ユニットが見つからない』原因ですが、これは

Delphi XE2 および C++Builder XE2 の新機能 - RAD Studio XE2
http://docwiki.embarcadero.com/RADStudio/XE2/ja/Delphi_XE2_%E3%81%8A%E3%82%88%E3%81%B3_C%2B%2BBuilder_XE2_%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD

の『重要な新要件: VCL/FMX/RTL のユニット スコープ名』によるものです。Delphi/C++Builderの
ライブラリのユニットについて、XEおよびそれ以前では単にGraphics.pas(.hpp)というユニット名だった
ものが、Vcl.Graphics.pas(.hpp)というようにユニットスコープ名がプレフィックスとして付くようになりました。

ですので対応としては

ユニット名とユニット スコープ名の対応(アルファベット順一覧) - RAD Studio XE2
http://docwiki.embarcadero.com/RADStudio/XE2/ja/%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E5%90%8D%E3%81%A8%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88_%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97%E5%90%8D%E3%81%AE%E5%AF%BE%E5%BF%9C%EF%BC%88%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%99%E3%83%83%E3%83%88%E9%A0%86%E4%B8%80%E8%A6%A7%EF%BC%89

に従って、ライブラリのユニット名をユニットスコープ付きのものに書き換える、ということになります。
例えば
#include <SysUtils.hpp>
#include <Grapics.hpp>


#include <System.SysUtils.hpp>
#include <Vcl.Graphics.hpp>

のようにする、ということです。参考にしてください。

--
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:fukushi@tts-inc.co.jp
朋則 北山

Posts: 22
Registered: 8/14/15
Re: C++Builder10.1 ユニットが見つからなかった場合の対応
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 10, 2016 5:47 PM   in response to: 朋則 北山 in response to: 朋則 北山
ご指示通りに変更したところ、無事通りました。
いつもありがとうございます。
Legend
Helpful Answer (5 pts)
Correct Answer (10 pts)

Server Response from: ETNAJIVE02