C++Builder 中的 Format 函數作用與 Delphi 中的是一樣的,相信不用我廢話了。但是唯一不同的是參數。由於 Delphi 支援“開參數”和動態數組特性,所以 Delphi 中的 Format 只有兩個參數,其中後一個參數就是一個動態開參數常數數組。請注意我的用詞!Delphi 的動態開參數常數數組的型別宣告是 array of const,這種動態常數開數組的每一個元素可以是不同的類型。而且使用時的文法類似 Delphi 中的集合:採用兩個方括弧把不同類型的變數括起來,也可以採用聲明一個 TVarRec 類型的數組來容納不同的類型變數(具體請參閱其協助文檔)。而在 C++Builder 中,沒有像 Delphi 中的那中文法特性,BCB 中的 Format 函數其第一個參數與 Delphi 的 Format 是類似的(一個格式化描述字串),而後面有兩個參數,第二個參數是一個 TVarRec 類型的數組指標,第三個參數是這個數組的最後一個元素的索引值!因為 C++ 不支援動態數組文法,也沒有什麼“開參數”之類的怪異特性,所以當你傳遞數組時,你必須同時傳遞數組的大小(Format 要求的是數組的最後一個元素的索引值,因此大同小異)。剛才我說過,在 Delphi 中也可以用 TVarRec 數組代替方括弧的方法,其實本質是一樣的。當然了,在 C++Builder 中,我們沒有必要在每次使用 Format 函數時都先聲明一個 TVarRec 數組,然後再把要用於輸出的變數賦給 TvarRec 數組的每一個元素,最後還要傳遞 TVarRec 數組的最後元素索引。其實,我們可以使用一個 C++Builder 預先聲明好的宏 ARRAYOFCONST,直接傳入要格式化輸出的變數,請看下面的例子:
Memo1->Text = Format(
"My name is %s, I'm %d years old.",
ARRAYOFCONST(("Phoenix2000", 22)) //注意兩個括弧
);
OK, 一切就搞定了!這個宏的實質是傳遞兩個參數給 Format 函數,一個是 TVarRec 數俎指標,另一個是這個數俎的最後元素的索引,大家可以參照一下有關協助文檔。另外,C++Builder 中的 AnsiString 類也有一個 Format 類成員函數,不過這個成員函數是個靜態函數,使用時要注意一下。