System.Variants.DispatchUnsignedAsSigned

Aus Appmethod Libraries
Wechseln zu: Navigation, Suche

Object Pascal

DispatchUnsignedAsSigned: Boolean;

C++

extern DELPHI_PACKAGE bool DispatchUnsignedAsSigned;

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
variable public
System.Variants.pas
System.Variants.hpp
System.Variants System.Variants

Beschreibung

Weist die Laufzeit an, vorzeichenlose Werte als Integerwerte mit Vorzeichen zu senden. Das Setzen dieser globalen Variable ist für Automatisierungsserver hilfreich.


Object Pascal unterstützt die Weiterleitung von Word-, LongWord- und UInt64-Parametern als vorzeichenlose Integerwerte (VT_UI2, VT_UI4 bzw. VT_UI8). TOleEnum ist ein Alias für ein LongWord, und beim Importieren von Typbibliotheken in Object Pascal werden Aufzählungen vorzeichenlos deklariert. Das Ergebnis ist, dass Aufzählungen als VT_UI4 weitergeleitet werden. Automatisierungsserver, wie MS-Excel, verarbeiten aber vorzeichenlose Aufzählungen nicht. Daher könnte der folgende Code fehlschlagen:

 
   V.Insert(TOLEEnum(xlShiftDown)); // Insert in Range

Verwenden Sie, um diesen Fehler ohne Zurücksetzen der Automatisierungsunterstützung für vorzeichenlose Integerwerte zu vermeiden, die globale Variable System.Variants.DispatchUnsignedAsSigned, mit der Sie die Laufzeit anweisen, vorzeichenlose Werte als Integerwerte mit Vorzeichen zu senden.

So wird diese Variable gesetzt:

 
  {$IF CompilerVersion >= 23}
  {$IF DECLARED(System.Variants.DispatchUnsignedAsSigned)}
    System.Variants.DispatchUnsignedAsSigned := True;
  {$IFEND}
  {$IFEND}

Nehmen Sie den obigen Code in den initialization-Abschnitt einer Unit des Automatisierungs-Clients auf.

HINWEIS: Die obigen Erläuterungen betreffen nur die Variant- und DispInterface-basierte Automatisierung. D.h., Automatisierungsaufrufe über vtable/interface sind von diesem Fehler und der hier beschriebenen Lösung nicht betroffen.

Siehe auch