Я хочу повторно использовать атрибуты объекта в другом подразделении.
В form1 я инициализировал объект, вызвав процедуру create.Затем я присваиваю значение fUserID, используя процедуру set.Теперь в следующей форме, Form2, я хочу вызвать функцию getUserID, чтобы получить значение атрибута, полученное в предыдущей форме.
Я пытался воссоздать объект, но значение потеряно.Например, если я присваиваю идентификатор 2, когда функция GetUSerID вызывается в новом модуле, без воссоздания объекта выдается ошибка.Когда объект воссоздается, он возвращает nil.
unit clsUser_U;
interface
type
TUser = class(TObject)
private
FUserID : integer ;
public
constructor Create ;
procedure setUserID(iID : integer) ;
Function getUserID : Integer ;
end;
implementation
{ TUser }
constructor TUser.Create;
begin
end;
function TUser.getUserID: Integer;
begin
Result := FUserID ;
end;
procedure TUser.setUserID(iID: integer);
begin
FUserID := iID ;
end;
end.
Form1 выглядит следующим образом:
unit Form1_U;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
clsUser_u, form2_u;
type
TForm1 = class(TForm)
btnNextForm: TButton;
procedure FormShow(Sender: TObject);
procedure btnNextFormClick(Sender: TObject);
private
{ Private declarations }
objUser : TUser ;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnNextFormClick(Sender: TObject);
begin
Form2.ShowModal ;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
objUser := TUser.Create ;
objUser.setUserID(2);
end;
end.
Form2 выглядит следующим образом:
unit Form2_U;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
clsUser_U;
type
TForm2 = class(TForm)
lbl1: TLabel;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
objUser : TUser ;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormShow(Sender: TObject);
begin
lbl1.Caption := inttostr(objUser.getUserID);
end;
end.
Delphi выдает ошибкунарушение доступа.Как мне увеличить время жизни объекта?