![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Искал материалы в интернете по созданию Модулей,читал книжку и ничего не получается.Делал в точности ,как там написано .Для проверки я создавал простой модуль-процедура сложения .Для начала я закрывал форму и окно редактирования кода программы,потом я нажималFile=>New=>Unit.В Интерфейс я прописывал Procedure slojenie(a,b:byte;var i:byte);
В интерпритейшн я прописывал i:=a+b; Для нажимал сохранить и сохранял в отдельной папке .(Название изменял на slojenie),дальше я создавал новую программу,заходил в Project=>add to Progect и выбирал свой модуль.На форму помещал кнопку и метку.На кнопке создавал процедуру клика,в Uses прописывал название своего модуля . Потом после процедуры клика писал Var:g,j,k:byte(А можно использовать идентификаторы из процедуры?).Дальше g,j присваивал значения 1 . Вызывал процедуру slojenie(g,j,k); И выводил на экран результат .lbl1.caption:=Inttostr(k); После нажатия на F9 меня перебрасывает на страницу модуля и пишут Identifier redecleared 'slojenie' В чем проблема? |
#2
|
|||
|
|||
![]() Код:
unit slojenie; interface procedure slojenie(a,b:Byte; var c:integer); implementation procedure slojenie(a,b:Byte; var c:integer); begin c:=a+b; end; end. Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,slojenie, StdCtrls; type TForm1 = class(TForm) btn1: TButton; lbl1: TLabel; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); Var t,m,k:Byte; begin t:=1; m:=1; slojenie(t,m,k); lbl1.caption:=inttostr(k); end; end. |
#3
|
||||
|
||||
![]() Имя модуля и процедуры не должны совпадать. Имя модуля вообще ни с чем совпадать не должно.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 21.11.2010 в 16:43. |
#4
|
|||
|
|||
![]() Т.е ошибка заключается только в том ,что имена совпадают и все?
P.S А может ли основная программа использовать такие же переменные ,как и в процедуре или Delphi ругаться будет? Ну к примеру и там и там a,b,c:byte если написать.... |
#5
|
||||
|
||||
![]() Можно, если явно не указан владелец переменных то будут использованы локальные. Например:
Код:
Unit Unit1; interface Uses Unit2,Unit3; var a: Integer; begin a := Unit2.a + Unit3.a; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |