曾經幻想 Delphi 能像現代語言那樣簡潔賦值陣列:arr := [...];。其實 VarArrayOf 早就存在,只是習慣使然未曾善用。
var bs: TBytes; { 等同於 TArray<Byte> }
begin
{ 無需預先 SetLength }
bs := VarArrayOf([11, 22, 33]);
ShowMessage(IntToStr(bs[2])); { 輸出: 33 }
end;
var strArr: TArray<string>;
begin
strArr := VarArrayOf(['AAA','BBB','CCC' ]);
ShowMessage(strArr[2]); { 輸出: CCC }
end;
TArray<T>)array[0..2] of Integer)array of Integer),不支援泛型 TArray<Integer>function GetSum(aArr: array of Integer): Integer;
var i: Integer;
begin
Result := 0;
for i in aArr do Inc(Result, i);
end;
procedure TForm1.FormCreate(Sender: TObject);
var n: Integer;
begin
n := GetSum([1, 2, 3]);
ShowMessage(IntToStr(n)); { 6 }
n := GetSum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
ShowMessage(IntToStr(n)); { 55 }
end;
在 GDI+ 中,TGPBitmap.Pixels[] 屬性提供了比 TCanvas.Pixels[] 快得多的像素級存取效能,這是一個長期被忽視的高效能寶藏功能。