Delphi 无尺寸限制流函数的术语是什么?

Delphi 无尺寸限制流函数的术语是什么?,delphi,stream,terminology,delphi-xe,Delphi,Stream,Terminology,Delphi Xe,据我所知,流的大小是固定的,无论是内存流还是文件流。是否有一个开放式流的术语,如串行端口或网络套接字连接 我在德尔福XE工作。我看过从TStream中分离出来的类。我想创建一个通用类的接口,该类将应用于串口、网络套接字、键盘输入或模拟数据。这些将是没有指定长度的数据流,包含可用数据包 我找不到合适的搜索词。也许正确的术语是套接字,但这似乎是一个更具体的网络术语。它仍然是一个流。您可以将其称为顺序访问流,以区别于随机访问流。在实现TStream子代时,如果有人调用Seek方法来向后、向前搜索或任何

据我所知,流的大小是固定的,无论是内存流还是文件流。是否有一个开放式流的术语,如串行端口或网络套接字连接

我在德尔福XE工作。我看过从TStream中分离出来的类。我想创建一个通用类的接口,该类将应用于串口、网络套接字、键盘输入或模拟数据。这些将是没有指定长度的数据流,包含可用数据包


我找不到合适的搜索词。也许正确的术语是套接字,但这似乎是一个更具体的网络术语。

它仍然是一个流。您可以将其称为顺序访问流,以区别于随机访问流。在实现
TStream
子代时,如果有人调用
Seek
方法来向后、向前搜索或任何其他不允许的用法,则可以让该方法抛出异常


可以读取但不能写入的东西是源,可以写入但不能读取的东西是接收器。这些术语没有固定的大小。

监听端口、套接字或其他类型的通信有时被称为嗅探器或协议分析器

为此实现一个通用的方法并非易事

您必须为每种类型的通信实现一个特定的抽象层。
例如,在不知道协议格式的情况下侦听串行端口注定会失败。

流、管道、套接字、文件等等。。。它们在以下方面都是相似的:

  • 初始化(打开)然后销毁(关闭)
  • 您拥有此结构的句柄(实例)
  • 您使用的读写方法可能检索的内容少于请求的内容(它允许无大小/无限/抽象流)
例如,在世界上,“一切都是一个文件”,甚至是一个网络、一个设置、一个cpu、一个设备

在Delphi中,您可以从
TStream
完美地继承来实现此行为

即使是
Seek
方法也不需要处理所有情况。您可以有单向/单向流、只读流或只读流

然后,您可以与不同的
TStream
实现共享相同的代码,与文件、网络、内存、键盘、屏幕等共享相同的代码。。。您甚至可以嵌套流,以便动态添加压缩、加密、复制


因此,如果您在Delphi世界中,只需将其称为“stream”,即可实现一个
TStream
。。。和快乐的编码

我希望创建一个真正简单的接口,使AnsiCharacters缓冲区在通知事件中可用,而不考虑它包含的数据。接收数据的对象将把数据存储到另一个缓冲区中,并决定是否通知下一级是否有可接受的数据准备就绪。[Data Consumer]TBytes缓冲区是一种更好的方法,因为在数据包中应该避免解析。在这个级别上,这些不是字符串。数据可能不完整。字节将是更好的描述。我试图传达数据不是Unicode。@lurd
RawByteString
类型适合存储数据包。如果您不将其作为字符串处理,也不将其转换为PAnsiChar,那么您将拥有比标准的
TBytes
(例如conact、delete、insert)更多的方法,并且对于大数据包,它可能会快一点,因为它在初始化时不会用零填充。在
RawByteString
中存储#0是安全的,因为它将使用内联长度而不是搜索第一个#0。@Arnoud,谢谢,很高兴知道。我构建了一个框架,使用记录和tbyte以及我需要的所有方法来实现这类东西。与TDynArray类似,但相同。单向表示允许搜索,但只能在一个方向上搜索(可能是正向)。如果基础数据源不支持查找,您可以通过实现
Seek
来模拟它,以便它调用
Read
并丢弃它读取的内容。如果您不允许跳过输入,并且您没有实现
Seek
使其看起来像您,那么我认为单向性不是一个好术语。