Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что это: Unsatisfied forward or external declaration: 'P1202_AdsP


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

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

Есть юнит, в секции 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'

Что это?


Anatoly Podgoretsky   (2007-04-08 13:23:00) [1]

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

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


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

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


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


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

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


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


> 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


DrPass   (2007-04-08 10:18:00) [5]


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

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


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


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

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

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


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


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


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

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


DrPass   (2007-04-07 21:51:00) [8]


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

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


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

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


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


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

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


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


> Чайник ©   (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.


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


> Чайник ©   (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-06 23:13:00) [13]

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


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

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

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


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

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


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

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


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

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

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

end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо