熟悉流操作的进来帮小弟我看下,代码异常在哪里
熟悉流操作的进来帮我看下,代码错误在哪里
大家帮我看下这段代码错误在哪里,莫名其妙的
------解决方案--------------------
最近缺分用,说说错误原因吧:
var
stream,Stream2:TStream;
Buffer: Pointer;
size:integer;
fn:String;
begin
fn:='001.txt';
if FileExists(fn) then
begin
Stream := TFileStream.Create(fn, fmOpenRead);
size:=stream.Size; //流的大小是固定的
inc(size); //然后您让它递增变大
getmem(buffer,size);
stream.Position := 0;
stream.ReadBuffer(Buffer^,Size); //当然读取就出错了
.....
end
读取文本可以简化成:
var
MS: TMemoryStream; //内存流
SR: String;
begin
SR := '001.txt';
if FileExists(SR) then
begin
MS := TMemoryStream.Create; //创建流
MS.LoadFromFile(SR); //加载
SR := '';
SetLength(SR, MS.Size); //设置大小
MS.Read(SR[1], Length(SR)); //读取
//然后您自己使用SR
MS.Free; //释放
end;
end;
大家帮我看下这段代码错误在哪里,莫名其妙的
var
stream,Stream2:TStream;
Buffer: Pointer;
size:integer;
fn:String;
begin
fn:='001.txt';
if FileExists(fn) then
begin
Stream := TFileStream.Create(fn, fmOpenRead);
size:=stream.Size;
inc(size);
getmem(buffer,size);
stream.Position := 0;
stream.ReadBuffer(Buffer^,Size); //这里报错:Stream read error 要怎么修改才对啊?
.....
end
------解决方案--------------------
最近缺分用,说说错误原因吧:
var
stream,Stream2:TStream;
Buffer: Pointer;
size:integer;
fn:String;
begin
fn:='001.txt';
if FileExists(fn) then
begin
Stream := TFileStream.Create(fn, fmOpenRead);
size:=stream.Size; //流的大小是固定的
inc(size); //然后您让它递增变大
getmem(buffer,size);
stream.Position := 0;
stream.ReadBuffer(Buffer^,Size); //当然读取就出错了
.....
end
读取文本可以简化成:
var
MS: TMemoryStream; //内存流
SR: String;
begin
SR := '001.txt';
if FileExists(SR) then
begin
MS := TMemoryStream.Create; //创建流
MS.LoadFromFile(SR); //加载
SR := '';
SetLength(SR, MS.Size); //设置大小
MS.Read(SR[1], Length(SR)); //读取
//然后您自己使用SR
MS.Free; //释放
end;
end;