Программирование - это просто
Advertisement
Главная arrow C#, Delphi, VB, F#, Web и пр. arrow Прочее программирование arrow Delphi - это просто! arrow Delphi. Урок 7.1. Объявление процедур в Delphi (procedure, var, messageDlg).
20.04.2019 г.
Главное меню
Главная
Системный подход
Интернет магазин
Биржевые роботы
Программные продукты
Математика и информатика
1С:Предприятие
C#, Delphi, VB, F#, Web и пр.
Искусственный интеллект
Услуги
Ча. Во. (FAQ)
Платный раздел
Наука для чайников
Разное
Размышления
Карта сайта
Друзья сайта
Excel-это не сложно
Все о финансах
Delphi. Урок 7.1. Объявление процедур в Delphi (procedure, var, messageDlg). Печать E-mail
Автор megabax   
07.07.2009 г.
<strong>Продолжим изучать поиск и замену. Функция Delphi StringReplace</strong>

Объявление процедур в Delphi (procedure, var, messageDlg).

На этом уроке мы не будет изучать компоненты, а поговорим о структуре программы на Object Pascal, потому что на следующем уроке нам потребуются кое какие специфические знания.

И так, положим на форму два поля ввода edTest1 и edTest2, а так же две кнопки btnSumma и btnCopy. Форму назовем frmPascalDemo*.

Объявление процедур в Delphi (procedure, var, messageDlg).

 

В раздел interface добавим определение процедур (выделено красным цветом):

 

unit pascal;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

 

type

  TfrmPascalDemo = class(TForm)

    edTest1: TEdit;

    edTest2: TEdit;

    btnSumma: TButton;

    btnCopy: TButton;

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

  procedure ShowSumma(r1,r2:real);

  procedure ShowSummaCopy(r1:real; var r2:real);

 

 

Объявив эти процедуры, мы, тем самым, по сути, добавляем в язык программирования новые слова. Тоесть, написав в разделе interface

 

 procedure ShowSumma(r1,r2:real);

 

мы в дальнейшем, сможем написать в программе конструкцию типа (в скобках могут быть любые другие числа):

 

ShowSumma(1.23,1.15)

 

Однако мы не определили, а что компьютер должен делать, когда встретит эти новые слова. Для этого в разделе implementation добавим такой текст:

 

procedure ShowSumma(r1,r2:real);

begin

  r2:=r1+r2;

  messageDlg(FloatToStr(r2),mtInformation,[mbOk],0);

end;

 

procedure ShowSummaCopy(r1:real; var r2:real);

begin

  r2:=r1+r2;

  messageDlg(FloatToStr(r2),mtInformation,[mbOk],0);

end;

 

По сути, вторая процедура отличается от первой только наличием модификатора var перед объявлением параметра. Этот модификатор означает, что при изменении параметра внутри процедуры, то он изменяется и во вне. А если этого модификатора, то во вне он остается прежний. Что бы продемонстрировать это, напишем обработчики события OnClick обеих кнопок:

 

procedure TfrmPascalDemo.btnSummaClick(Sender: TObject);

var r1,r2:real;

begin

   r1:=StrToFloat(edTest1.Text);

   r2:=StrToFloat(edTest2.Text);

   ShowSumma(r1,r2);

   edTest2.Text:=FloatToStr(r2);

end;

 

procedure TfrmPascalDemo.btnCopyClick(Sender: TObject);

var r1,r2:real;

begin

   r1:=StrToFloat(edTest1.Text);

   r2:=StrToFloat(edTest2.Text);

   ShowSummaCopy(r1,r2);

   edTest2.Text:=FloatToStr(r2);

end;

 

 

Теперь запустим программу. При нажатии на кнопку «Сумма» программа покажет нам сумму введенных чисел*:

 

Объявление процедур в Delphi (procedure, var, messageDlg).

 

А если мы нажмем кнопку «Копировать», то программа не только покажет сумму, но еще и поставит ее в нижнее поле ввода.

Теперь немножко пояснений.

В первом случае при выполнении команды

 

ShowSumma(r1,r2);

 

Значение переменной r2, которую мы присваиваем свойству Text, выполняя команду

 

edTest2.Text:=FloatToStr(r2);

 

остается прежней. А вот при выполнении команды

 

ShowSummaCopy(r1,r2);

 

В переменной r2 остается значение, равное сумме параметров, потому что r2 в параметрах объявлена с модификатором var.

 

 


Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями   программного продукта "Delphi", авторское право на который принадлежит "Borland Software Corporation".


 

 

 

Последнее обновление ( 22.06.2012 г. )
 
« След.   Пред. »
 
© 2019 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги
Мы принимаем
Банковские карты
Оплатите покупку в интернет-магазине банковскими картами VISA и Mastercard любого банка.
узнать больше
Электронный кошелек
Моментальная оплата покупок с помощью вашего электронного кошелька RBK Money.
узнать больше
Банковский платеж
Оплатите покупку в любом российском банке. Срок зачисления средств на счет - 3-5 рабочих дней.
узнать больше
Денежные переводы
Оплата покупок через крупнейшие системы денежных переводов CONTACT и Unistream.
узнать больше
Почтовые переводы
Оплатите покупку в любом отделении Почты России. Срок зачисления платежа - 3-4 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше