delphi之读写文件的三种方式
一、Tstrings、Tstringlist
procedure TForm1.Button2Click(Sender: TObject);
var strlist: TStringList;
path: string;
begin
path := 'c:\test.txt';
strlist := TStringList.Create;
try
strlist.Add('str=abcd');
strlist.Insert(, 'int=123'); // key=value 类似键值对模式
strlist.SaveToFile(path);
finally
strlist.Free; //释放
end;
end; procedure TForm1.Button4Click(Sender: TObject);
var strlist: TStringList;
path: string;
begin
path := 'c:\test.txt';
strlist := TStringList.Create;
try
strlist.LoadFromFile(path);
mmo1.Lines.Add(strlist.Values['str']); //输出:abcd
mmo1.lines.Add(strlist.ValueFromIndex[]);// 输出:123
//strlist还有很多好用的功能,可以去查一下
finally
strlist.Free; //释放
end;
end;
二、直接读取
三、流 (注:不能使用string存储数据,string是指针存的是地址,写入文件的数据是无效的)
TMemoryStream
procedure TForm1.Button2Click(Sender: TObject);
var m: TMemoryStream;
tr:tr_record;
path:string;
begin
path:='c:\test.txt';
m := TMemoryStream.Create;
try
tr.str:='abcd';
tr.int:=;
m.Write(tr,SizeOf(tr));// 将tr数据写入流
m.SaveToFile(path);//流存入文本
m.Clear; //清除流的数据
FillChar(tr,SizeOf(tr),);//初始化结构体数据 m.LoadFromFile(path);//从文本中读取数据,用内存流装
m.Position:=; //将指针位置置为0(如果装载了多条数据,可以通过改变位置读取后面的,默认为0)
m.Read(tr,SizeOf(tr));//把数据装到结构体里
mmo1.Lines.Add(tr.str);//显示结果为:abcd
//第二种方式
Move(m.memory^,tr,SizeOf(tr));//跟positon没关系,结果相同
finally
m.Free;//释放内存流
end;
end;TFileStream
procedure TForm1.Button2Click(Sender: TObject);
var m: TFileStream;
tr: tr_record;
path: string;
begin
path := 'c:\test.txt';
m := TFileStream.Create(path, fmCreate);
try
tr.str := 'abcd';
tr.int := ; m.Write(tr, SizeOf(tr)); // 将tr数据写入流 finally
m.Free; //释放内存流
end;
end; procedure TForm1.Button4Click(Sender: TObject);
var m: TFileStream;
tr: tr_record;
path: string;
begin
path := 'c:\test.txt';
m := TFileStream.Create(path, fmOpenRead);
try
m.Read(tr,SizeOf(tr));
mmo1.Lines.Add(tr.str); //结果为:abcd
finally
m.Free; //释放内存流
end;
end;
delphi之读写文件的三种方式的更多相关文章
- 前端js,css文件合并三种方式,bat命令
前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...
- android中解析文件的三种方式
android中解析文件的三种方式 好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...
- 转 Velocity中加载vm文件的三种方式
Velocity中加载vm文件的三种方式 velocitypropertiespath Velocity中加载vm文件的三种方式: 方式一:加载classpath目录下的vm文件 Prope ...
- Velocity中加载vm文件的三种方式
Velocity中加载vm文件的三种方式: a. 加载classpath目录下的vm文件 /** * 初始化Velocity引擎 * --VelocityEngine是单例模式,线程安全 * @th ...
- 解析Xml文件的三种方式及其特点
解析Xml文件的三种方式 1.Sax解析(simple api for xml) 使用流式处理的方式,它并不记录所读内容的相关信息.它是一种以事件为驱动的XML API,解析速度快,占用内存少.使用 ...
- Java读写文件的几种方式
自工作以后好久没有整理Java的基础知识了.趁有时间,整理一下Java文件操作的几种方式.无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外.Java读写文件一般是通过字节.字符和行 ...
- Python读写文件的几种方式
一.pandas pandas模块是数据分析的大杀器,它使得对于文件相关的操作变得简单. 看一下它的简单使用 import pandas as pd # 读取 df = pd.read_csv('al ...
- 【spring Boot】spring boot获取资源文件的三种方式【两种情况下】
首先声明一点,springboot获取资源文件,需要看是 1>从spring boot默认的application.properties资源文件中获取 2>还是从自定义的资源文件中获取 带 ...
- Ajax上传数据和上传文件(三种方式)
Ajax向后端发送数据可以有三种方式:原生Ajax方式,jQuery Ajax方式,iframe+form 方式(伪造Ajax方式) <!DOCTYPE html> <html la ...
随机推荐
- 用flask实现一个用户登录的功能
#!/usr/bin/python #coding=utf-8 from flask import Flask,session,redirect,url_for,request app=Flask(_ ...
- SpringAOP的应用实例与总结
一:AOP的背景 面试的时候面试官让我解释一下什么是AOP,当时不懂,在路上就查了,AOP:面向切面的编程技术,困惑了,JAVA是OOP:面向对象的编程技术.那么自己就立刻查了几个为题:1.什么是面向 ...
- CentOS7基础建站指南(笔记)
由于前段时间腾讯云打折,所以买了一台小服务器,想着以后写几个小网站,博客什么的,但是一开始就遇到了难题,大概就是Linux服务器的配置问题,比如如何假设服务器,配置非root用户,配置服务器数据的非r ...
- java简单工厂设计模式
一.基本定义 /* *简单工厂设计模式: *文字描述理解: * 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式. * 通过专门定义一个类来负责创建其它类的实例,被创建的实例通常 * 都具有共同 ...
- linux C API连接并查询mysql5.7.9
开发环境: ubuntu16.04 mysql5.7.9 原生C API VIM 配置远程连接 配置mysql允许远程连接的方法默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/e ...
- [ZJOI2019]Minimax搜索
先求出根节点的权值\(w\).根据套路,我们对于每个\(k\),计算\(w(s)\leq k\)的方案数,差分得到答案.为了方便,接下来考虑计算概率而不是方案数. 可以发现,对于一个给定的有解的子集, ...
- (四)Audio子系统之AudioRecord.read
在上一篇文章<(三)Audio子系统之AudioRecord.startRecording>中已经介绍了AudioRecord如何开始录制音频,接下来,继续分析AudioRecord方 ...
- [转] Java中Comparator进行对象排序
[From] https://blog.51cto.com/thinklili/2063244 Java在8后引入了lambda表达式和流,使得排序方法有了变化 class User { int id ...
- Linux - iptables firewalld
目录 iptables firewalld iptables 1.iptables 的基本使用 启动: service start iptabls 关闭: service stopiptabls 查看 ...
- dotnet core webapi +vue 搭建前后端完全分离web架构(一)
架构 服务端采用 dotnet core webapi 前端采用: Vue + router +elementUI+axios 问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问.前后端可 ...