delphi 中 读取文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 中 读取文件相关的知识,希望对你有一定的参考价值。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Name: TStaticText;
Age: TStaticText;
Salary: TStaticText;
Name1: TStaticText;
Age1: TStaticText;
Salary1: TStaticText;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Open: TButton;
write: TButton;
open1: TButton;
read: TButton;
Button5: TButton;
procedure OpenClick(Sender: TObject);
procedure writeClick(Sender: TObject);
procedure open1Click(Sender: TObject);
procedure readClick(Sender: TObject);
private
Private declarations
public
Public declarations
end;

var
Form1: TForm1;

implementation

$R *.dfm
type
TEmpRec=record
ename:string[10];
age:integer;
sal:real;
end;
var
emprec: TEmprec;
EmpFile: file of TEmprec;
last: longint;
procedure TForm1.OpenClick(Sender: TObject);
begin
try
AssignFile(EmpFile,'d:\emp.$$$');
reset(EmpFile);
last := filesize(EmpFile);
seek(EmpFile,last);
except
Rewrite(EmpFile);
end;
end;
procedure TForm1.open1Click(Sender: TObject);
begin
assignfile(empfile,'d:\emp.$$$');
reset(empfile);
end;
procedure TForm1.readClick(Sender: TObject);
begin
if not eof(empfile) then
begin
read(empfile,emprec);
edit4.text:=emprec.ename;
edit5.Text:=inttostr(emprec.age);
edit6.Text:=inttostr(emprec.sal);
end;
end;

procedure TForm1.writeClick(Sender: TObject);
begin
emprec.ename:=edit1.Text;
emprec.age:=strtoint(edit2.Text);
emprec.sal:=strtoint(edit3.Text);
write(empfile,emprec);
edit1.Clear;
edit2.Clear;
edit3.Clear;
end;

end.
read(empfile,emprec);//这里编译通不过 错误提示:1.[DCC Error] Unit1.pas(74): E2035 Not enough actual parameters 2.[DCC Error] readfile.pas(74): E2014 Statement expected, but expression of type 'TButton' found这里是不是因为没找到read()这个方法,请问怎么解决。 edit4.text:=emprec.ename;
edit5.Text:=inttostr(emprec.age);
edit6.Text:=inttostr(emprec.sal);// 这个问题已解决,谢谢各位!
end;
end;

procedure TForm1.writeClick(Sender: TObject);
begin
emprec.ename:=edit1.Text;
emprec.age:=strtoint(edit2.Text);
emprec.sal:=strtoint(edit3.Text);
write(empfile,emprec);//这里也是
edit1.Clear;
edit2.Clear;
edit3.Clear;

参考技术A type
TFileStruct = record
name: string[20];
age: Integer;
salary: Real;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
tf: File of TFileStruct;
tfsTmp: TFileStruct;
begin
tfsTmp.name:= 'Hello World';
tfsTmp.age:= 18;
tfsTmp.salary:= 1000.00;

AssignFile(tf, '123.txt');
Rewrite(tf);
Write(tf, tfsTmp);
CloseFile(tf);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
tf: file of TFileStruct;
tfsTmp: TFileStruct;
begin
AssignFile(tf, '123.txt');
Reset(tf);
Read(tf, tfsTmp);
CloseFile(tf);

Memo1.Lines.Add(Format('%s', [tfsTmp.name]));
Memo1.Lines.Add(Format('%d', [tfsTmp.age]));
Memo1.Lines.Add(Format('%m', [tfsTmp.salary]));
end;

按照你说的方法测试了一下,read函数不应该有问题,如上所示,是不是其它地方引起的?本回答被提问者采纳
参考技术B edit6.Text:=inttostr(emprec.sal);// [DCC Error] Unit1.pas(77): E2250 There is no overloaded version of 'IntToStr' that can be called with these arguments
前面的看不明白怎么回事,这个是你定义错了撒
定义sal是real,怎么能用 inttostr呢?追问

这个转型的问题已经解决,谢谢!

参考技术C [DCC Error] Unit1.pas(74): E2035 Not enough actual parameters
参数不够read(empfile,emprec) 应该不是两个参数
;// [DCC Error] Unit1.pas(77): E2250 There is no overloaded version of 'IntToStr' that can be called with these arguments
type
TEmpRec=record
ename:string[10];
age:integer;
sal:real;
end;
你自己定义的real 不能用strtoin追问

谢谢!我找个帮助文档查查。

参考技术D Delphi同Object Pascal一样支持三种文件类型,即:文本文件、记录文件、无类型文件。

文本文件
文本文件类型的变量用如下方法声明:
var
TextFileVar: Text ;
文本文件是以行为单位进行读、写操作的。由于每一行长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。而且文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。

记录文件
记录文件是一种操作更为灵活的文件类型。它允许同时为读和写打开,而且由于记录文件中每条记录的长度固定,所以可随机存取。记录文件的类型变量可如下声明:
var
RecordFileVar: file of RecordType;
RecordType是一个自定义的记录类型。

无类型文件
无类型文件提供了底层的I/O通道,可用于存取可变长度记录的文件。经常用于文件的复制操作中。由于Delphi提供了更好的方法,所以无类型文件很少使用。
第5个回答  2012-02-08 请问,你想问什么?

delphi中如何读取文件的属性

参考技术A

用API函数GetFileAttributes()

以上是关于delphi 中 读取文件的主要内容,如果未能解决你的问题,请参考以下文章

delphi中,如何读取一个目录中的所有文件?在线等……

怎么在delphi中读取Excel数据 转

怎么在delphi中读取Excel数据 转

delphi读取文本问题

delphi中怎么读取ini文件第2行

delphi怎么读取iDispatch类型的记录集,在线等