型なしパラメータに動的配列を渡す
動的配列や長い文字列をFillCharに渡してゼロフィルする、てのは日常的に行われる処理で、
FillChar(HogeArr[0], HOGE_LENGTH, 0); // HogeArr: array of Byte; FillChar(HogeStr[1], HOGE_LENGTH, 0); // HogeStr: string;
というのがよく目にする記述だけど、
FillChar(Pointer(HogeArr)^, HOGE_LENGTH, 0); FillChar(Pointer(HogeStr)^, HOGE_LENGTH, 0);
こう書いた方が動的配列と文字列で同じ記述ができるし、添字のマジックナンバーも消せてかっこいい(気がする)。
カラクリとしては、動的配列も文字列も実態はただのポインタなので、キャストして逆参照すればいいというわけ。FillChar以外の型なしパラメータを引数に取る関数でも同じように書ける。