プログラミング言語Delphiで、C言語のようにstatic変数を使う方法。Pascalの流儀から言うと邪道とも言える方法なのだが、実用上は便利。
static変数とは、スコープはローカルなのだが、プログラムの実行中にずっと値が保持されるという特殊な変数。都度呼ばれる関数が、自分の前世を何となく覚えているようなものかな?
C言語のstrtok関数とかをDelphiで実装しようとするときに必要になる。冒頭の画面のように、[プロジェクト]−[オプション]画面で[コンパイル]の[割り当て可能な型付き変数]をtrueにしておくと使えるようになる。そうでないとコンパイルエラーになって、しばらく悩むことになる(ブログ主のように)。
具体的なコードはこう(太字の部分だけ)。
function MBSTok( s1, s2 : PChar ) : PChar;
const
BufPtr : PChar = nil; { 文字列先頭を示すポインタ }
var
p1, p2 : PChar;
wc : Word;
begin
………
end;
constを付けると普通は定数になるが、PCharという型も指定して、nilで初期化してやれば、それはC言語でいうこんなコードになる。
static char *bufptr = NULL;
DelphiってPascalだからきめ細かいコード書けないよね?という御仁は、これが誤解だと思い知らせたい。というか、Delphiユーザをもっと増やしたい。ということで、たびたびこんな記事は投稿しようかな、と思う。