Продолжим изучать поиск и замену. Функция Delphi StringReplace
Объявление процедур в Delphi
(procedure, var, messageDlg).
На этом уроке
мы не будет изучать компоненты, а поговорим о структуре программы на
Object Pascal, потому что на следующем уроке нам
потребуются кое какие специфические знания.
И так,
положим на форму два поля ввода edTest1 и
edTest2, а так же две кнопки
btnSumma и btnCopy. Форму назовем frmPascalDemo*.
В раздел
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;
|
Теперь
запустим программу. При нажатии на кнопку «Сумма» программа покажет нам сумму
введенных чисел*:
А если мы
нажмем кнопку «Копировать», то программа не только покажет сумму, но еще и
поставит ее в нижнее поле ввода.
Теперь
немножко пояснений.
В первом
случае при выполнении команды
ShowSumma(r1,r2);
Значение
переменной r2, которую мы присваиваем свойству
Text, выполняя команду
edTest2.Text:=FloatToStr(r2);
остается
прежней. А вот при выполнении команды
ShowSummaCopy(r1,r2);
В переменной
r2 остается значение, равное сумме параметров, потому
что r2 в параметрах объявлена с модификатором
var.
Скриншоты, помеченные знаком * ,
являются цитатами и иллюстрациями
программного продукта "Delphi", авторское
право на который принадлежит "Borland Software
Corporation".
|