![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть функция в Unit1. Как её использовать в Unit2? [D6, WinXP]
Volf_555 © (2005-12-10 14:36:00)Написал одну функцию, которая есть в первом юните. Добавил её в раздел
PUBLICпервого юнита. Во втором юните когда пишуForm1.ScanDir,ошибки не выскакивает. Но выскакивает ошибка в первом юните:
"Unsatisfed forward or external declaration: 'TForm1.ScanDir'"
Что это за ошибка и как её исправить?
DrPass (2005-12-10 18:23:00) [1]
> Ihor Osov'yak © (10.12.05 15:49) [2]
> 2 bug_
>
> Эта. ПРограммирование - не шаманство.
Не надо раскрывать профессиональные секреты :)
> Написал одну функцию, которая есть в первом юните. Добавил
> её в раздел PUBLIC первого юнита. Во втором юните когда
> пишу Form1.ScanDir,ошибки не выскакивает. Но выскакивает
> ошибка в первом юните:
> "Unsatisfed forward or external declaration: 'TForm1.ScanDir'"
Наверное, ты ее обозвал
"procedure ScanDir". А надо было "procedure TForm1.Scandir". И да, не забудь еще жертву Духу Процессора принести
Alexander Panov (2005-12-10 16:54:00) [2]Volf_555 (10.12.05 14:36)
Нужно различать методы и функции/процедуры.
interface
type
TTest=class
public
MyFunc: Integer; //Это описание метода
end;
function MyFunc: Integer; //Это описание функции
implementation
//Это реализация метода
function TTest.MyFunc: Integer;
begin
Result := 0;
end;
//Это реализация функции
function MyFunc: Integer;
begin
Result := 0;
end;
В случае, если в разделе imlementation функция или метод не реализованы, компилятор и выдаст тебе ошибку, упоминаемую в топике.
Ihor Osov'yak (2005-12-10 15:49:00) [3]2 bug_
Эта. ПРограммирование - не шаманство. И в танцах на будне при свете луны нне нуждается.. А если Вам кажется, что нуждается - то вероятнее всего имеет место некорректное исрльзование инструментария, или вообще отсутсвие элементрарных знаний и навычок.
2 Volf_555
Не полностью описана ситуация. Но вероятнее всего, что в классе
TForm1 процедура ScanDir декларирована, но не реализована.
Наиболее вероятно по причине отсутсвия реализации в секции implementation, либо Вы ввели в заблуждение компилятор лишним end или begin...
bug_ (2005-12-10 15:22:00) [4]точно не помню, с чем это связано... в общем нужно сначала описАть
процедуру, типа
procedure ScanDir
begin
...
end;
потом добавить в public, и затем исправить в implementation на
procedure TForm1.ScanDir
begin
...
end;
P.S скорее всего это не самый лучший вариант, но работает