AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Private Variable "verweigert Zutritt"

Ein Thema von VinzRitt · begonnen am 21. Sep 2011 · letzter Beitrag vom 22. Sep 2011
Antwort Antwort
VinzRitt

Registriert seit: 21. Sep 2011
5 Beiträge
 
#1

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 00:05
nochmal ist gut, ich habe das in delphi noch NIE gemacht!!!

Aber danke!!! Bei google, hab ich dazu nämlich WENIG hilfreiches bekommen...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 00:13
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??
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 00:27
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
VinzRitt

Registriert seit: 21. Sep 2011
5 Beiträge
 
#4

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 00:38
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-
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 00:43
In jeder Sprache brauchst du einen Konstruktor.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Augen: Integer;
begin
  FWuerfel.Werfen;
  Augen := FWuerfel.Augen;
  case Augen of
    1: // mach was hier;
    2: // mach was hier;
    3: // mach was hier;
    4: // mach was hier;
    5: // mach was hier;
    6: // mach was hier;
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 06:29
Hallo,

da du c++ erwähnst.
YSo wie du es hier geschrieben hast, sind es globale Variablen.
Bei lokalen würde c++ die Klassen selber erzeugen

class TWuerfel
{
}

void TuWas()
{
TWuerfel Wuerfel[3];
}


In Delphi sind Klassen immer Pointer, etwas so (mein c++ ist etwas eingerostet)
Du hast also ein Array von TWuerfel-Pointern angelegt.
Due Array muss auch wieder freigeben werden (In Delphi Wuerfel[0].Free) !

void TuWas()
{
TWuerfel* Wuerfel[3];
}

Du muss also erst Instancen erzeugen

new Wuerfel[0] (oder so ähnlich)


etwas einfacher ist es in Delphi mit dynamic arrays


Wuerfel: array of TWuerfel;

Initialisierung

SetLength(Wuerfel,3)
Wuerfel[0]
Wuerfel[1]
Wuerfel[2]

In paar Hilfsfunktionen
Low(Wuerfel) -> 0
High(Wuerfel) -> 2

Freigabe
Wuerfel:= NIL;



Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 06:51
etwas einfacher ist es in Delphi mit dynamic arrays

Wuerfel: array of TWuerfel;

Initialisierung

SetLength(Wuerfel,3)
Wuerfel[0]
Wuerfel[1]
Wuerfel[2]

In paar Hilfsfunktionen
Low(Wuerfel) -> 0
High(Wuerfel) -> 2

Freigabe
Wuerfel:= NIL;
AUTSCH!!

Auch bei dynamischen Arrays müssen die Instanzen erzeugt werden!

Initialisierung:

Delphi-Quellcode:
SetLength(Wuerfel,3)
Wuerfel[0] := TWuerfel.Create;
Wuerfel[1] := TWuerfel.Create;
Wuerfel[2] := TWuerfel.Create;
Freigabe:

Wuerfel.Free; Eine Freigabe durch die Zuweisung von NIL erfolgt nur wenn es sich um ein Interfaces handelt!!!
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 08:21
Freigabe:

Wuerfel.Free; Eine Freigabe durch die Zuweisung von NIL erfolgt nur wenn es sich um ein Interfaces handelt!!!
Dynamische Arrays und Free?

Wuerfel := nil; oder SetLength(Wuerfel, 0); , wobei Delphi dynamische Arrays auch automatisch freigibt, genauso wie die Interfaces.
Aber die TWuerfel-Instanzen müssen vorher noch freigegeben werden
Wuerfel[i].Free; (am Einfachsten in einer Schleife, welche das Array durchgeht)

PS: Genau deswegen hat man die Delphi-Referenz durchsuchenTObjectList erfunden, da sie sich um die Freigabe kümmern kann.
Ein Therapeut entspricht 1024 Gigapeut.
  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 08:03 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-2025 by Thomas Breitkreuz