Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

型なしパラメータに動的配列を渡す

動的配列や長い文字列を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以外の型なしパラメータを引数に取る関数でも同じように書ける。