Scripting.DictionaryにはKeysとItemsというメソッドがあるのですが、このメソッドは配列(SafeArray)を返すのです。
そこで、sArrayConv命令を使ってHSPの配列に変換しようと思い、スクリプトを書いてみたのですが、うまく動きません。
以下が試したスクリプトです。
newcom dic, "Scripting.Dictionary" //Dictionary作成 comres ret //テストデータ dic->"Add" "Hello", "World!!" dic->"Add" "HSP", "Hot Soup Processor" dic->"Keys" //キー一覧を取得 sarrayconv keys, ret, 1 //問題の部分 [変数型の変換に失敗しました。] foreach(keys) mes strf("%s = %s", keys(cnt), dic("Item", keys(cnt))) // = "key = value" loop
※通常のHSPのヘルプに載っているsarrayconvの説明は古いようです。
最新のものと思われる、hspprog.htmに書いてある内容を貼っておきます。
sarrayconv p1, p2, p3, [p4] p1 : 結果を格納する変数 p2 : 変換元の変数 p3(0) : 変換のモード p4(0) : バイナリーデータのサイズ p3=0:配列変数p2全体からSafeArrayを作成し、Variant型変数p1に 格納します。 p3=1:Variant型変数p2に格納されているSafeArrayを配列変数p1に 格納します。p1の領域は再確保されます。 p3=2:変数p2からp4バイト分だけのバイナリデータからSafeArray (VT_UI1型)を作成し、p1に格納します。 p3=3:Variant型変数p2に格納されている1次元SafeArray (VT_UI1型 またはVT_I1型)のバイナリデータを変数p1に格納します。 変数p1の領域はあらかじめ確保されている必要があります。