Fråga : Delphi variant samling

Jag har fått en variant samling av stränger i Delphi. Hur kan jag kontrollerar vad värderar att ha satts in i den samlingdvs. showmesagen eller någon visuellt hjälpmedelkontroll? " klar "

Svar : Delphi variant samling

Jag använder dessa nytto- fungerar:

Var MyVar: Variant;

börja
 MyVar: =…, // gör någon initialisering

 ShowMessageFmt ('MyVar är av typ %s, och den är värderar är ”#13#10'% s”,
    [VariantTypeName (MyVar), VariantAsString (MyVar)]);
avsluta;
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
fungera varVar VariantBasicTypeName (: Variant): Stränga;
var
  basicType  : Heltal;
börja
  basicType: = (varVar) VarType och VarTypeMask;
  fallbasicType av
    varEmpty     : Resultat: = ”töm”;
    varNull      : Resultat: = ”ogiltigt”;
    varSmallInt  : Resultat: = ”SmallInt”;
    varInteger   : Resultat: = ”heltal”;
    varSingle    : Resultat: = ”singel”;
    varDouble    : Resultat: = ”dubbelt”;
    varCurrency  : Resultat: = ”valuta”;
    varDate      : Resultat: = ”datera”;
    varOleStr    : Resultat: = ”OleStr”;
    varDispatch  : Resultat: = ”utskick”;
    varError     : Resultat: = ”fel”;
    varBoolean   : Resultat: = ”Boolean”;
    varVariant   : Resultat: = ”Variant”;
    varUnknown   : Resultat: = ”okända”;
    varByte      : Resultat: = ”byte”;
{$ifdef VER140}
    varWord      : Resultat: = ”uttrycka”;
    varLongWord  : Resultat: = ”LongWord”;
    varInt64     : Resultat: = ”Int64”;
{$endif}    
    varStrArg    : Resultat: = ”StrArg”;
    varString    : Resultat: = ”stränga”;
    varAny       : Resultat: = ”några”;
    varTypeMask  : Resultat: = ”TypeMask”;
    Annat resultat: = formatera (”beställnings- (%d)”, [basicType]);
  avsluta;
avsluta;

fungera varVar VariantTypeName (: Variant): Stränga;
var
  ExtType I  : Heltal;
börja
 ExtType: = (varVar) VarType;
 Resultat: (varVar) =VariantBasicTypeName;
 om (ExtType och varArray) >0 därefter
  börja
   Resultat: =Result+'[';
   för I: =1 till (varVar) VarArrayDimCount resulterar: =Result+Format (”%d,”, [varVar VarArrayHighBound (, I) - varVar VarArrayLowBound (, I) +1]);
   Resultat [längd (resultat)]: = '] ';
  avsluta;
 om (ExtType och varByRef) >0 resulterar därefter: = ' @ ' +Result;
avsluta;

fungera varVar VariantAsString (: Variant): Stränga;
Var
// L: TStringList;
 basicType I, j som är dunkelt: Heltal;
börja
 basicType: = (varVar) VarType och VarTypeMask;
 om (varVar) VarIsArray därefter
  börja
   Dunkelt: (varVar) =VarArrayDimCount;
   om Dim>2 därefter
    börja
     Resultat: = ' (varVar) samling '+VariantTypeName;
     Gå ut;
    avsluta;
   Resultat: = ' [';
   om Dim=1
    Därefter för I: varVar =VarArrayLowBound (, 1) till varVar VarArrayHighBound (, 1) resulterar: varVar =Result+VariantAsString ([I]) + ', ',
    Annars för I: varVar =VarArrayLowBound (, 1) till varVar VarArrayHighBound (, 1) gör
     börja
      Resultat: =Result+#13#10  [';
      för j: varVar =VarArrayLowBound (, 2) till varVar VarArrayHighBound (, 2) resulterar: varVar =Result+VariantAsString ([I, j]) + ', ';
      Resultat [längd (resultat)]: = '] ';
      Resultat: =Result+ ';
     avsluta;
   Resultat [längd (resultatet)]: = '] ';
  avsluta annars
  börja
   om (varVar) VarIsEmpty resulterar därefter: = ' (tomt) 'annars
   om (varVar) VarIsNull resulterar därefter: = ' (ogiltigt) 'annat resultat: (varVar) =VarToStr;
  avsluta;
avsluta;
Andra lösningar  
 
programming4us programming4us