VCL类学习之(十一) THandleStream

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

THandleStream enables applications to read from and write to communications resources identified by a handle.

Unit

Classes

Description

Use THandleStream to access files, sockets, named pipes, mailslots, or other communications resources that provide a handle when opened. For example, the FileOpen function provides a handle for a file on disk. THandleStream allows applications to use a uniform stream interface when performing I/O using a handle.

To avoid the overhead of managing file handles, use TFileStream to work with disk files.

  1. { THandleStream class }
  2.   THandleStream = class(TStream)
  3.   protected
  4.     FHandle: Integer;
  5.     procedure SetSize(NewSize: Longint); override;
  6.     procedure SetSize(const NewSize: Int64); override;
  7.   public
  8.     constructor Create(AHandle: Integer);
  9.     function Read(var Buffer; Count: Longint): Longint; override;
  10.     function Write(const Buffer; Count: Longint): Longint; override;
  11.     function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
  12.     property Handle: Integer read FHandle;
  13.   end;
  14. { THandleStream }
  15. constructor THandleStream.Create(AHandle: Integer);
  16. begin
  17.   inherited Create;
  18.   FHandle := AHandle;
  19. end;
  20. function THandleStream.Read(var Buffer; Count: Longint): Longint;
  21. begin
  22.   Result := FileRead(FHandle, Buffer, Count);
  23.   if Result = -1 then Result := 0;
  24. end;
  25. function THandleStream.Write(const Buffer; Count: Longint): Longint;
  26. begin
  27.   Result := FileWrite(FHandle, Buffer, Count);
  28.   if Result = -1 then Result := 0;
  29. end;
  30. function THandleStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
  31. begin
  32.   Result := FileSeek(FHandle, Offset, Ord(Origin));
  33. end;
  34. procedure THandleStream.SetSize(NewSize: Longint);
  35. begin
  36.   SetSize(Int64(NewSize));
  37. end;
  38. procedure THandleStream.SetSize(const NewSize: Int64);
  39. begin
  40.   Seek(NewSize, soBeginning);
  41. {$IFDEF MSWINDOWS}
  42.   Win32Check(SetEndOfFile(FHandle));
  43. {$ELSE}
  44.   if ftruncate(FHandle, Position) = -1 then
  45.     raise EStreamError(sStreamSetSize);
  46. {$ENDIF}
  47. end;
ResultSetHandler八种结果集处理方式(八个实现) 刚开始学ResultSetHandler前几种实现学的有点慢,后面那几种实现和前几种大相径庭,只要模仿着前面,后面也很容易就自己敲出来了,所以学起来就比较快了。 特别注意:第八种MapListHandler()他取数据库中的数据的时候,为什么不会打乱顺序取出来,为什么是有序的?因为它的源码是class org.apache.commons.dbutils.BasicRowProcessor$... 阅读详情

相关推荐

Delphi中的流式对象

讲解Delphi中的TStream的使用,简单易懂,很有帮助。

JResultSetHandler下的常用结果集

  //ArrayHandler:适合取1条记录。把该条记录的每列值封装到一个数组中Object[]  //ArrayListHandler:适合取多条记录。把每条记录的每列值封装到一个数组中Object[],把数组封装到一个List中  //ColumnListHandler:取某一列的数据。封装到List中。  //KeyedHandler:取多条记录,每一条记录封装到一个Map中,再把这个M...

qianfeng_dashuju的博客 433

VCL 集成图大全

VCL 集成图大全

开发Delphi对象式数据管理功能 TStream

20.1.1.2 TStream的实现原理     TStream对象是Stream对象的基础,这是Stream对象的基础。为了能在不同媒介上的存储数据对象,后继的Stream对象主要是在Read和Write方法上做了改进,。因此,了解TStream是掌握Stream对象管理的核心。Borland公司虽然提供了Stream对象的接口说明文档,但对于其实现和应用方法却没有提及,笔者是从Borl

流年~~ 1687

Delphi Stream 介绍

Stream对象,又称流式对象,是TStreamTHandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据(包括对象和部件)  在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种Strea

kevin's blog 1208

VCL学习() TFileStream

{ TFileStream class }  TFileStream = class(THandleStream)  public    constructor Create(const FileName: string; Mode: Word); overload;    constructor Create(const FileName: string; Mode:

记录成长的每一步 798

流操作的语法 选择自 cscer 的 Blog

 流操作的语法 Delphi在这两方面都做的相当出色。在Delphi的早期版本Turbo Pascal 中就曾有流(Stream)、群(Collection)和资源(Resource)等专门用于对象式数据管理的。在Delphi中,这些功能得到了大大的加强。Delphi将对象式数据管理归结为Stream对象(Stream)和Filer对象(Filer),并将它们应用于可视部件库(V

wwcz898的专栏 766

流操作的语法

Delphi在这两方面都做的相当出色。在Delphi的早期版本Turbo Pascal 中就曾有流(Stream)、群(Collection)和资源(Resource)等专门用于对象式数据管理的。在Delphi中,这些功能得到了大大的加强。Delphi将对象式数据管理归结为Stream对象(Stream)和Filer对象(Filer),并将它们应用于可视部件库(VCL)的方方面面。它们不仅提...

weixin_30527143的博客 91

深入理解控制台程序

2010-06-26 01:06 1785人阅读 评论(2) 收藏 举报 delphiwindowspascalapidosfunction 目录(?)[+] 控制台程序的误区       在Delphi中可以创建Console--控制台应用程序。这种型的程序在Win32文本模式下,或者CUI(文本用户界面)子系统中运行。如图一。     尽管从表面上看起来

hongya6088的专栏 1307

Java学习handlerStream

InputStreamReaderDemo package com.mashibing.handlerStream; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * @author: 马士兵教育 * @create: 2019-09-22 20:48 */ public class InputStreamReaderDemo { public static void main(Str

qq_38592706的博客 237

常用的VCL简介

窗体和应用程序 窗体和应用程序表示Form和Application对象,这些是从TComponent派生而来,它们实际也是组件,单独地把它列举出来,以示与拖到窗体上的控件加以区别。 1、 TApplication TApplication封装了Windows程序的基本操作。TApplication所担负的任务有:管理图标、提供快捷帮助和基本消息处理。每个Delphi应用程序都有一个...

weixin_34128534的博客 666

Delphi TStream, TFileStream(文件流)

TStream 是一个抽象的基, 不能直接生成对象TStream --> THandleStream --> TFileStreamTStream --> TCustomMemoryStream --> TMemoryStreamTStream --> TCustomMemoryStream --> TResourceStream TFileStream: ...

weixin_33975951的博客 581

TFileStream

TFileStream使得应用程序可以从磁盘的文件中读取数据。关系 TObject->TStream->THandleStream  使用TFileStream可以访问磁盘文件的信息。该将打开一个全程的文件,并提供方法来读取该文件。如果应用程序中已经定义了该文件的句柄,可以使用THandleStream对象以同样的模式打开该文件。方法列表~TFilStream 删除TFileStream

zl198183的专栏 786

Stream对象又称流式对象

Stream对象又称流式对象 Stream对象,又称流式对象,是TStreamTHandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据(包括对象和部件)  在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点...

weixin_33724059的博客 241

Delphi TStream 详细介绍

Delphi TStream 详细介绍 Stream对象,又称流式对象,是TStreamTHandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据(包括对象和部件) 在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对...

dkopg24406的专栏 502

Delphi Tstream和TmemoryStream流操作

Tstream 和TmemoryStream流操作 主要方法及属性: position 用来定位流的开始位置 也可以用seek来定位流的起始位置: function Seek(Offset: Longint; Origin: Word): Longint; overload; virtual; function Seek(const Offset: Int64; Origin: TS...

qq_15258081的博客 3085

c++检查程序是否已经启动

方式一: 实例代码: #include #include #include #include #include #include #include using namespace std; long getrunpid(const char* pidfile) { long pid; FILE *fp = fopen(pidfile, "r+"); if(fp == NU

The Coding World 4646
上一篇: VCL类学习之(十) TFileStream
下一篇: 网络知识讲座学习(一)
formiss
博客等级 码龄21年 138粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值