![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Имя модуля и процедуры не должны совпадать. Имя модуля вообще ни с чем совпадать не должно.
Последний раз редактировалось 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; |