HSPに投稿されたコード一覧

HSP シンタックスハイライトテスト

#define TEST			$1
	#define TEST2 		$2
;
; ハイライトテスト
;
; Test!!!
;

	goto *a

*a	// test
	b = 2
	c = 3
	mes b*c

	goto *d

	*d

	mes __hspver__

	if (b<c){mes "OK"}
	if (b < c){mes "OK"}

HSP c4hspで作ったstrlen的な処理が標準命令より早い

/*// c4hsp で使ったCのソースコード
int func(unsigned char *str) {
	unsigned char *p = str;
	while ( *( p++ ) );
	return (p - str -1);
}
#define OPT maximum	// disable, small, fast, maximum (不使用, 最小化, 速度, 最大限の最適化)
#define LINE 8
#define VECTORTYPE ()
#define MODULE mod_strlen2
#define FUNC strlen2
*/
// c4hsp で出力した機械語モジュール
#ifndef strlen2
#module mod_strlen2
#uselib "kernel32.dll"
#func VirtualAllocmod_strlen2 "VirtualAlloc" int, int, int, int
#func VirtualFreemod_strlen2 "VirtualFree" int, int, int
#define NULL                   0x00000000
#define PAGE_EXECUTE_READWRITE 0x00000040
#define MEM_COMMIT             0x00001000
#define MEM_RESERVE            0x00002000
#define MEM_DECOMMIT           0x00004000
#define MEM_RELEASE            0x00008000
#deffunc mod_strlen2_destructor onexit
	if(NULL != strlen2_ptr) {
		VirtualFreemod_strlen2 strlen2_ptr, 20, MEM_DECOMMIT
		VirtualFreemod_strlen2 strlen2_ptr, 0, MEM_RELEASE
		strlen2_ptr = NULL
	}
	return
#deffunc mod_strlen2_constructor
	mod_strlen2_destructor
	VirtualAllocmod_strlen2 NULL, 20, MEM_RESERVE, PAGE_EXECUTE_READWRITE
	VirtualAllocmod_strlen2 stat, 20, MEM_COMMIT, PAGE_EXECUTE_READWRITE
	strlen2_ptr    = stat
	dupptr strlen2_bin, stat, 20, vartype("int")
	strlen2_bin(0) = $04244C8B, $108AC18B, $75D28440, $48C12BF9, $000000C3
	return
// マクロだったのを関数化した
#defcfunc strlen2 var s
	prm@mod_strlen2 = varptr(s)
	return callfunc(prm@mod_strlen2, strlen2_ptr@mod_strlen2, 1)
#global
mod_strlen2_constructor
#endif

#include "winmm.as"

	// 適当にテキスト作成
	mes "文字列作成中...\n"
	size = 1024 * 1024 * 100	; 100MB
	sdim a, size + 1
	memset a, 'a', size

	// 計測
	max = 10	; 10 回繰り返す。size * max で 1000MB相当
	mes "strlen 計測中..."
	timeGetTime :time1 = stat
	repeat max
		l1 = strlen(a)
	loop
	timeGetTime	:mes "所要時間:" + (stat - time1) + "ms" + ", 取得値:" + l1 + "byte"

	mes "strlen2 計測中..."
	timeGetTime	:time1 = stat
	repeat max
		l2 = strlen2(a)
	loop
	timeGetTime	:mes "所要時間:" + (stat - time1) + "ms" + ", 取得値:" + l2 + "byte"

HSP 【HSP3】HNBridgeを使用して、PDFLibNetでPDFからJPEG形式で画像を切り出すテスト

/**
	HNBridge入手先(つやぴん氏)	http://tuyapin.net/hsp/hnbridge

https://github.com/tuyapin/HNBridge

	HNBridgeEx.as入手先		http://codetter.com/?p=1127

	PDFLibNet入手先			https://github.com/cube-soft/PDFLibNet
	※ 自前でビルドする必要があります。
*/
#include "HNBridge.as"
#include "HNBridgeEx.as"
;
	title "HNBridgeを使用して、PDFLibNetでPDFからJPEG形式で画像を切り出すテスト"
;
	LoadAssembly "PDFLibNet.dll"
;
	CreateObjectFromClassName "PDFLibNet.PDFWrapper"
	CreateInstance
;
	dialog "pdf", 16
	if stat == 0 : end
	fname = refstr
	mes "ファイル名: \t"+fname
;
	InvokeMethod "LoadPDF", fname
	;SetProperty "CurrentPage", "int://1"
	mes "SupportsMuPDF: \t"+GetProperty("SupportsMuPDF")
	mes "UseMuPDF: \t"+GetProperty("UseMuPDF")
	SetProperty "UseMuPDF", "bool://True"
	mes "ページ数: \t"+GetProperty("PageCount")
	mes "RenderDPI: \t"+GetProperty("RenderDPI")
;
	// 出力ファイル名, 開始ページ番号, 終了ページ番号, DPI, JPEG品質度
	InvokeMethod "ExportJpg", "Test.jpg", "Int32://1", "Int32://1", "Double://300", "Int32://90"
;
	UnloadAssembly

HSP 【HSP3】HNBridgeEx.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 p16
	if 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 p16
	if 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 init
	dimtype a, vartype("label"), 1
return
#global
init@HNBridgeEx

HSP 【HSP3】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 p16
	if 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 p16
	if 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 init
	dimtype a, vartype("label"), 1
return
#global
init@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 p2
		hoge = "";
		_GetDProperty p1, p2, hoge
	return hoge;

	を追加する必要があります。

	将来のバージョンでは修正されている可能性があります。

*/

#module
#defcfunc safeNull str p1
	if p1 == "hdn://NULL" : return ""
return p1
#global

	title "HNBridgeを使用して、iTextSharpでPDFの情報を読み出すテスト"

	LoadAssembly "itextsharp.dll"

	CreateObjectFromClassName "iTextSharp.text.pdf.PdfReader"

	dialog "pdf", 16
	if stat == 0 : end
	fname = refstr
	mes "ファイル名: \t\t"+fname

	CreateInstance fname

	mes "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

HSP 【HSP3】モジュールだけでなんちゃって可変長引数

#module m
#define global test(%1=a@m,%2=a@m,%3=a@m,%4=a@m) p1@m=%1:p2@m=%2:p3@m=%3:p4@m=%4:_test p1@m,p2@m,p3@m,p4@m
#deffunc _test var p1, var p2, var p3, var p4
	if vartype(p1) == 1{
		mes "引数の数 0"
	}else : if vartype(p2) == 1{
		mes "引数の数 1"
		mes ""+strf("結果 = %s", p1)
	}else : if vartype(p3) == 1{
		mes "引数の数 2"
		mes ""+strf("結果 = %s, %s", p1, p2)
	}else : if vartype(p4) == 1{
		mes "引数の数 3"
		mes ""+strf("結果 = %s, %s, %s", p1, p2, p3)
	}else{
		mes "引数の数 4"
		mes ""+strf("結果 = %s, %s, %s, %s", p1, p2, p3, p4)
	}
	mes ""
return
#deffunc init
	dimtype a, vartype("label"), 1
return
#global
init
;
b = 1
;
test
test b
test b, b
test b, b, b
test b, b, b, b
;
mes "----------------------"
;
test "あ"
test "い", 2
test "う", b, 3
test "え", "お", b, 4

HSP 【HSP3】HNBridgeを使用して、iTextSharpでPDFの情報を読み出すテスト

/**

	つやぴん氏作「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 p2
		hoge = "";
		_GetDProperty p1, p2, hoge
	return hoge;

	を追加する必要があります。

	将来のバージョンでは修正されている可能性があります。

*/

#include "HNBridge.as"
#module
#defcfunc safeNull str p1
	if p1 == "hdn://NULL" : return ""
return p1
#global

	title "HNBridgeを使用して、iTextSharpでPDFの情報を読み出すテスト"

	LoadAssembly "itextsharp.dll"

	CreateObjectFromClassName "iTextSharp.text.pdf.PdfReader"

	dialog "pdf", 16
	if stat == 0 : end
	fname = refstr
	mes "ファイル名: \t\t"+fname

	CreateInstanceWithOneArg fname

	mes "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")

	InvokeMethodWithZeroArgs "Close"
	UnloadAssembly

HSP HSP3でSQLeleを使ってROWIDを取得したり指定してデータを引き出す

; SQLeleを使ってROWIDを取得する方法
#include "sqlele.hsp"

	sql_open ":memory:"
	; テーブルを作る
	sql_q "CREATE TABLE IF NOT EXISTS tTest (id);"
	repeat 10,1
		i = rnd(32768)
		mes ""+cnt+":"+i
		sql_q "INSERT INTO tTest (id) VALUES ("+prm_i(i)+");"	; idは乱数を入れる
	loop
	; ROWIDが3のidを取得する(ROWIDはテーブルに指定して作らなくても最初からある)
	sql_q "SELECT ROWID,id FROM tTest WHERE ROWID == 3;"
	mes "ROWID="+sql_v("rowid")+":"+sql_v("id")
;	mes "ROWID="+sql_v("ROWID")+":"+sql_v("id")	; sql_vの引数の時、ROWIDは小文字じゃないといけない

HSP notesel 2

#module
	#defcfunc strlength var param
	notesel param
	return notesize
#global

a = "123"
mes strlength(a)

HSP notesel

#module
	#defcfunc strlength str param
	notesel param
	return notesize
#global

a = "123"
notesel a
mes notesize

mes strlength("1234567890")
Total Pages: 4 / 22« 先頭...234561020...最後 »

よく投稿されているコード

タグ

最近投稿されたコード