Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
14-1134027893
syte_ser78
2005-12-08 10:44
2006.01.01
что есть такео ГАДЖЕТ?????


2-1134687534
crazycorpse
2005-12-16 01:58
2006.01.01
Динамический массив n x m


2-1134421386
Pupsiks
2005-12-13 00:03
2006.01.01
Сообщение


4-1130744089
sergg
2005-10-31 10:34
2006.01.01
Как заменить используемый файл?


8-1120821445
Дмитрий_05
2005-07-08 15:17
2006.01.01
Скинообразная форма





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский