API 的 COPY 功能的问题? (50分)(50分)

  • 主题发起人 主题发起人 荒木
  • 开始时间 开始时间

荒木

Unregistered / Unconfirmed
GUEST, unregistred user!

用API实现文件COPY功能,代码如下(照书抄的)
procedure copyfile(fromfilename,tofilename:string);
var
xyz:boolean;
fromfile,tofile : file;
begin

assignfile(fromfile,fromfilename);
assignfile(tofile,tofilename);
reset(fromfile);
try
rewrite(tofile);
try
if lzcopyf(tfilerec(fromfile).handle,tfilerec(tofile).handle)<0
then
raise einouterror.Create('file copy error')
finally
closefile(tofile);
end;
finally
closefile(fromfile);
end;

end;

编译后错误指使如下:
[error] copyunit.pas(41): Undeclared identifier: 'lzcopy'
[Warning] copyunit.pas(42): Comparing signed and unsigned types - widened both operands
[Fatal Error] copy.dpr(5): Could not compile used unit 'copyunit.pas'
是书错了?错在那里?是不是LZCOPY函数不对?HELP ME!!!
 
LZCOPY 是在哪里定义的?没有定义啊
 
以下是LZCopy API函数的帮助
The LZCopy function copies a source file to a destination file. If the source file is compressed with the Microsoft File Compression Utility (COMPRESS.EXE), this function creates a decompressed destination file. If the source file is not compressed, this function duplicates the original file.
LONG LZCopy(
INT hfSource, // LZ file handle identifying source file
INT hfDest // LZ file handle identifying destination file
);

Parameters
hfSource
Identifies the source file.
hfDest
Identifies the destination file.

Return Values
If the function succeeds, the return value specifies the size, in bytes, of the destination file.
If the function fails, the return value is an LZERROR_* code. These codes have values less than zero. Note that LZCopy calls neither SetLastError nor SetLastErrorEx;
thus, its failuredo
es not affect a thread's last-error code.
Here is a list of the LZERROR_* codes that LZCopy can return upon failure:
Value Meaning
LZERROR_BADINHANDLE The handle identifying the source file is not valid. The file cannot be read.
LZERROR_BADOUTHANDLE The handle identifying the destination file is not valid. The file cannot be written.
LZERROR_GLOBALLOC The maximum number of open compressed files has been exceeded or local memory cannot be allocated.
LZERROR_GLOBLOCK The LZ file handle cannot be lockeddo
wn.
LZERROR_READ The source file format is not valid.

Remarks
The handles identifying the source and destination files must be retrieved by calling the LZInit or
LZOpenFile function.
The preferred function to use for copying files is LZCopy. The CopyLZFile function is provided for compatibility with 16-bit versions of Windows.
If the function succeeds, the file identified by the hfDest parameter is always uncompressed.
See Also
CopyLZFile, LZInit, LZOpenFile
我查了一下,LZCopy 在LZExpand.pas中定义,因此要uses LZExpand
 
to 小刚:
"uses lzexpand"
trydo
it ,very good ,thank you !!!
 
接受答案了.
 
后退
顶部