ADS-OCX Einschränkungen in Delphi-Anwendungen

Delphi's Memory Manager

In der AdsOcx Applikation müssen Sie sicherstellen daß die Systemvariable: IsMultiThread auf jeden Fall auf True gesetzt ist. Der Memory Manager ist "thread-safe" nur wenn diese Variable gesetzt ist. Nur dann werden auch die Zugriffe auf gemeinsame Resourcen verriegelt. Oft setzt der Memory Manager von Delphi diese Variable nicht wenn eine eingebundene DLL oder ein Control eigene Threads startet.

Fügen Sie folgende Zeile in die initialization section ihrer Applikation:

Initialization
    IsMultiThread := True;// Setting this system variable makes Delphi's memory manager thread-safe

Methoden/Eigenschaften

Folgende Eigenschaften, Methoden und Ereignisse verursachen Fehler in Delphi-Applikationen und dürfen nicht benutzt werden. Wie aus der Tabelle zu sehen ist, sollte die neueste Version von Delphi benutzt werden oder es muss auf einige Funktionalitäten verzichtet werden. Zu den aufgeführten Delphi-Versionen gibt es  verschiedene Updates, die möglicherweise einige Fehler beheben. 

 

Fehlerbeschreibung

Workaround

Delphi-Version

Eigenschaften

 

 

3.0

4.0

5.0

6.0

AdsClientType

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

AdsClientAdsState

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

AdsClientAdsControl

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

AdsServerAdsControl

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

AdsServerAdsState

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

AdsServerType

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

AdsServerLastMessage

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

AdsAmsClientNetId

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

AdsAmsServerNetId

Beim Zugriff auf die Eigenschaft entsteht Memory-Leak. Speicher für den zurückgelieferten String wird nicht korrekt zurückgegeben. 

n/a

Bug

?

Fixed

 

Methoden

 

 

 

 

 

 

Alle Methoden

Die Funktionen der generierten Typbibliothek ADSOCXLib_TLB liefern undefinierte Rückgabeparameter.

Bitte installieren Sie den Delpphi 6 Update Pack 2 und binden Sie das ADSOCX neu ein.

-

-

kein Bug

Bug

AdsSyncReadReq

AdsSyncWriteReq

Mit diesen Methoden können Variablen vom beliebigen Typ in die SPS übertragen oder aus der SPS gelesen werden. Die OleVariant-Parameter werden aber bei der AdsSyncReadReq-Methode per Wert und nicht per Reference übergeben. D.h. während des Aufrufs kann der Wert des data-Parameters von der Methode nicht geändert werden. Während des Aufrufs werden die SPS-Variablen zwar in eine entsprechende OleVariant-Variable hineinkopiert, die Variable ist aber nur eine Kopie der Variablen aus der aktuellen Parameterliste. Die Methoden-Prototypen für das ADS-OCX werden von der Delphi-Entwicklungsumgebung beim Einbinden des ADS-OCX automatisch generiert und können nicht beinflußt werden.

Benutzen Sie die "aufgelösten" Methoden um auf die SPS-Variablen synchron zuzugreifen (z. B.

AdsSyncReadIntegerReq() u.s.w. ). 

Bug

?

Bug

 

AdsReadVarConnectEx

Ähnlich wie bei den AdsSync-Methoden,  werden die OleVariant-Parameter in den Ereignisfunktionen per Wert und nicht per Referenz übergeben.

Benutzen Sie die Methode AdsReadVarConnectEx2

Bug

?

Bug

 

Ereignisse

 

 

 

 

 

 

AdsReadConnectUpdateEx

Beim Aufrufen der Ereignisfunktion wird eine Zugriffsverletzung generiert.

Benutzen Sie die Ereignisfunktion AdsReadConnectUpdateEx2

Bug

?

Bug