`
free_bird816
  • 浏览: 211038 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

关于 Delphi 中流的使用(3) 通过内存流读取文件

阅读更多

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  mStream: TMemoryStream;

procedure TForm1.FormCreate(Sender: TObject);
//程序开始先创建一个准备要测试的文件
var
  strList: TStringList;
begin
  strList := TStringList.Create;
  strList.Add('aaaaaaaa');
  strList.Add('bbbbbbbb');
  strList.Add('cccccccc');
  strList.Add('dddddddd');
  strList.SaveToFile('c:\temp\test.txt');
  strList.Free;

  {同时建立内存流}
  mStream := TMemoryStream.Create;
end;


procedure TForm1.Button1Click(Sender: TObject);
//通过流读文件到 Memo
begin
  mStream.LoadFromFile('c:\temp\test.txt'); {把文件读入内存流}
  Memo1.Lines.LoadFromStream(mStream);      {把内存流载入 Memo1}
end;


procedure TForm1.Button2Click(Sender: TObject);
//用字符指针读取流中的内容
var
  pc: PChar;
begin
  pc := mStream.Memory; {把字符指针指向内存流}
  ShowMessage(pc[0]);   {a; 第一个字符}
  ShowMessage(pc[10]);  {b; 这个第二行的第一个字符; 每行8个字再加换行与回车共10个字符}
  ShowMessage(pc[20]);  {c}
  ShowMessage(pc[30]);  {d}
end;


procedure TForm1.Button3Click(Sender: TObject);
//从流读入到缓冲区
var
  buffer: array[0..2] of Char; {定义个字符缓冲区}
begin
  mStream.Seek(0, soFromBeginning);
  mStream.Read(buffer, SizeOf(buffer));
  ShowMessage(buffer); {aaa}

  mStream.Seek(10, soFromBeginning);
  mStream.Read(buffer, SizeOf(buffer));
  ShowMessage(buffer); {bbb}

  mStream.Seek(20, soFromBeginning);
  mStream.Read(buffer, SizeOf(buffer));
  ShowMessage(buffer); {ccc}

  mStream.Seek(30, soFromBeginning);
  mStream.Read(buffer, SizeOf(buffer));
  ShowMessage(buffer); {ddd}

{关于 Seek 函数:
  参数1: Offset 是偏移量;
  参数2: Origin 是指针的基准位置, 有三个选值: soFromBeginning、soFromCurrent、soFromEnd
         soFromBeginning: 以开始为基准, 此时参数 Offset 要 >= 0;
         soFromCurrent: 以当前位置为基准;
         soFromEnd: 以结束为基准; 此时参数 Offset 要 <= 0;
  返回: 指针新位置
}

end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
  mStream.Free;
end;

end.

分享到:
评论

相关推荐

    delphi读取文件流

    总结,Delphi中的`TFileStream`提供了方便的文件流操作,通过它我们可以高效地读取、写入文件。结合字节数组,可以实现文件的复制或其他数据处理任务。在实际编程中,应根据具体需求选择合适的读写策略,以平衡性能...

    delphi 自定义结构数据通过内存流方式读取与保存到本地 TMemoryStream

    说明: 自定义中的数据类型尽量不要用string如果使用那么在保存数据,与读取数据中增加转换var MyDynamicArray: array of Char;begin SetLength(MyDynamicArray, 48); // 设置数组长度为 48 StrPCopy(MyDynamicArray, ...

    Delphi内存流、文件流原理实例及应用.rar

    以下是一个简单的使用内存流和文件流的Delphi代码示例: ```delphi uses Classes; var MemStream: TMemoryStream; FileStream: TFileStream; Buffer: Pointer; Size: Integer; begin // 创建内存流 ...

    Delphi_用流来读取TXT文件

    ### Delphi 使用流读取TXT文件的知识点 #### 一、使用TMemoryStream读取TXT文件 在Delphi中,可以使用`TMemoryStream`类处理文件读取操作,尤其适用于TXT这类文本文件。以下是对文章中提供的示例进行详细解释。 #...

    DELPHI 读取&修改内存数据

    - 提供的文件列表包含了一个 Delphi 项目 (`Project1.bdsproj`) 和相关的配置文件,源代码可能在 `Unit1.pas` 文件中,描述了如何实现内存读取和修改的功能。 通过理解和应用上述知识点,开发者可以在 Delphi 中...

    Delphi使用SQLite3内存数据库

    在本文中,我们将深入探讨如何在Delphi编程环境中利用SQLite3数据库系统,特别是关于本地数据库与内存数据库的使用。SQLite3是一种轻量级、自包含的数据库引擎,它不需要独立的服务器进程,使得在Delphi应用程序中...

    delphi 利用内存流合并文件

    在Delphi编程环境中,利用内存流(Memory ...总的来说,Delphi的内存流机制提供了一种高效、灵活的方式来处理文件数据,特别是当涉及到文件合并这样的任务时,通过内存流可以在不直接操作磁盘的情况下完成文件的整合。

    DELPHI读取内存

    本文将深入探讨如何使用Delphi来读取运行中进程的内存,这是一个非常实用且技术含量较高的话题,尤其对于系统监控、调试以及逆向工程等领域。 首先,我们需要了解什么是内存读取。在计算机程序运行时,它们会将数据...

    delphi 鼠标拖放文件 读取文件

    在Delphi编程环境中,鼠标拖放文件功能是一项实用的技术,它允许用户通过鼠标将文件从一个位置拖放到程序界面上,从而实现文件的快速读取。这个过程涉及到多个Delphi的组件和事件处理,下面我们将深入探讨如何实现这...

    Delphi 内存流数组合并成单一内存流

    Delphi 内存流数组合并成单一内存流,使用方法:1.多个图片、控件、窗体、无类型数组等转换成一个个内存流,2.利用本单元合并成一个内存流,3.保存成一个文件,4.调用时:由文件生成单一内存流,5.利用本单元分解成...

    delphi 文件的读取

    7. **文件流和缓冲** 使用`TFileStream`时,可以自定义缓冲大小以优化性能。`TMemoryStream`还可以用于在内存中操作数据,无需先写入磁盘。 8. **并发与多线程** 在多线程环境中,确保正确地同步对文件的访问,...

    delphi7如何读取excel文件

    "Delphi7 读取 Excel 文件" Delphi7 是一个功能强大的开发环境,它提供了多种方式来读取 Excel 文件。在本文中,我们将介绍使用 OLE 和 Excel Application 读取 Excel 文件的方法。 使用 OLE 读取 Excel 文件 ...

    Delphi 连接FTP读取文件数据

    下面是一个简单的示例代码片段,演示了如何使用Delphi和Indy的TIdFTP组件来读取FTP服务器上的文本文件: ```delphi uses IdFTP; var FTPClient: TIdFTP; FileData: string; begin FTPClient := TIdFTP.Create...

    一个内存流播放的例子.zip_delphi一个内存流播放的例子_内存_流播放

    本文将深入探讨如何使用内存流来播放任意视频,这在处理媒体文件时能提供高效且灵活的解决方案。 内存流是TStream类的一个实例,它可以用来存储和传输各种类型的数据,包括二进制数据、文本数据等。在Delphi中,...

    使用Delphi读入DXF文件

    使用 Delphi 读取 DXF 文件可以通过逐行读取文件并解析每个部分的数据来实现。在 Delphi 中,可以使用 TStringList 或 TFileStream 对象来读取 DXF 文件,然后根据需要解析和处理数据。 例如,可以使用 TStringList...

    delphi 读取BIN文件

    //读取文件函数 function ReadFile1(FileName:String):boolean; var sFileName: string; f: TfileStream; ED_Data: array[0..2048] of char; lRet: integer; lOffset: Longint; lOrigin: Word; i,count:...

    Delphi流文件操作

    Delphi流文件操作 Delphi流文件操作是指在Delphi开发环境中对数据流的各种操作,如写入、读取、合并、分隔等。流是一种抽象的处理数据的...通过掌握Delphi流文件操作,可以更好地处理数据流,提高程序的效率和可靠性。

    delphi 通用读取文本文件数据

    2. **文本流读取**: - `TStreamReader` 类型:Delphi中的`System.IOUtils`单元还提供了`TStreamReader`类,用于从文本文件中读取数据。我们可以创建一个`TStreamReader`对象,然后通过它的`ReadLine`或`ReadLines`...

    delphi读写取流记录文件TFileStream

    在Delphi编程环境中,TFileStream是一个非常...总之,Delphi的TFileStream类是处理文件流的强大工具,适用于各种文件操作,包括读写、追加和合并。通过熟练掌握其用法,开发者可以高效地实现复杂的数据存储和传输任务。

    Delphi读取文件和写入文件总结

    根据给定的文件标题、描述、标签以及部分内容,我们可以总结出关于Delphi中读取文件与写入文件的关键知识点。 ### Delphi读取文件 在Delphi中读取文本文件通常涉及以下几个步骤: 1. **定义文件句柄**:首先需要...

Global site tag (gtag.js) - Google Analytics