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中的`TFileStream`提供了方便的文件流操作,通过它我们可以高效地读取、写入文件。结合字节数组,可以实现文件的复制或其他数据处理任务。在实际编程中,应根据具体需求选择合适的读写策略,以平衡性能...
说明: 自定义中的数据类型尽量不要用string如果使用那么在保存数据,与读取数据中增加转换var MyDynamicArray: array of Char;begin SetLength(MyDynamicArray, 48); // 设置数组长度为 48 StrPCopy(MyDynamicArray, ...
以下是一个简单的使用内存流和文件流的Delphi代码示例: ```delphi uses Classes; var MemStream: TMemoryStream; FileStream: TFileStream; Buffer: Pointer; Size: Integer; begin // 创建内存流 ...
### Delphi 使用流读取TXT文件的知识点 #### 一、使用TMemoryStream读取TXT文件 在Delphi中,可以使用`TMemoryStream`类处理文件读取操作,尤其适用于TXT这类文本文件。以下是对文章中提供的示例进行详细解释。 #...
- 提供的文件列表包含了一个 Delphi 项目 (`Project1.bdsproj`) 和相关的配置文件,源代码可能在 `Unit1.pas` 文件中,描述了如何实现内存读取和修改的功能。 通过理解和应用上述知识点,开发者可以在 Delphi 中...
在本文中,我们将深入探讨如何在Delphi编程环境中利用SQLite3数据库系统,特别是关于本地数据库与内存数据库的使用。SQLite3是一种轻量级、自包含的数据库引擎,它不需要独立的服务器进程,使得在Delphi应用程序中...
在Delphi编程环境中,利用内存流(Memory ...总的来说,Delphi的内存流机制提供了一种高效、灵活的方式来处理文件数据,特别是当涉及到文件合并这样的任务时,通过内存流可以在不直接操作磁盘的情况下完成文件的整合。
本文将深入探讨如何使用Delphi来读取运行中进程的内存,这是一个非常实用且技术含量较高的话题,尤其对于系统监控、调试以及逆向工程等领域。 首先,我们需要了解什么是内存读取。在计算机程序运行时,它们会将数据...
在Delphi编程环境中,鼠标拖放文件功能是一项实用的技术,它允许用户通过鼠标将文件从一个位置拖放到程序界面上,从而实现文件的快速读取。这个过程涉及到多个Delphi的组件和事件处理,下面我们将深入探讨如何实现这...
Delphi 内存流数组合并成单一内存流,使用方法:1.多个图片、控件、窗体、无类型数组等转换成一个个内存流,2.利用本单元合并成一个内存流,3.保存成一个文件,4.调用时:由文件生成单一内存流,5.利用本单元分解成...
7. **文件流和缓冲** 使用`TFileStream`时,可以自定义缓冲大小以优化性能。`TMemoryStream`还可以用于在内存中操作数据,无需先写入磁盘。 8. **并发与多线程** 在多线程环境中,确保正确地同步对文件的访问,...
"Delphi7 读取 Excel 文件" Delphi7 是一个功能强大的开发环境,它提供了多种方式来读取 Excel 文件。在本文中,我们将介绍使用 OLE 和 Excel Application 读取 Excel 文件的方法。 使用 OLE 读取 Excel 文件 ...
下面是一个简单的示例代码片段,演示了如何使用Delphi和Indy的TIdFTP组件来读取FTP服务器上的文本文件: ```delphi uses IdFTP; var FTPClient: TIdFTP; FileData: string; begin FTPClient := TIdFTP.Create...
本文将深入探讨如何使用内存流来播放任意视频,这在处理媒体文件时能提供高效且灵活的解决方案。 内存流是TStream类的一个实例,它可以用来存储和传输各种类型的数据,包括二进制数据、文本数据等。在Delphi中,...
使用 Delphi 读取 DXF 文件可以通过逐行读取文件并解析每个部分的数据来实现。在 Delphi 中,可以使用 TStringList 或 TFileStream 对象来读取 DXF 文件,然后根据需要解析和处理数据。 例如,可以使用 TStringList...
//读取文件函数 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流文件操作,可以更好地处理数据流,提高程序的效率和可靠性。
2. **文本流读取**: - `TStreamReader` 类型:Delphi中的`System.IOUtils`单元还提供了`TStreamReader`类,用于从文本文件中读取数据。我们可以创建一个`TStreamReader`对象,然后通过它的`ReadLine`或`ReadLines`...
在Delphi编程环境中,TFileStream是一个非常...总之,Delphi的TFileStream类是处理文件流的强大工具,适用于各种文件操作,包括读写、追加和合并。通过熟练掌握其用法,开发者可以高效地实现复杂的数据存储和传输任务。
根据给定的文件标题、描述、标签以及部分内容,我们可以总结出关于Delphi中读取文件与写入文件的关键知识点。 ### Delphi读取文件 在Delphi中读取文本文件通常涉及以下几个步骤: 1. **定义文件句柄**:首先需要...