Delphi数据流实现文件加密器

数据流是面向对象程序设计语言中面向对象思想的典型体现,它彻底地取代了早期的利用函数实现输入输出的功能,克服了用函数实现输入输出功能的诸多弊端。简单来说,流就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,可定义一些处理数据的基本操作,如读取数据、写入数据等,程序员是对流进行操作,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。掌握好对流的操作在并程序中充分利用流的方便性,不仅能使在编写面向过程的程序时效率大大提高。本文以文件加密为例说明Delphi编程中流的概念及应用。

一、流的基本概念

在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法。

TStream类中定义的属性介绍如下:

(1)Size:此属性以字节为单位返回流中数据大小。

(2)Position:此属性控制流中存取指针的位置。

TStream类中定义的四个虚方法:

(1)Read:此方法实现将数据从流中读出。

函数原形为:

Function Read(var Buffer;Count:Longint):Longint;virtual;abstract;

参数Buffer为数据读出时放置的缓冲区,Count为需要读出的数据的字节数,该方法返回值为实际读出的字节数,它可以小于或等于Count中指定的值。

(2)Write:此方法实现将数据写入流中。

函数原形为:

Function Write(var Buffer;Count:Lonogint):Longint;virtual;abstract;

参数Buffer为将要写入流中的数据的缓冲区,Count为需要写入数据的长度字节数,该方法返回值为实际写入流中的字节数。

(3)Seek:此方法实现流中指针的移动。函数原形如下:Function Seek(Offset:Longint;Origint:Word):Longint;virtual;abstract;参数Offset表示以Origint为基准指针移动的方向和字节数,为正表示指针从数据头向数据尾移动,为负表示指针从数据尾向数据头方向移动。参数Origint指出指针移动参照的基准,其可能的取值如下:a)soFrombeginning:Offset以数据开始处为基准移动,此时Offset必须大于或者等于零。b)soFromCurrent:Offset以指针的当前位置为基准。c)soFromEnd:Offset以数据结束的位置为基准。此时Offset必须小于或者等于零。该方法返回值为移动后指针的位置。

时间: 2024-11-02 03:12:38

Delphi数据流实现文件加密器的相关文章

WFFC超级文件加密器使用方法

  WFFC超级文件加密器是一款功能强大的电脑文件安全软件,很多人电脑中都有非常重要的文件,通过WFFC超级文件加密器能够安全便捷的帮助大家对各种需要进行操作的文件进行加密. WFFC超级文件加密器使用方法 1.软件为大家提供了文件.视频.图片的加密功能 2.点击对应文件预览进行文件的添加操作 3.选择对应文件后点击[开始执行] 4.可以根据文件重要性选择是否勾选完成处理后粉碎原文件 5.输入并确认密码后点击[确定]完成文件加密

com-C++ 如何调用Delphi的dll文件中的COM方法

问题描述 C++ 如何调用Delphi的dll文件中的COM方法 请问 C++ 如何 调用 Delphi 的dll文件中的COM方法 解决方案 只要是COM就遵守COM的规范,Delphi写出来的COM和其他语言写出来的COM用法是一样的

c#编写程序从数据流读取文件

问题描述 c#编写程序从数据流读取文件 c#新手:求大神指教 用c#从数据流读取文件,远程读取文件,用到文件服务器 解决方案 你部署http或ftp服务器,直接用webclient等方式下载就行了

winform-急,求大神帮帮忙,关于C#调用delphi的dll文件抛错问题

问题描述 急,求大神帮帮忙,关于C#调用delphi的dll文件抛错问题 [DllImport(_fileDll EntryPoint = ""JX102R_Read_Card"" CharSet = CharSet.Ansi CallingConvention = CallingConvention.StdCall)] public static extern int JX102R_Read_Card(ref int ReaderNo ref StringBuil

java与delphi之间的文件传输问题

问题描述 java与delphi之间的文件传输问题 使用socket进行通信 delphi作为客户端中使用的是文件流TfileStream传送文件 java作为服务端用的InputStreamReader获取 悲催的问题来了 服务端获取不到文件中的末尾也就是说不知道文件传输是否结束 文件传完了也一直连着 后来使用一个比较笨的办法解决 用新建了一个缓存区buf去取数据一次只取一部分 当buf取到的值不满时就判断文件传输完成- 所以悲催的新问题又来了 文件还只是传一部分就结束了 所以想请问一下各位大

在Delphi中定位文件位置

在Delphi中,定位文件的操作主要有两种方法.一种是直接定位文件,即通过"打开"对话框(OpenDialog)控件来实现.另一种是只定位到文件夹,然后再在此文件夹内寻找文件,这种定位方法是利用Delphi提供的SelectDirectory函数. 这个函数是在FileCtrl单元中定义的,因此在使用时不要忘记在Uses中加入单元名. 下面就以一个例子来说明这两种方法在Delphi中的具体实现: 首先建立一个新的工程,然后在窗体上加入两个按钮控件.一个"打开"对话框

怎样在DELPHI中实现文件切割/组合

一. 文件切割/组合原理 所谓文件切割,就是把一个文件切割成若干个小文件.做法就是将一个文件对象以"文件流"的方式读出,然后按照一定的块(Block)大小分别存成文件.文件组合,就是把若干个文件组合成一个文件.比如像打包工具(Wise)用到的就是这个原理.如果大家对"流"这个概念熟悉的话,那么实现起来就很容易了,以下就是实现步骤. 二. 实现 在DELPHI中新建一个工程,然后在窗体中加入两个BUTTON,一个EDIT,一个OPENDIALOG,一个SAVEDIAL

Delphi实现木马文件传输代码实例_Delphi

本文以实例形式讲述了Delphi下木马的文件传输方法的实现过程,具体步骤如下: 服务器端代码: unit ServerFrm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls,WinSock; type TfrmMain = class(TForm) Panel1: TPanel; Labe

Delphi中判断文件是否为文本文件的函数_Delphi

在自己编写文本文件读取函数的时候,你首先会遇到的第一个问题就是:对于给定的一个文件名,怎么知道它所代表磁盘文件的确是文本文件?这里有一个很简单的方法:把给定的那个文件看作是无类型的二进制文件,然后顺序地读出这个文件的每一个字节,如果文件里有一个字节的值等于0,那么这个文件就不是文本文件:反之,如果这个文件中没有一个字节的值是0的话,就可以判定这个文件是文本文件了.这是原理,下面看看在Delphi 中怎样编程来实现它-- 复制代码 代码如下: function IsTextFile(FileNam