我收到一个错误:
[DCC错误] Unit_TProcessClass.pas(334):E2010不兼容类型:'TBitmap'和'tagBITMAP'
该类定义为
TMyClass = Class
private
MyBMP : TBitmap;
property aBMP : TBitmap read MyBMP write MyBMP;
Run Code Online (Sandbox Code Playgroud)
代码就像
processABitmap(aMyClass.aBMP) ; -> here is the compile error !!!
Run Code Online (Sandbox Code Playgroud)
Dav*_*nan 13
问题是TBitmapVCL中有两种类型的命名.一个在Windows单元中定义,一个在Graphics单元中定义.很明显,你正在Windows.TBitmap转向期望的功能Graphics.TBitmap,反之亦然.
你几乎肯定不想和任何事情有关Windows.TBitmap.因此,解决办法是确保所有的单位列出了Graphics单位后的Windowsuses子句中单元.这将具有隐藏的效果Windows.TBitmap.
我的通灵调试表明声明的单元在其子句中TMyClass根本没有列出,或者之前列出.GraphicsusesGraphicsWindows
最后,你会如何自己做这样的事情?好吧,尝试按CTRL +单击TBitmap引用的TMyClass.我相信他们会把你带到TBitmap宣告中Windows.这应该足以让你知道这不是你写作时的意思TBitmap.
And*_*and 12
问题是你将VCL位图类混淆Windows.TBitmap(也就是tagBitmap描述Windows API意义上的位图的记录)Graphics.TBitmap.
所以,你要么想要
var
b: Windows.TBitmap;
Run Code Online (Sandbox Code Playgroud)
或者(更有可能)
var
b: Graphics.TBitmap;
Run Code Online (Sandbox Code Playgroud)
如果省略该单位,则将使用最后引用的单位.例如,如果您的uses子句看起来像
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
Run Code Online (Sandbox Code Playgroud)
然后TBitmap意味着Graphics.TBitmap,这就是你通常想要的.
因此,您的问题的解决方案是您需要添加Graphics到某个uses子句,或者您需要确保在列表中Graphics列出之后 Windows.
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |