von Hilfe Delphi 2007 Zitiert:
Verwenden GetEnumName eine Delphi aufgezählt Wert in den symbolischen Namen zu konvertieren, die es im Code darstellt.
Das bedeutet, dass Sie es nicht für diesen Zweck verwendet werden können, wie TVarData.VType ist kein Aufzählungswert, sondern eine ganze Zahl, die auf eine der Konstanten in System.pas festgelegt, der aus getroffen werden das Windows SDK wtypes.h Datei. Betrachten Sie die Quelle GetEnumName(), es gibt sofort eine Zeichenfolge mit dem Wert der Ganzzahl zurück.
Edit:
gibt es eine andere Art und Weise die Stringdarstellung TVarData.VType
Sie können bestimmen, die String-Darstellung von Hand zu bekommen. Zuerst müssen Sie sich dessen bewusst sein, dass es mehrere Bits an Informationen gibt, die in dieser Ganzzahl codiert sind, so dass eine einfache Case-Anweisung oder Array-Suche nicht funktioniert. Die unteren 12 Bits sind die Typmaske, und die oberen Bits kodieren Informationen darüber, ob es sich um einen Vektor- oder einen Array-Typ handelt und ob es durch Bezugnahme gegeben ist oder nicht. Die wichtigsten Teile sind:
const
varTypeMask = $0FFF;
varArray = $2000;
varByRef = $4000;
So könnte man etwas tun:
function VariantTypeName(const AValue: TVarData): string;
begin
case AValue.VType and varTypeMask of
vtInteger: Result := 'integer';
// ...
end;
if AValue.VType and varArray <> 0 then
Result := 'array of ' + Result;
if AValue.VType and varByRef <> 0 then
Result := Result + ' by ref';
end;
Ich schlage vor, markieren die Antwort von The_Fox als akzeptiert. – mghie