Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spo_2 / other / LAB

.PAS
Скачиваний:
18
Добавлен:
27.05.2013
Размер:
5.77 Кб
Скачать
Uses Crt,Modul;
Var n,i,j,s:word;
File1,File2:word;
FAT16:array[1..4608] of word;
BadSec:array[1..2880] of word;
l:boolean;
Label 1,2,3;
Begin
ReadSector(Disk,1,9,FAT12); { —Ёв Ґ¬ FAT ¤ЁбЄ  }
if RError=0 then VFAT:=true;{ …б«Ё ­Ґв ®иЁЎ®Є, в® ¤Ґ« Ґ¬ }
{ ЇҐаў®Ґ Ё ўв®а®Ґ § ¤ ­ЁҐ ¤®бвгЇ­л¬ }
ReadDir; { —Ёв Ґ¬ Є®а­Ґў®© Є в «®Ј ¤ЁбЄ  }
2:clrscr; { ЋзЁбвЄ  нЄа ­  }
SetWin(30,1,33,6,$1E,'‡ ¤ ­ЁҐ:'); { \ ‚лў®¤ ®Є­  }
gotoxy(30,23);
if not VFAT then write('‚ FAT ®иЁЎЄ  !!!');
KursorZad; { / б § ¤ ­Ёп¬Ё }
KursorFile; { ‚лў®¤ ®Є­  Є®а­Ґў®Ј® Є в «®Ј  }
1:EnterZad; { ‚лЎ®а § ¤ ­Ёп }
case Zadanie of
1:begin
{ ‡ ¤ ­ЁҐ - Ї®ЁбЄ бЄ«Ґ­­ле д ©«®ў }
if (Count=0) or (not VFAT) then goto 1;
textattr:=$07;
clrscr;
fillchar(FAT16,4608,0);
for i:=1 to Count do
begin
s:=Dir[Indexs[i]].FirstC; { ЏҐаҐе®¤ Є б«Ґ¤.ᥪв®аг }
while s<$0FF8 do
if FAT16[s]<>0 then
begin
writeln;
write('ЋЎ­ а㦥­л бЄ«ҐҐ­­лҐ д ©«л !!! ');
PutFName(Dir[Indexs[FindFile(s)]]);
write(' Ё ');
PutFName(Dir[Indexs[i]]);
writeln;
writeln('Press any key ...');
repeat until keypressed and(readkey<>#0);
s:=$0FFF; { „«п ўл室  Ё§ жЁЄ«  }
end else
begin
FAT16[s]:=ElemFAT(s);
s:=ElemFAT(s);
end;
end;
writeln('Љ®­Ґж Їа®ўҐаЄЁ.');
writeln('Press any key ...');
repeat until keypressed and(readkey<>#0);
goto 2;
end;
2:begin
{ ‡ ¤ ­ЁҐ - бЄ«ҐЁвм д ©«л }
if (Count=0) or (not VFAT) then goto 1;
SetWin(30,10,22,2,$2E,'‚лЎҐаЁвҐ 1-л© д ©«');
Position:=1;
KursorFile;
EnterFile(File1); { ‚лЎ®а ЇҐаў®Ј® д ©«  }
gotoxy(35,11);
textattr:=$21;
PutFName(Dir[Indexs[File1]]);
{-----}
SetWin(30,15,22,2,$2E,'‚лЎҐаЁвҐ 2-®© д ©«');
KursorFile;
EnterFile(File2); { ‚лЎ®а ўв®а®Ј® д ©«  }
gotoxy(34,16);
textattr:=$21;
PutFName(Dir[Indexs[File2]]);
{-----}
n:=Dir[Indexs[File2]].FirstC;
s:=Dir[Indexs[File1]].FirstC;
while s<$0FF8 do { \ }
begin { \ }
i:=s; { Ќ е®¤Ё¬ Є®­Ґж ЇҐаў®Ј® д ©«  }
s:=ElemFAT(s); { / }
end; { / }
SetElemFAT(i,n); { “Є §лў Ґ¬ ҐЈ® Є®­Ґж ­  ­ з «® ўв®а®Ј® }
{ ‘зЁв Ґ¬ ¤«Ё¬г ¤«п ЇҐаў®Ј® д ©«  }
Dir[Indexs[File1]].Size:=(((Dir[Indexs[File1]].Size div 512)+1)*512)+
Dir[Indexs[File2]].Size;
{-----}
SaveSector(0,1,9,FAT12); { ‡ ЇЁблў Ґ¬ ЇҐаўго Є®ЇЁо FAT }
SaveSector(0,10,9,FAT12);{ ‡ ЇЁблў Ґ¬ ўв®аго Є®ЇЁо FAT }
SaveSector(0,19,14,Dir); { ‡ ЇЁблў Ґ¬ Є®а­Ґў®© Є в «®Ј }
SetWin(30,20,25,3,$2E,'');
gotoxy(35,21);
write('” ©«л бЄ«ҐҐ­л !!!');
gotoxy(32,22);
write('Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг.');
repeat until keypressed and (readkey<>#0);
textattr:=$07;
goto 2;
end;
3:begin
{ ‡ ¤ ­ЁҐ Ї®ЁбЄ Ї«®еЁе ᥪв®а®ў }
fillchar(BadSec,2880,0); { ЋЎ­г«Ґ­ЁҐ ¬ ббЁў  }
textattr:=$07;
clrscr;
n:=0;
writeln('’ҐбвЁа®ў ­ЁҐ ᥪв®а®ў:');
for s:=1 to 2879 do
begin
l:=false; { ‘Ўа блў Ґ¬ д« Ј ­ «ЁзЁп ®иЁЎ®Є }
ReadSector(Disk,s,1,buf); { —Ёв Ґ¬ ᥪв®а }
if RError<>0 then { …б«Ё ЇаЁ з⥭ЁЁ Ўл«  ®иЁЎЄ , }
begin { в® нв® Ї«®е®© ᥪв®а, Ё в®Ј¤  }
l:=true; { гбв ­ ў«Ёў Ґ¬ д« Ј ­ «ЁзЁп ®иЁЎЄЁ }
inc(n); BadSec[n]:=s; { Ё § Ї®¬Ё­ Ґ¬ ­®¬Ґа ᥪв®а  }
end;
if s=2879 then goto 3;
inc(s); { ЏҐаҐе®¤Ё¬ Є б«Ґ¤го饬г ᥪв®аг }
ReadSector(Disk,s,1,buf); { —Ёв Ґ¬ ᥪв®а }
if RError<>0 then { …б«Ё ЇаЁ з⥭ЁЁ Ўл«  ®иЁЎЄ , }
begin { в® нв® Ї«®е®© ᥪв®а, Ё в®Ј¤  }
l:=true; { гбв ­ ў«Ёў Ґ¬ д« Ј ­ «ЁзЁп ®иЁЎЄЁ }
inc(n); BadSec[n]:=s; { Ё § Ї®¬Ё­ Ґ¬ ­®¬Ґа ᥪв®а  }
end;
3:if l then begin
textcolor(red);
write('B');
sound(1000);
delay(100);nosound;
end else begin
textcolor(blue);
write(#$0f9);
end;
if keypressed and (readkey=#27) then break;
end;
writeln;
if n<>0 then { …б«Ё Ґбвм Ї«®еЁҐ ᥪв®а , в® ўлў®¤Ё¬ Ёе ­®¬Ґа  }
begin
textcolor(white);
write('Ќ ©¤Ґ­л Ї«®еЁҐ ᥪв®а : ');
for i:=1 to n do write(BadSec[i],',');
writeln;
end;
writeln('Press any key ...');
sound(3000);
delay(200);nosound;
sound(4000);
delay(100);nosound;
repeat until keypressed and(readkey<>#0);
goto 2;
end;
4:begin
{ ‚л室 Ё§ Їа®Ја ¬¬л }
textattr:=$07;
clrscr;
halt(0);
end;
end;
End.
Соседние файлы в папке other