delphi的TFileStream 内存流
一、文件
文本文件是以行为单位进行读、写操作的。文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。
二、定义
FileStream: TFileStream;
三、打开文件
Filestream:= TFileStream.Create(AFileName: string; Mode: Word);
参数AfileName:文件名;参数Mode:文件打开的方式。
Mode由打开模式与共享模式组成,取值见下表:
|
分类 |
参数 |
说明 |
|
打 开 模 式 |
fmCreate |
建立文件, 如果指定文件名的文件已经存在,则以写模式打开 |
|
fmOpenRead |
只读打开 |
|
|
fmOpenWrite |
以写模式打开文件,写到文件的内容将替换文件以前的内容 |
|
|
fmOpenReadWrite |
读写打开 |
|
|
共 享 模 式 |
fmShareCompat |
共享模式, 兼容 Dos |
|
fmShareExclusive |
他的应用程序不能打开该文件 |
|
|
fmShareDenyWrite |
其他的应用程序只能以只写方式打开 |
|
|
fmShareDenyRead |
其他的应用程序只能以只读方式打开 |
|
|
fmShareDenyNone |
其他的应用程序可以以任何方式打开文件 |
四、读写文件
function read(var buffer;count:longint):longint; //从文件流当前位置读count字节到缓冲区BUFFER;
function write(const buffer;count:longint):longint; //将缓冲区BUFFER的Count个字节的数据写到文件流当前位置中,覆盖该位置后面的Count个字节的数据;
function seek(offset:longint;origin:word):longint; //设置文件流当前读写指针位置,origin={soFromBeginning,soFromCurrent,soFromEnd}
function copyfrom(source:TStream;count:longint):longint; //从另一文件流中当前位置复制COUNT到当前文件流当前位置;
八、关闭文件
文件的关闭须调用FreeAndNil(FileStream)。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一个实例
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type
TBuffer = array [0..16000]of char
procedure GetMessageFromDir( AFileName: string; var ABuffer: TBuffer);
var
FileStream: TFileStream;
begin
Filestream:=TFileStream.Create(AFileName,fmShareExclusive);
Filestream.Position:=0;
FileStream.Read(ABuffer,sizeof(ABuffer));
FreeAndNil(FileStream);
end;
procedure PutMessageToDir(AFileName:string; Astr :string);
var
FileStream: TFileStream;
tempBuffer:TBuffer;
begin
StrPcopy(tempBuffer,Astr);
Filestream:=TFileStream.Create(AFileName,fmShareExclusive or fmCreate);
FileStream.Position:=0;
FileStream.Write(tempBuffer,length(AStr));
FreeAndNil(FileStream);
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一个实例
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
getStream,setStream: TFileStream; {声明一个文件流}
getPath,setPath: string;
begin
getPath := 'c:\temp\get.jpg'; {这个文件存在}
setPath := 'c:\temp\set.jpg'; {这个会自动建立}
getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);
setStream := TFileStream.Create(setPath, fmCreate);
getStream.Position := 0; {流指针移到开始, 复制时从这里开始}
setStream.CopyFrom(getStream, getStream.Size); {Copy 流}
{CopyFrom 的第二个参数是要复制的内容大小; 如果为 0 , 不管指针在什么位置都会复制所有内容}
getStream.Free;
setStream.Free;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一个实例:读取流中的图片数据,显示图片
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type
TForm1 = class(TForm)
img1: TImage;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
fstream:TFileStream;
end;
var
Form1: TForm1;
filename:string = '.\WeiMir.uib';
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
var
bmp:Tbitmap;
begin
fstream:=Tfilestream.create(filename,fmOpenRead);
fstream.Seek(0,soFromBeginning);
bmp:=TBitmap.Create;
bmp.LoadFromStream(fstream);
img1.Picture.Bitmap:=bmp;
end;
end.
delphi的TFileStream 内存流的更多相关文章
- Delphi从内存流中判断图片格式(好多相关文章)
废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件是什么类型的文件,例如jpg文件 是 FFD8 (从低位到高位就要反过来 D8FF 下面都是一样)BMP文件 ...
- 用内存流 文件流 资源生成客户端(Delphi开源)
正文:很多木马生成器就是用的内存流和文件流生成客户端的,废话不多说了,代码如下: unit Main; interface usesWindows, Messages, SysUtils, Varia ...
- 用Delphi从内存流中判断图片格式
https://blog.csdn.net/my98800/article/details/53536774 废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件 ...
- 关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写
TStream 是一个抽象的基类, 不能直接生成对象. 在具体的应用中, 主要使用它的子孙类:TFileStream: 文件流TStringStream: 字符串流TMemoryStream: 内存流 ...
- 用Delphi从内存流中判断图片格式[转]
http://blog.163.com/tfn2008%40yeah/blog/static/110321319201222243214337/ 用Delphi从内存流中判断图片格式[转] 2012- ...
- 关于 Delphi 中流的使用(1) 用 TMemoryStream(内存流) 入门 &&& 关于指针的迷惑,我自己问的.
来自:http://www.cnblogs.com/del/archive/2008/01/01/1022124.html -------------------------------------- ...
- delphi 基础之三 文件流操作
文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...
- 【Delphi】从内存(MemoryStream)使用WMP(WindowsMediaPlayer)控件播放视频音频(Play Video with WMP from MemoryStream)
关键字: MemoryStream.WMP.WindowsMediaPlayer.Play .Load. Delphi.C++.C#.ActiveX控件 作 者: CaiBirdy 问 题:正常使 ...
- Mybatis拦截器 mysql load data local 内存流处理
Mybatis 拦截器不做解释了,用过的基本都知道,这里用load data local主要是应对大批量数据的处理,提高性能,也支持事务回滚,且不影响其他的DML操作,当然这个操作不要涉及到当前所lo ...
随机推荐
- 1107: 单向公路(bfs+输入整理)(DFS也可以,而且更快)
Description 某个地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,且有公路的并不都能双向行驶.现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一 ...
- wind10系统 Atheros AR9271 Wireless Network Adapter USBwifi无线网卡的驱动安装解决无法搜索wifi信号,连接wifi信号无法上网的问题
一.解决无法搜索wifi信号的问题 卸载掉之前的驱动,上网下载其他的驱动程序安装. http://drivers.mydrivers.com/drivers/463_185289.htm 二.安装完后 ...
- FZU Problem 2150 Fire Game(bfs)
这个题真要好好说一下了,比赛的时候怎么过都过不了,压点总是出错(vis应该初始化为inf,但是我初始化成了-1....),wa了n次,后来想到完全可以避免这个问题,只要入队列的时候判断一下就行了. 由 ...
- 使用virsh命令创建KVM虚拟机快照
查看虚拟机所在主机和虚拟机名称:[root@node-1 ~]# nova show a88dcf5d-c8b2-46a5-af27-a176d8235c9d|grep hyper| OS-EXT-S ...
- BZOJ 3110:[Zjoi2013]K大数查询(整体二分)
http://www.lydsy.com/JudgeOnline/problem.php?id=3110 题意:-- 思路:其实和之前POJ那道题差不多,只不过是换成区间更新,而且是第k大不是第k小, ...
- 对于使用了SSH造成的中文乱码问题,4大解决方法
修改struts2.xml struts2.xml 中添加 <constant name="struts.i18n.encoding" value="UTF-8&q ...
- 触发器(基本的SR触发器、同步触发器、D触发器)
一.能够存储1位二值信号的基本单元电路统称为触发器(Filp-Flop) 触发器是构成时序逻辑电路的基本逻辑部件.它有两个稳定状态:“0”和“1”.在不同的输入情况下,它可以被置0状态或1状态,当输入 ...
- Bridge 设计模式
原文:http://www.linkedkeeper.com/detail/blog.action?bid=26 You are here: 架构&实践 - 设计模式 Frank 2 ...
- 【HighCharts系列教程】三、图表属性——chart
一.chart属性说明 Chart是HighCharts图表中主要属性,包括了图表区域的颜色.线条.高度.宽度.对齐.图表类型等诸多属性,也是HighCharts图表中必须配置的属性之一. 配置cha ...
- PAT (Advanced Level) 1018. Public Bike Management (30)
先找出可能在最短路上的边,图变成了一个DAG,然后在新图上DFS求答案就可以了. #include<iostream> #include<cstring> #include&l ...