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
10.9k11 gold badges74 silver badges124 bronze badges
asked Aug 19, 2009 at 16:36
You have declared this method but didn’t implement it.
answered Aug 19, 2009 at 16:49
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
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
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
10.9k11 gold badges74 silver badges124 bronze badges
asked Aug 19, 2009 at 16:36
You have declared this method but didn’t implement it.
answered Aug 19, 2009 at 16:49
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
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
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 пользоваться не умеешь