Ошибка unsatisfied forward or external declaration delphi

I am getting an error while compiling .pas file. "unsatisfied forward or external declaration :TxxxException.CheckSchemeFinMethodDAException." Does anyone have any idea what this error implies?

I am getting an error while compiling .pas file.

«unsatisfied forward or external declaration :TxxxException.CheckSchemeFinMethodDAException.»

Does anyone have any idea what this error implies?

Does it mean that
CheckSchemeFinMethodDAException was not called in all the concerned files?

Toby Allen's user avatar

Toby Allen

10.9k11 gold badges74 silver badges124 bronze badges

asked Aug 19, 2009 at 16:36

vas's user avatar

You have declared this method but didn’t implement it.

answered Aug 19, 2009 at 16:49

Uwe Raabe's user avatar

Uwe RaabeUwe Raabe

44.1k3 gold badges86 silver badges128 bronze badges

1

you may have forgotten to put the class name before the function name within the implementation section. for example, the following code will yield your error:

unit Unit1;

interface

type
  TMyClass = class
    function my_func(const text: string): string;
  end;

implementation

function my_func(const text: string): string;
begin
  result := text;
end;

end.

to fix, just change the function implementation to TMyClass.my_func(const text: string): string;.

answered May 23, 2013 at 9:03

mulllhausen's user avatar

mulllhausenmulllhausen

4,3137 gold badges46 silver badges69 bronze badges

unit Unit1;

interface

type
  TMyClass = class
    procedure DeclaredProcedure;
  end;

implementation

end.

This yields the error you describe. The procedure DeclaredProcedure is declared (signature) but not defined (implementation part is empty).

You have to provide an implementation for the procedure.

answered Aug 19, 2009 at 18:07

jpfollenius's user avatar

jpfolleniusjpfollenius

16.3k10 gold badges90 silver badges156 bronze badges

I am getting an error while compiling .pas file.

«unsatisfied forward or external declaration :TxxxException.CheckSchemeFinMethodDAException.»

Does anyone have any idea what this error implies?

Does it mean that
CheckSchemeFinMethodDAException was not called in all the concerned files?

Toby Allen's user avatar

Toby Allen

10.9k11 gold badges74 silver badges124 bronze badges

asked Aug 19, 2009 at 16:36

vas's user avatar

You have declared this method but didn’t implement it.

answered Aug 19, 2009 at 16:49

Uwe Raabe's user avatar

Uwe RaabeUwe Raabe

44.1k3 gold badges86 silver badges128 bronze badges

1

you may have forgotten to put the class name before the function name within the implementation section. for example, the following code will yield your error:

unit Unit1;

interface

type
  TMyClass = class
    function my_func(const text: string): string;
  end;

implementation

function my_func(const text: string): string;
begin
  result := text;
end;

end.

to fix, just change the function implementation to TMyClass.my_func(const text: string): string;.

answered May 23, 2013 at 9:03

mulllhausen's user avatar

mulllhausenmulllhausen

4,3137 gold badges46 silver badges69 bronze badges

unit Unit1;

interface

type
  TMyClass = class
    procedure DeclaredProcedure;
  end;

implementation

end.

This yields the error you describe. The procedure DeclaredProcedure is declared (signature) but not defined (implementation part is empty).

You have to provide an implementation for the procedure.

answered Aug 19, 2009 at 18:07

jpfollenius's user avatar

jpfolleniusjpfollenius

16.3k10 gold badges90 silver badges156 bronze badges

 
Чайник ©
 
(2007-04-06 03:38)
[0]

Что за глюк (у меня или у Дельфи)?:

Есть юнит, в секции interface объявляю:

unit P1202_Scan;

interface

uses
 Windows, SysUtils, Classes;

// Function of AD/DA
function  P1202_AdsPolling(fAdVal: PSingle; wNum: Word): Word; stdCall;

в секции implementation соответсвенно:

function  P1202_AdsPolling(fAdVal: PSingle; wNum: Word): Word; stdCall;
begin
...
end;

При попытке компиляции выдает:
 [Error] P1202_Scan.pas(70): Previous declaration of «P1202_AdsPolling» was not marked with the «overload» directive
 [Error] P1202_Scan.pas(16): Unsatisfied forward or external declaration: «P1202_AdsPolling»
 [Fatal Error] P1202_Im.dpr(14): Could not compile used unit «P1202_Scan.pas»

Что это?


 
Чайник ©
 
(2007-04-06 03:43)
[1]

Опечатка: в implementation декларации stdCall нет:

function  P1202_AdsPolling(fAdVal: PSingle; wNum: Word): Word;
begin

end;


 
Чайник ©
 
(2007-04-06 03:47)
[2]

Ну нет уменя никакой «Previous declaration» и не собираюсь я никого «overload» ! Такое впечатление, что компилятор названия функций в interface и interface воспринимает, как разные и не сопоставляет. Что за глюк?!


 
Думкин ©
 
(2007-04-06 07:06)
[3]

Раз говорит, значит есть основания. У меня этот код с теми же названиями откомпилился на ура.


 
Думкин ©
 
(2007-04-06 07:14)
[4]

по написаному вами тут выходит, что ошибка должна вылазить в 9-й строке, а у вас указывается 16.

Следовательно. как и всегда — ошибка в 17-й строке.


 
_Аноним
 
(2007-04-06 23:13)
[5]

Ну вариантов быть не может — проверь, в 17 строке у тебя объявлена еще одна P1202_AdsPolling


 
Leonid Troyanovsky ©
 
(2007-04-07 00:31)
[6]


> Чайник ©   (06.04.07 03:38)  

> // Function of AD/DA
> function  P1202_AdsPolling(fAdVal: PSingle; wNum: Word):
>  Word; stdCall;


function  P1202_AdsPolling(fAdVal: PSingle; wNum: Word): Word; forward;


Regards, LVT.


 
Германн ©
 
(2007-04-07 01:33)
[7]


> Чайник ©   (06.04.07 03:38)
>
> Что за глюк (у меня или у Дельфи)?:
>
> Есть юнит, в секции interface объявляю:
>
> unit P1202_Scan;
>
> interface
>
> uses
>  Windows, SysUtils, Classes;
>
> // Function of AD/DA
> function  P1202_AdsPolling(fAdVal: PSingle; wNum: Word):
>  Word; stdCall;
>
> в секции implementation соответсвенно:
>
> function  P1202_AdsPolling(fAdVal: PSingle; wNum: Word):
>  Word; stdCall;
> begin
> …
> end;
>
> При попытке компиляции выдает:
>  [Error] P1202_Scan.pas(70): Previous declaration of «P1202_AdsPolling»
> was not marked with the «overload» directive
>  [Error] P1202_Scan.pas(16): Unsatisfied forward or external
> declaration: «P1202_AdsPolling»
>  [Fatal Error] P1202_Im.dpr(14): Could not compile used
> unit «P1202_Scan.pas»
>
> Что это?
>

Имхо, ты в своём коде где-то «переопределил», скорее всего, тип PString. Ну или Word.


 
Германн ©
 
(2007-04-07 01:35)
[8]


> Чайник ©   (06.04.07 03:47) [2]
>
> Ну нет уменя никакой «Previous declaration»

«Previous declaration» в данном случае это объявление функции в секции interface.


 
Belorus ©
 
(2007-04-07 11:08)
[9]

Ошибка в 16 строке, это почти то же самое что и в 17… Подозрительный код..


 
DrPass ©
 
(2007-04-07 21:51)
[10]


> Опечатка: в implementation декларации stdCall нет:
>
> function  P1202_AdsPolling(fAdVal: PSingle; wNum: Word):
>  Word;
> begin
>
> end;

Ну так что ж ты хочешь, дорогой?


 
Германн ©
 
(2007-04-08 00:47)
[11]


> DrPass ©   (07.04.07 21:51) [10]


> Ну так что ж ты хочешь, дорогой?
>

Ошибка с этим не связана.


 
Плохиш ©
 
(2007-04-08 01:14)
[12]


> Чайник ©   (06.04.07 03:38)  
> Что за глюк (у меня или у Дельфи)?:

Глюк у тебя. Тут без вариантов.

PS. Неужели так трудно поиск по своему коду сделать?


 
DrPass ©
 
(2007-04-08 10:18)
[13]


> Германн ©   (08.04.07 00:47) [11]

Это понятно :)
Скорее всего, он где-то по коду переопределяет тип параметров, psingle или word.
Хотя в очень редких случаях и у Delphi бывают глюки


 
_Аноним
 
(2007-04-08 12:23)
[14]


> DrPass ©  

Нет, если бы он переопределял тип psingle или word, то текст ошибки компилера был бы другой
а у него

[Error] P1202_Scan.pas(70): Previous declaration of «P1202_AdsPolling» was not marked with the «overload» directive
[Error] P1202_Scan.pas(16): Unsatisfied forward or external declaration: «P1202_AdsPolling»

однозначно еще есть строка в коде с объявлением P1202_AdsPolling


 
Германн ©
 
(2007-04-08 13:01)
[15]


> Аноним   (08.04.07 12:23) [14]
>
> Нет, если бы он переопределял тип psingle или word, то текст
> ошибки компилера был бы другой
> а у него

А ты сам то проверь. Именно такой текст ошибки и есть при переопределении. Слово в слово.


 
Чайник ©
 
(2007-04-08 13:16)
[16]

Всем спасибо! Каюсь — это полностью мой идиотизм. Действительно, было еще одно объявление AdsPolling — в 16 строке на 200 позизии — т.е. далеко вправо за пределами экрана. Вот пример всем мальчикам и девочкам бездумного использования Copy/Paste.


 
Anatoly Podgoretsky ©
 
(2007-04-08 13:23)
[17]

> Чайник  (08.04.2007 13:16:16)  [16]

А Ctrl+F пользоваться не умеешь


Понравилась статья? Поделить с друзьями:
  • Ошибка vdc off nissan teana j32
  • Ошибка unreal engine is exiting due to d3d device being lost error 0x887a0006 hung
  • Ошибка webasto f02 что значит
  • Ошибка vcu камаз нео что означает
  • Ошибка unreal engine is exiting due to d3d device being lost error 0x887a0005 removed