Другие языки программирования и технологии
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.
вот, держи, это, правда, на фрипаскале писалось, но, надеюсь, и на турбопаскале соберётся:
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.
Жайнат Акбаров
Храни вас Бог, боже
Похожие вопросы
- Очень нужна информация о системных файлах DOS. Помогите, пожалуйста.
- Народ, пожалуйста, помогите в паскалеABC с модулем TIMERS... Помогите
- Turbo Pascal 7.0 помогите пожалуйста!!!
- Помогите с Pascal 7.0!Кто чем может!
- помогите пожалуйста!!3.Напишите процедуру Input(A) для заполнения массива целых чисел A размером 10 x 10: 0 0 0 ...0 0
- Для тех кто разбирается в Turbo Pascal 7.0 помогите плиз))))
- turbo pascal 7.0 Определить принадлежность к области точек с заданными координатами!!!
- кто разбирается в паскале??У мя турбо паскаль 7.0 помогите!!!
- Вопросы по OC Windows 7, помогите пожалуйста :)
- Помогите написать программу! Турбо Паскаль 7.0