Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zur Variablendeklaration (https://www.delphipraxis.net/27074-frage-zur-variablendeklaration.html)

nailor 3. Aug 2004 23:24


Frage zur Variablendeklaration
 
Kann mir mal wer den genauen inhaltlichen Unterschied meiner krassen Variablen erklären? d.h. von wo sie erreichbar sind, wieoft für sie Speicher reserviert wird, warum es da gut / schlecht ist...

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, Forms;

type
  TForm1 = class(TForm)
  public
    KrassInKlasse: byte;
  end;

var
  Form1: TForm1;
  KrassInUnit: byte;

implementation

var
  HierGehtsAuchKrass: byte;

{$R *.dfm}

end.

supermuckl 3. Aug 2004 23:34

Re: Frage zur Variablendeklaration
 
also KrassInKlasse ist halt bestandteil der klasse und wenn du die instanziierst dann wird die variable auch instantiiert und jede klasse hat dann ihre eigene variable

KrassInUnit ist einfach global gehalten und überall erreichbar ( gibts auch nur einmal und nicht mehrere instanzen ) -> solang man aber auch die unit geused hat damit die variable bekannt ist

HierGehtsAuchKrass <- das wird wohl auch global sein schätze ich
//edit wobei diese erst ab der deklaration gültig ist

nailor 4. Aug 2004 00:18

Re: Frage zur Variablendeklaration
 
d.h. wenn ich mehrere TForm1 erstelle, gibt es die beiden unteren nur EINMAL, und nur EIN wert kann angenommen werden, während der obere wert für jede erzeugte form individuell ist?

auf die obere kann man auch nur zugreifen, falls eine instanz vom typ TForm1 erstellt wurde, und man eine referenz auf diese instanz hat?

und auf die beiden unteren kann man aus anderen units nur zugreifen, falls unit1 bei diesen im interface-abschnitt unter uses eingetragen ist, während für die obere ein uses-eintrag von unit1 in den implementation-abschnitt der hypothetischen zweiten unit reichen würde?

supermuckl 4. Aug 2004 01:00

Re: Frage zur Variablendeklaration
 
Zitat:

d.h. wenn ich mehrere TForm1 erstelle, gibt es die beiden unteren nur EINMAL, und nur EIN wert kann angenommen werden, während der obere wert für jede erzeugte form individuell ist?
jo.. auf die klassen variable greifst du ja mit Form1.variablenname zu
auf die globale variable einfach mit ihrem namen

wenn du aber im private bereich deklarierst ( klasse ) dann ist sie nur in proceduren INNERHALB der klasse "sichtbar"

Hansa 4. Aug 2004 01:06

Re: Frage zur Variablendeklaration
 
Nailor, das da ist elementar :!: Mit Gültigkeitsbereichen muß man sich echt etwas auskennen. Das soll jetzt keine Besserwisserei sein, aber, ähm *mitzaunpfahlwinkt*

nailor 4. Aug 2004 01:10

Re: Frage zur Variablendeklaration
 
deshalb frag ich ja. aber sag du mir mal, wo ich den unterschied zwischn #2 und #3 rausfinden kann

Hansa 4. Aug 2004 01:25

Re: Frage zur Variablendeklaration
 
Nailor, das kann ich nicht. :shock: "Elementar" habe ich nicht umsonst gesagt. Ich gebe dir nur Hinweise : Lokal und global, das ist wichtig. Überlege dir, was ein Dreisatz ist. 8) a+b=c Wo wird nun überhaupt C gebraucht ? Und wo a oder b ? c würde wohl ausgewertet/angezeigt werden müssen, aber a und b wäre nur nötig, um c zu ermitteln.

Wenn du das verstanden hast, dann kommt noch public, published usw. und das ist schon gewaltig, um da durchzublicken. :mrgreen:

scp 4. Aug 2004 03:35

Re: Frage zur Variablendeklaration
 
Der Unterschied zwischen KrassInUnit und HierGehtsAuchKrass ist, das HierGehtsAuchKrass nicht von einer anderen Unit aus erreicht werden kann, sondern nur innherhalnb des implementation-Abschnitts von Unit1.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 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