>>450
ポインタを勘違いしているよ
君のコードでbufをFunction内でDeallocateしたら
せっかく割り当てたメモリに格納したデータが消えてしまうでしょ

Functionの戻り値がWString型のポインタを返すのだから
返って来るのはデータを格納しているメモリ上のアドレス
だからそれを格納している変数にアスタリスク付けて(つまりValue Of)
値を取得するんだよ
君のコードで言ったらPrint *Expand(....の部分
これだとFunctionの中で割り当てたメモリ上のデータが残ったままになる(アドレスを手に入れておらずメモリリーク)
直接Printするのではなく、ポインタに入れてそれを後で解放するの

Dim As WString Ptr result ' 格納するポインタ
result = Expand(Japanese) ' アドレスを格納
Print *result        ' そのアドレスにある値を表示
deallocate( result ) ' resultが指し示しているアドレスに入っている値を開放
result = 0 ' ポインタに0を与えてポインタからアドレスを抹消

FreeBASICはBASIC言語だけど、ポインタを当たり前のように使うコードが多いから
日本語の解説が多いC言語辺りで勉強したら?
それと>>448のコードはちゃんと表示されるよ(因みにXP SP3 フォントはMSゴシック)