如何从一个文件中读取数据?对Pascal本身熟悉的高手们。。(100分)

2

2ine

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说,我想从任意一个文件中读取数据(可能二进制,也可能文本)。之后分割,通过远程发送再合并。
由于是个小程序,不想引用Classes单元,所以不能用流做。
然而当我去实验Pascal传统的文件操作语句,却发现如此蹩脚。
身边的基础书全是C的,因此我只能看着那一大堆的文件操作函数望洋兴叹。。

我实验过read语句,可是貌似每次只能读1个字符,而不能读一段长度为XX字节的数据。
我希望可以实现这么一个函数:
Function MyRead(F:String;Len:Cardinal):String;
其中F为文件地址,Len为读取的数据长度

下面的合并函数,同样不会写……

基本是这样,各位高手帮帮忙。
用API也可以,但不要用流。
 
BlockRead BlockWrite
 
路过, 支持一下,
用数据流 TStream 来操作啊
介绍个DELPHI博客, 自己去找找看.
http://iinsnian.cnblogs.com
 
文件输入和输出

Append
打开存在的文本文件(用于对文件追加文本)。

AssignFile
指定外部文件的文件名到文件变量。

BlockRead
从无类型文件读出一个或多个记录。

BlockWrite
向无类型文件写入一个或多个记录。

ChDir
改变当前目录。

CloseFile
关闭打开的文件。

Eof
返回文件的文件结束(end-of-file)状态。

Eoln
返回文本文件的行结束(end-of-line)状态。

Erase
删除外部文件。

FilePos
返回类型文件或无类型文件的当前位置。

FileSize
返回文件的当前尺寸;不适用于文本文件。

Flush
刷新输出文本文件的缓冲区。

GetDir
返回指定驱动器的当前目录。

IOResult
返回表示最后一次I/O函数执行状态的整数值。

MkDir
创建子目录。

Read
从文件读出一个或多个值到一个或多个变量。

Readln
在文本文件中执行Read操作并跳至下一行行首。

Rename
对外部文件重命名。

Reset
打开存在的文件。

Rewrite
创建并打开新文件。

RmDir
删除空的子目录。

Seek
从类型文件或无类型文件的当前位置移动到指定的分量;不适用于文本文件。

SeekEof
返回文本文件的文件结束(end-of-file)状态。

SeekEoln
返回文本文件的行结束(end-of-line)状态。

SetTextBuf
指定输入/输出(I/O)缓冲区到文本文件。

Truncate
在类型文件或无类型文件的当前位置截断文件。

Write
向文件写入一个或多个值。

Writeln
在文本文件中执行Write操作然后写入一个行结束(end-of-line)标记。


文件变量就是其类型是文件类型的任何变量。在Object Pascal中,文件类型有三种:类型文件(typed)、文本文件(text)和无类型文件(untyped)。文件类型的声明见文件类型。
在文件变量能被使用之前,必需通过调用AssignFile过程将其与外部文件相关联。一个外部文件通常是一个命名过的磁盘文件,但也可以是一个设备,如键盘或显示器。外部文件存储写入的信息到文件或提供从文件读出的信息。
一旦与外部文件的关联被确定,文件变量就必需被打开并为输入或输出做准备。存在的文件可以由Reset过程打开,新文件可以由Rewrite过程创建并打开。用Reset打开的文本文件是只读的(read-only),用Rewrite或Append打开的文本文件是只写的(write-only)。类型文件和无类型文件都允许读和写,而不管它们是由Reset还是由Rewrite打开的。
每个文件都是分量的线性序列,并且都具有文件的分量类型(或记录类型)。分量从零开始编号。
文件的访问通常是顺序的。也就是说,当用标准过程Read读一个分量或用标准过程Write写一个分量时,当前的文件位置将移动到下一个顺序编号的文件分量。也可以通过标准过程Seek对类型文件和无类型文件进行随机访问,Seek过程移动当前的文件位置到指定的分量。标准函数FilePos和FileSize可以分别用于确定当前的文件位置和当前的文件尺寸。
当一段程序完成对某个文件的处理时,必须使用标准过程CloseFile关闭该文件。文件被关闭后,它与外部文件的关联也被更新。

——每个函数的具体用法请参考Delphi自带的Help
 
好了,结贴。
感谢大家
 
多人接受答案了。
 
顶部