为什么TFileStream的WriteBuffer方法要写定长的Byte数组数据才正确?
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
fs: TFileStream;
bf: array of byte;
begin
SetLength(b,10);
bf[0] := $FF;
bf[1] := $FF;
Bf[2] := $FF; fs := TFileStream.Create('C:\aaa.data',fmCreate);
fs.WriteBuffer(b,10);
fs.Free;
fs := Nil;
end;写出的文件内容不正确.而将bf: array of byte动态数组改成静态的bf: array[0..9] of byte就正常.若一定要写动态的应该如何处理?
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
fs: TFileStream;
bf: array of byte;
begin
SetLength(b,10);
bf[0] := $FF;
bf[1] := $FF;
Bf[2] := $FF; fs := TFileStream.Create('C:\aaa.data',fmCreate);
fs.WriteBuffer(b,10);
fs.Free;
fs := Nil;
end;写出的文件内容不正确.而将bf: array of byte动态数组改成静态的bf: array[0..9] of byte就正常.若一定要写动态的应该如何处理?
解决方案 »
- 一个函数在程序里执行的时候返回值不稳定,高手进,内详
- 不同网段 连接问题
- DENSO数据扫描器软件!
- 如何修改windows应用程序的标题和菜单??????!!!!!!在线等待,谢谢!!
- 在Delphi中调用API函数需要包含什么单元文件(EexcPragram,在线等待)
- 如何取得网页超级链接所指的页面上的所有文字?
- 有谁知道ADO控件的详细用法?高价收购
- 再次问昨天的问题?
- Rmb请朋友做个邮件收发系统!
- 一个有趣的问题,拜托众高手出手相助,谢谢!!!!!
- http secure socket is not supported???
- 有能提供delphi7中Rave Report 5 的使用教程?
var
fs: TFileStream;
bf: array of byte;
begin
SetLength(bf,3);
bf[0] := $FF;
bf[1] := $FF;
Bf[2] := $FF; fs := TFileStream.Create('C:\aaa.data',fmCreate);
fs.WriteBuffer(bf[0],3);
FreeAndNil(fs);
end;
var
Idx: integer;
StrTmp: string;
Count: word;
begin
StrTmp := '';
Count := Length(Bytes);
for Idx := 0 to Pred(Count) do
StrTmp := StrTmp + IntToHex(Bytes[Idx],2) + ' ';
Result := StrTmp;
end;procedure TForm1.Button1Click(Sender: TObject);
var
Buffer: array of byte;
Stream: TFileStream;
StrBuf: string;
begin
SetLength(Buffer, 10);
Buffer[0] := $FF;
Buffer[1] := $FF;
Buffer[2] := $FF;
Stream := TFileStream.Create('C:\WHAT.TXT', fmCreate);
StrBuf := BytesToString(Buffer);
Stream.WriteBuffer(Pointer(StrBuf)^, Length(StrBuf));
FreeAndNil(Stream);
end;结果 = FF FF FF 00 00 00 00 00 00 00