VarsrcHandle, destHandle: Integer;srcBuf, destBuf: TOFStruct; srcHandle := LZOpenFile( f_source, srcBuf,OF_READ or OF_SHARE_DENY_NONE );If srcHandle = -1 ThenCopyFailedElse BegindestHandle := LZOpenFile( f_target, destBuf,OF_CREATE or OF_SHARE_EXCLUSIVE );If destHandle = -1 ThenCopyFailedElse BeginIf LZCopy( srcHandle, destHandle ) < 0 ThenCopyFailed;LZClose( destHandle );End; { Else }LZClose( srcHandle );End; { Else } |
f_source и f_target - указатели на терминированные нулем строки (PChars) с именем исходного и целевого файла. CopyFailed - просто процедура для вывода сообщения об ошибке, создайте ее сами.
Если вам необходимо скопировать сразу несколько файлов, эффективнее использовать последовательность:
|
LZStart;For i:=1 to numSourcefiles Do BeginscrHandle := _lopen( имя исходного файла ... );targetHandle := _lcreat( имя целевого файла... );CopyLZFile( scrHandle, targetHandle );_lclose( srcHandle );_lclose( targetHandle );End;LZDone;(* добавьте проверку на ошибку в каждом шаге! *) |
Все имена файлов должны терминироваться нулем, не используйте паскалевские строки! Самый простой путь для добавления нуля в конец строки - добавление символа #0 и передача адреса первого символа строки, например (@str[1]).
Varsource: string;sourceHandle: Word; ....source:= 'a:\anyfile.ext';....source := source+#0;sourceHandle := _lopen( @source[1], READ or OF_SHARE_DENY_NONE ); |
[000373]