« 2007年04月 | メイン | 2007年06月 »

2007年05月30日

【よみもの】もーりおのつぶやき 第10回

みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

だだっぴろい草原でのびのびとそだった牛
それがもーりおフガフガ。
四つの胃袋をたくみにつかいこなす牛
それがもーりおフガフガ。
りっぱな角は牛のほこり
それがもーりおフガフガ。


o O(もーりおのつぶやき)
人間は人間。
牛は牛。
「もーりお」は「もーりお」。

意味:
人間は人間、牛とは違う。
牛は牛、人間とは違う。
「もーりお」は「もーりお」、他の牛とは違う。

フガフガ、もーりおもなかなかいいこと言うと思ったモ?
え?思わなかったモ?
ううモモ…。

もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)

投稿者 usuaji : 22:22

【講座】HSP3ワンポイントテクニック 第21回

このコーナーでは、HSP3の変わった使用例や、気付きにくい機能
などを紹介していきたいと思います。

今回は、ひそかに活躍しているdirinfo関数について取り上げます。
dirinfo関数は、あまり直接使う機会が少ないかもしれませんが、
カレントディレクトリを示すシステム変数「dir_cur」や、
コマンドライン文字列を示すシステム変数「dir_cmdline」と
いった機能は、マクロになっていて内部ではdirinfo関数が使用
されています。
dirinfo関数は、カッコ内に指定されたパラメーターにより様々な
ディレクトリ情報を返す機能を持っています。
マクロで定義されている名前は以下の通りです。

マクロ、説明(dirinfoパラメーター)
------------------------------------------------------
dir_cur : カレント(現在の)ディレクトリ(0)
dir_exe : HSPの実行ファイルがあるディレクトリ(1)
dir_win : Windowsディレクトリ(2)
dir_sys : Windowsのシステムディレクトリ(3)
dir_cmdline : コマンドライン文字列(4)
dir_desktop : デスクトップディレクトリ($10000)
dir_mydoc : マイドキュメントディレクトリ($10005)

$10000以降のパラメーターは、CSIDL値と呼ばれるWindowsが管理
する特殊フォルダ指定のための識別コードを使用しています。
CSIDL値については、以下のページも参考にしてみてください。
http://yokohama.cool.ne.jp/chokuto/urawaza/prm/CSIDL.html

つまり、上のマクロで定義しているもの意外にも、多くの情報を
dirinfo命令により取得することができるのです。
主に使えそうなのは、

プログラムディレクトリ($10002)
お気に入りディレクトリ($10006)
スタートアップディレクトリ($10007)
最近使ったファイルディレクトリ($10008)
SendToディレクトリ($10009)
スタートメニューディレクトリ($1000b)

などですね。
このように、システム・ツール系のソフトを作る上では、
dirinfo関数の使い方をマスターしておくと便利でしょう。

(おにたま)

投稿者 usuaji : 22:21

【講座】HSPよく使うフレーズ 第31回 青い宇宙の冒険

シューティングゲーム風のインターフェイスを作ってみたり、
弾(たま)を出したりしてると、突然宇宙が作りたくなった。

星が流れる背景はシューティングの基本!
青い宇宙は男のロマン!

なんつって、これは、昔のコンピュータの処理能力の問題。
最初のころはキレイな地形を動かしたりが難しかったんだよねぇ。

さて、宇宙はどうしたらうまくいく動くのかな?
と考えると、基本は配列を使う、と想像できる。

それから速度が何通りかあるといいな。
とか、そんな事を考える。

星をpsetでやってみると、ちょっとドットが小さいかな?
ということで、boxfで試す。
やっぱりちらつくのでredrawを入れてみる。

なんか沢山の星が動いてるなぁ。
星の数と画面のサイズは定数にしてみよう!
変数じゃなくて定数ね。
最初から決めちゃうヤツ。
定数はなぜか大文字。
これを300とかにすると・・・ちょっと最初に時間がかかる。

というわけで、キレイに動いたので今回はコレまで。

#define STAR_NUM 100
#define X_MAX 640
#define Y_MAX 480
dim sx,STAR_NUM
dim sy,STAR_NUM
dim ss,STAR_NUM
screen 0,X_MAX,Y_MAX
randomize
repeat STAR_NUM
sx(cnt)=rnd(X_MAX)
sy(cnt)=rnd(Y_MAX)
ss(cnt)=rnd(5)+1
loop
color 0,0,0:boxf
*top
redraw 0
color 0,0,0:boxf
repeat STAR_NUM
cc=50+((ss(cnt)-6)*200)
color cc,cc,cc
//pset sx(cnt),sy(cnt)
boxf sx(cnt),sy(cnt),sx(cnt)+2,sy(cnt)+2
sy(cnt)=sy(cnt)+ss(cnt)
if sy(cnt)>X_MAX:sy(cnt)=0
loop
redraw 1
await 10
goto *top
[star_move.hsp / hsp3用]

(うすあじ)

投稿者 usuaji : 22:19 | コメント (0)

HSPTV!メルマガ 第40号

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HSPTV!メルマガ 第40号 N0.0040 2007/05/30 発行

編集長:うすあじ ( hsptv@hspcenter.com )
発行:HSPTV!(ONION software)
WEBサイト:http://hsp.tv/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録解除などはこちら http://hsp.tv/play/service.html

■はじめに

こんにちは、うすあじです。

さて、前回の悠黒さんから宣伝で

>フィニッシュ!来月からはCGI編の予定です。
>よろしくねん。

と言ってたけど、連載は少しお休みでCGI編は
もうすこし先になる模様です。
ちょっぴり残念ですね。

それから噂ではHSPのベータ版にそろそろ新しいアップデートが
あるらしいぞ~~~。

たまにチェックしてみると良いことあるかも!

▼Hot Soup Processor βバージョンテストのページ
http://www.onionsoft.net/hsp/hsp2beta.html


では、メルマガをどうぞ。

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■今回のインデックス

【よみもの】もーりおのつぶやき 第10回(ゆめゆめゆうか)

【講座】HSP3ワンポイントテクニック 第21回

【講座】HSPよく使うフレーズ 第31回(うすあじ)

【募集】メルマガ投稿募集中

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【よみもの】もーりおのつぶやき 第10回

みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

だだっぴろい草原でのびのびとそだった牛
それがもーりおフガフガ。
四つの胃袋をたくみにつかいこなす牛
それがもーりおフガフガ。
りっぱな角は牛のほこり
それがもーりおフガフガ。


o O(もーりおのつぶやき)
人間は人間。
牛は牛。
「もーりお」は「もーりお」。

意味:
人間は人間、牛とは違う。
牛は牛、人間とは違う。
「もーりお」は「もーりお」、他の牛とは違う。

フガフガ、もーりおもなかなかいいこと言うと思ったモ?
え?思わなかったモ?
ううモモ…。

もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSP3ワンポイントテクニック 第21回

このコーナーでは、HSP3の変わった使用例や、気付きにくい機能
などを紹介していきたいと思います。

今回は、ひそかに活躍しているdirinfo関数について取り上げます。
dirinfo関数は、あまり直接使う機会が少ないかもしれませんが、
カレントディレクトリを示すシステム変数「dir_cur」や、
コマンドライン文字列を示すシステム変数「dir_cmdline」と
いった機能は、マクロになっていて内部ではdirinfo関数が使用
されています。
dirinfo関数は、カッコ内に指定されたパラメーターにより様々な
ディレクトリ情報を返す機能を持っています。
マクロで定義されている名前は以下の通りです。

マクロ、説明(dirinfoパラメーター)
------------------------------------------------------
dir_cur : カレント(現在の)ディレクトリ(0)
dir_exe : HSPの実行ファイルがあるディレクトリ(1)
dir_win : Windowsディレクトリ(2)
dir_sys : Windowsのシステムディレクトリ(3)
dir_cmdline : コマンドライン文字列(4)
dir_desktop : デスクトップディレクトリ($10000)
dir_mydoc : マイドキュメントディレクトリ($10005)

$10000以降のパラメーターは、CSIDL値と呼ばれるWindowsが管理
する特殊フォルダ指定のための識別コードを使用しています。
CSIDL値については、以下のページも参考にしてみてください。
http://yokohama.cool.ne.jp/chokuto/urawaza/prm/CSIDL.html

つまり、上のマクロで定義しているもの意外にも、多くの情報を
dirinfo命令により取得することができるのです。
主に使えそうなのは、

プログラムディレクトリ($10002)
お気に入りディレクトリ($10006)
スタートアップディレクトリ($10007)
最近使ったファイルディレクトリ($10008)
SendToディレクトリ($10009)
スタートメニューディレクトリ($1000b)

などですね。
このように、システム・ツール系のソフトを作る上では、
dirinfo関数の使い方をマスターしておくと便利でしょう。

(おにたま)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSPよく使うフレーズ 第31回 青い宇宙の冒険

シューティングゲーム風のインターフェイスを作ってみたり、
弾(たま)を出したりしてると、突然宇宙が作りたくなった。

星が流れる背景はシューティングの基本!
青い宇宙は男のロマン!

なんつって、これは、昔のコンピュータの処理能力の問題。
最初のころはキレイな地形を動かしたりが難しかったんだよねぇ。

さて、宇宙はどうしたらうまくいく動くのかな?
と考えると、基本は配列を使う、と想像できる。

それから速度が何通りかあるといいな。
とか、そんな事を考える。

星をpsetでやってみると、ちょっとドットが小さいかな?
ということで、boxfで試す。
やっぱりちらつくのでredrawを入れてみる。

なんか沢山の星が動いてるなぁ。
星の数と画面のサイズは定数にしてみよう!
変数じゃなくて定数ね。
最初から決めちゃうヤツ。
定数はなぜか大文字。
これを300とかにすると・・・ちょっと最初に時間がかかる。

というわけで、キレイに動いたので今回はコレまで。

#define STAR_NUM 100
#define X_MAX 640
#define Y_MAX 480
dim sx,STAR_NUM
dim sy,STAR_NUM
dim ss,STAR_NUM
screen 0,X_MAX,Y_MAX
randomize
repeat STAR_NUM
sx(cnt)=rnd(X_MAX)
sy(cnt)=rnd(Y_MAX)
ss(cnt)=rnd(5)+1
loop
color 0,0,0:boxf
*top
redraw 0
color 0,0,0:boxf
repeat STAR_NUM
cc=50+((ss(cnt)-6)*200)
color cc,cc,cc
//pset sx(cnt),sy(cnt)
boxf sx(cnt),sy(cnt),sx(cnt)+2,sy(cnt)+2
sy(cnt)=sy(cnt)+ss(cnt)
if sy(cnt)>X_MAX:sy(cnt)=0
loop
redraw 1
await 10
goto *top
[star_move.hsp / hsp3用]

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【募集】メルマガ投稿募集中

 ”HSPTV!メルマガ”への投稿をお待ちします。

 募集するコーナーは

(1)「教えて!おにたま!!」

 HSPの素朴な疑問をHSPの作者おにたま氏に聞いてみよう!
というコーナー。疑問。知りたいテクニックなどを直接聞く
チャンス。

(2)「もーりおのつぶやき」

 つぶやき、短歌や川柳を受け付けてます。

(3)「こんなHSP3本が欲しい」

あなたが欲しい、読んでみたいHSP3の本を教えてください。
ひょっとしたら実際に本になるかも。

メルマガに関する要望や感想、日常のお便りもお待ちしています。

 全ての投稿は”うすあじ”( hsptv@hspcenter.com )まで。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PR]オススメHSP3の本
・HSP3 リファレンスブック
・公認 HSPファンブック 楽しく始める/極める本
・逆引きHSP3プログラミング事典[応用編]
・逆引きHSP3プログラミング事典[基本編]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■編集後記

ここで宣伝です。

うすあじソフトの通販サイトで
FlashのFAQをまとめた小冊子の販売をはじめました。
http://www.usuaji.net/shop/

HSPユーザーには関係ないけど、Flashユーザーなら見てね。

というわけで、うすあじの近況を報告するよ。
最近、話題の”twitter”に参加してみた。

”twitter”とは「1行ブログ」というか、ゆるいチャットというか、
微妙なキョリのWEBシステムだよ。

このURLで”うすあじの近況”がバッチリ見られる。
http://twitter.com/usuaji

基本、メシ喰ったとかばかりだけどね。
のぞき見感覚が楽しいのかな?

http://twitter.com/ でユーザー登録して、友達も集めると面白いよ。


それじゃ、次回まで、お元気で!!

(うすあじ)

■バックナンバーについて

バックナンバーの公開ページはこちら
http://www.hspcenter.com/hsptvm/

■解約方法

 登録解除などはこちら
http://hsp.tv/play/service.html

■広告の掲載など

 本メールマガジンの広告掲載のご相談は
”うすあじ”( hsptv@hspcenter.com )までお願いします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
編集長:うすあじ ( http://hspcenter.com/ )
記事の投稿、ご意見、ご希望はこちらまで hsptv@hspcenter.com

ONION software Copyright 2007(c) All rights reserved.
メルマガ本文の再配布・商利用、転載は禁止させて頂きます。
HSPのスクリプトサンプルは自由に再利用しても構いません。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

投稿者 usuaji : 22:18

2007年05月15日

【よみもの】もーりおのつぶやき 第9回

みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

今週は、”掲示板によく出現する不如帰”さんより
おたよりがきたので、紹介するモモ。


o O(不如帰さんのつぶやき)
HSP3.1の 正式版は いつ出るモ?

o O(もーりおのつぶやき)
HSP3.1の正式版は 暑くなる前には 出したいフガフガ


まぁ、あれだモ。
みんな暑いとやる気がでんモモ?
だから、その前にはやることやっとこーよってことだモ?
フガフガ。
うし的には、暑くなるまえには
いっぱい乳しぼられとこーよってことだモ。


不如帰さん、おたよりどうもありがとー。
これからも、いたらぬ牛をよろしくだモモ。


もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)

投稿者 usuaji : 01:06

【講座】「教えて!おにたま!!」

おにたまさま いつもお世話になります。

以前hsp3の掲示板で
Unicode文字列の長さを取得するのに、APIのlstrlenを使って

#uselib "kernel32.dll"
#cfunc lstrlenW "lstrlenW" var
a = "" : cnvstow a, "abcあいうdef"
mes lstrlenW(a)

と教えられたのですが
別の方にべつにAPIを使わなくても標準命令だけでもできると
言われました。
できればそれにこしたことはないと思ったんですが・・
hspの最新版を使わせていただいていますが
いろいろ探してもUnicodeに関しては"cnvstow","cnvwtos"しか
見つからず古いバージョンでは"llmod.as"、"unicode.as"を
includeして"to_uni""from_uni"という命令が使えるようですが
hsp3ではどうすれば標準命令だけでUnicode文字列の長さを
取得することができるのかわかりません
どこへ行っても教えていただくばかりで恐縮ですが
ご教授お願いできますでしょうか?

<こたえ>

お便りありがとうございます。なかなか高度な質問ですね。
よくわからない人も多いと思いますので、Unicodeとは何かを
簡単に説明しておきましょう。
HSPで文字列を扱う場合には、半角1byte、全角2byteで表わす
シフトJIS(SJIS)というルールが採用されています。
これについては、マニュアルと一緒に同梱されている
「HSP3文字列のひみつ(hsp3str.htm)」という文書でも解説して
います。
コンピューターは、どんな文字列であっても最終的には
1byte=8bit(0~255までの値)のデータとして記憶しています。
しかし、開発環境やOSごとに文字列を表わすルールが色々あって
何かと不便な状態になっています。国ごとに話す言葉が違う
ように、文字列のデータもソフトごとに異なっていると考えて
もらって構いません。
HSP2やHSP3では、日本の古いパソコン時代から採用されている
ルール(SJIS)になっていますが、Visual BasicやJavaを始めと
した最近の言語では、国際的に規格が統一されているUnicode
(またはUTF-16とも呼ばれます)が多く採用されています。
HSP3では、これらの橋渡しをするために、Unicodeとの相互
変換命令(cnvstow、cnvwtos)を標準でサポートしていますが、
strlenやstrmidなど文字列を扱う命令や関数の多くは、
Unicodeを扱うことができません。
UnicodeがSJISと異なっている最大のポイントは、1つの文字を
2byteで表わすという部分です。半角、全角という区別はなく、
すべての文字は2byte(0~65535までの値)で管理されます。
データ領域を余計に使う反面、大量の文字種をシンプルに扱う
ことができます。
APIのlstrlenWは、この2byte単位の文字列の長さを数える関数
ですが、これと同じことをHSPの標準命令で行なうとすると、
以下のようになります。

sdim a,64
cnvstow a, "abcあいうdef"

repeat
if wpeek(a,cnt*2)=0 : len=cnt : break
loop

mes "LEN="+len

残念ながら、一回の処理でUnicodeの長さを調べる命令や
関数は、HSP3にありません。ですから、APIのlstrlenWを
使用すること自体に問題はないと思われます。

日本語を含む文字列データの扱いについては、色々と複雑な
部分もありますが、昔からの積み重ねで現在の形になってきて
います。あせらずじっくりと覚えていってください。
それでは、またまた。HSPに限らず、PCのコトや
プログラミング関係どんなことでもお便り待っていますね。

(おにたま)

投稿者 usuaji : 01:05

【講座】HSPよく使うフレーズ 第30回 ペイントソフト(2)

今回は、HSPセンターの掲示板にあった質問をきっかけに
ズームを使ってみたくなった。

ちなみにHSPセンターはこちら。
http://hspcenter.com/

それで「第12回 ペイントソフトっぽいもの」で作った
簡易ペイントソフトを改造して、リアルタイムで
拡大してくれるものを作ったよ。

実行すると拡大画面が隠れちゃうかもしれないけど、
ウィンドウをずらして確認してみてね。

なんだか拡大してドットがすごいハッキリしてるのがいいなぁ。

1つ基本的なソフトをつくったら、新しい機能を付けたり
できるのもHSPの楽しいところ。

マウスで操作、右のボタンで置くキャラクタを変更できて、
左ボタンでそのキャラを置けます。

欠点としては画面の端では動きがおかしくなる点。
いろいろ方法はあるんだけど、今回はこの辺で。

//zoom editor zoom.hsp
screen 1,300,300
screen 0,640,480
dim paint_char,10,10
paint_char(0)="●"
paint_char(1)="・"
paint_char(2)="★"
paint_char(3)="■"
*top
title ">"+paint_char(n)
x=mousex:y=mousey
stick key,256
if (key & 256):pos x-10,y-10:color 0,0,0:mes paint_char(n)
if (key & 512):n=(n+1) & 3
gsel 1
xofset=x-30:xofset=limit(xofset,0,640)
yofset=y-30:yofset=limit(yofset,0,480)
gzoom 300,300,0,xofset,yofset,60,60
color 255,0,0:boxf 136,136,148,148
gsel 0
await 1
goto *top

[zoom.hsp / hsp3用]

(うすあじ)

投稿者 usuaji : 01:03

HSPTV!メルマガ 第39号

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HSPTV!メルマガ 第39号 N0.0039 2007/05/15 発行

編集長:うすあじ ( hsptv@hspcenter.com )
発行:HSPTV!(ONION software)
WEBサイト:http://hsp.tv/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録解除などはこちら http://hsp.tv/play/service.html

■はじめに

こんにちは、うすあじです。

天気がいい日が続きますねぇ。
のんびり気分で行きましょう。

今回は悠黒さんから宣伝です。

---------- PR ----------
こんにちは、悠黒です。
「HSP3お気楽プログラミング」
月刊I/O誌で鋭意連載中です。
長く丁寧に牛歩戦術で解説してきた3D編は今月号で
フィニッシュ!来月からはCGI編の予定です。
よろしくねん。
---------- PR ----------

I/Oの連載が好調ということで、期待できますね。

では、メルマガをのんびりどうぞ。

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■今回のインデックス

【よみもの】もーりおのつぶやき 第9回(ゆめゆめゆうか)

【講座】「教えて!おにたま!!」(おにたま)

【講座】HSPよく使うフレーズ 第30 回(うすあじ)

【募集】メルマガ投稿募集中

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【よみもの】もーりおのつぶやき 第9回

みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

今週は、”掲示板によく出現する不如帰”さんより
おたよりがきたので、紹介するモモ。


o O(不如帰さんのつぶやき)
HSP3.1の 正式版は いつ出るモ?

o O(もーりおのつぶやき)
HSP3.1の正式版は 暑くなる前には 出したいフガフガ


まぁ、あれだモ。
みんな暑いとやる気がでんモモ?
だから、その前にはやることやっとこーよってことだモ?
フガフガ。
うし的には、暑くなるまえには
いっぱい乳しぼられとこーよってことだモ。


不如帰さん、おたよりどうもありがとー。
これからも、いたらぬ牛をよろしくだモモ。


もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】「教えて!おにたま!!」

おにたまさま いつもお世話になります。

以前hsp3の掲示板で
Unicode文字列の長さを取得するのに、APIのlstrlenを使って

#uselib "kernel32.dll"
#cfunc lstrlenW "lstrlenW" var
a = "" : cnvstow a, "abcあいうdef"
mes lstrlenW(a)

と教えられたのですが
別の方にべつにAPIを使わなくても標準命令だけでもできると
言われました。
できればそれにこしたことはないと思ったんですが・・
hspの最新版を使わせていただいていますが
いろいろ探してもUnicodeに関しては"cnvstow","cnvwtos"しか
見つからず古いバージョンでは"llmod.as"、"unicode.as"を
includeして"to_uni""from_uni"という命令が使えるようですが
hsp3ではどうすれば標準命令だけでUnicode文字列の長さを
取得することができるのかわかりません
どこへ行っても教えていただくばかりで恐縮ですが
ご教授お願いできますでしょうか?

<こたえ>

お便りありがとうございます。なかなか高度な質問ですね。
よくわからない人も多いと思いますので、Unicodeとは何かを
簡単に説明しておきましょう。
HSPで文字列を扱う場合には、半角1byte、全角2byteで表わす
シフトJIS(SJIS)というルールが採用されています。
これについては、マニュアルと一緒に同梱されている
「HSP3文字列のひみつ(hsp3str.htm)」という文書でも解説して
います。
コンピューターは、どんな文字列であっても最終的には
1byte=8bit(0~255までの値)のデータとして記憶しています。
しかし、開発環境やOSごとに文字列を表わすルールが色々あって
何かと不便な状態になっています。国ごとに話す言葉が違う
ように、文字列のデータもソフトごとに異なっていると考えて
もらって構いません。
HSP2やHSP3では、日本の古いパソコン時代から採用されている
ルール(SJIS)になっていますが、Visual BasicやJavaを始めと
した最近の言語では、国際的に規格が統一されているUnicode
(またはUTF-16とも呼ばれます)が多く採用されています。
HSP3では、これらの橋渡しをするために、Unicodeとの相互
変換命令(cnvstow、cnvwtos)を標準でサポートしていますが、
strlenやstrmidなど文字列を扱う命令や関数の多くは、
Unicodeを扱うことができません。
UnicodeがSJISと異なっている最大のポイントは、1つの文字を
2byteで表わすという部分です。半角、全角という区別はなく、
すべての文字は2byte(0~65535までの値)で管理されます。
データ領域を余計に使う反面、大量の文字種をシンプルに扱う
ことができます。
APIのlstrlenWは、この2byte単位の文字列の長さを数える関数
ですが、これと同じことをHSPの標準命令で行なうとすると、
以下のようになります。

sdim a,64
cnvstow a, "abcあいうdef"

repeat
if wpeek(a,cnt*2)=0 : len=cnt : break
loop

mes "LEN="+len

残念ながら、一回の処理でUnicodeの長さを調べる命令や
関数は、HSP3にありません。ですから、APIのlstrlenWを
使用すること自体に問題はないと思われます。

日本語を含む文字列データの扱いについては、色々と複雑な
部分もありますが、昔からの積み重ねで現在の形になってきて
います。あせらずじっくりと覚えていってください。
それでは、またまた。HSPに限らず、PCのコトや
プログラミング関係どんなことでもお便り待っていますね。

(おにたま)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSPよく使うフレーズ 第30回 ペイントソフト(2)

今回は、HSPセンターの掲示板にあった質問をきっかけに
ズームを使ってみたくなった。

ちなみにHSPセンターはこちら。
http://hspcenter.com/

それで「第12回 ペイントソフトっぽいもの」で作った
簡易ペイントソフトを改造して、リアルタイムで
拡大してくれるものを作ったよ。

実行すると拡大画面が隠れちゃうかもしれないけど、
ウィンドウをずらして確認してみてね。

なんだか拡大してドットがすごいハッキリしてるのがいいなぁ。

1つ基本的なソフトをつくったら、新しい機能を付けたり
できるのもHSPの楽しいところ。

マウスで操作、右のボタンで置くキャラクタを変更できて、
左ボタンでそのキャラを置けます。

欠点としては画面の端では動きがおかしくなる点。
いろいろ方法はあるんだけど、今回はこの辺で。

//zoom editor zoom.hsp
screen 1,300,300
screen 0,640,480
dim paint_char,10,10
paint_char(0)="●"
paint_char(1)="・"
paint_char(2)="★"
paint_char(3)="■"
*top
title ">"+paint_char(n)
x=mousex:y=mousey
stick key,256
if (key & 256):pos x-10,y-10:color 0,0,0:mes paint_char(n)
if (key & 512):n=(n+1) & 3
gsel 1
xofset=x-30:xofset=limit(xofset,0,640)
yofset=y-30:yofset=limit(yofset,0,480)
gzoom 300,300,0,xofset,yofset,60,60
color 255,0,0:boxf 136,136,148,148
gsel 0
await 1
goto *top

[zoom.hsp / hsp3用]

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【募集】メルマガ投稿募集中

”HSPTV!メルマガ”への投稿をお待ちします。

募集するコーナーは

(1)「教えて!おにたま!!」

HSPの素朴な疑問をHSPの作者おにたま氏に聞いてみよう!
というコーナー。疑問。知りたいテクニックなどを直接聞く
チャンス。

(2)「もーりおのつぶやき」

つぶやき、短歌や川柳を受け付けてます。

(3)「こんなHSP3本が欲しい」

あなたが欲しい、読んでみたいHSP3の本を教えてください。
ひょっとしたら実際に本になるかも。

メルマガに関する要望や感想、日常のお便りもお待ちしています。

全ての投稿は”うすあじ”( hsptv@hspcenter.com )まで。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PR]オススメHSP3の本
・HSP3 リファレンスブック
・公認 HSPファンブック 楽しく始める/極める本
・逆引きHSP3プログラミング事典[応用編]
・逆引きHSP3プログラミング事典[基本編]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■編集後記

暖かくなったので、自分で髪の毛を切りました!
バリカンでバリバリやってボウズです。

髪を乾かすのが楽だよ!

では、次回まで、お元気で!!

(うすあじ)

■バックナンバーについて

バックナンバーの公開ページはこちら
http://www.hspcenter.com/hsptvm/

■解約方法

登録解除などはこちら
http://hsp.tv/play/service.html

■広告の掲載など

本メールマガジンの広告掲載のご相談は
”うすあじ”( hsptv@hspcenter.com )までお願いします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
編集長:うすあじ ( http://hspcenter.com/ )
記事の投稿、ご意見、ご希望はこちらまで hsptv@hspcenter.com

ONION software Copyright 2007(c) All rights reserved.
メルマガ本文の再配布・商利用、転載は禁止させて頂きます。
HSPのスクリプトサンプルは自由に再利用しても構いません。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

投稿者 usuaji : 01:02

2007年05月01日

もーりおのつぶやき 第8回

みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

おにたまは、髪をすっきりさっぱり切ったモモ。
おとこまえ度があがったモモ。
もーりおも、イメチェンをしてみたいフガフガ。
乳牛は、白黒と相場が決まってるんだモ?
たまには、ピンクの牛になってみたいモ。
メッシュなんかもいれてみたいモ。


o O(もーりおのつぶやき)
牛はみな 識別のために ピアスする
ピアスじゃなしに オレをみろ

意味:
生まれてすぐに、つけられるピアス。
人間が牛を管理するためにつけられるわけだけど
反抗期のぼくは、「ピアスじゃなしに、オレをみろ!」
そう、さけんでやったんだ。


のんびりしてるもーりおも、ときには
あつくなることもあるぜ。それが青春だぜ。

とは言ってみたものの…
かっこつけるとつかれるモ。
フガフガ草くってるほうがらくちんモモ。


もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)

投稿者 usuaji : 12:01

【講座】HSP3ワンポイントテクニック 第20回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

今回は、Windowsのシェルオブジェクトを使ってみたいと思います。
シェルオブジェクトというのは、Windowsのデスクトップ管理や
フォルダの表示などを行なっているシステム全般を外部から操作する
ための仕組みを指します。
これは、COMコンポーネントで出来ていて、VBScriptや、WSHなど
多くの言語から呼び出すことができます。
HSP3からも、COM操作命令を通して活用することができます。

screen 0,320,150
objsize 320,30
newcom Shell, "Shell.Application"
button "最小化", *win1
button "最小化復帰", *win2
button "エクスプローラー", *win3
button "シャットダウン", *win4
button "サスペンド", *win5
stop
*win1
Shell->"MinimizeAll"
stop
*win2
Shell->"UndoMinimizeALL"
stop
*win3
Shell->"Explore" "C:\\"
stop
*win4
Shell->"ShutdownWindows"
stop
*win5
Shell->"Suspend"
stop

上のサンプルでは、シェルオブジェクト機能の一部をボタンに
割り振って実行させます。
ここでは、newcom命令により、シェルオブジェクトを変数Shell
として初期化しています。あとは、「Shell->"メソッド名"」に
よって機能を呼び出すことができるようになります。
たとえば、「MinimizeAll」は、すべてのウィンドウを最小化する
ものです。「Explore」は、続いて指定されているパラメーターを
パス名としてエクスプローラー表示を行ないます。
ここでは全てを紹介しきれませんが、自分で色々と機能を探して
みると面白いですよ。

Shell Objectリファレンス(英文)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/shell/namespace.asp

(おにたま)

投稿者 usuaji : 12:00

【講座】HSPよく使うフレーズ 第29回 連続して同じ値が出ない乱数

乱数を作るとき、連続して同じ値が出ては困る!という場合もおおいハズ。
乱数を求めたあとにif文で同じかチェックして戻す、というのもできるけど、
スマートじゃないよねぇ。

そんな時には、最初から同じ値が出ないように計算すればOK。
なんで同じ値にならないかというと・・・ま、それは自分で考えてね。

前回の値はmmだから、最初の一回が0以外になっちゃうのは手抜きだね。

randomize
sdim name,20,20
name.0="オレンジ"
name.1="りんご"
name.2="バナナ"
name_num=3
repeat 10
gosub *rnd_sub
mes ""+mm +") "+ name.mm
wait 5
loop
stop
*rnd_sub
m=mm+rnd(name_num-1)+1
if m>=name_num:m=m-name_num
mm=m
return
[hsp3/rnd_banana.hsp]

(うすあじ)

投稿者 usuaji : 11:59

HSPTV!メルマガ 第38号

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HSPTV!メルマガ 第38号 N0.0038 2007/05/01 発行

編集長:うすあじ ( hsptv@hspcenter.com )
発行:HSPTV!(ONION software)
WEBサイト:http://hsp.tv/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録解除などはこちら http://hsp.tv/play/service.html

■はじめに

こんにちは、うすあじです。
ゴールデンウィークは楽しんでるかな?

さて、さっそくお知らせです。

現在、HSP3.1β9が公開中です。

新しく追加された、HSPCVプラグインで、JPEG、JPEG 2000、PNG、TIFF等の
画像ファイル読み込みと保存をサポートするほか、
高度な画像処理、ムービー(avi)ファイル操作やUSBカメラ等の
キャプチャデバイス読み込みなど映像に関する多くの機能を提供しています。

ぜひ、試してみてくださいね。
http://www.onionsoft.net/hsp/hsp2beta.html

というワケで、メルマガスタートです。

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■今回のインデックス

【よみもの】もーりおのつぶやき 第8回(ゆめゆめゆうか)

【講座】HSP3ワンポイントテクニック 第20回(おにたま)

【講座】HSPよく使うフレーズ 第29回(うすあじ)

【募集】メルマガ投稿募集中

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
もーりおのつぶやき 第8回


みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

おにたまは、髪をすっきりさっぱり切ったモモ。
おとこまえ度があがったモモ。
もーりおも、イメチェンをしてみたいフガフガ。
乳牛は、白黒と相場が決まってるんだモ?
たまには、ピンクの牛になってみたいモ。
メッシュなんかもいれてみたいモ。


o O(もーりおのつぶやき)
牛はみな 識別のために ピアスする
ピアスじゃなしに オレをみろ

意味:
生まれてすぐに、つけられるピアス。
人間が牛を管理するためにつけられるわけだけど
反抗期のぼくは、「ピアスじゃなしに、オレをみろ!」
そう、さけんでやったんだ。


のんびりしてるもーりおも、ときには
あつくなることもあるぜ。それが青春だぜ。

とは言ってみたものの…
かっこつけるとつかれるモ。
フガフガ草くってるほうがらくちんモモ。


もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSP3ワンポイントテクニック 第20回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

今回は、Windowsのシェルオブジェクトを使ってみたいと思います。
シェルオブジェクトというのは、Windowsのデスクトップ管理や
フォルダの表示などを行なっているシステム全般を外部から操作する
ための仕組みを指します。
これは、COMコンポーネントで出来ていて、VBScriptや、WSHなど
多くの言語から呼び出すことができます。
HSP3からも、COM操作命令を通して活用することができます。

screen 0,320,150
objsize 320,30
newcom Shell, "Shell.Application"
button "最小化", *win1
button "最小化復帰", *win2
button "エクスプローラー", *win3
button "シャットダウン", *win4
button "サスペンド", *win5
stop
*win1
Shell->"MinimizeAll"
stop
*win2
Shell->"UndoMinimizeALL"
stop
*win3
Shell->"Explore" "C:\\"
stop
*win4
Shell->"ShutdownWindows"
stop
*win5
Shell->"Suspend"
stop

上のサンプルでは、シェルオブジェクト機能の一部をボタンに
割り振って実行させます。
ここでは、newcom命令により、シェルオブジェクトを変数Shell
として初期化しています。あとは、「Shell->"メソッド名"」に
よって機能を呼び出すことができるようになります。
たとえば、「MinimizeAll」は、すべてのウィンドウを最小化する
ものです。「Explore」は、続いて指定されているパラメーターを
パス名としてエクスプローラー表示を行ないます。
ここでは全てを紹介しきれませんが、自分で色々と機能を探して
みると面白いですよ。

Shell Objectリファレンス(英文)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/shell/namespace.asp

(おにたま)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSPよく使うフレーズ 第29回 連続して同じ値が出ない乱数

乱数を作るとき、連続して同じ値が出ては困る!という場合もおおいハズ。
乱数を求めたあとにif文で同じかチェックして戻す、というのもできるけど、
スマートじゃないよねぇ。

そんな時には、最初から同じ値が出ないように計算すればOK。
なんで同じ値にならないかというと・・・ま、それは自分で考えてね。

前回の値はmmだから、最初の一回が0以外になっちゃうのは手抜きだね。

randomize
sdim name,20,20
name.0="オレンジ"
name.1="りんご"
name.2="バナナ"
name_num=3
repeat 10
gosub *rnd_sub
mes ""+mm +") "+ name.mm
wait 5
loop
stop
*rnd_sub
m=mm+rnd(name_num-1)+1
if m>=name_num:m=m-name_num
mm=m
return
[hsp3/rnd_banana.hsp]

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【募集】メルマガ投稿募集中

”HSPTV!メルマガ”への投稿をお待ちします。

募集するコーナーは

(1)「教えて!おにたま!!」

HSPの素朴な疑問をHSPの作者おにたま氏に聞いてみよう!
というコーナー。疑問。知りたいテクニックなどを直接聞く
チャンス。

(2)「もーりおのつぶやき」

つぶやき、短歌や川柳を受け付けてます。

(3)「こんなHSP3本が欲しい」

あなたが欲しい、読んでみたいHSP3の本を教えてください。
ひょっとしたら実際に本になるかも。

メルマガに関する要望や感想、日常のお便りもお待ちしています。

全ての投稿は”うすあじ”( hsptv@hspcenter.com )まで。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PR]オススメHSP3の本
・HSP3 リファレンスブック
・公認 HSPファンブック 楽しく始める/極める本
・逆引きHSP3プログラミング事典[応用編]
・逆引きHSP3プログラミング事典[基本編]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■編集後記

毎日休みでやること無いなぁ、というあなた!今こそHSPのチャンスですよ。

作って、遊んで、発表して、ドンドン楽しんでいきましょう。

あたらしいバージョンもいろいろ新機能があって楽しそうですよ。

では、次回まで、お元気で!

(うすあじ)

■バックナンバーについて

バックナンバーの公開ページはこちら
http://www.hspcenter.com/hsptvm/

■解約方法

登録解除などはこちら
http://hsp.tv/play/service.html

■広告の掲載など

本メールマガジンの広告掲載のご相談は
”うすあじ”( hsptv@hspcenter.com )までお願いします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
編集長:うすあじ ( http://hspcenter.com/ )
記事の投稿、ご意見、ご希望はこちらまで hsptv@hspcenter.com

ONION software Copyright 2007(c) All rights reserved.
メルマガ本文の再配布・商利用、転載は禁止させて頂きます。
HSPのスクリプトサンプルは自由に再利用しても構いません。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

投稿者 usuaji : 11:57