![]() |
|
|
Регистрация | << Правила форума >> | 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. |