Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ein paar ganz einfach Fragen zur Delphi-Unit ... (https://www.delphipraxis.net/14352-ein-paar-ganz-einfach-fragen-zur-delphi-unit.html)

Wheelie 7. Jan 2004 15:56


Ein paar ganz einfach Fragen zur Delphi-Unit ...
 
Hi!

Habe hier mal ein paar wichtige Fragen, deren exakte/detaillierte Antworten ich nicht weiß :oops:

Was bedeutet eigentlich die Compileranweisung {$R *.dfm} in der Unit genau??
Was ist der Unterschied zwischen private und public unter type?
Wo ist es am besten globale Variablen zu deklarieren (es geht ja auch unter implementation)?

Vielen vielen Danke :-D

Luckie 7. Jan 2004 16:01

Re: Ein paar ganz einfach Fragen zur Delphi-Unit ...
 
{$R *.dfm}
Bindet die dfm (Formular Dateien) als Ressource ein.

private und public ist in der Hilfe wunderschön erklärt. ;)

Zitat:

Zitat von Hilfe
A private member is invisible outside of the unit or program where its class is declared. In other words, a private method cannot be called from another module, and a private field or property cannot be read or written to from another module. [..]

A public member is visible wherever its class can be referenced.


scp 7. Jan 2004 16:08

Re: Ein paar ganz einfach Fragen zur Delphi-Unit ...
 
Zitat:

Zitat von Wheelie
Was bedeutet eigentlich die Compileranweisung {$R *.dfm} in der Unit genau??

$R ermöglicht das einbinden einer Resourcen-Datei (.res, .dcr oder .dfm). In dem Fall handelt es sich um die .dfm (Delphi Form), diese enthält das Design des Formulars (Position, Farbe usw. der einzelnen Komponenten).
Der * steht für den Namen der Unit ohne Erweiterung, das heisst bei Unit1.pas bindet er die Unit1.dfm ein.

Zitat:

Zitat von Wheelie
Was ist der Unterschied zwischen private und public unter type?

Da guckst du am besten in der Delphi OH unter "public" nach.

Zitat:

Zitat von Wheelie
Wo ist es am besten globale Variablen zu deklarieren (es geht ja auch unter implementation)?

In der Unit des Hauptformulars spielt das eigentlich keine Rolle. Bei anderen Units kommt es darauf an, ob die Variablen nur innerhalb der Unit selbst oder auch von anderen Units aus verwenden willst. Im ersten Fall definierst du sie unter implementation, im zweiten Fall unter interface.


Edit:
Mist, schon wieder einer schneller :-)

Wheelie 7. Jan 2004 16:52

Re: Ein paar ganz einfach Fragen zur Delphi-Unit ...
 
Hab's verstanden! Noch eine Fragen: Habe mal von jemanden gehört, dass Variablen nur wenn dringend nötig global deklariert werden sollten, warum das?

Matze 7. Jan 2004 16:58

Re: Ein paar ganz einfach Fragen zur Delphi-Unit ...
 
Das dient allein der Übersicht, denn wenn du viele Variablen global hast, dann weiß man nachher (vielleicht) nicht mehr so genau, wofpr diese stehen, was bei großen Projekten der Fall sein kann.

Brauchst du eine Variable nur innerhalb einer Prozedur/Function, dann deklariere sie auf jeden fall lokal. Man sieht dann sofort, welche variable zu welcher Prozedur/Funktion gehört.

choose 7. Jan 2004 17:04

Re: Ein paar ganz einfach Fragen zur Delphi-Unit ...
 
Diese Forderung wird häufig gestellt, um eine Änderung von Werten, "die einen nichts angehen" zu vermeiden und entspricht dem in der OOP propagierten Bei Google suchenGeheimnisprinzip, obwohl der Gedanke, "nach außen" nur Schnittstellen zu veröffentlichen, nicht neu ist.

Aus einem der ersten Google-Treffer zitiere ich
Zitat:

[..] Das Geheimnisprinzip bietet den Vorteil, dass bei einer Änderung der internen Struktur nur die eine Klasse/das Modul modifiziert werden muss, die Schnittstelle bleibt bestehen, weshalb andere Klassen und Module nicht angepasst werden müssen. Dies führt zu einer besseren Wartbarkeit und Wiederverwendbarkeit des Codes.
Das Geheimnisprinzip ist ein wichtiges Konzept in der Objektorientierung.
(Anm: mit "Modul" ist im Delphi-Kontext "Unit" gemeint.)

Alle weiteren Dinge wie Bei Google suchenVorbedingung, Bei Google suchenNachbedingung, Bei Google suchenWartberkeit (durch Übersichtlichkeit) etc., die durch unsachgemäßen Einsatz von globalen Variablen schwer sicherzustellen sind, ergeben sich aus dem Geheimnisprinzip (und dem oft in diesem Zusammenhang verwendeten prinzip der Zuständigkeit oder [google]kohärenz (oop)[/google]), weshalb ich an dieser Stelle nicht weiter darauf eingehen möchte.


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