Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.08;
Скачать: CL | DM;

Вниз

Error   Найти похожие ветки 

 
DelphiNew ©   (2003-08-27 13:31) [0]

Помогите если сможете, есть функцию Space я прописал её в type но выдаётся ошибка
Unsatisfied forward or external declaration: "TFrmMain.Space"
из-за чего может быть такая ошибка? Нужно ли прописывать функцию ещё где-то???


 
HolACost! ©   (2003-08-27 13:32) [1]

А ты её реализацию в Имплементатион написал?


 
DelphiNew ©   (2003-08-27 13:34) [2]

Да


 
Романов Р.В. ©   (2003-08-27 13:34) [3]

Разные параметры в описании и реализации функции


 
DelphiNew ©   (2003-08-27 13:35) [4]

function Space(InpInt:integer; symbol:Char):String;
и там и там


 
HolACost! ©   (2003-08-27 13:37) [5]

function TFrmMain.Space(InpInt:integer; symbol:Char):String;
needs in implementation


 
Zacho ©   (2003-08-27 13:38) [6]


> DelphiNew © (27.08.03 13:35) [4]

Надо: function TFrmMain.Space(InpInt:integer; symbol:Char):String;
Это же просто функция, а метод класса.


 
Zacho ©   (2003-08-27 13:39) [7]

Следует читать " не просто функция"
:)


 
DelphiNew ©   (2003-08-27 13:43) [8]

2HolACost
В implementation прописано тоже самое


 
HolACost! ©   (2003-08-27 13:45) [9]

Что значит тоже самое? Двай кусок ода, где у тебя проблема...
Впринципе эта ошибка о том, что не найдена реализация данного метода!


 
DelphiNew ©   (2003-08-27 13:51) [10]

2 ZAcho
если я добавляю FrmMain то выводится ошибка expected "=" but"(" found


 
Zacho ©   (2003-08-27 13:53) [11]


> DelphiNew © (27.08.03 13:51) [10]

Прислушайся к HolACost! © (27.08.03 13:45) [9], приведи кусок кода из интерфейса и имплементейшн, а то гадать до бесконечности можно.


 
HolACost! ©   (2003-08-27 13:54) [12]

Братец, я тебе уже написал - давай сюда код... просто так на такие вопросы никто не ответит - тут тебе только тучу предположений выдадут! Докучи FrmMain - это похоже объект - для одарённых экземпляр класса, а нужно имя класса!


 
DelphiNew ©   (2003-08-27 14:01) [13]

2HolACost


type
....
function Space(InpInt:integer; symbol:Char):String;
....
implementation
uses
UntSprOtpr,UntTara, UntCfg, UntSprPol, UntFirst, UntMiddle;
{$R *.dfm}
function Space(InpInt:integer;symbol:Char):String;
var n:integer;
begin
result:="";
if InpInt<=0 then exit;
for n:=0 to InpInt do
result:=result+symbol;
end;

вызывается так

if not FrmMain.IBQSpec.Eof then
begin
FrmMain.IBQSpec.First;
while not FrmMain.IBQSpec.Eof do
begin
Name:=copy(FrmMain.IBQSpecNAME_TARA.AsString+Space(KolVoSim,"."),1,Kol VoSim-40);
Code:=copy(FrmMain.IBQSpecCODE_TARA.AsString+Space(KolVoSim,"."),1,Kol VoSim-55);
KolVo:=copy(FrmMain.IBQSpecQUAN.AsString+Space(KolVoSim,"."),1,KolVoSi m-55);
Price:=copy(FrmMain.IBQSpecPRICE.AsString+Space(KolVoSim,"."),1,KolVoS im-45);
Summa:=copy(FrmMain.IBQSpecSUMMA_TOTAL.AsString+Space(KolVoSim,"."),1, KolVoSim-45);

WinStr:=WinStr+Name+Code+KolVo+Price+Summa+#13+#10;
FrmMain.IBQSpec.Next;
end;
end;


 
Романов Р.В. ©   (2003-08-27 14:03) [14]


> type
> ....
> function Space(InpInt:integer; symbol:Char):String;
> ....

Этот кусок поподробнее


 
DelphiNew ©   (2003-08-27 14:05) [15]


type
....
IBQSpecSUMMA_TOTAL: TFloatField;
Button1: TButton;
function Space(InpInt:integer; symbol:Char):String;
function GetEsc(Esc: String): string;
function WinToDOS(InputStr:integer):integer;
procedure Print;
procedure FormShow(Sender: TObject);
procedure ActInsertExecute(Sender: TObject);
procedure ActRefreshExecute(Sender: TObject);
procedure ActExpeditorExecute(Sender: TObject);
procedure ActExitExecute(Sender: TObject);
procedure ActExitEscExecute(Sender: TObject);
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;


 
panov ©   (2003-08-27 14:05) [16]

function TFrmMain.Space(InpInt:integer;symbol:Char):String;
var n:integer;
begin
result:="";
if InpInt<=0 then exit;
for n:=0 to InpInt do
result:=result+symbol;
end;


 
HolACost! ©   (2003-08-27 14:05) [17]

Я не понимаю - господин хороший - у вас Space член класса (судя по ошибке), а вы её объявляете как простую функцию! Если у вас всё вообще туго - дам мыло - кинешь - поправлю!


 
DelphiNew ©   (2003-08-27 14:07) [18]

2 panov
Тогда выдаётся UntMain.pas(265): Undeclared identifier: "Space"
в месте где вызывается функция


 
HolACost! ©   (2003-08-27 14:08) [19]

Потомучто функция в которой вызывается метод не член класса... надо тогда указывать Объект типа FrmMain.Space


 
HolACost! ©   (2003-08-27 14:10) [20]

#ifdef FLAME
Читайте книжки по ООП! Это полный бред - такие вопросы задавать человеку с высшим образованием. ИМХО, это клиника!
#endif


 
DelphiNew ©   (2003-08-27 14:12) [21]

2 HolACost!
Тоесть в месте где вызывается функция надо писать
Name:=copy(FrmMain.IBQSpecNAME_TARA.AsString+ FrmMain.Space(KolV oSim,"."),1,Kol VoSim-40);
Так?


 
Романов Р.В. ©   (2003-08-27 14:14) [22]

Незачем делать эту функцию методом класса
type
....
IBQSpecSUMMA_TOTAL: TFloatField;
Button1: TButton;
function GetEsc(Esc: String): string;
function WinToDOS(InputStr:integer):integer;
procedure Print;
procedure FormShow(Sender: TObject);
procedure ActInsertExecute(Sender: TObject);
procedure ActRefreshExecute(Sender: TObject);
procedure ActExpeditorExecute(Sender: TObject);
procedure ActExitExecute(Sender: TObject);
procedure ActExitEscExecute(Sender: TObject);
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

function Space(InpInt:integer; symbol:Char):String;

...


 
HolACost! ©   (2003-08-27 14:17) [23]

ДА - если FrmMain - это экземпляр класса TFrmMain! Или как г-н Романов предлагает, тогда всё будет работать в том же виде!


 
DelphiNew ©   (2003-08-27 14:21) [24]

После подстановки FrmMain везде где требовалось ошибка перестала появляться. Но всё таки почему она выдавалась ведь раньше при аналогичных операциях она не появлялась?


 
Романов Р.В. ©   (2003-08-27 14:23) [25]

mozg.Enable := True


 
HolACost! ©   (2003-08-27 14:23) [26]

Гы! Я ох... потихоньку!
При данной реализации - это очень интересный вопрос! Возможно у тебя не было функции Space до того! А теперь появился!


 
Anatoly Podgoretsky ©   (2003-08-27 15:26) [27]

DelphiNew © (27.08.03 14:05) [15]

type
....

И этот кусок поподробнее


 
DelphiNew ©   (2003-08-27 15:31) [28]

Очень смешно!!!!
Я имел ввиду что раньше мне не требовалось подставлять привязку к форме я просто прописывал функцию в type и всё работало без проблем


 
HolACost! ©   (2003-08-27 15:41) [29]

Господа, не парьтесь - проблема решена, но вот только человек не может понять в чем проблема была - я честно говоря рассуждать и объяснять не очень-то любли и умею! Так что тут можно посоветовать только почитать книжечки по ООП!
А твой проблема была в том, что ты сделал объявление функции как метода окна и следовательно из вышеизложенного могу сказать. что нафига тебе тогда через объекты работаь с этой функцией объяки её вне класса окна и все - будет тебе счастье!


 
Anatoly Podgoretsky ©   (2003-08-27 16:00) [30]

Проблеме решена, но не для него, и по крайней мере два решения, один для метода, один для ординарной процедуры, что ему нужно это вопрос.
Но полностью показывать объявление он не хочет, ему нравятся точки, зато показывает лишнее.



Страницы: 1 вся ветка

Текущий архив: 2003.09.08;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.019 c
1-24501
николай
2003-08-27 12:05
2003.09.08
метод статических испытаний кто нибудь знает?


14-24668
Aga
2003-08-22 08:20
2003.09.08
setup...


1-24530
DM.OMen
2003-08-26 20:53
2003.09.08
Вопрос по процедурам.


1-24434
Abikos
2003-08-25 18:48
2003.09.08
вопрос о Frame ах ....


14-24658
McLoop
2003-08-20 18:05
2003.09.08
Мою тему удалили три раза.