Duple StringとStrigOfCharの違い-リプライ「鷹@長空」

1652 ワード

問題のソース:
http://www.cnblogs.com/del/archive/2008/06/04/1101970.html#1217512
StringOfCharは「文字」を繰り返して「文字列」にする関数です。
Duple Stringは「文字列」を繰り返して「新しい文字列」にする関数です。
StringOfCharはSystemユニットから直接使用できます。
Duple StringはStrUtilsユニットから来ています。使う時はuses StrUtilsが必要です。
繰り返すだけの「文字」なら、もちろんStringOfCharを使って、それはアセンブリコードで実現されています。
以下はテストコードです。


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Button1: TButton;

    procedure FormCreate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



uses StrUtils; {DupeString       }



procedure TForm1.FormCreate(Sender: TObject);

var

  str: string;

begin

  str := System.StringOfChar('A', 5);

  ShowMessage(str); {AAAAA}



  str := StrUtils.DupeString('A', 5);

  ShowMessage(str); {AAAAA}



  str := StrUtils.DupeString('ABC', 5);

  ShowMessage(str); {ABCABCABCABCABC}

end;



{        , StringOfChar        ;     :}

procedure TForm1.Button1Click(Sender: TObject);

var

  t1,t2: Cardinal;

  i: Integer;

begin

  t1 := GetTickCount;

  for i := 0 to 1000000 do DupeString('A', 5);

  t1 := GetTickCount - t1;



  t2 := GetTickCount;

  for i := 0 to 1000000 do StringOfChar('A', 5);

  t2 := GetTickCount - t2;



  ShowMessageFmt('DupeString: %d; StringOfChar: %d', [t1,t2]);

end;



end.