我需要读取一个未知类型和大小文件的内容并临时保存它(在某种变量中),以便稍后使用它通过串行端口进行传输。据我了解, TFileStream 是正确的方法。
我确实尝试从http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/TReader_(Delphi)实施以下教程
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Utils;
type
TForm1 = class(TForm)
procedure OnCreate(Sender: TObject);
private
selectedFile: string;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OnCreate(Sender: TObject);
function ReadFileContent(fileName: String): String;
var
FileStream: TFileStream;
Reader: TReader;
tByte :byte;
begin
FileStream := TFileStream.Create(fileName, fmOpenRead);
Reader := TReader.Create(FileStream, $FF);
Reader.ReadListBegin; //I get 'Invalid property Value' error
//in this line raised from the Reader object
while not Reader.EndOfList do
begin
Reader.ReadVar(tByte, 1);
end;
Reader.ReadListEnd;
Reader.Destroy;
FileStream.Destroy;
end;
var
dlg: TOpenDialog;
begin
selectedFile := '';
dlg := TOpenDialog.Create(nil);
try
dlg.InitialDir := '.\';
dlg.Filter := 'All files (*.*)|*.*';
if dlg.Execute(Handle) then
selectedFile := dlg.FileName;
finally
dlg.Free;
end;
if selectedFile <> '' then
ReadFileContent(selectedFile);
end;
end.
为了让 Reader 对象正常工作,我还需要设置什么,或者我应该使用不同的方法吗?