Другие языки программирования и технологии

TURBOPASCAL 7.0 модуль dos помогите пожалуйста с подпрограммой

Подскажите пожалуйста, как можно создать подпрограмму, копирующую одну директорию в другую (если вообще можно), используя модуль dos
ой, бедолага, как же тебя угораздило на этом антиквариате программировать... такому несчастью грех не помочь.

вот, держи, это, правда, на фрипаскале писалось, но, надеюсь, и на турбопаскале соберётся:

program dircopy;

uses dos;

{ проверяет наличие файла/каталога }
function FileExists(fname :string) : boolean;
var sr : SearchRec;
begin
FindFirst(fname, AnyFile, sr);
FileExists := DosError = 0;
FindClose(sr);
end;

{ копирует файл fsrc в файл fdst }
procedure FileCopy(fsrc, fdst :string);
var Fin, Fout : File;
Buf : Array[1..2048] of byte;
NumRead, NumWritten : Word;
Total : Longint;
begin
Assign(Fin, fsrc);
Assign(Fout,fdst);
Reset (Fin, 1);
Rewrite (Fout, 1);
Total := 0;
Repeat
BlockRead(Fin, Buf, Sizeof(buf), NumRead);
BlockWrite(Fout, Buf, NumRead, NumWritten);
inc(Total, NumRead);
Until (NumRead = 0) or (NumWritten <> NumRead);
close(Fin);
close(Fout);
end;

{ рекурсивно копирует каталог dirsrc в dirdst }
procedure RecursiveDirCopy(dirsrc, dirdst : string);
var sr : SearchRec;
begin
if not(FileExists(dirdst)) then MkDir(dirdst);
FindFirst(dirsrc + '/*', AnyFile, sr);
while DosError = 0 do begin
if (sr.Name <> '.') and (sr.Name <> '..') then begin
if sr.Attr and Directory <> 0 then
RecursiveDirCopy(dirsrc + '/' + sr.Name, dirdst + '/' + sr.Name)
else
FileCopy(dirsrc + '/' + sr.Name, dirdst + '/' + sr.Name);
end;
FindNext(sr);
end;
FindClose(sr);
end;

{ ОСНОВНАЯ ПРОГРАММА }
begin

if ParamCount < 2 then begin
WriteLn('recursively copies directories');
WriteLn('usage:');
WriteLn(' ' + ParamStr(0) + ' < source path > < destination path >');
end
else begin
RecursiveDirCopy(ParamStr(1), ParamStr(2));
WriteLn(ParamStr(1) + ' -> ' + ParamStr(2) + ' ...done.');
end;

end.
Egor =)
Egor =)
57 336
Лучший ответ
Жайнат Акбаров Храни вас Бог, боже