Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Zugriffsverletzung bei Adresse (https://www.delphipraxis.net/198051-zugriffsverletzung-bei-adresse.html)

hum4n0id3 28. Sep 2018 22:20

Delphi-Version: 10.2 Tokyo

Zugriffsverletzung bei Adresse
 
Servus.

Erstmals bitte ich um Entschuldigung, falsch ich das Thema falsch reingestellt habe.

Ich schaue mir Delphi an und habe eine Klasse erstellt.

Code:
unit Unit1;

interface

type
  TUser = class
    private
      fName: string;
      procedure SetName(aName: string);
      function GetName(): string;
    public
      property Name: string read GetName write SetName;
  end;

implementation

procedure TUser.SetName(aName: string);
begin
  fName:=aName;
end;

function TUser.GetName(): string;
begin
  GetName:=fName;
end;
end.
Wenn ich die Klasse in SDIMAIN aufrufen möchte, bekomme ich eine "Zugriffsverletzung bei Adresse"-Fehler.

Code:
uses ..., Unit1

...

var
  SDIAppForm: TSDIAppForm;
  User: TUser;

implementation

uses About;

{$R *.dfm}

...

procedure TSDIAppForm.Button1Click(Sender: TObject);
begin
  User.Name:=Edit2.Text; //<-Fehler passiert bereits hier :-(
  //ShowMessage(User.Name);
end;
Also ich habe eine Klasse in Unit1 und möchte das in der SDIMAIN aufrufen.
Was mache ich falsch?

mfg

Luckie 28. Sep 2018 22:26

AW: Zugriffsverletzung bei Adresse
 
Eventuell erst nal mit Create ein Objekt der Klasse erstellen?

hum4n0id3 29. Sep 2018 05:44

AW: Zugriffsverletzung bei Adresse
 
Wunderbar! Danke jetzt funktioniert es.

Ich erlag dem Irrtum das ich es bereits im var-Bereich mit User: TUser; erledigt habe.

Code:
procedure TSDIAppForm.FormCreate(Sender: TObject);
begin
  User:=TUser.Create;
end;
Ich habe das jetzt so gemacht und es funktioniert endlich.

Vielen Dank!

Bernhard Geyer 29. Sep 2018 10:41

AW: Zugriffsverletzung bei Adresse
 
Nur die Controls die du in der IDE per Drag&Drop auf das Formular legst werden automatisch erzeugt.
Alles andere das du in deinem Formular als Member-Variable anlegst musst du selbste erzeugen und i.d.R. auch wieder freigeben.

DieDolly 29. Sep 2018 12:10

AW: Zugriffsverletzung bei Adresse
 
Zitat:

Zitat von hum4n0id3 (Beitrag 1414488)
Wunderbar! Danke jetzt funktioniert es.

Ich erlag dem Irrtum das ich es bereits im var-Bereich mit User: TUser; erledigt habe.

Code:
procedure TSDIAppForm.FormCreate(Sender: TObject);
begin
  User:=TUser.Create;
end;
Ich habe das jetzt so gemacht und es funktioniert endlich.

Vielen Dank!

Vergiss das Freigeben des Objekts mit .Free bei Programmende oder wann immer nötig nicht.

hum4n0id3 3. Okt 2018 12:01

AW: Zugriffsverletzung bei Adresse
 
Danke für die Antworten. Ich werde diese Beherzigen :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz