Versionsnummern für Schnittstellen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Die Tools API-Dienste verwenden


Bei genauer Betrachtung der Deklarationen einiger Schnittstellen wird Ihnen auffallen, dass deren Vorgänger sehr ähnliche Namen besitzen. So erbt IOTAMessageServices beispielsweise von IOTAMessageServices50, die wiederum von IOTAMessageServices40 abgeleitet ist. Diese Verwendung von Versionsnummern schützt Ihren Quelltext vor Änderungen innerhalb der einzelnen Delphi-Versionen.

Gemäß dem COM-Grundprinzip ändern sich eine Schnittstelle und ihre GUID niemals. Die Tools API hält sich an diese Regel. Wird eine Schnittstelle in einer neuen Version modifiziert, deklariert die Tools API eine neue Schnittstelle, die von der alten abgeleitet ist. Die alte GUID bleibt unverändert bestehen und der alten unveränderten Schnittstelle zugeordnet. Die abgeleitete Schnittstelle erhält eine neue GUID. Somit können bestehende Experten weiterhin mit der ursprünglichen GUID arbeiten.

Auch die Schnittstellennamen werden von der Tools API im Hinblick auf die Quelltextkompatibilität angepasst. Dabei ist zwischen den durch Embarcadero und den durch einen Benutzer implementierten Schnittstellen zu unterscheiden. Implementiert die IDE die Schnittstelle, wird der Name nicht verändert, sodass vorhandener Quelltext funktionsfähig bleibt. Die alten Schnittstellennamen werden um die Versionsnummer erweitert. Die alten Schnittstellennamen werden um die Versionsnummer erweitert.

Für Schnittstellen, die durch den Benutzer implementiert werden, erfordert jedoch die Nutzung neuer Elementfunktionen der Basisschnittstelle neue Funktionen in Ihrem Quelltext. Deshalb behält die alte Schnittstelle ihren Namen, und an den Namen der neuen Schnittstelle wird eine Versionsnummer angefügt.

Betrachten Sie als Beispiel IOTAMessageServices. Mit Delphi 6 wurde eine neue Funktion eingeführt: Meldungsgruppen. Deshalb benötigt die Basisschnittstelle neue Elementfunktionen. Diese werden in einer neuen Schnittstellenklasse deklariert, die jetzt den Namen IOTAMessageServices besitzt. Die vorherige Schnittstelle aus Version 5 wurde dafür umbenannt in IOTAMessageServices50. Dagegen wurde die alte GUID von IOTAMessageServices auch für IOTAMessageServices50 beibehalten, da die Elementfunktionen übereinstimmen.

Ein Beispiel für eine vom Benutzer zu implementierende Schnittstelle ist IOTAIDENotifier. In Delphi 5 wurden weitere überladene Funktionen hinzugefügt: AfterCompile und BeforeCompile. Vorhandener Quelltext muss nur geändert werden, wenn die neuen Funktionen genutzt werden sollen; in diesem Fall sind diese von IOTAIDENotifier50 geerbten Funktionen zu überschreiben. Da mit Version 6 keine weiteren Änderungen vorgenommen wurden, gilt weiterhin der Name IOTAIDENotifier50.

Als Faustregel für das Erstellen neuen Quelltextes gilt, dass die Klasse mit den meisten Ableitungen verwendet werden sollte. Belassen Sie den Quelltext unverändert, wenn Sie einen bestehenden Experten lediglich unter einer neuen Delphi-Version neu compilieren.

Siehe auch