1. 程式人生 > >c++builder Format函式的用法

c++builder Format函式的用法

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 類成員函式,不過這個成員函式是個靜態函式,使用時要注意一下。