Alte Einheiten freigeben

Identifikatoren anderer Einheiten über eine neue Einheit nach außen verfügbar machen

Gelegentlich müssen Sie Identifikatoren aus einer anderen Einheit in der aktuellen neuen Einheit neu exportieren und freigeben. Das Ergebnis: Wenn Sie nur diese neue Einheit einbinden, können Sie diese Identifikatoren direkt verwenden.

Einsatzszenarien:

  1. Kompatibilität mit älteren Einheitsversionen sicherstellen und alte Aufrufsyntax beibehalten;
  2. Interne unterlagernde Einheiten kapseln und zugrundeliegende Implementierungsdateien nach außen verbergen.

Realisierung: Definiere im Abschnitt interface der aktuellen Einheit gleichnamige / alias-Identifikatoren neu, um Typen und Konstanten der unterlagernden Einheit weiterzuleiten.

MyUnit.pas bearbeiten

unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}

interface
uses Graphics;

type
  // Variante 1: Alias erstellen, Graphics.TColor nach außen als TMyColor anbieten
  TMyColor = TColor;

  // Variante 2: Unter Originalnamen freigeben; Einheitsqualifizierer Graphics. ist erforderlich um zirkuläre Selbstverweise zu vermeiden
  TColor = Graphics.TColor;

const
  // Auch Konstanten unterstützen die Weiterleitung zur Freigabe
  clYellow = Graphics.clYellow;
  clBlue = Graphics.clBlue;

implementation

end.Code-Sprache: JavaScript (javascript)

Vollständiges Beispiel

unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}

interface
uses Graphics;

type
  // 1 Graphics.TColor Typalias TMyColor
  TMyColor = TColor;

  // 2 Originalnamen freigeben
  // mit Graphics. qualifizieren um Schleifenverweise zu verhindern
  TColor = Graphics.TColor;

const
  // Konstanten funktionieren ebenfalls
  clYellow = Graphics.clYellow;

implementation

end.Code-Sprache: PHP (php)

Hauptprogramm

program showcolor;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}

uses MyUnit;
var
  C1: TMyColor;
  C2: TColor;

begin
  C1 := clYellow;
  C2 := clYellow;
end.
Code-Sprache: PHP (php)

Im Hauptprogramm verwenden wir die umbenannten Bezeichnungen aus MyUnit.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert