delphi如何读写二进制文件怎么解决
作者:百变鹏仔日期:2023-08-11 19:36:23浏览:6分类:文字大全
二进制是什么 0001 显示就是二进制 它可以转换十进制 1 其实它还是二进制
就算转换十六进制 1 还是二进制,,我们操作的都是二进制
转换过来只是为了看得更清楚 更明朗
二进制 0101 十进制 10 十六进制 A 你可以看ASCII 表
var
fs:TFileStream; //定义fs 为文件流
buf:array[0..1024]of byte; //定义buf 为数组 0至1024
fs:=TFileStream.Create('file',frReadWrite); //初始化文件流 file 就是文件名如c:\1.bmp frReadWrite 给读写的权限
fs.Read(buf,sizeof(buf)); //读文件流到buf sizeof取buf 大小
delphi 中 读取文件
在使用 Delphi 语言进行软件应用开发过程中,常见的一种应用是操纵 excel 进行读取、生成报表的功能开发,在此总结一下常用的三种方法及其优缺点:
一、使用 COM 方法
此方法的原理,是通过 CreateOleOjbect 函数来调用 windows 系统中注册的 Excel 信息,来建立对 Excel.Application 的引用来操作 Excel。示例代码如下:
procedure?ReadExcels;var
i,j:?Integer;begin
exlApp?:=?CreateOleObject('Excel.Application'); exlApp.Visible?:=?False; exlApp.WorkBooks.Open(fsFileName); iRowCount?:=?exlApp.ActiveSheet.UsedRange.Rows.Count; iColCount?:=?exlApp.ActiveSheet.UsedRange.Columns.Count; for?i?:=?2?to?iRowCount?dofor?j:=1?to?icolcount?do?
begin
ShowMessage(exlApp.workbooks[1].sheets[1].cells[i,j]);?end;
end;
优点:可以动态创建,基本不用管软件运行电脑安装的 Excel 版本都能运行;缺点:需要安装 Excel,程序编写过程中缺乏函数、成员等提示,运行时刻出错不易调试。?
二、使用 delphi 自带的 Office 控件
此方法与方法一原理类似,区别在于将 Excel.Application 等封装成控件。示例代码如下:
ExcelApplication1.Workbooks.Open?('c:\test.xls', EmptyParam?,?EmptyParam?,?EmptyParam?,?EmptyParam?, EmptyParam?,?EmptyParam?,?EmptyParam?,?EmptyParam?, EmptyParam?,?EmptyParam?,?EmptyParam?,?EmptyParam?,?0);ExcelApplication1.WorksSheets['Sheet2']?.Activate;
ExcelApplication1.Cells[1,4].Value?:=?'test';
优点:程序编写过程中可以得到函数、成员等提示;缺点:需要安装 Excel,不同的 Excel 版本,需要有针对性的建立组件。?
三、使用第三方控件
XLSReadWrite 作为一个优秀的操作 Excel 的控件,提供了简便快捷读取、写入Excel文件的好办法。示例代码:
var s:string; xls:TXlsReadWrite;begin
Xls.filename:='c:\123.xls'; xls.read; s:=xls.sheets[0].asstring[0,0]; showmessage(s); xls.sheets[0].asstring[0,0]:='新闻界'; xls.savetofile('c:\234.xls');end;
优点:可在本机未安装 excel 的前提下读取 Excel 文件,读、写等操作简便;缺点:第三方控件,需要自行安装 。
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函数不应该有问题,如上所示,是不是其它地方引起的?
鹏仔 微信 15129739599百科狗 baikegou.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
- 上一篇:已经是第一篇了
- 下一篇:已经是最后一篇了
- 搜索