![]() |
Private Variable "verweigert Zutritt"
Liste der Anhänge anzeigen (Anzahl: 1)
Hallö,
Ich bin noch ein ziemlicher Neuling, was Klassen in Delphi betrifft. In meinem Informatikkurs haben wird es heute erst begonnen. Das System der OOP ist mir aber von C++ bereits geläufig, da habe ich mir gedacht: Mach es Mal fertig, aber kaum eine Stunde programmiert, sind meine Grundfeste erschüttert. Hier der problematische Ausschnitt
Delphi-Quellcode:
Tja, setAugen tritt mein Problem auf, eine Zugriffsverletzung. Fehlermeldung im Anhang.
unit main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls; type TWuerfel = class (TObject) private // Membervariablen m_Augen: integer; public // Memberfunktionen function getAugen (): integer; procedure setAugen (worth: integer); procedure werfen (TBBActual: TBitBtn); end; var Wuerfel: array[1..3] of TWuerfel; implementation {$R *.dfm} //TWuerfel //Memberfunktionen // getAugen function TWuerfel.getAugen (): integer; begin getAugen:= m_Augen; end; //getAugen // setAugen procedure TWuerfel.setAugen (worth: integer); begin m_Augen:= worth; // Hier wird Zugriffsverletzung angezeigt end; //setAugen //Beliebige Funktionen // werfen // Aufgabe: Zufallszahl bestimmen und auf Würfel ausgeben procedure TWuerfel.werfen (TBBActual: TBitBtn); begin // Zufallszahl würfeln randomize; setAugen (random (6)+1); // Ergebnis anzeigen TBBActual.Glyph.LoadFromFile (intToStr (getAugen) + '.bmp'); end; //werfen end. Meine Frage ... Hat das überhaupt etwas mit der Variable an sich zu tun? Denn diese habe ich lustig hin und her geschoben und der Fehlercode bleibt immer der gleiche. Wie sähen Mögliche Lösungen aus? Ich hoffe man kann mir helfen!!! Danke im Voraus Vinzent Rittel |
AW: Private Variable "verweigert Zutritt"
Hast du auch irgendwo die Klasse erzeugt?
|
AW: Private Variable "verweigert Zutritt"
wie meinen?
Edit: Die Klasse wird ja aufgerufen, per Debugger bin ich auch einige Schritte in Prozeduren der Klasse navigiert. Auch setAuge () lässt sich aufrufen, aber m_Auge will einfach keinen Wert annehmen (lässt sich übrigens auch nicht über Debugger als Ausdruck überwachen) |
AW: Private Variable "verweigert Zutritt"
Zitat:
|
AW: Private Variable "verweigert Zutritt"
Hier der Abgespeckte Quelltext:
Delphi-Quellcode:
unit main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls; type TForm1 = class(TForm) LPunktzahl: TLabel; BBWuerfel1: TBitBtn; BBWuerfel2: TBitBtn; BBWuerfel3: TBitBtn; procedure BBWuerfel1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type TWuerfel = class (TObject) private // Membervariablen Augen: integer; public // Memberfunktionen function getAugen (): integer; procedure setAugen (worth: integer); procedure werfen (TBBActual: TBitBtn); end; var Form1: TForm1; Wuerfel: array[1..3] of TWuerfel; implementation {$R *.dfm} //TWuerfel //Memberfunktionen // getAugen function TWuerfel.getAugen (): integer; begin getAugen:= Augen; end; //getAugen // setAugen procedure TWuerfel.setAugen (worth: integer); begin Augen:= worth; // Hier wird Zugriffsverletzung angezeigt end; //setAugen //Beliebige Funktionen // werfen // Aufgabe: Zufallszahl bestimmen und auf Würfel ausgeben procedure TWuerfel.werfen (TBBActual: TBitBtn); begin // Zufallszahl würfeln randomize; setAugen (random (6)+1); // Ergebnis anzeigen TBBActual.Glyph.LoadFromFile (intToStr (getAugen) + '.bmp'); end; //werfen //TForm1 // BBWuerfel1Click procedure TForm1.BBWuerfel1Click(Sender: TObject); begin Wuerfel[1].werfen (BBWuerfel1); end; //BBWuerfelClick end. |
AW: Private Variable "verweigert Zutritt"
Und wo wird eine Instanz der Klasse erzeugt? Du solltest dich noch mal mit den Grundlagen auseinandersetzen:
![]() |
AW: Private Variable "verweigert Zutritt"
nochmal ist gut, ich habe das in delphi noch NIE gemacht!!!
Aber danke!!! Bei google, hab ich dazu nämlich WENIG hilfreiches bekommen... |
AW: Private Variable "verweigert Zutritt"
Delphi-Quellcode:
type
TWuerfel = class (TObject) private FAugen: integer; function GetAugen: Integer; procedure SetAugen(Value: Integer); public property Augen: Integer read GetAugen write SetAugen; procedure Werfen (TBBActual: TBitBtn); end; var Form1: TForm1; Wuerfel: array[1..3] of TWuerfel; // Warum global und nicht ein Feld der TForm Klasse?? |
AW: Private Variable "verweigert Zutritt"
Delphi-Quellcode:
type
TWuerfel = class (TObject) private FAugen: integer; function GetAugen: Integer; procedure SetAugen(Value: Integer); public property Augen: Integer read GetAugen write SetAugen; Constructor Create; procedure Werfen; end; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } FWuerfel: TWuerfel; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TWuerfel } constructor TWuerfel.Create; begin Randomize; end; function TWuerfel.GetAugen: Integer; begin Result := FAugen; end; procedure TWuerfel.SetAugen(Value: Integer); begin FAugen := Value; end; procedure TWuerfel.Werfen; var Augen: Integer; begin Augen := Random(6) + 1; SetAugen(Augen); end; procedure TForm1.FormCreate(Sender: TObject); begin FWuerfel := TWuerfel.Create; end; procedure TForm1.Button1Click(Sender: TObject); var Augen: Integer; begin FWuerfel.Werfen; Augen := FWuerfel.Augen; ShowMessage(IntToStr(Augen)); end; |
AW: Private Variable "verweigert Zutritt"
Darauf wär ich wohl nicht gekommen. Ich denke ich arbeite es stück für Stück auf. Mein Lehrer erklärts eh erst nächste Woche, also hab ich noch das WE um es vorher zu können. Die Lösung ist nachvollziehbar.
Wielen Dank also P.S In C++ ist das irgendwie doch nicht unwesentlich einfacher Konstruiert. -CLOSED- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz