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
Je ne sais pas vraiment beaucoup sur les types de variantes, mais le
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
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
Vous devez vous connecter pour publier un commentaire.
Je voudrais remplacer votre
if
déclaration auprès de la suivante. Il utilise leVarIsType
fonction, qui est plus simple pour la Variante de la vérification du type et il convertit la chaîne de valeur stockée dans votre variable de type Variant de couleur en utilisant laStringToColor
fonction:C'est un problème différent. C'est parce que
AStyle
n'est pas bien mis en place. Nous ne voyons pas tous de votre code. Cette réponse est la bonne.+1, mais un rapide coup d'oeil dans le Système.pas montre que
varString or varUString = varUString
. L'OP code bidouille fonctionne. 🙂Je vais vérifier que si cela est vraiment tout mon code
Votre commentaire fait pas de sens...
OriginalL'auteur TLama