Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Private/Public in Unit mit gesammelten Funktionen ala Math (https://www.delphipraxis.net/169223-private-public-unit-mit-gesammelten-funktionen-ala-math.html)

Jumpy 5. Jul 2012 15:37

Delphi-Version: 5

Private/Public in Unit mit gesammelten Funktionen ala Math
 
Hallo,

ich möchte mir eine Unit erstellen, in der ich so alle möglichen Funktionen packen wollte, die ich so gelegentlich brauche. Vllt. werden's auch mehrere Units, thematisch sortiert.

Da sollen keine Klassen drin entstehen, sondern wirklich nur Funktionen. Im Prinzip also sowas wie die Unit Math.

Sind in so einer Unit alle Funktionen public? Oder kann man da auch Funktionen zum internen Gebrauch in der Unit ablegen, die aus anderen Units heraus nicht aufgerufen werden können? In der Unit Math, die ich mir als Beispiel angeguckt habe, stand im Interface-Bereich nirgendwo was von private und public...

DeddyH 5. Jul 2012 15:40

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Alle Funktionen, deren Funktionsköpfe im interface-Teil stehen, sind von außen erreichbar. Alle anderen nicht.
Delphi-Quellcode:
unit Dings;

interface
 
uses ...;

function Func1: integer; //von außen aufrufbar

implementation

function Func1: integer;
begin
  ...
end;

function Func2: integer; //nur Unit-intern benutzbar
begin
  ...
end;

himitsu 5. Jul 2012 15:43

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Alles was im "interface" veröffentlicht wird, ist puclic.

Alles was nur in der "implementation" auftaucht, ist quasi private.

[edit]
Ich wünschte mir eine rote Box.

Uwe Raabe 5. Jul 2012 15:44

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Eine Methode, die im Imterface-Teil deklariert wird, ist public. Es hindert dich aber niemand daran, eine Methode nur im Implementation-Teil zu platzieren - dann ist die private. In der Unit Math bei D5 sind das z.B. die Methoden Annuity2, ArgError, CoshSinh, PaymentsParts, PolyX, RaiseOverflowError, RelSmall und der Record TPoly.

DeddyH 5. Jul 2012 15:47

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Wer will nochmal, wer hat noch nicht? :lol:

shmia 5. Jul 2012 16:02

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Zitat:

Zitat von DeddyH (Beitrag 1173689)
Wer will nochmal, wer hat noch nicht? :lol:

Ich, Ich, Ich!

Zitat:

Vllt. werden's auch mehrere Units, thematisch sortiert.
Unbedingt nach Thema sortieren!
Diese "Utility"-Units in denen querbeet alles Mögliche enthalten ist sind Müll.

Aber bevor du deine eigenen Units erstellst wäre es ratsam zu schauen, ob es das was du brauchst nicht irgendwo schon gibt.
Und was soll ich sagen - natürlich gibt es das schon.
JEDI Code Library

Uwe Raabe 5. Jul 2012 16:17

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Zitat:

Zitat von DeddyH (Beitrag 1173689)
Wer will nochmal, wer hat noch nicht? :lol:

Schon gut, irgendwie mag mich der rote Kasten manchmal wohl nicht so richtig.

Medium 5. Jul 2012 18:45

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Für sowas nehme ich mir auch gerne Klassen, die ausschließlich "static" Methoden ("class function" etc.) beinhalten. Dadurch ist man angenehm gezwungen thematisch sinnvoll in diesen Klassen zu gruppieren, hat Felder (statt globals), und hat bei der Verwendung gleich einen hübsch qualifizierten Namen.

DeddyH 5. Jul 2012 18:50

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1173694)
Schon gut, irgendwie mag mich der rote Kasten manchmal wohl nicht so richtig.

Das sollte auch kein Kritik sein, nur 3 Mal die sinngemäß in etwa gleiche Antwort nacheinander fand ich schon irgendwie witzig. Nix für ungut.

himitsu 5. Jul 2012 19:33

AW: Private/Public in Unit mit gesammelten Funktionen ala Math
 
Delphi 6 sollte doch auch schon Klassenfunktionen unterstützen?

Delphi-Quellcode:
type
  TUtilityXyz = class // in neueren Delphis "class abstract" oder als Record
    class function Max(x, y: Integer): Integer; static; // wenn static noch nicht geht, dann weglassen
    class function Min(x, y: Integer): Integer; static; overload;
    class function Min(x, y: Double): Double; static; overload;
  end;
Mit Static ist es vom Funktionsaufruf her, wie eine ganz billige Function/Prozedur, nur daß man auf diese Weise auch Mehreres in einer Unit unterbringen und gruppieren kann.
(Klassenname als Namespace, anstatt mehrere Units/Unitnamen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr.
Seite 1 von 2  1 2      

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