Delphi Format方法說明

2021-08-22 17:13:10 字數 2570 閱讀 2849

function format(const format: string; const args: array of const): string; overload; ormat方法有兩個種形式,另外一種是三個引數的,主要區別在於它是執行緒安全的,但並不多用。

format引數是乙個格式字串,用於格式化args裡面的值的。 args是乙個變體陣列,表示用以輸出的各個常量或變數。

如以下例子: format('my name is %6s',['wind']); 返回後就是my name is wind

現在來看format引數的詳細情況:例子中:'my name is '是普通字串,%6s 是格式化輸出字串,它的規範是:

"%"[index ":"]["-"][width]["." prec]type

它是以"%"開始,而以type結束,type表示乙個具體的型別。中間是用來格式化type型別的指令字元,是可選的。

type可以是以下字元:

d,u,f,e,g,n,m,p,s,x

d 和u表示輸出十進位制整型數 u 是無符號的,而如果它對應的值是負的,則返回時是乙個2的32次方減去這個絕對值的數,如: format('this is %u',[-2]); 返回的是:this is 4294967294

f 對應浮點數 e 科學表示法,對應整型數和浮點數,比如 format('this is %e',[-2.22]); 返回的是:this is -2.22000000000000e+000,等一下再說明如果將數的精度縮小

g 這個只能對應浮點型,且它會將值中多餘的數去掉,比如 format('this is %g',[02.200]); 返回的是:this is 2.2

n 只能對應浮點型,將值轉化為號碼的形式。看乙個例子就明白了 format('this is %n',[4552.2176]); 返回的是this is 4,552.22

注意有兩點,一是只表示到小數後兩位,等一下說怎麼消除這種情況, 二是,即使小數沒有被截斷,它也不會也像整數部分一樣有逗號來分開的

m錢幣型別,但關於貨幣型別有更好的格式化方法,這裡只是簡單的格式化,另外它只對應於浮點值 format('this is %m',[9552.21]); 返回:this is ¥9,552.21

p 對應於指標型別,返回的值是指標的位址,以十六進製制的形式來表示例如: var x:integer; p:^integer; begin x:=99; p:=@x; edit1.text:=format('this is %p',[p]); end; edit1的內容是:this is 0012f548

s 對應字串型別

x 必須是乙個整形值,以十六進製制的形式返回 edit1.text:=format('this is %x',[15]); 返回是:this is f

型別講述完畢,下面介紹格式化type的指令:

[index ":"]表示輸出的字串在args中的索引,初始是0,預設是上一次定義後的index+1

format('this is %d %d',[12,13])='this is 12 13';

format('this is %1:d %0:d',[12,13])='this is 13 12';

format('%d %d %d %0:d %d', [1, 2, 3, 4])='1 2 3 1 2';

format('%d %d %d %0:d %3:d', [1, 2, 3, 4])='1 2 3 1 4';

但用的時候要注意,索引不能超出args中的個數,不然會引起異常如

format('this is %2:d %0:d',[12,13]);

由於args中只有12 13 兩個數,所以index只能是0或1,這裡為2就錯了

[width] 指定將被格式化的值佔的寬度,小於引數長度時無效:

format('this is %4d',[12])='this is__12'; format('this is %1d',[12])='this is 12';

["-"] 左對齊標誌,和[width]合在一起最可以看到效果:

format('this is %-4d,yes',[12])='this is 12__,yes';

["." prec] 指定精度,進製使用去尾法,對於浮點數效果最佳

對於整型數,如果prec比整型數的位數小則沒有效果,反之則會在整型值的前面補0

對於字元型,如果prec比字串型的長度大則沒有效果,反之則從左面的字元開始取,截斷尾部的字元:

format('this is %.2f',['1.1234])='this is 1.12';

format('this is %.7f',['1.1234])='this is 1.1234000';

format('this is %.7d',[1234])='this is 0001234';

format('this is %.2s',['1234'])='this is 12';

format('this is %e',[-2.22])='this is -2.22000000000000e+000';

掉多餘的0:

format('this is %.2e',[-2.22])='this is -2.22e+000';

Delphi Format函式用法

delphi format函式用法 function format const format string const args array of const string sysutils.pas 功能 返回按指定方式格式化乙個陣列常量的字元形式 說明 這個函式是我在delphi中用得最多的函式,...

Delphi Format函式用法

function format const format string const args array of const string sysutils.pas 功能 返回按指定方式格式化乙個陣列常量的字元形式 說明 這個函式是我在delphi中用得最多的函式,現在就列舉幾個例子給你個直觀的理解 ...

Delphi Format函式用法

delphi format函式用法 function format const format string const args array of const string sysutils.pas 功能 返回按指定方式格式化乙個陣列常量的字元形式 說明 這個函式是我在delphi中用得最多的函式,...