AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Kann nicht auf propertys eigener Klasse zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Kann nicht auf propertys eigener Klasse zugreifen

Ein Thema von Borschti · begonnen am 21. Okt 2009 · letzter Beitrag vom 22. Okt 2009
Antwort Antwort
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#1

Kann nicht auf propertys eigener Klasse zugreifen

  Alt 21. Okt 2009, 12:56
Hallo,

ich habe ein Problem mit einer selbst entworfenen Klasse und zwar kann ich nicht auf die Propertys dieser zugreifen. Ich erstelle in einer anderen Klasse ganz normal meine Instanz der Klasse mit dem Standardkonstruktor und will dann einer Eigenschaft einen Wert zu weisen, hier bekomme ich aber eine Zugriffsverletzung angezeigt

Hier mal mein Quellcode, ich sitze schon den ganzen Morgen dran und hab zich Tutorials zu dem Thema durchgewälzt aber mir fällt mein Fehler einfach nicht auf :/ Ist bestimmt nur ne Kleinigkeit die ich übersehe...

Delphi-Quellcode:
unit UnKontakt;

interface

uses
  ExcelXP;

type
  TKontakt = class(TObject)
  private
    { private-Deklarationen }
    FKndNr : String;
    FFullName : String;
    FCompanyName : String;
    FFileAs : String;
    FBusinessAddressStreet : String;
    FBusinessAddressPostalCode : String;
    FBusinessAddressCity : String;
    FBusinessTelephoneNumber : String;
    FBusinessFaxNumber : String;
    FEmail1Address : String;
    FBusinessHomePage : String;
    procedure SetKndNr(kndNr : String);
    procedure SetFullName(fullName : String);
    procedure SetCompanyName(companyName : String);
    procedure SetFileAs(fileAs : String);
    procedure SetBusinessAddressStreet(BAS : String);
    procedure SetBusinessAddressPostalCode(BAPC : String);
    procedure SetBusinessAddressCity(BAC : String);
    procedure SetBusinessTelephoneNumber(BTN : String);
    procedure SetBusinessFaxNumber(BFN : String);
    procedure SetEmailAddress(EmailAddress : String);
    procedure SetBusinessHomePage(BHP : String);
  public
    { public-Deklarationen }
    procedure FillProbs(WorkSheet: _WorkSheet; kontakt : TKontakt);
    property kndNr: String read FKndNr write SetKndNr;
    property FullName: String read FFullName write SetFullName;
    property CompanyName: String read FCompanyName write SetCompanyName;
    property FileAs: String read FFileAs write SetFileAs;
    property BusinessAdressStreet: String read FFileAs write SetFileAs;
    property BusinessAddressPostalCode: String read FBusinessAddressPostalCode
                                               write SetBusinessAddressPostalCode;
    property BusinessAddressCity: String read FBusinessAddressCity
                                         write SetBusinessAddressCity;
    property BusinessTelephoneNumber: String read FBusinessTelephoneNumber
                                             write SetBusinessTelephoneNumber;
    property BusinessFaxNumber: String read FBusinessFaxNumber
                                       write SetBusinessFaxNumber;
    property EmailAddress: String read FEmail1Address write SetEmailAddress;
    property BusinessHomePage: String read FBusinessHomePage write SetBusinessHomePage;
  end;
  
var
  Kontakt: TKontakt;

implementation

//Die prozedur bitte erstmal ignorieren, ist noch nicht fertig ^^
procedure TKontakt.FillProbs(WorkSheet: _WorkSheet; kontakt : TKontakt);
begin
  kontakt.SetKndNr(Worksheet.Cells.Item[1, 1].Value);
  kontakt.SetCompanyName(Worksheet.Cells.Item[2, 1].Value);
  kontakt.SetFullName(Worksheet.Cells.Item[3, 1].Value);
  kontakt.SetBusinessAddressStreet(Worksheet.Cells.Item[4, 1].Value);
  kontakt.SetBusinessAddressPostalCode(Worksheet.Cells.Item[5, 1].Value);
  kontakt.SetBusinessAddressCity(Worksheet.Cells.Item[6, 1].Value);
  kontakt.SetBusinessTelephoneNumber(Worksheet.Cells.Item[7, 1].Value);
  kontakt.SetBusinessFaxNumber(Worksheet.Cells.Item[8, 1].Value);
  kontakt.SetEmailAddress(Worksheet.Cells.Item[9, 1].Value);
  kontakt.SetBusinessHomePage(Worksheet.Cells.Item[10, 1].Value);
  kontakt.SetFileAs(Worksheet.Cells.Item[11, 1].Value);
end;

procedure TKontakt.SetKndNr(kndNr : String);
begin
  Kontakt.FKndNr := kndNr;
end;

procedure TKontakt.SetFullName(fullName : String);
begin
  Kontakt.FFullName := fullName;
end;

procedure TKontakt.SetCompanyName(companyName : String);
begin
  Kontakt.FCompanyName := companyName;
end;

procedure TKontakt.SetFileAs(fileAs : String);
begin
  Kontakt.FKndNr := fileAs;
end;

procedure TKontakt.SetBusinessAddressStreet(BAS : String);
begin
  Kontakt.FKndNr := BAS;
end;

procedure TKontakt.SetBusinessAddressPostalCode(BAPC : String);
begin
  Kontakt.FBusinessAddressPostalCode := BAPC;
end;

procedure TKontakt.SetBusinessAddressCity(BAC : String);
begin
  Kontakt.FBusinessAddressCity := BAC;
end;

procedure TKontakt.SetBusinessTelephoneNumber(BTN : String);
begin
  Kontakt.FBusinessTelephoneNumber := BTN;
end;

procedure TKontakt.SetBusinessFaxNumber(BFN : String);
begin
  Kontakt.FBusinessFaxNumber := BFN;
end;

procedure TKontakt.SetEmailAddress(EmailAddress : String);
begin
  Kontakt.FEmail1Address := EMailAddress;
end;

procedure TKontakt.SetBusinessHomePage(BHP : String);
begin
  Kontakt.FBusinessHomePage := BHP;
end;

end.
Soo das ist die Komplette Klasse, bitte helft mir ich find den Fehler einfach nicht

lg Alex
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#2

Re: Kann nicht auf propertys eigener Klasse zugreifen

  Alt 21. Okt 2009, 12:59
Nimm mal in deinen Settern überall das "Kontakt." weg, und schreib der Übersicht wegen die Prozedur nach der public-Deklaration unter die Properties.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Kann nicht auf propertys eigener Klasse zugreifen

  Alt 21. Okt 2009, 13:00
Du greifst innerhalb der Klasse ja auf eine Instanz derselben zu. Beispiel:
Zitat:
Delphi-Quellcode:
procedure TKontakt.SetBusinessHomePage(BHP : String);
begin
  Kontakt.FBusinessHomePage := BHP;
end;
Ändere das einmal in
Delphi-Quellcode:
procedure TKontakt.SetBusinessHomePage(BHP : String);
begin
  FBusinessHomePage := BHP;
end;
oder
Delphi-Quellcode:
procedure TKontakt.SetBusinessHomePage(BHP : String);
begin
  Self.FBusinessHomePage := BHP;
end;
Das natürlich in allen Methoden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#4

Re: Kann nicht auf propertys eigener Klasse zugreifen

  Alt 21. Okt 2009, 13:41
Eigentlich sollte es dennoch gehn, da es in der selben Unit und sogar in der eigenen Klasse liegt.

Es sei denn, er hat der Variable Kontakt nicht seine Instanz zugewiesen.

Aber wie schon erwähnt: nie innerhalb von Klassen auf diese "globalen" Variablen zugreifen
dafür gibt es Self und self ist auch dort im Namensraum, drum geht es auch ohne etwas.



Also lösche einfach die Variable var Kontakt: TKontakt; ,
oder wird diese wirklich gebraucht?


(bei den Formularen ist diese nur da, weil die VCL irgendwo die Instanz speichern muß und damit man als Programmierer einen "externen" Zugriffspunkt hat)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Kann nicht auf propertys eigener Klasse zugreifen

  Alt 22. Okt 2009, 07:39
Daran lag es, danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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