Форум: "Основная";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
ВнизCopyFile Найти похожие ветки
← →
iNew (2003-12-26 07:15) [0]function CopyFile(FileName, DestName: TFileName):Integer;
var
CopyBuffer: Pointer; { buffer for copying }
BytesCopied: Longint;
Source, Dest: Integer; { handles }
const
ChunkSize: Longint = 8192; { copy in 8K chunks }
begin
GetMem(CopyBuffer, ChunkSize); { allocate the buffer }
try
Source := FileOpen(FileName, fmShareDenyWrite); { open source file }
try
Dest := FileCreate(DestName); { create output file; overwrite existing }
if Dest < 0 then
try
repeat
BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize); { read chunk }
if BytesCopied > 0 then { if we read anything... }
FileWrite(Dest, CopyBuffer^, BytesCopied); { ...write chunk }
until BytesCopied < ChunkSize; { until we run out of chunks }
finally
FlushFileBuffers(Dest);
FileClose(Dest); { close the destination file }
end;
finally
FlushFileBuffers(Source);
FileClose(Source); { close the source file }
end;
finally
FreeMem(CopyBuffer, ChunkSize); { free the buffer }
end;
Result:=GetLastError;
end;
Если в эту функцию вызвать например так: CopyFile(C:\from\qwerty.txt,C:\to\)
то Result=0, хотя копирования не произойдет. Как сделать так чтоб если
копирования не произошло то Result был >0
← →
Palladin (2003-12-26 08:26) [1]А чем одноименная системная функция не устраивает?
← →
Dimka Maslov (2003-12-26 08:32) [2]Конечно не произойдёт, раз путь к конечному файлу указан не полностью, руки чтоли отвалятся написать c:\to\qwerty.txt
Если всё-таки отваливаются сделай проверку для DestName и добавляй в него имя из FileName.
Или см. Palladin © (26.12.03 08:26) [1]
← →
Рамиль (2003-12-26 08:35) [3]
> Result:=GetLastError;
Возвращается ошибка от FreeMem.
← →
Anatoly Podgoretsky (2003-12-26 09:12) [4]Palladin © (26.12.03 08:26) [1]
Тем что та рабочая.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c