EMB*_*osa 2 delphi file-io winapi
我试图衡量效果FILE_FLAG_WRITE_THROUGH和FILE_FLAG_NO_BUFFERING对写入的文件中的序列,如要求另一个问题.但我发现我不能用FILE_FLAG_NO_BUFFERINGset 写一个文件.
当我使用它时,Delphi返回EWriteError消息stream read error.
使用的代码如下:
procedure TForm1.btn1Click(Sender: TObject);
var
fsFSArquivoAAC: TFileStream;
L, lastErr: Cardinal;
R: WideString;
hn: THandle;
begin
hn := Windows.CreateFile( PChar('TesteAAC.AAC2'),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL or FILE_FLAG_WRITE_THROUGH or FILE_FLAG_NO_BUFFERING, 0);
lastErr := GetLastError();
if (lastErr <> ERROR_SUCCESS) then
begin
if (lastErr <> ERROR_ALREADY_EXISTS ) then
begin
MessageDlg('Whoops, something went wrong with CreateFile!',
mtError, [mbOK], 0);
end
else
begin
SetLastError(ERROR_SUCCESS);
end;
end;
fsFSArquivoAAC := TFileStream.Create( hn );
try
R := 'BatatinhaquandoNasceEspalharamapelochao';
// write WideString
L := Length(R);
fsFSArquivoAAC.WriteBuffer(L, SizeOf(integer));
if L > 0 then
fsFSArquivoAAC.WriteBuffer(R[1], L * SizeOf(WideChar));
finally
fsFSArquivoAAC.Free;
end;
Run Code Online (Sandbox Code Playgroud)
如果您评论FILE_FLAG_NO_BUFFERING代码有效.为什么?
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |