- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要移动 TStream 类中的“当前字节”指针,我们可以使用属性 Position(例如 MyStream.Position := 0)或使用 Seek 方法(例如 MyStream.Seek(0, soFromBeginning)。问题是,哪一个是更高效(又名更快)?(我没有来源,所以我无法自己检查)。
到目前为止,我总是使用 Seek 来定位该指针。
最佳答案
由于 TStream.Seek
是一个处理 32 位或 64 位值的重载函数,因此它取决于当前的流实现,这可能是更好的选择。
例如,TCustomMemoryStream
实现了 Seek()
的 32 位版本。当您在该流上设置 Position
时,这将首先调用 64 位版本,该版本在调用 32 位版本时将值转换为 Longint。 (这可能会随着 Delphi 的 64 位版本而改变!)
另一方面,THandleStream
实现了 Seek()
的 64 位版本。当您使用 32 位值调用 Seek()
时,您最终会陷入调用 64 位版本的非常讨厌的机制。
我个人的建议是设置位置
。至少在未来会是更好的选择。
关于delphi - TStream.Position 与 TStream.Seek 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3882212/
要移动 TStream 类中的“当前字节”指针,我们可以使用属性 Position(例如 MyStream.Position := 0)或使用 Seek 方法(例如 MyStream.Seek(0,
TStream类包含许多 WriteData 的重载其形式如下: function WriteData(const Buffer: Int32; Count: Longint): Longint; o
我正在尝试将字符串转换为 TStream。下面的代码在 CopyFrom 行上给出了“抽象错误”消息。我在这里遇到了困难,有什么办法可以解决这个问题吗? procedure StringToStrea
通过 Indy 发送 TMemoryStream 的最佳方式是什么? 目前我正在尝试: procedure TClientForm.IdTCPClient1Connected(Sender: TObj
这是从 Apache Edgent Documentation 中获取的代码 我不明白元组到底是什么。代码如下: public static void main(String[] args) thro
我正在从流中读取组件,并且希望能够指定 Owner 属性。 var TComponent : comp; stream.Seek(0, soFromBeginning); comp :=
我正在使用 Delphi 7 并使用 StringList,以 TStream 作为对象。 我的测试项目有一个列表框、一个备忘录和 2 个按钮(添加和删除)。 这是我到目前为止得到的: var L
我的 MySQL 数据库上有一个存储过程,带有 2 个 Blob 类型的 OUT 参数 我想通过 UniDAC 的 SP 组件将它们的值作为 TStream 获取,我已尝试使用此代码进行测试: SP
当我尝试运行以下简单代码序列时,收到Abstract Error 错误消息: type TForm1 = class(TForm) Image1: TImage; Button1:
我编写了一个 DataSnap 服务器方法,它返回一个 TStream 对象来传输文件。客户端应用程序调用该方法并正常读取流。我的问题是,在 TStream 对象可供读取之前,方法调用需要一段时间才能
我正在 Delphi XE2 中使用 TCP/IP 协议(protocol)开发 DataSnap 项目,该项目需要将二进制数据流作为方法参数传递到服务器。我遇到的问题是流内容似乎有大约 32 KB
我需要从 Stream 中读取数据并将读取的缓冲区放入 OleVariant (VarArray) 变量中。 var MemoryStream : TMemoryStream; Data : OleV
我正在尝试使用 TBlobStream 方法将附件数据从 IMAP 服务器插入到 MySQL 数据库。 procedure TForm1.Button1Click(Sender: TObject);
我使用 Delphi XE2 构建了一个 DataSnap REST 服务器,并添加了一个通过 TStream 上传文件的服务器方法: function TServerMethods.updateUp
我正在使用 C++Builder,并且正在尝试慢慢地将代码迁移到使用 C++ 标准库而不是 Delphi VCL。 VCL 有一个基于 TStream 类的流架构,我正在改用 std::stream。
我有一个 Delphi 10.1 Berlin Datasnap 服务器,它无法返回大于大约 260.000 字节的数据包(通过 TStream)。 我按照 Delphi 的 \Object Pasc
我正在尝试编写一个 Delphi 控制台应用程序,为其标准输入创建一个 TStream,并为其标准输出创建另一个 TStream。 (它将由主机应用程序启动,其输入和输出重定向到管道,并将二进制数据传
我编写了一个 DataSnap 服务器方法,它返回一个 TStream 对象来传输文件。客户端应用程序调用该方法并读取流来下载文件。服务器方法非常简单: function TServerMethods
如下面代码的Test2所示,TStringList被转换为TStream,然后TStream又被转换回TStringList。然而,在 Delphi 7 中 Test2 给出的结果与 Test1 相同
对于 TStringStream,使用其 Bytes 属性的 bytes 与使用 TStream.Read 提取的 bytes 不同。如下图: 使用TStream.Read提取的字节代表正确的数据。
我是一名优秀的程序员,十分优秀!