variant 類型

Variant

  音標 Phonetic symbol
  [] 詞性及解釋 Part of speech and defination
  n. 變體, 異體
  a. 不同的, 有差別的
  【計】 變體型
  【化】 變體
  【醫】 變異的; 變異體, 變型, 變種
Variant 數據類型是所有沒被顯式聲明(用如 Dim、Private、Public 或 Static等語句)爲其他類型變量的數據類型。Variant 數據類型並沒有類型聲明字符。
Variant 是一種特殊的數據類型,除了定長 String 數據及用戶定義類型外,可以包含任何種類的數據。Variant 也可以包含 Empty、Error、Nothing 及 Null等特殊值。可以用 VarType 函數或 TypeName 函數來決定如何處理 Variant 中的數據。
  數值數據可以是任何整型或實型數,負數時範圍從 -1.797693134862315E308 到 -4.94066E-324,正數時則從 4.94066E-324 到 1.797693134862315E308。通常,數值Variant 數據保持爲其 Variant 中原來的數據類型。例如,如果把一個 Integer賦值給 Variant,則接下來的運算會把此 Variant 當成 Integer 來處理。然而,如果算術運算針對含 Byte、Integer、Long 或 Single 之一的Variant 執行,並當結果超過原來數據類型的正常範圍時,則在 Variant 中的結果會提升到較大的數據類型。如 Byte 則提升到 Integer,Integer 則提升到 Long,而 Long和Single 則提升爲 Double。當 Variant 變量中有 Currency、Decimal 及 Double 值超過它們各自的範圍時,會發生錯誤。
  可以用 Variant 數據類型來替換任何數據類型,這樣會更有適應性。如果 Variant 變量的內容是數字,它可以用字符串來表示數字或是用它實際的值來表示,這將由上下文來決定,例如:
  Dim MyVar As Variant
  MyVar = 98052
  在前面的例子中,MyVar 內有一實際值爲 98052 的數值。像期望的那樣,算術運算子可以對 Variant 變量運算,其中包含數值或能被解釋爲數值的字符串數據。如果用 + 運算子來將 MyVar 與其他含有數字的 Variant 或數值類型的變量相加,結果便是一算術和。
  Empty 值用來標記尚未初始化(給定初始值)的Variant 變量。內含 Empty 的 Variant 在數值的上下文中表示 0,如果是用在字符串的上下文中則表示零長度的字符串 ("")。
  不應將 Empty 與 Null 弄混。Null 是表示 Variant 變量確實含有一個無效數據。
  在 Variant 中,Error 是用來指示在過程中出現錯誤時的特殊值。然而,不像對其他種類的錯誤那樣,程序並不產生普通的應用程序級的錯誤處理。這可以讓程序員,或應用程序本身,根據此錯誤值採取另外的行動。可以用 CVErr 函數將實數轉換爲錯誤值來產生 Error 值。
  變體類型Variant
  變體類型Variant,能夠在運行期間動態的改變類型。變體類型能支持所有簡單的數據類型,如整型、浮點、字符串、布爾型、日期時間、貨幣及OLE自動化對象等,不能夠表達Object Pascal對象。
  1.VarArrayCreate function
  Creates a variant array.
  創建一個變體類型的數組。
  function VarArrayCreate(const Bounds: array of Integer; VarType: TVarType): Variant;
  VarArrayOf function
  Creates and fills a one-dimensional variant array.
  創建並且填充一個一維的變體類型的數組。
  function VarArrayOf(const Values: array of Variant): Variant;
  VarArrayCreate, VarArrayOf Example
  var
  A: Variant;
  begin
  A := VarArrayCreate([0, 4], varVariant);
  A[0] := 1;
  A[1] := 1234.5678;
  A[2] := 'Hello world';
  A[3] := True;
  A[4] := VarArrayOf([1, 10, 100, 1000]);
  WriteLn(A[2]); { Hello world }
  WriteLn(A[4][2]); { 100 }
  end;
  2.VarArrayLock function
  Locks a variant array and returns a pointer to the data.
  鎖住一個變體類型的數組並且返回一個指向這個數據的指針。
  function VarArrayLock(const A: Variant): Pointer;
  VarArrayLock, VarArrayUnlock Example
  type
  PArrayData = ^TArrayData;
  TArrayData = array[0..9, 1..3] of Integer;
  var
  A: Variant;
  P: PArrayData;
  I, J: Integer;
  begin
  A := VarArrayCreate([1, 3, 0, 9], varInteger);
  P := VarArrayLock(A);
  try
  for I := 0 to 9 do
  for J := 1 to 3 do
  P^[I, J] := J * 10 + I;
  finally
  VarArrayUnlock(A);
  end;
  WriteLn(A[1, 9]); { 19 }
  WriteLn(A[3, 4]); { 34 }
  end;
  3.VarArrayUnlock procedure
  Unlocks a variant array.
  procedure VarArrayUnlock(var A: Variant);
發佈了16 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章