Главная страница
    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.011 c
3-1131592515
antoxa2005
2005-11-10 06:15
2006.01.01
ПОМОГИТЕЕсли я перевожу ADOTable CursorLocation в clUseClient, то


2-1134487967
root
2005-12-13 18:32
2006.01.01
Как исполнить bat(cmd) файл


2-1134428569
Змей
2005-12-13 02:02
2006.01.01
Отследить сворачивание и восстановление формы


1-1133549249
ZeFiR
2005-12-02 21:47
2006.01.01
Как заблокировать вывод ошибок


4-1130416515
kay
2005-10-27 16:35
2006.01.01
Хочу сделать Balloon tip, но не знаю как получить координаты...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский