获取数组类型记录字段的长度

2023-12-22

我正在编写一个包装器用于与外部二进制 API 进行通信。 API 使用 PDU(打包二进制记录)进行通信。字符串是 AnsiChar 数组并且以零结尾:

type 
  TSomePDU = packed record
    //...
    StringField: array[0..XYZ] of AnsiChar;
    //...
  end;
  PSomePDU = ^TSomePDU;

我想编写一个 FillPDUString 过程,它接受一个 String 并填充 char 数组,但我想避免在使用该过程的任何地方跟踪 MaxLength,因此我需要以某种方式获取声明的数组大小(给定指向该字段的指针):

function GetMaxSize(const Field: array of AnsiChar): Integer;
begin
  // ???
end;

//...
GetMaxSize(ARecord.StringField);

这可能吗?


如果我理解正确的话,那么你可以使用Delphi的Length http://www.delphibasics.co.uk/RTL.asp?Name=Length功能

获取长度的方法如下:

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

获取数组类型记录字段的长度 的相关文章

  • 如何将接口类型传递给过程

    如何将接口类型传递给过程参数 type Hello PortType interface ISoapInvokable 243CBD89 8766 F19D 38DF 427D7A02EAEE function GetDeneme s st
  • TControlState.csDesignerHide 与 TControlStyle.csNoDesignVisible

    VCL 似乎提供了两种向表单设计者隐藏控件的机制 TControlState csDesignerHide and TControlStyle csNoDesignVisible 就 IDE 而言 它们之间有什么区别 什么时候应该使用哪个
  • iOS Objective-C 对象:何时使用release,何时不使用它

    我在 iOS 下 正在使用 delphi Tokyo 进行开发 这是我的代码 aUIImage TUIImage Wrap TUIImage alloc initWithCGImage aCGImageRef try aData TNSDa
  • FreeMM 与 ShareMem

    我们有很多用 delphi 和 c builder 编写的 dll 库 并使用 sharemem 和 borlndmm dll 3d party 库中的对齐问题迫使我们转向 delphi 2007 中的新内存管理器 有人可以帮我解释一下 共
  • Winform 没有.NET 框架?

    我必须创建一些表单并将其作为直接 EXE 提供 而不是安装程序 它安装 NET 框架 最终用户对此不满意 他们想要可以直接打开和工作的东西 我知道它可以作为网络完成 但我正在寻找 winforms 吗 请建议哪种工具 技术可以处理这个问题
  • 将记录转换为序列化表单数据以通过 HTTP 发送

    有没有办法转换此记录 TError record code Word message String end TState record caption String address Cardinal counters TArray
  • 如何将 TGifImage 中的帧提取为位图?

    下面的演示尝试在表单的画布上绘制 GIF 这不起作用 图像不会前进 如何让它发挥作用 procedure TForm1 FormCreate Sender TObject begin GIF TGIFImage Create GIF Loa
  • 在 SQLite 数据库中存储日期时间值的最佳方式(Delphi)

    我将把日期时间值存储在 SQLite 数据库中 使用 Delphi 和 DISqlite 库 数据库的本质是它永远不需要在计算机或系统之间传输 因此互操作性不是一个限制 相反 我的重点是阅读速度 日期时间字段将被索引 我将对其进行大量搜索
  • Delphi DataSnap REST 服务器从 TStream 返回 JSON 数组,而不是二进制

    我有一个与 Android 客户端通信的 REST 服务器 我将它从 XE3 ish 升级到 Berlin 其中一个服务器方法返回一个包含 jpeg 的 TStream 并且工作得很好 很高兴将图像作为二进制图像返回 升级到 Berlin
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry
  • 在 Delphi 2009 上安装最新版本的 Indy 10 [重复]

    这个问题在这里已经有答案了 是否有更新 Delphi 2009 中的 Indy 10 组件的分步指南 我读过正在卸载线程 https stackoverflow com questions 486210 what is the proper
  • 在TImageViewer中,如何获取用户点击图片的位置?

    在TImageViewer控件中 用户可以缩放或平移图片 我的问题是 当用户点击图片时 如何获取用户在图片上的点击位置 尤其是用户可以对图片进行放大 缩小或平移之后 如何获取对应的图片点击位置呢 As shown below How to
  • DELPHI 和 WANT 或 NANT

    We use 巡航控制 net http confluence public thoughtworks org display CCNET Welcome to CruiseControl NET在 Delphi 2006 应用程序中进行持
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • Delphi 流畅的界面

    使用上有什么优点和缺点流畅的界面 http en wikipedia org wiki Fluent interface在德尔福 流畅的界面应该会增加可读性 但我对此有点怀疑one包含很多链式方法的长 LOC 是否存在编译器问题 是否存在任
  • 如何释放 TInterfacedObject 中的 TObject 成员

    我知道接口对象是引用计数的 因此不需要手动释放它 但如果它有一个 TObject 继承成员 我是否应该在析构函数中手动释放该成员 考虑以下代码 program Project2 APPTYPE CONSOLE R res uses Syst
  • 如何使 StringGrid 的列适合网格的宽度?

    我已经寻找解决方案很长时间了 但没有任何运气 有谁知道一个简单的方法来做到这一点 例如 我想拉伸网格的第二列以适应网格的宽度 Use the ColWidths财产 像这样 with StringGrid1 do ColWidths 1 C
  • 防止多个实例 - 但还要处理命令行参数?

    我正在从我的应用程序处理与 Windows 相关的扩展文件 因此 当您在 Windows 中双击文件时 它将执行我的程序 然后我从那里处理该文件 如下所示 procedure TMainForm FormCreate Sender TObj
  • 在 Delphi 或 C++ Builder 中使用 Chromium Edge WebView2 [重复]

    这个问题在这里已经有答案了 既然 Microsoft Chromium Edge 已经最终确定 是否可以在 Delphi 或 C Builder 中使用它 据我了解 它是基于WebView2成分 是否有一个组件 例如TWebView2或者E
  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty

随机推荐

  • Win2008 R2 上的 MSMQ 不会接收来自旧客户端的消息

    我在这里遇到一个非常奇怪的问题 我有一台安装了消息队列的 Windows 2008 R2 服务器 在另一台计算机上 运行 Windows 2003 的服务被设置为将消息发送到 2008 服务器上的公共队列 但是 消息永远不会显示在服务器上
  • 视频文件的下载链接

    我有一个视频想要提供下载链接 然而 创建了一个简单的 a href myvideo mp4 Download a 标签 当我点击它 在 Firefox 和 Chrome 中 时 它开始播放视频而不是允许下载视频 有没有一种方法可以在所有当前
  • 在 PHP 中如何不允许用户在注销后返回?

    我刚刚编写了一个PHP登录脚本 我想要完成的是 当用户单击注销链接时 在注销后 无论单击浏览器的后退按钮 他们都无法访问该页面 这是注销功能 Start the Session session start session destroy h
  • 如何在 DTrace 操作中打印 CFStringRef?

    我有一个 DTrace 探针捕获对函数的调用 该函数的参数之一是CFStringRef 这是保存指向 unicode 字符串的指针的私有结构 但是CFStringRef本身不是一个char 所以普通的 DTrace 方法如copyinstr
  • 使用 xdebug 和 netbeans 调试 php-cli 脚本?

    我已设法从 IDE 本身启动 php cli 脚本调试会话 但我需要从 shell 命令行启动调试会话 这些是相当复杂的维护 PHP 脚本 需要大量输入参数 因此从 Netbeans 中输入参数有点麻烦 我之前用 Zend studio 做
  • XML 模式中的递归?

    我需要创建一个 XML 模式来验证 XML 文档的树结构 我不确切知道树的出现次数或深度级别 XML 示例
  • CPython 源 - 如何构建静态 python26.lib?

    我正在尝试使用 Cython 将 hello pyx 文件编译为 exe 第一步是使用命令 cython cplus embed hello pyx 将 hello pyx 编译为 hello cpp 文件 Embed选项意味着Genera
  • Sublime Text - 选择最后一个增量选择的元素?

    I recently discovered the insanely useful ctrl D functionality in sublime text With a careful eye it s almost as functio
  • AngularJS ng-model 的默认值

    是否可以使 ng models 获得默认值 例如 我有一个使用了 jQuery 的表单serialize函数 每当 a 值不存在时 它仍然会将其包含在序列化数据中 例如 name age 但是 当我使用尝试使用 Angular 发布它时 h
  • Express 3.4.8 照片上传问题-不使用bodyParser()如何解决?

    我在 Gist 的代码 https gist github com yhagio 10654836 https gist github com yhagio 10654836 我是 Express 新手 尝试从 Node js in Act
  • WAMPServer 在 Windows 10 上无法正常工作,“无法执行服务操作”

    最近我从Windows 7 64升级到Windows 10 64 在此之前 我已经让 WAMPServer 运行得很好 但现在它不起作用了 每当我启动它时 我都会使服务器离线 单击 上线 只会弹出 无法执行服务操作 错误 我已经尝试过重新安
  • mapboxgl.js 与 leaflet.js

    我即将启动一个 Web 应用程序 其主要目的是显示 Mapbox 地图 切换图层并根据与地图的交互显示数据 我想知道我应该使用 mapboxgl js 和 leaflet js mapboxgl js 或 leaflet js 每个人都一直
  • 异步下载多个文件并等待所有文件完成,然后再执行其余代码

    我正在尝试从互联网下载多个文件并等待所有文件完成 这是我正在运行的 C 控制台应用程序 因此不需要进度条事件处理程序 然而 即使所有文件尚未下载 它目前也只是继续执行代码 1 下载所有文件 2 完成下载文件A 3 所有文件下载完毕 4 文件
  • 使用 webclient C# 检查 URL 是否为下载链接

    我正在从历史数据库中读取数据 对于读取的每个 URL 我都会下载它并将数据存储到字符串中 我希望能够确定该链接是否是下载链接 即 exe 或 zip 例如我假设我需要阅读标头来确定这一点 但我不知道如何使用 WebClient 来做到这一点
  • 如何使用 DataBinder.Eval 在 gridview 中选中复选框

    我正在尝试检查一个复选框 基本上在我的数据库中该值是否为 1 或 0 一个叫做Active bit not null 我可以将值传递给gridview 但现在我试图检查该位是否为1 或者如果该位为0则不检查但它不起作用 它只是显示未检查但该
  • 自动保存您正在处理的文件?

    可以让 Eclipse 自动保存您已打开和正在处理的文件 并且这样做不会触发任何与保存挂钩的操作吗 Windows gt 首选项 gt 常规 gt 工作区 gt 工作区保存间隔 以分钟为单位 中的选项是否执行此操作 您可以使用智能保存 它是
  • 我可以在 IPAD 中运行 html/Javascript 文件吗?

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个文件夹 其中有一个 html 文件夹和 javascript 文件 我可以在没有互联网的情况下在 ipad 中仅从文件系统运行该 html 页
  • MVC3 AntiForgeryToken 问题

    我正在尝试为我的 MVC3 应用程序实现 AntiForgeryToken 设置 FormAuthentication cookie 后 我遇到 AntiForgeryToken 问题 这是一个解释我的问题的简单示例 我的家庭控制器具有以下
  • apache tomcat catalina 作为 CORS 过滤器的 Maven 依赖项

    我在我的网络应用程序中使用 org apache catalina filters CorsFilter 所以我指定了maven依赖
  • 获取数组类型记录字段的长度

    我正在编写一个包装器用于与外部二进制 API 进行通信 API 使用 PDU 打包二进制记录 进行通信 字符串是 AnsiChar 数组并且以零结尾 type TSomePDU packed record StringField array