Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 为什么TStream有Read、ReadBuffer、ReadData、ReadBufferData来读取数据?他们之间有什么区别?_Delphi_Stream - Fatal编程技术网

Delphi 为什么TStream有Read、ReadBuffer、ReadData、ReadBufferData来读取数据?他们之间有什么区别?

Delphi 为什么TStream有Read、ReadBuffer、ReadData、ReadBufferData来读取数据?他们之间有什么区别?,delphi,stream,Delphi,Stream,我看到TStream有很多读取函数,包括read、ReadBuffer、ReadData、ReadBufferData。它们彼此相似。我不明白为什么它提供了这么多不同的读取功能?在其他库中,通常只有一个或两个读取函数 我仔细比较它们。我能找到的唯一区别是: Read是基本的Read函数,将返回读取的字节数 ReadBuffer调用Read,如果未读取预期数据,将引发异常 ReadData可以读取特定数据的数据,并将返回读取的字节数 ReadDataBuffer调用ReadData,如果未读取预期

我看到TStream有很多读取函数,包括read、ReadBuffer、ReadData、ReadBufferData。它们彼此相似。我不明白为什么它提供了这么多不同的读取功能?在其他库中,通常只有一个或两个读取函数

我仔细比较它们。我能找到的唯一区别是:

  • Read是基本的Read函数,将返回读取的字节数
  • ReadBuffer调用Read,如果未读取预期数据,将引发异常
  • ReadData可以读取特定数据的数据,并将返回读取的字节数
  • ReadDataBuffer调用ReadData,如果未读取预期数据,将引发异常

  • 对吗?

    你的问题的答案是肯定的。不清楚你不明白什么。。。文档非常清楚这些方法的作用。为什么有这么多。。。因为每个人的行为都不同。。。选择一个可以满足您需要的对象…文档还建议使用专门的流对象,如TFileStream、TMemoryStream、TStringStream和其他对象,而不是使用基本的TStream类。TStream拥有所有这些方法的主要原因是确保数据从一个专用流传输到另一个专用流的简单方法,因为所有数据都是TStream的后代。很长一段时间以来,只有
    Read(Buffer)
    可用于读取原始字节。最近,添加了读取(缓冲区)数据重载,使读取许多不同类型的数据(布尔、字符、整数、浮点等)比读取原始字节更容易。这就是区别。