![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем Доброго Дня, Суть вот в чем - пишу программу из нескольких форм и чтобы не засорять их одними и теми же операциями в Юнит1 записаны все необходимые константы и процедуры, но почему-то при вставке их в другие юниты(подключение через interface) Делфи пишет - Undeclared identifier Процедура1..итд, причем константы его вполне устраивают
Вообщем выручайте |
|
#2
|
||||
|
||||
|
Конкретно сказать, где ошибка не могу, надо чтоб вы показали код. Но вот как будет работать (unit2 - модуль, где записаны константы, uni1 - главная форма):
Код:
unit Unit2;
interface
const
Caption_ = 'Hello!';
procedure ReplaceVar(var a, b: Integer);
implementation
procedure ReplaceVar(var a, b: Integer);
begin
a := a+ b;
b := a - b;
a := a - b;
end;
end.
////////////
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses unit2;
...
procedure TForm1.Button1Click(Sender: TObject);
var
a, b: Integer;
begin
a := 5;
b := 3;
ShowMessage(Caption_);
ReplaceVar(a, b);
// сейчас а=3, b=5
end;Это маленький пример, чтоб вы поняли. ЗЫ процедура ReplaceVar - это процедура "обмена" переменных, без использования 3ей переменной (чисто для примера, написал то, что первое пришло в голову ).ЗЫЫ то бишь скорее всего, вы в том модуле, где объявляете все процедуры и функции вы их не правильно объявляете, надо вот так: Код:
procedure ReplaceVar(var a, b: Integer); // объявил процедуру implementation procedure ReplaceVar(var a, b: Integer); // теперь описываем ее. begin a := a+ b; b := a - b; a := a - b; end; Последний раз редактировалось v1s2222, 16.10.2010 в 13:02. |
|
#3
|
|||
|
|||
|
Показываю
Код:
unit U1; ......... ........ procedure ReadTest; begin AssignFile(FTest, FileName); Reset(FTest); Read(FTest,Test); CloseFile(FTest); end; но когда я хочу вставить ее в юнит 2 Код:
Unit U2;
Interface
Uses U1;
...........
...........
procedure TForm2.Button6Click(Sender: TObject);
begin
FileName:=Edit1.text;
if FileExists(FileName)then begin ReadTest;
end
else begin ShowMessage('Файл отсутствует');
Exit end; |
|
#4
|
||||
|
||||
|
В U1:
Код:
type
TForm1 = class(TForm)
private
{ Private declarations }
public
procedure ReadTest;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ReadTest;
begin
AssignFile(FTest, FileName);
Reset(FTest);
Read(FTest,Test);
CloseFile(FTest);
end;И после этого ты можешь использовать эту процедуру в других модулях (формах) |
|
#5
|
|||
|
|||
|
Эх если бы все было так просто
Unsatisfied forward or external declaration: 'TForm1.ReadTest' |
|
#6
|
||||
|
||||
|
Выложи од, исправлю, а так я подсказать не чем не могу... может у тебя форма называется по другому и т.д...
|
|
#7
|
|||
|
|||
|
всё разобрался - в модуле надо удалить все что относится к форме
Код:
interface
procedure ReadTest;
implementation
{$R *.dfm}
procedure TForm1.ReadTest;
begin
AssignFile(FTest, FileName);
Reset(FTest);
Read(FTest,Test);
CloseFile(FTest);
end; |
|
#8
|
||||
|
||||
|
Ну наверное все-же не
Код:
procedure TForm1.ReadTest Код:
procedure ReadTest; Последний раз редактировалось Страдалецъ, 16.10.2010 в 21:57. |