Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Учимся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 2

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ ΠŸΠ°Ρ€ΠΈΠΆΡΠΊΠΈΠΉ

type

TForm1 = class(TForm)

 ...

private

 { Private declarations }

 procedure doit;

 public

 { Public declarations }

end;

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ создадим Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ implementation:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π—Π΄Π΅ΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ описанных Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ. ВСкст, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ для Π²Π²ΠΎΠ΄Π°, Π²Ρ‹Π΄Π΅Π»Π΅Π½ Π² листингах ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ.

procedure TForm1.doit();

var

 f1, f2: file of Byte; //Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ

 ΡΠΎΡ€: Byte; //Для ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ копирования

 sizez: LongInt; //Π₯Ρ€Π°Π½ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°

begin

 {$I-} //ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ, которая отслСТиваСт ошибки

 //Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°

 try //Начало Π±Π»ΠΎΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

  //БвязываСм Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ f1 с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ

  AssignFile(f1, from.Text);

  //БвязываСм Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ f2 со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ

  AssignFile(f2, where.Text);

  Reset(f1);  //ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

  sizez:= Trunc(FileSize(f1)); //ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°

  //ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

  Label4.Caption:= IntToStr(sizez div 1024) + 'Кб';

  {Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ пСрСзаписываСм Π΅Π³ΠΎ, Ссли ΠΎΠ½ ΡƒΠΆΠ΅ сущСствуСт}

  Rewrite(f2);

  while not Eof(f1) do

  begin //Пока Π½Π΅ достигнут ΠΊΠΎΠ½Π΅Ρ† ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

   //Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

   BlockRead(fl, cop, 1);

   //ЗаписываСм ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ»

   BlockWrite(f2, cop, 1);

  end;

  CloseFile(f1); //Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

  CloseFile(f2); //Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ»

 finally;

 end;//ΠšΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

 if IOResult<> 0 //Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

 then MessageDlg('Ошибка ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°!', mtError, [mbOk],0) //сообщСниС ΠΎΠ± ошибкС

 else begin

  {Если ошибок Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠΊΠ½ΠΎ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ копирования}

  ShowMessage('УспСшно скопировано!');

 end;

end;

β‡˜ Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ конструкции языка Object Pascal (ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ вСтвлСния, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ Π΄Ρ€.) Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π“.

Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ пСрСносС Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π±Ρ€Π°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ провСряСм, Π½Π΅ Π±Ρ‹Π»ΠΎ Π»ΠΈ ошибок ΠΏΡ€ΠΈ ΠΈΡ… ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ. Если ошибок Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€ исходного Ρ„Π°ΠΉΠ»Π° ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚Ρ‹ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, записывая ΠΈΡ… Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ. Если ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ ΠΈ ошибок ΠΏΡ€ΠΈ этом Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ сообщСниС ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ копирования.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° doit вызываСтся ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

procedure TForm1.Button1Click{Sender: TObject);

begin

 doit;

end;

По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π’Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ скопированного Ρ„Π°ΠΉΠ»Π°:

procedure TForm1.Button5Click(Sender: TObject);

begin

 doit;//ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ

 DeleteFile(from.Text); //удаляСм исходный Ρ„Π°ΠΉΠ»

end;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ сохранСния Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартных Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½. Для Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ (исходного) Ρ„Π°ΠΉΠ»Π° слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события OnClick (ΠΊΠ½ΠΎΠΏΠΊΠ΅ Button2 соотвСтствуСт ΠΏΠΎΠ»Π΅ from):

procedure TForm1.Button2Click(Sender: TObject);

begin

 if Open1.Execute

 then from.Text:= Open1.FileName

 else ShowMessage('Π€Π°ΠΉΠ» Π½Π΅ Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚');

end;

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠžΠ±Π·ΠΎΡ€ открываСтся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π° (Open1.Execute). Если Π² этом ΠΎΠΊΠ½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠžΡ‚ΠΌΠ΅Π½Π° (Open1.Execute = False), Ρ‚ΠΎ сообщаСм Π΅ΠΌΡƒ ΠΎΠ± этом ΠΈ Π½Π΅ выполняСм Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» Ρ„Π°ΠΉΠ», Ρ‚ΠΎ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события для Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΡƒΡ‚ΠΈ назначСния ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (ΠΊΠ½ΠΎΠΏΠΊΠ΅ Button3 соотвСтствуСт ΠΏΠΎΠ»Π΅ where):

procedure TForm1.Button3Click(Sender : TObject);

begin

 if Save1.Execute

 then where.Text:= Save1.FileName

 else ShowMessage('Π’Ρ‹ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ мСсто длясохранСния Ρ„Π°ΠΉΠ»Π°!');

end;

Π—Π΄Π΅ΡΡŒ выполняСтся Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ случаС. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ заносится Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ, ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события OnClick для ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠžΠ±Π·ΠΎΡ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ для Π²Ρ‹Π±ΠΎΡ€Π° размСщСния удаляСмого Ρ„Π°ΠΉΠ»Π° :

procedure TForm1.Button4Click(Sender: TObject);

begin

 if Open1.Execute

 then Del.Text:= Open1.FileName

 else ShowMessage('Π€Π°ΠΉΠ» Π½Π΅ Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚!');

end;

Π‘Π°ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Π£Π΄Π°Π»ΠΈΡ‚ΡŒ выполняСт ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

procedure TForm1.Button6Click(Sender: tobject);

begin

 DeleteFile(Del.Text); //удаляСм Ρ„Π°ΠΉΠ»

 if not FileExists(Del.Text)//провСряСм сущСствованиС Ρ„Π°ΠΉΠ»Π°

 then ShowMessage('Π€Π°ΠΉΠ» ΡƒΠ΄Π°Π»Π΅Π½!'); //Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС

end;

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ удаляСм Ρ„Π°ΠΉΠ», Π° Π·Π°Ρ‚Π΅ΠΌ провСряСм, сущСствуСт Π»ΠΈ ΠΎΠ½ Π½Π° дискС послС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ удалСния. Если Π΅Π³ΠΎ Π½Π΅ сущСствуСт, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΎΠΊΠ½Π° Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² дСйствии ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 2.2.

Рис. 2.2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² дСйствии

ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ модуля

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ модуля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ прСдставлСн Π² листингС 2.1.

Листинг 2.1. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellAPI, Gauges;

type TForm1 = class(TForm)

 from: TEdit;

 where: TEdit;

 Button1: TButton;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 Button2: TButton;

 Button3: TButton;

 Open1: TOpenDialog;

 Save1: TSaveDialog;

 Button4: TButton;

 del: TEdit;

 Button5: TButton;

 Button6: TButton;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure Button3Click(Sender: TObject);

 procedure Button5Click(Sender: TObject);

 procedure Button4Click(Sender: TObject);

 procedure Button6Click(Sender: TObject);

private

 { Private declarations }

 procedure doit; //объявлСниС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ doit

public

 { Public declarations }

end;


var Form1: TForm1;


implementation

{$R *.dfm}


procedure Tform1.doit();

var

 f1, f2: file of byte; //Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ

 ΡΠΎΡ€: byte; //для ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ копирования

 sizez: longint; //Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°

begin

 {I-} {ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ, которая слСдит Π·Π° ошибками Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°}

 try

  //связываСм Π€Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ f1 с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ

  AssignFile(f1, from.Text);

  //связываСм Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ f2 со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ

  AssignFile(f2, where.Text);

  Reset(f1);  //ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

  sizez:= Trunc(FileSize(f1)); //ΡƒΠ·Π½Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°

  //ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ» для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ}

  Label4.Caption:= IntToStr(sizez div 1024) + 'ΠšΠ±β€™;

  {Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ пСрСзаписываСм Π΅Π³ΠΎ, Ссли ΠΎΠ½ ΡƒΠΆΠ΅ сущСствуСт}

  Rewrite(f2);

  while not Eof(f1) do begin //ΠΏΠΎΠΊΠ° Π½Π΅ достигнут ΠΊΠΎΠ½Π΅Ρ† ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

   //считываСм ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

   BlockRead(f1, cop, 1);

   //записываСм ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ»

   BlockWrite(f2, cop, 1);

  end;

  CloseFile(f1);//Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

  CloseFile(f2);// Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ»

 finally;

 end;

 if IOResult <> 0 //Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

 then MessageDlg('Ошибка ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°!', mtError, [mbOk] , 0) //сообщСниС ΠΎΠ± ошибкС

 else begin

  {Ссли ошибок Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠΊΠ½ΠΎ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ копирования}

  ShowMessage('УспСшно скопировано!');

 end;

end;


procedure TForm1.ButtonlClick(Sender: TObject);

begin

 doit;

end;


procedure TForm1.Button2Click(Sender: TObject);

begin