AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Private Variable "verweigert Zutritt"

Ein Thema von VinzRitt · begonnen am 21. Sep 2011 · letzter Beitrag vom 22. Sep 2011
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Luckie
Luckie
(Moderator)

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

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 01: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.158 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 07: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
929 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 07: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
40.504 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 09: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

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

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 10:01
Was ich in meinem Beispiel vergessen habe, ist das Freigeben der Instanz mit Free.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

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

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 10:02
(Diesmal für mich: AUTSCH!!!)

Natürlich meinte ich Wuerfel[0].Free !!
Ralf Kaiser
  Mit Zitat antworten Zitat
hoika

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

AW: Private Variable "verweigert Zutritt"

  Alt 22. Sep 2011, 21:28
Hallo,

klar muss das Wuerfel[i] erzeugt werden ;(
ich war auf Records aus.


Heiko
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf