Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизОшибка при компиляции Найти похожие ветки
← →
Nikos (2005-12-12 21:48) [0]Создаю в программе собственную процедуру. Объявляю ее в разделе private вот код:
private
{ Private declarations }
procedure My;
public
{ Public declarations }
var
fmResult: TfmResult;
x : Integer;
implementation
uses Main, Test;
{$R *.dfm}
procedure TfmResult.FormCreate(Sender: TObject);
....
My;
end;
procedure My;
begin
inc(x);
...
end;
Так вот, при компиляции выскакавате ошибка
[Error] Result.pas(46): Unsatisfied forward or external declaration: "TfmResult.My", то есть на строке, где я объявляю это процедуру после слова private.
Я думал, что эта ошибка из-за того, что я использую переменную х в своей процедуре, которая объявлена ниже, как переменная глобальная. Но дело в том, что примерно такой же синтаксис у меня в другом модуле и там все нормально. В чем тут дело?
Вот нашел каак избавится от это ошибке. Она исчезает если я переношу объявление этой процедуры под слово implementation. В этом случаи Delphi создает в место старого кодаimplementation
uses Main, Test;
{$R *.dfm}
procedure TfmResult.FormCreate(Sender: TObject);
....
вот такойimplementation
uses Main;
procedure ScaleLie;
uses Main, Test;
{$R *.dfm}
procedure TfmResult.FormCreate(Sender: TObject);
Не могли бы вы мне объяснить, почему так получается, в одном модуле нужно процедуру объявлять в private, а в другом после implementation?
← →
Form1 (2005-12-12 22:09) [1]Должно быть
procedure TForm1. My;
begin
inc(x);
...
end;
← →
ЮЮ © (2005-12-13 03:39) [2]private
{ Private declarations }
procedure My;
My - это, при таком написании, не процедура, а метод формы TfmResult.
Просто процедура пишется в секции implementation. А чтобы она была видна из других модуле, следует также заголовок процедуры поместить в секции inteface:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure MyPrivateMetod;
public
{ Public declarations }
procedure MyPablicMetod;
end;
procedure MyProcedure;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure MyProcedure;
begin
end;
{ TForm1 }
procedure TForm1.MyPablicMetod;
begin
end;
procedure TForm1.MyPrivateMetod;
begin
end;
end.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c