Delphi n'a pas Pu convertir la variante de type (UnicodeString) de type (Boolean)

J'ai ce code de couleur de la grille de ligne de base sur les données de la colonne (la grille est de devexpress)

var
AColumn: TcxCustomGridTableItem;
gs: variant;
begin

  AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('COLOR');

  gs := ARecord.Values[AColumn.Index];

  if VarType(gs) and VarTypeMask = varString or varUString then
    AStyle.Color := gs; //<<<----- exception

Le domaine color est de type varchar (firebird) contiennent des valeurs comme cllime, clred, etc...
mais j'obtiens l'erreur " impossible de convertir variante de type (UnicodeString) de type (Boolean)' à la ligne, à l'exception de commentaires. que dois-je changer ?

Grâce

Le AStyle.Color de la propriété est de type Booléen (basé sur l'erreur de compilation). Comment est la AStyle déclaré ? De toute façon, vous pouvez utiliser if VarIsType(gs, [varString, varUString]) then pour vérifier si une valeur de gs est d'un certain type.
Je ne sais pas vraiment beaucoup sur les types de variantes, mais le if partie semble suspect. Peut-il correct? [Il ressemble presque à l'OP pense que le compilateur accepte de langage naturel d'entrée!]
AStyle.Color est de type TCOLOR et le compilateur accepte la ligne pourquoi soulever une exception ?
Votre logique dans la si les besoins des parens. Et vous ne pouvez pas comme par magie transformer une chaîne en couleur. Vous devriez être en utilisant AsString sur votre domaine, et puis IIRC IdentToColor.
varUstring n'est pas Booléenne! Donc, Essayez comme if (VarType(gs) and VarTypeMask = varString) or (VarType(gs) and VarTypeMask = varUString) then ...

OriginalL'auteur Wel | 2013-01-28