HNBridgeのInvokeMethod*命令とCreateInstance*命令のなんちゃって可変長引数サポートモジュールです。
HNBridgeのInvokeMethod*命令とCreateInstance*命令のなんちゃって可変長引数サポートモジュールです。
#include "HNBridge.as"#module HNBridgeEx#define global CreateInstance(%1=a@HNBridgeEx,%2=a@HNBridgeEx,%3=a@HNBridgeEx, \%4=a@HNBridgeEx,%5=a@HNBridgeEx,%6=a@HNBridgeEx,%7=a@HNBridgeEx,%8=a@HNBridgeEx, \%9=a@HNBridgeEx,%10=a@HNBridgeEx,%11=a@HNBridgeEx,%12=a@HNBridgeEx, \%13=a@HNBridgeEx,%14=a@HNBridgeEx,%15=a@HNBridgeEx,%16=a@HNBridgeEx) \p1@HNBridgeEx=%1:p2@HNBridgeEx=%2:p3@HNBridgeEx=%3:p4@HNBridgeEx=%4: \p5@HNBridgeEx=%5:p6@HNBridgeEx=%6:p7@HNBridgeEx=%7:p8@HNBridgeEx=%8: \p9@HNBridgeEx=%9:p10@HNBridgeEx=%10:p11@HNBridgeEx=%11: \p12@HNBridgeEx=%12:p13@HNBridgeEx=%13:p14@HNBridgeEx=%14: \p15@HNBridgeEx=%15:p16@HNBridgeEx=%16: \_CreateInstance p1@HNBridgeEx,p2@HNBridgeEx,p3@HNBridgeEx,p4@HNBridgeEx, \p5@HNBridgeEx,p6@HNBridgeEx,p7@HNBridgeEx,p8@HNBridgeEx,p9@HNBridgeEx, \p10@HNBridgeEx,p11@HNBridgeEx,p12@HNBridgeEx,p13@HNBridgeEx,p14@HNBridgeEx, \p15@HNBridgeEx,p16@HNBridgeEx#deffunc _CreateInstance var p1, var p2, var p3, var p4, \var p5, var p6, var p7, var p8, var p9, var p10, var p11, \var p12, var p13, var p14, var p15, var p16if vartype(p1) = 1{CreateInstanceWithZeroArgs}else : if vartype(p2) = 1{CreateInstanceWithOneArg p1}else : if vartype(p3) = 1{CreateInstanceWithTwoArgs p1, p2}else : if vartype(p4) = 1{CreateInstanceWithThreeArgs p1, p2, p3}else : if vartype(p5) = 1{CreateInstanceWithFourArgs p1, p2, p3, p4}else : if vartype(p6) = 1{CreateInstanceWithFiveArgs p1, p2, p3, p4, p5}else : if vartype(p7) = 1{CreateInstanceWithSixArgs p1, p2, p3, p4, p5, p6}else : if vartype(p8) = 1{CreateInstanceWithSevenArgs p1, p2, p3, p4, p5, p6, p7}else : if vartype(p9) = 1{CreateInstanceWithEightArgs p1, p2, p3, p4, p5, p6, p7, p8}else : if vartype(p10) = 1{CreateInstanceWithNineArgs p1, p2, p3, p4, p5, p6, p7, p8, p9}else : if vartype(p11) = 1{CreateInstanceWithTenArgs p1, p2, p3, p4, p5, p6, p7, p8, p9, p10}else : if vartype(p12) = 1{CreateInstanceWithElevenArgs p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11}else : if vartype(p13) = 1{CreateInstanceWithTwelveArgs p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12}else : if vartype(p14) = 1{CreateInstanceWithThirteenArgs p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13}else : if vartype(p15) = 1{CreateInstanceWithFourteenArgs p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14}else : if vartype(p16) = 1{CreateInstanceWith15Args p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15}else{CreateInstanceWith16Args p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16}return stat#define global InvokeMethod(%1="",%2=a@HNBridgeEx,%3=a@HNBridgeEx,%4=a@HNBridgeEx, \%5=a@HNBridgeEx,%6=a@HNBridgeEx,%7=a@HNBridgeEx,%8=a@HNBridgeEx,%9=a@HNBridgeEx, \%10=a@HNBridgeEx,%11=a@HNBridgeEx,%12=a@HNBridgeEx,%13=a@HNBridgeEx, \%14=a@HNBridgeEx,%15=a@HNBridgeEx,%16=a@HNBridgeEx,%17=a@HNBridgeEx) \p1@HNBridgeEx=%2:p2@HNBridgeEx=%3:p3@HNBridgeEx=%4:p4@HNBridgeEx=%5: \p5@HNBridgeEx=%6:p6@HNBridgeEx=%7:p7@HNBridgeEx=%8:p8@HNBridgeEx=%9: \p9@HNBridgeEx=%10:p10@HNBridgeEx=%11:p11@HNBridgeEx=%12: \p12@HNBridgeEx=%13:p13@HNBridgeEx=%14:p14@HNBridgeEx=%15: \p15@HNBridgeEx=%16:p16@HNBridgeEx=%17: \_InvokeMethod %1,p1@HNBridgeEx,p2@HNBridgeEx,p3@HNBridgeEx,p4@HNBridgeEx, \p5@HNBridgeEx,p6@HNBridgeEx,p7@HNBridgeEx,p8@HNBridgeEx,p9@HNBridgeEx, \p10@HNBridgeEx,p11@HNBridgeEx,p12@HNBridgeEx,p13@HNBridgeEx,p14@HNBridgeEx, \p15@HNBridgeEx,p16@HNBridgeEx#deffunc _InvokeMethod str name, var p1, var p2, var p3, var p4, \var p5, var p6, var p7, var p8, var p9, var p10, var p11, \var p12, var p13, var p14, var p15, var p16if vartype(p1) = 1{InvokeMethodWithZeroArgs name}else : if vartype(p2) = 1{InvokeMethodWithOneArg name, p1}else : if vartype(p3) = 1{InvokeMethodWithTwoArgs name, p1, p2}else : if vartype(p4) = 1{InvokeMethodWithThreeArgs name, p1, p2, p3}else : if vartype(p5) = 1{InvokeMethodWithFourArgs name, p1, p2, p3, p4}else : if vartype(p6) = 1{InvokeMethodWithFiveArgs name, p1, p2, p3, p4, p5}else : if vartype(p7) = 1{InvokeMethodWithSixArgs name, p1, p2, p3, p4, p5, p6}else : if vartype(p8) = 1{InvokeMethodWithSevenArgs name, p1, p2, p3, p4, p5, p6, p7}else : if vartype(p9) = 1{InvokeMethodWithEightArgs name, p1, p2, p3, p4, p5, p6, p7, p8}else : if vartype(p10) = 1{InvokeMethodWithNineArgs name, p1, p2, p3, p4, p5, p6, p7, p8, p9}else : if vartype(p11) = 1{InvokeMethodWithTenArgs name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10}else : if vartype(p12) = 1{InvokeMethodWithElevenArgs name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11}else : if vartype(p13) = 1{InvokeMethodWithTwelveArgs name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12}else : if vartype(p14) = 1{InvokeMethodWithThirteenArgs name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13}else : if vartype(p15) = 1{InvokeMethodWithFourteenArgs name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14}else : if vartype(p16) = 1{InvokeMethodWith15Args name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15}else{InvokeMethodWith16Args name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16}return stat#deffunc local initdimtype a, vartype("label"), 1return#globalinit@HNBridgeEx// 以下サンプル/**つやぴん氏作「HNBridge」を使用して、iTextSharpでPDFの情報を読み出すテスト【このプログラムを実行するには!】※ 2014/08/13現在、http://tuyapin.net/hsp/hnbridgeで入手可能なバージョン(1.0.0_45)は、IDictionaryの操作をサポートしていない為、https://github.com/tuyapin/HNBridgeで入手可能なソースコードをVisualStudioでビルドして出力されたHNBridge.dllを使用する必要があります。また、HNBridge.asファイルに、#func global _GetDProperty "GetDProperty" sptr, sptr, var#defcfunc GetDProperty str p1, str p2hoge = "";_GetDProperty p1, p2, hogereturn hoge;を追加する必要があります。将来のバージョンでは修正されている可能性があります。*/#module#defcfunc safeNull str p1if p1 == "hdn://NULL" : return ""return p1#globaltitle "HNBridgeを使用して、iTextSharpでPDFの情報を読み出すテスト"LoadAssembly "itextsharp.dll"CreateObjectFromClassName "iTextSharp.text.pdf.PdfReader"dialog "pdf", 16if stat == 0 : endfname = refstrmes "ファイル名: \t\t"+fnameCreateInstance fnamemes "PDF変換: \t\t"+safeNull(GetDProperty("Info", "Producer"))mes "作成日時: \t\t"+safeNull(GetDProperty("Info", "CreationDate"))mes "題名: \t\t\t"+safeNull(GetDProperty("Info", "Subject"))mes "アプリケーション: \t"+safeNull(GetDProperty("Info", "Creator"))mes "キーワード: \t\t"+safeNull(GetDProperty("Info", "Keywords"))mes "編集日時: \t\t"+safeNull(GetDProperty("Info", "ModDate"))mes "タイトル: \t\t"+safeNull(GetDProperty("Info", "Title"))mes "PDFページ数: \t\t"+GetProperty("NumberOfPages")mes "PDFバージョン: \t\t1."+GetProperty("PdfVersion")InvokeMethod "Close"UnloadAssembly