Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2009, 13:43   #1
AIst
Пользователь
 
Аватар для AIst
 
Регистрация: 30.06.2008
Сообщений: 58
По умолчанию объявление процедуры

При нажатии на кнопку должен выполняться определенный код, его я вынес в процедуру, чтоб не писать по несколько раз одно и тоже...
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    About1: TMenuItem;
    N6: TMenuItem;
    About2: TMenuItem;
    procedure save;
    procedure N4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure save;
var a:TextFile;
begin
assignfile(a,'C:\Documents and Settings\save.txt');
rewrite(a);
writeln(a,'aaa');
writeln(a,'bbb');
Closefile(a);
end;

procedure TForm1.N4Click(Sender: TObject);
begin
save;
end;

end.
Проект не запускается. вылетают следующие ошибки:

Цитата:
[Ошибка] Unit1.pas(20): Unsatisfied forward or external declaration: 'TForm1.save'
[Фатальная ошибка] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
как в моем случае будет правильно объявить процедуру?
AIst вне форума Ответить с цитированием
Старый 16.01.2009, 13:47   #2
Google[Bot]
Пользователь
 
Аватар для Google[Bot]
 
Регистрация: 09.01.2009
Сообщений: 65
По умолчанию

Вместо
Код:
procedure save;
var a:TextFile;
begin
Надо писать
Код:
procedure TForm1.save;
var a:TextFile;
begin
Оно ж и ругается, мол, обьявление есть, а тела нету...
Google[Bot] вне форума Ответить с цитированием
Старый 16.01.2009, 13:54   #3
AIst
Пользователь
 
Аватар для AIst
 
Регистрация: 30.06.2008
Сообщений: 58
По умолчанию

Спасибо большое, теперь работает...
Цитата:
Надо писать
Код:

procedure TForm1.save;
var a:TextFile;
begin
а если эта кнопка будет находиться на панели Panel1 то писать нужно будет Panel1.save ?
AIst вне форума Ответить с цитированием
Старый 16.01.2009, 13:57   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

В вашем случае можно сделать проще - полностью описать обработчик в procedure TForm1.N4Click(Sender: TObject); , а когда он понадобится, вызывать его как N4Click(Self);
Если этот же обработчик нужно назначить другим пунктам меню, в инспекторе объектов против OnClick этого другого пункта выбираете (из комбобокса) N4Click...
mihali4 вне форума Ответить с цитированием
Старый 16.01.2009, 14:12   #5
Google[Bot]
Пользователь
 
Аватар для Google[Bot]
 
Регистрация: 09.01.2009
Сообщений: 65
По умолчанию

Цитата:
Сообщение от AIst Посмотреть сообщение
а если эта кнопка будет находиться на панели Panel1 то писать нужно будет Panel1.save ?
Нет, надо писать N4.Click; или просто save;
Google[Bot] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление значения SStone Microsoft Office Excel 4 06.12.2008 19:15
Объявление и вызов процедуры Fantom Паскаль, Turbo Pascal, PascalABC.NET 1 04.12.2008 21:25
объявление множества BESS Общие вопросы Delphi 7 07.08.2008 15:24
Объявление собственной глобальной процедуры Gorin Общие вопросы Delphi 11 06.11.2007 17:49