博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TmemoryStream ,bety[], TByteDynArray文件转化函数小结
阅读量:5101 次
发布时间:2019-06-13

本文共 1478 字,大约阅读时间需要 4 分钟。

Delphi 支持三种文件类型: 文本文件、记录文件、无类型文件。

文本文件是以行为单位进行读、写的。由于每一行的长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。
文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。
文本文件的打开需要两个步骤:1.文件变量与文件名关联;2.初始化读写。
1.文件变量与文件名关联: 
AssignFile(VarTxt, FileName); --以可写方式打开文件。如果文件不存在,将会自动创建。使用该函数,将会覆盖文件中的所有内容
FileName 如果省略路径将默认当前目录。
2.初始化读写有三种方式:
(1) Reset: 只读打开, 指针移到文件头;
(2) Rewrite: 创建新文件并打开, 只写;
(3) Append: 从尾部追加, 指针当然在文件尾。
文件不存在时使用 Reset 或 Append 会引发一个I/O异常。
最后用 CloseFile 关闭文件。

一 TmemoryStream转化为 byte[] (TByteDynArray)

 

ExpandedBlockStart.gif
View Code
procedure
 TForm1.Btn1Click(Sender: TObject);
var
  memoryStream:TMemoryStream;
  byteArray:TByteDynArray;
    fsize:Integer;
begin
   memoryStream:
=
TMemoryStream.Create;
   memoryStream.LoadFromFile(
'
d:\\Sunset.jpg
'
);
   fsize:
=
  memoryStream.Size;
   SetLength(byteArray,fsize);   --设置数组长度
    memoryStream.Read(byteArray[
0
],fsize);  -- 注意应该为byteArray[0],而不是byteArray
   ByteArrayToFile(byteArray,
'
d:\\aa.jpg
'
 );
   memoryStream.Free;
end
;

二, 将bety[] 保存入文件

 

ExpandedBlockStart.gif
View Code
procedure
 ByteArrayToFile(
const
 ByteArray : TByteDynArray; 
const
 FileName : 
string
 );
var
 Count: integer;
 F: FIle 
of
 Byte;
 pTemp: Pointer;
begin
 AssignFile( F, FileName );-- 文件变量与文件名关联
 Rewrite(F);  --重新写一个文件,即覆盖,文件若不存在会自己创建。
 
try
    Count :
=
 Length( ByteArray );
    pTemp :
=
 @ByteArray[
0
];
    BlockWrite(F, pTemp^, Count ); // blockWrite 写入; 参数2是要写入的内容(pTemp^表示指针的内容); 参数3表示写入 Count 次,以一个字节为单位。 
 
finally
    CloseFile( F );
 
end
;
end
;

 

@ 运算符返回一个变量、函数、过程或方法的地址,也就是说,@ 运算符构建一个指向运算数的指针。

 

 

 

 

 

 

转载于:https://www.cnblogs.com/gaiyang/archive/2011/08/18/2145050.html

你可能感兴趣的文章
Java程序单元测试工具对比——Parasoft Jtest与Junit
查看>>
js/jquery中什么时候用return,什么时候用return false
查看>>
Android开发 MVP模式的规范记录(个人总结)
查看>>
hadoop2.2使用手册2:如何运行自带wordcount
查看>>
ByteArrary(优化数据存储和数据流)
查看>>
Unity3D脚本中文系列教程(十五)
查看>>
从你的全世界路过-孤独的放逐
查看>>
java 实现多线程 3种方式
查看>>
<s:fielderror/>使用
查看>>
python编写启发式算法--在pycharm里面安装numpy就用了两个小时,哭了
查看>>
转:IT部门应如何制定技术路线图
查看>>
使用redis完成搜索/分页/排序
查看>>
【ES】学习4-结构化搜索
查看>>
【leetcode】Symmetric Tree
查看>>
一个夏天
查看>>
extjs如何设置监听
查看>>
Android中文API-ViewStub
查看>>
喜羊羊系列之【设备-驱动 动态载入进内核】
查看>>
Tomcat PK Resin
查看>>
第12周表格
查看>>