wql,您回答我的问题我还有疑问,继续加分!(50分)

  • 主题发起人 主题发起人 rejoise
  • 开始时间 开始时间
R

rejoise

Unregistered / Unconfirmed
GUEST, unregistred user!
wql,复制文件,我有几个问题继续请教!继续加分!!!
正确的程序应该为:
//以下delphi的help document
{$I-} // 这一句为什么要加,什么意思?
Procedure CopyErrorFile();
var
FromF, ToF: file;
NumRead, NumWritten: Integer;
Buf: array[1..2048] of Char;
begin
if OpenDialog1.Execute then
begin
AssignFile(FromF, OpenDialog1.FileName);
Reset(FromF, 1); { Record size = 1 } //Reset这句什么意思?
if SaveDialog1.Execute then
begin
AssignFile(ToF, SaveDialog1.FileName);

Rewrite(ToF, 1); { Record size = 1 } //为何用rewrite不用reset?
Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF))
+ ' bytes...');
repeat
BlockRead(FromF, Buf, SizeOf(Buf));
If (IOResult<>0) Then Asm NOP End; // Asm NOP End是何意?
BlockWrite(ToF, Buf, SizeOf(Buf));
If (IOResult<>0) Then Asm NOP End;
until (Eof(FromF));
CloseFile(FromF);
CloseFile(ToF);
end;
end;
另外,如果源文件是只读文件,拷贝出来只是2KB文件,为什么,该怎么做?
 
{I-}是让程序忽略一般的I/O ERROR
RESET(FILE,1)这个为了完成你一个一个字符的复制
1的意思是把每一个记录记为长度即1一个字符。
REWRITE是为目标文件置为只写。
ASM NOP END 这句我也不太明白!好像是如果错误就结束。我只是猜的。
 
接受答案了.
 
后退
顶部