Delphi TextFile读取文本文件
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
p rivate
{ P rivate declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm}
//{$APPTYPE CONSOLE} procedure TForm1.Button1Click(Sender: TObject);
var
txt:TextFile;
s:string;
path:string;
begin
path:=ExtractFilePath(Application.ExeName);
AssignFile(txt,path+'\test.txt');
//Writeln(path+'\test.txt');
Reset(txt); //读打开文件,文件指针移到首
Memo1.Clear;
while not Eof(txt) do
begin
Readln(txt,s);
Memo1.Lines.Add(s);
end;
CloseFile(txt);
end; procedure TForm1.Button2Click(Sender: TObject);
var
txt:TextFile;
s:string;
path:string;
begin
path:=ExtractFilePath(Application.ExeName);
Memo1.Clear;
AssignFile(txt,path+'\test.txt');
Append(txt); //写打开文件,指针到尾
Writeln(txt,'这是猪悟能写入的文本'); //写入一行带行结束标志
CloseFile(txt); end; procedure TForm1.Button3Click(Sender: TObject);
var
txt:TextFile;
s,path:string;
begin
path:=ExtractFilePath(Application.ExeName);
Memo1.Clear;
AssignFile(txt,path+'\test.txt');
Reset(txt); Readln(txt,s);
//Memo1.Lines.Add(IntToStr(FileSize(txt)));
Memo1.Lines.Add(s);
CloseFile(txt);
end; end.
procedure TForm1.Button1Click(Sender: TObject); var MyFile:TMemoryStream; Filebuf: array[..] of char; //这里声明的是静态数组 a:string; Begin If opendialog1.Execute then begin MyFile:=TMemoryStream.Create;//创建流 MyFile.LoadFromFile(opendialog1.FileName); MyFile.ReadBuffer(Filebuf,);//读取TXT文件前10个字符 a:= strpas(Filebuf) //将数组转化成为字符串 Form1.canvas.Textout(,,a); //在显示区域上显示字符串 FreeAndNil(MyFile);//释放流 end; end;
以上范例在窗体Form1上显示的字符串就是打开TXT文本的前10个字符,但是如何得到文本的所有数据呢?这里就需要用到动态数组。动态数组在流中 的应用是个难点,因为Delphi中的静态数组是在运行前就已经将内存空间分配好,所以它的变量地址就是数组的第一维地址,即没有描述部份,故它的 sizeof为1个字节,而动态数组是在运行期间动态分配一个内存块,所以它的变量地址部分需要一个描述部分,故它的sizeof为四个字节,用于存放描 述表,所以在用 Readbuffer方法时,需要采用数组的第一维地址为起始地址,才不会导致内存溢出。下面这个范例就是用流来读取TXT文件中的全部数据。
procedure TForm1.Button1Click(Sender: TObject); var MyFile:TMemoryStream; Filebuf: array of pchar; //这里声明的是动态数组 iLen:Int64; Begin If opendialog1.Execute then begin iLen:=; MyFile:=TMemoryStream.Create; MyFile.LoadFromFile(opendialog1.FileName); iLen:=MyFile.Size;//获得指定TXT文件的大小 SetLength(FileBuf,iLen);//设置动态数组的长度为TXT文件的大小 MyFile.ReadBuffer(FileBuf[],iLen);//读取TXT文件全部数据 Form1.canvas.Textout(,,string(FileBuf)); //在显示区域上显示字符串; FreeAndNil(MyFile); end; end;
以上的范例可在窗体Form1上显示指定TXT文件的全部数据。 现在让我们来研究一下如何从TXT文本中的指定位置读取一定量的数据,这里用到的函数就是seek(offset:integer,origin:word)integer; 它的参数所代表的意义: offset是偏移量; 而origin是计算方式 ,下面三个就是origin的值,soFromBeginning是从文件头开始计算,soFromCurrent是从当前位置开始计算,而soFromEnd Offset是从最后位置开始计算。 下面这个范例就是从TXT文本中的指定位置取一定量的数据 procedure TForm1.Button1Click(Sender: TObject); var MyFile:TMemoryStream; Filebuf: array of pchar; //这里声明的是动态数组 iLen:Int64; Begin If opendialog1.Execute then begin iLen:=; MyFile:=TMemoryStream.Create; MyFile.LoadFromFile(opendialog1.FileName); iLen:=MyFile.Size; SetLength(FileBuf,);//设置动态数组的长度; Myfile.Seek(, soFromBeginning);//从文件头开始计算到1024个字节处 MyFile.ReadBuffer(FileBuf[],);//从seek设置的当前位置往后读取1024字节 Form1.canvas.Textout(,,string(FileBuf)); //在窗体上显示; FreeAndNil(MyFile); end; end
Delphi TextFile读取文本文件的更多相关文章
- Delphi 快速读取TXT 指定行的数据
http://blog.csdn.net/MichaelJScofield/article/details/41869785 Delphi 快速读取TXT 指定行的数据 分类:Delphi个人挫品 ( ...
- python读取文本文件
1. 读取文本文件 代码: f = open('test.txt', 'r') print f.read() f.seek(0) print f.read(14) f.seek(0) print f. ...
- (转) Java读取文本文件中文乱码问题
http://blog.csdn.net/greenqingqingws/article/details/7395213 最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中 ...
- DELPHI下读取与设置系统时钟
在DELPHI下读取与设置系统时钟 很多朋友都想在自己的程序中显示系统时间 这在DELPHI中十分容易 利用DateToStr(Date)及TimeToStr(Time)函数即可实现. 二者的函数原型 ...
- Java读取文本文件中文乱码问题 .转载
最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...
- Java基础知识强化之网络编程笔记10:TCP之客户端读取文本文件服务器控制台输出
1. TCP之客户端读取文本文件服务器控制台输出 (1)客户端:(发送数据到服务端) package cn.itcast_10; import java.io.BufferedReader; impo ...
- Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值
Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值: Node.Values[wiNodeLevel.ItemIndex]://值 Node.Texts[ ...
- StreamReader 读取文本文件乱码问题
解决读取文本文件乱码问题.我采取的是读取前先判断文本文件格式. StreamReader sr = new StreamReader(fullfileName, GetFileEncodeType(f ...
- python读取文本文件数据
本文要点刚要: (一)读文本文件格式的数据函数:read_csv,read_table 1.读不同分隔符的文本文件,用参数sep 2.读无字段名(表头)的文本文件 ,用参数names 3.为文本文件制 ...
随机推荐
- Spring框架各Jar包说明
来源:https://blog.csdn.net/weisong530624687/article/details/50888094 前言: (1)spring.jar 是包含有完整发布模块的单个ja ...
- Python模块学习之xlrd、xlutils、openpyxl 读写/追加Excel文件
Python操作Excel的四个工具包 xlrd: 对Excel进行读相关操作,注意只能操作 .xls xlwt: 对Excel进行写相关操作,注意只能操作 .xls,且只能创建一个全新的Excel然 ...
- DELPHI之全局变量和局部变量
http://www.cnblogs.com/Stwo/archive/2011/07/11/2102816.html DELPHI之全局变量和局部变量 全局变量: 如果我们在应用程序一个单元中的in ...
- Windows 下手工搭建 LNMP 环境
参考资料 如果想方便,可以直接使用集成的 LNMP 环境(例如 PHPStudy). 下载 PHP 下载地址:https://windows.php.net/download 根据你的系统选择 32 ...
- Linux 初始化系统 systemd - journald 日志
journalctl 中文手册 archlinux - journal systemd-journald 用于检索 systemd 的日志,是 systemd 自带的日志系统. 1. systemd- ...
- 简单入门爬斗鱼颜值区妹子照片 v1.1
这是个比较简单的入门爬虫.基于python3. urllib,urllib2,python3中用urllib.request代替,使用方法基本一致. #python3 import urllib.re ...
- python实现获取文件的绝对路径
实现代码如下: #获取文件的绝对路径import osclass GetPath: def get_path(self,path): r=os.path.abspath(path) return ri ...
- 【HANA系列】SAP HANA的特点总结
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA的特点总结 ...
- Git009--分支管理&创建与合并分支
Git--分支管理&创建与合并分支 一.分支管理 本文来自于:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578 ...
- Pikachu漏洞练习平台实验——RCE(五)
1.概述 RCE(Remote Command/Code Execute) 给攻击者向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行一般出现这种漏洞,是因为应用系统从设计 ...