Delphi:设置 TByteDynArray 长度的问题

2024-04-26

问题已结束(答案已接受)替换为Delphi 7:访问冲突 - TByteDynArray 问题 https://stackoverflow.com/questions/3157732/delphi-7-access-violation-tbytedynarray-problem)


我收到以下声明

MyPhoto = class(TRemotable)
private
  FhasPhoto: Boolean;
  FphotoData: TByteDynArray;
published
  property hasPhoto: Boolean read FhasPhoto write FhasPhoto;
  property photoData: TByteDynArray read FphotoData write FphotoData;
end;

我想要

var photo : MyPhoto;
photo := MyPhoto.Create();
SetLength(photo.photoData, 4);

但我得到

[Error] mainForm.pas(340): Constant object cannot be passed as var parameter

1)鉴于我无法更改类 Photo 的定义,如何正确编码?
2)我可以通过分配任何结构来有效地将其“转换”为 TByteDynArray 吗?

(正如您可能已经猜到的,我是一名 BCB 人,试图进入 Ddlphi :-)


p.s 我会满足于能够单独分配照片数据的每个字节......


这是Delphi 属性实现中的一个缺陷。即使该属性可以读取和写入,即使读取和写入都指向基础对象中的同一字段,您也无法将属性传递给var参数,例如 SetLength。这没有什么充分的理由,但至少目前是这样的。

不过,这个问题有一个相当简单的解决方法。您需要对象上的一个方法,该方法采用整数并在内部设置 FPhotoData 的长度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi:设置 TByteDynArray 长度的问题 的相关文章

随机推荐

  • 如何在 WPF 和 ASP.NET MVC 应用程序之间共享最多的代码?

    我可以使用什么架构和模式在 WPF 和 ASP NET MVC 应用程序之间共享最多的模型和逻辑代码 我试图在这里实现更多目标 而不仅仅是将我的数据实体与两个演示项目分开 还有很多共同点 例如关于在什么条件下显示什么 何时需要某些内容等的
  • 如何使用 XSL 在 Mozilla 中显示。

    我怎样才能显示 nbsp 在 Mozilla 中使用 XSL 我尝试过 CDATA 但没有成功 我使用的是火狐浏览器3 5 5 因为您无法将 HTML 字符实体直接放入 XSLT 源中 除了 lt gt apos quot and amp
  • Android 浏览器报告屏幕尺寸错误?

    我正在开发一个移动网站 我遇到了一个有趣的问题 我正在我的台式机以及我的 Motorola Droid Android 2 2 上进行测试 我设置了媒体查询来加载 3 个不同的样式表 320 像素宽 480 像素宽和 640 像素宽 我注意
  • 使用会话 ID 将消息添加到 IAsyncCollector 主题输出

    目前是否可以将消息推送到 Azure 函数的 IAsyncCollector 主题输出并设置会话 ID 我的主题实际上是关于 FIFO 排序的 所以我们必须设置会话 因此 我们设想只设置一个 Guid 作为唯一的会话 ID 我知道如何通过此
  • 显示MJPEG流的跨浏览器解决方案

    有没有一种轻量级 免费且可靠的方式在跨浏览器环境中显示 MJPEG 我正在尝试显示来自轴2120 http www axis com techsup cam servers cam 2120 index htm我正在开发的网站上有 IP 摄
  • 如何在 Guice 中定义方法拦截器的顺序?

    有时需要知道 Guice 中拦截方法调用的方法拦截器的顺序 一个简单的示例场景是使用 guice persist 提供的 Transactional 方法拦截器和自定义 Retry 方法拦截器 重试拦截器必须在事务拦截器外部运行 以确保重试
  • 操作 Symfony Intl 提供的国家列表和表单选择类型

    抛开政治不谈 我需要提供Kosovo作为选择国家时的形式选择 使用 Symfony 的内置表单选择类型执行此操作的最优雅的方法是什么country 同时还提供翻译Kosovo name 这是我到目前为止所做的事情 它有效 但我担心这可能有点
  • JPA 2 - 外键仅包含复合主键中的一个字段?

    我在 JPA 2 Hibernate 中获取复合主键和外键时遇到问题 我正在尝试创建一个包含国家和省份的简单场景 国家实体 Entity Table name country public class Country extends Dom
  • 版本变更jquery错误

    大家好 我使用 asp 构建了一个 Web 应用程序 其中包含一点来自 bootstap 的 jquery boorstrap dropdown js 对于其他一些比我开发的项目版本更低的项目 我将版本从4更改为3 5 现在我收到错误 Mi
  • 错误:无法计算表达式,因为代码已优化

    我的 asp net 应用程序中出现错误 内容如下 无法计算表达式 因为代码已优化或本机框架位于调用堆栈的顶部 protected void btnCustomerProfile Click object sender EventArgs
  • “: ${foo=value}”中冒号运算符的解释

    我理解 bash 中的冒号运算符的作用类似于a null http devmanual gentoo org tools reference bash index html multiple selection 我知道它用在参数扩展 htt
  • Android (ActionBarSherlock) 有什么方法可以在纵向和横向上保持相同的 ActionBar 高度吗?

    最近几天我一直在使用 ActionBar 和 ActionBarSherlock 在 ActionBar 中填写一些信息时遇到一些问题 当应用程序以纵向模式运行时 ActionBar看起来不错 并且可以显示所有数据 例如 但是当我将应用程序
  • 获取 Android 音乐播放器的专辑封面

    我想知道如何在音乐播放器中返回专辑封面的图像的代码 函数 你能解释一下我应该传递哪些参数吗 我可以将文件路径传递给该函数 imported required libraries public class SongsManager SDCar
  • 未定义拖放区

    我对 JavaScript 还很陌生 这让我发疯 我想使用 Dropzone js 因此我从以下位置下载了文件 dropzone jshere https raw githubusercontent com enyo dropzone ma
  • 使用图像的java自定义形状框架[重复]

    这个问题在这里已经有答案了 我喜欢创建一个像这个图像一样的java jframe 我已经用不同的形状 如三角形 圆形 多边形和一些疯狂的形状 创建了jframe 但是问题是太难 99 不可能 创建像这个图像的形状 所以我怎样才能制作一个像这
  • 在我的 flutter 应用程序中单击容器时更改容器的颜色

    我通过 API 获取了一些兴趣 数据 并向他们展示了使用未来的构建器作为容器 我想在单击容器时更改容器的背景颜色 这是我所做的 当我单击一个容器时 它会更改所有容器的背景颜色 我在容器的颜色中添加了一个 if 条件来检查它是否被单击 颜色
  • 表达式类型不明确,没有更多上下文 swift 4.0

    我正在实施pod Socket IO Client Swift but in SocketEngine swift文件我收到此错误 private func handleBase64 message String binary in bas
  • Proguard 混淆不起作用

    我试图混淆我的包名称 包括我使用的库之一 我在我的 gradle 文件中使用这个构建配置 buildTypes debug versionNameSuffix Development debuggable true runProguard
  • 使用 openGL、SOIL 加载图像

    我尝试了很多使用 SOIL 在 openGL 中加载和显示图像的示例 运行下面的源代码时 它仅显示一个没有图像的白色四边形 我尝试打开一个名为 foto 的图像 我将图像文件放在程序的文件夹中 bool keyStates new bool
  • Delphi:设置 TByteDynArray 长度的问题

    问题已结束 答案已接受 替换为Delphi 7 访问冲突 TByteDynArray 问题 https stackoverflow com questions 3157732 delphi 7 access violation tbyted