« もーりおのつぶやき 第8回 | メイン | 【講座】HSPよく使うフレーズ 第30回 ペイントソフト(2) »

2007年05月15日

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 : 2007年05月15日 01:02

口臭チェッカー市場