- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将代码从 Delphi 7 迁移到图形模块之一的 XE2。
我们正在使用 TRect
变量,旧代码在 Delphi 7 中运行没有问题
前任:
Var
Beold : TRect
begin
Beold.left := Beold.right;
end.
最佳答案
您发布的代码在快速的 Delphi 测试应用程序中编译并运行良好,因此它不是您的真实代码。
我怀疑您遇到的是 with
中的更改。但是,当它与使用属性有关时声明。以前版本的 Delphi 中存在一个存在多年的错误,最近终于修复了。 IIRC,它首先在 D2010 的 README.HTML 文件中的注释中提到。它已被添加到 XE2 的文档中(不是作为行为更改,而是记录了新行为)。文档位于 here at the docwiki .
(附加信息:它一定是在 2010 年发生了变化;Marco Cantù 的 Delphi 2010 Handbook
在第 111 页上将其提及为“The With Statement Now Preserves Read-Only Properties”,描述了这种行为和我在下面指出的解决方案。)
而不是直接使用 with
访问类的属性声明,您现在需要声明一个局部变量,并直接读写整个内容(为清楚起见省略了错误处理 - 是的,我知道应该有一个 try..finally block 来释放位图)。
var
R: TRect;
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
Bmp.Width := 100;
Bmp.Height := 100;
R := Bmp.Canvas.ClipRect;
{ This block will not compile, with the `Left side cannot be assigned to` error
with Bmp.Canvas.ClipRect do
begin
Left := 100;
Right := 100;
end;
}
// The next block compiles fine, because of the local variable being used instead
R := Bmp.Canvas.ClipRect;
with R do
begin
Left := 100;
Right := 100;
end;
Bmp.Canvas.ClipRect := R;
// Do other stuff with bitmap, and free it when you're done.
end.
关于delphi - 为什么升级 Delphi 后 TRect 得到 "left side cannot be assigned to"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12352563/
我希望我在某种程度上感到困惑。我遇到一些与 TRect.Intersect 和 TRect.IntersectsWith 不一致的行为。这是一些演示该问题的代码。 program RectCheck;
我正在尝试简单的事情。但我不能 :( 我有一个 TImage,它的名称是概述。 我想绘制一个位于概览但独立于概览的矩形。所以我在概述的前面添加了一个 TImage 并绘制了一个矩形。矩形有效,但我只能
我正在将代码从 Delphi 7 迁移到图形模块之一的 XE2。 我们正在使用 TRect变量,旧代码在 Delphi 7 中运行没有问题 前任: Var Beold : TRect begin
我正在阅读 3-d 方 Delphi 源代码并卡在一行中,其中 Rect 用另一个 Rect 的坐标初始化,但交换了,如下所示: r, rsrc: TRect; ... r := Rect(rsrc.
我是一名优秀的程序员,十分优秀!