如何将 LockBox 3 安装到 Delphi 7 中?

2023-12-19

这是我第一次安装 Lockbox 的库。我从sourceforge下载了3.4.3版本,并拥有Delphi 7。第一步是让这个傻瓜在Delphi 7下编译,这真是太糟糕了。我确实希望这些组件在安装后更易于使用。

好的。我有一个看起来像这样的单位。

unit uTPLb_StrUtils;

interface

uses
  SysUtils, uTPLb_D7Compatibility;

function AnsiBytesOf(const S: string): TBytes;

implementation

function AnsiBytesOf(const S: string): TBytes;
begin
//compiler chokes here
  **Result := TEncoding.ANSI.GetBytes(S);**
end;

end.

顺便说一句,兼容性单元将 TBytes 定义为 TBytes = 字节打包数组;

Delphi 7 对 TEncoding 感到窒息,因为它只存在于 D2009+ 中。我用什么来替换这个功能?


String是一个8位AnsiString在 Delphi 7 中。只需分配TBytes to the Length()字符串和Move()将字符串内容写入其中:

function AnsiBytesOf(const S: AnsiString): TBytes;
begin
  SetLength(Result, Length(S) * SizeOf(AnsiChar));
  Move(PChar(S)^, PByte(Result)^, Length(Result));
end;

如果你想成为政治正确并匹配什么TEncoding.GetBytes()确实,你必须转换String to a WideString然后使用Win32 APIWideCharToMultiBytes()函数将其转换为字节:

function AnsiBytesOf(const S: WideString): TBytes;
var
  Len: Integer;
begin
  Result := nil;
  if S = '' then Exit;
  Len := WideCharToMultiByte(0, 0, PWideChar(S), Length(S), nil, 0, nil, nil);
  if Len = 0 then RaiseLastOSError;
  SetLength(Result, Len+1);
  WideCharToMultiByte(0, 0, PWideChar(S), Length(S), PAnsiChar(PByte(Result)), Len, nil, nil);
  Result[Len] = $0;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 LockBox 3 安装到 Delphi 7 中? 的相关文章

随机推荐

  • 将样式的 TargetType 属性设置为基类

    我只是在 WPF 中摸索了一下 希望窗口上的所有元素共享相同的边距 我发现所有能够有边距的控件都源自 FrameworkElement 因此我尝试了以下操作
  • 十进制到二进制转换

    我需要使用 C 编程将 20 位十进制转换为二进制 我将创建什么缓冲区 因为它会非常大 即使计算器也无法计算将 20 位数字转换为二进制 这是我打算完成的示例 让我们假设这段代码 我通过键盘将该值输入到缓冲区中 同时 我使用的是 AT85C
  • 使用 OpenSSL 类型“struct ec_key_st”的定义不完整时出错

    我正在尝试通过 openssl 根据给定的秘密计算公钥 我收到此错误 main c 27 error incomplete definition of type struct ec key st printf d s n BN bn2hex
  • 我想对两个并行数组进行排序,一个是 String ,另一个是 double 数据类型

    我对编程领域比较陌生 我希望你能帮助我对这些数组进行排序 这个想法是在文本区域上显示菜单项并按名称对项目进行排序 并行数组包含食品 另一个数组包含价格 String items Gatspy Coffee Chicken Mango Jui
  • 从距离矩阵绘制图形或网络?

    我正在尝试绘制 草绘 matplotlib 或其他 python 库 一个大距离矩阵的 2D 网络 其中距离将是草绘网络的边缘及其节点的线和列 DistMatrix a b c d a 0 0 3 0 4 0 7 b 0 3 0 0 9 0
  • 我如何要求一个正则表达式中至少有两个前瞻模式匹配?

    以下正则表达式可确保密码至少包含 1 个小写字母 1 个大写字母 1 个数字和 1 个特殊字符 A Z a z 0 9 a zA Z0 9 s 这样可行 在此基础上 我想要求只有满足其中两个组才能使密码有效 例如 这些是有效的密码 aaaa
  • 调整 SKSpriteNode 的大小和比例

    我的 iOS 游戏中有多个游戏对象 其中一些对象的分辨率比其他对象更高 用于游戏对象的图形是在运行时随机选择的 我想确保它们在使用时都不会超过一定的大小 所以我设计了以下算法 while self spriteNode rSize widt
  • 如何有条件地设置 rich:dataTable 中的行样式

    如何根据条件更改特定行的样式 我可以在 rich column 样式类属性中使用 JSF EL 但我必须为每一列编写 我想改变整行 Thanks 具体针对每一列
  • WCF:只允许单个客户端并拒绝其他客户端的服务

    我需要创建一个一次只允许一个客户端的 WCF 服务 所有其他请求都应被拒绝 并且客户端必须稍后重试 该服务大约需要一分钟才能完成请求 我试过了 ServiceBehavior IncludeExceptionDetailInFaults t
  • WPF:无法在 XAML 中设置只读集合的​​项目

    场景非常简单 我的自定义控件有一个只读集合属性 并且我想在 XAML 中设置集合的项目 像这样
  • 确保pandas滚动窗口函数中窗口大小恒定

    需要对数据框中每个大小为 2 的滚动窗口执行一些自定义操作 但rollingpandas 中的函数 返回一个带有初始窗口位置和 1 个元素的输出 我尝试设置min periods 但在这里没有帮助 df pd DataFrame B 0 1
  • 如何获取html页面上特定部分的背景颜色

    我使用渐变来设置 html 正文背景的颜色 CSS background linear gradient to top fb4080 10 ebb523 22 58d27c 40 2aff00 52 0fd2b7 65 6b6dff 80
  • Android 语音识别命令

    Goal 语音识别开始 说出语音命令并完成正确的操作 播放一些音乐会启动音乐播放器播放任何应该发生的事情 现在的情况 我正在运行一个测试应用程序 它启动 Android 语音识别 成功监听并将结果返回到我的 Activity 启动语音识别的
  • 什么是haslayout?

    我读过一些关于它的文章 但没有明白到底是什么 有人可以解释一下吗 是不是只和IE6有关 什么是zoom 1 Is layout是只有 IE 的 TAG 吗 Edit 我发现此信息对我来说非常有用 因为 Internet Explorer 太
  • Java:在基元上同步?

    在我们的系统中 我们有一个方法 当使用特定 ID 调用它时 它会执行一些工作 public void doWork long id 现在 这项工作可以针对不同的 ID 并发完成 但如果 2 个线程使用相同的 ID 调用该方法 则一个线程应该
  • Elasticsearch 丢弃了太多请求——缓冲区会改善情况吗?

    我们有一个工作集群 将索引请求发送到 4 节点 Elasticsearch 集群 文档在生成时就会被索引 并且由于工作人员具有高度并发性 Elasticsearch 在处理所有请求时遇到了困难 给出一些数字 工作人员同时处理多达 3 200
  • 我不明白侦听器中 lambda 表达式的参数传递

    我开始学习 Kotlin 没多久 关于 Android 侦听器中 lambda 表达式的传递 有些部分我不明白 In JAVA botton setOnClickListener new View OnClickListener Overr
  • 如何获取和使用 Alexa 技能意图响应的确认“是”或“否”

    我正在开发一项 Alexa 技能 在启动时它会询问Do you want to perform something 取决于用户的回复 yes or no 我想发起另一个意图 var handlers LaunchRequest functi
  • 在 Android Studio 中将文件(使用 Git 跟踪)从 Java 转换为 Kotlin

    Android Studio 2 3 2 中从 Java 到 Kotlin 的转换 3 0 中的行为相同 会创建一个新文件并删除以前的文件 所以 Git 对这个转换一无所知 并且 git 历史记录不会保存 在 Intellij Idea 中
  • 如何将 LockBox 3 安装到 Delphi 7 中?

    这是我第一次安装 Lockbox 的库 我从sourceforge下载了3 4 3版本 并拥有Delphi 7 第一步是让这个傻瓜在Delphi 7下编译 这真是太糟糕了 我确实希望这些组件在安装后更易于使用 好的 我有一个看起来像这样的单