HSP3でレジストリを書き込もうとしたときに引っかかりそうな場所

以下のような記述で「外部DLLエラー」が出るという質問をHSP掲示板で見かけました。
同じような質問が同時に出ていたので、よく躓きそうな問題だなと思い取り上げます。


#include "hspext.as"
regkey 1,"Software\\hogefuga\\hogefuga",0
getreg regchk,"option",0 ;ここで外部DLLエラー
if stat!0:setreg alarm,"option",1


#include "hspext.as"
regkey 1,"Software\\hogefuga\\hogefuga",1
setreg alarm,"option",1 ;ここで外部DLLエラー


regkeyのstatとるとよくわかると思いますが、
p3=0;レジストリ読み出しモード
p3=1;レジストリ新規作成モード

p3=0;レジストリ読み出しモードだとレジストリが無いと読み出しに失敗します。
p3=1;レジストリ新規作成モードだと、作成したのに新規作成モードでアクセスすると失敗します。(テストで作成したのにさらに新規作成しようとすると失敗)

失敗しているにもかかわらず、「getreg」や「setreg」を続けて行うと

インクルードしている「hspext.as」が呼び出している「hspexp.dll」に「外部DLLエラー」で怒られるようです。
続きを読む
posted by シモン at 10:48 | Comment(0) | TrackBack(0) | HSP3

HSP3でファイルパスを取得する時の問題

HSP掲示板で質問に答えていたときに気が付いた問題。

Windows2000SP4とWindowsXPProSP3でファイルパスを取得するときに違いがあり問題が発生することに気が付いた。


Windows2000SP4では以下のコードで、
 ソフト起動 > ダイアログからファイル読み込み
 D&D
 関連付けからダブルクリック
どれも、問題なくファイルパスが取得できる

[HSP拡張マクロを使用する]を有効で

file=dir_cmdline
if peek(file, ) = '"' : getstr file, file, 1, '"'



ところが、WindowsXPProSP3では、
 ソフト起動 > ダイアログからファイル読み込み
 D&D
は問題なくファイルパスが取得できるが
 関連付けからダブルクリック
は取得できない。

ANTARESさんからヒントを頂いたので検証したところ、以下のようだった。


ソフト起動 > ダイアログからファイル読み込み
 :fileに只のファイルパスが入る
D&D
 :fileにダブルクォーテーションで括られたファイルパスが入る
ダブルクリック
 :fileに最初に半角スペース、ダブルクォーテーションで括られたファイルパスが入る

つまり、条件わけに
何もしなくて良いもの
ダブルクォーテーション分1ビットずらしたもの
スペースとダブルクォーテーション分2ビットずらしたもの
3種類必要。


HSP3.1用以降3.2にも適用
[HSP拡張マクロを使用する]を有効で

file=dir_cmdline
if peek(file,0)='"' : getstr file, file, 1, '"'
if peek(file,1)='"' : getstr file, file, 2, '"'

リピートの記述から変更しました。
理由は追記を読んでください。



HSP3.2用
HSP3.2ではstrtrimという空白を削除する命令が使えるのでそれを使用
[HSP拡張マクロを使用する]を有効で

file=dir_cmdline
file=strtrim(file,3) ;file=strtrim(file,1)でも可
if peek(file,)='"' : getstr file, file, 1, '"'


上のコードでWindows2000もWindowsXPも問題なく開くことが出来るようになった。

http://hsptv.sakura.ne.jp/play/pforum.php?mode=all&num=27841
続きを読む
posted by シモン at 01:18 | Comment(0) | TrackBack(0) | HSP3

RegExpを使ってHTMLの特殊文字の一部を変換

先日、HSP3の正規表現(RegExp)を使った置換および検索モジュールを投稿しましたが、
上のモジュールに付随して使っているコードがあります。

コード自体はとても簡単で以下のようなものです。


#deffunc SPcharch var buf
andm = "&" : amp = "&"
quotm = "\"" : quot = """
ltm = "<" : lt = "<"
gtm = ">" : gt = ">"

Replace buf,andm,amp
Replace buf,quotm,quot
Replace buf,ltm,lt
Replace buf,gtm,gt
return


まあ、見て頂けば分かりますが、
HTMLの特殊文字の一部を変換して実体参照するようにするだけのしろものです。

ところが、インターネットで色々やろうとすると、
この実体参照がとても重要になってくるので、
最近良く使っています。

もっと手を加えると何でも変換できそうですね。

HSPを使って自分のPCからいろんなことが出来ると楽しいですよね。
posted by シモン at 21:56 | Comment(0) | TrackBack(0) | HSP3

HSP3でGmailを使う時のメモ

前にhspsock32を使ったYahoo!メールの受信サンプル
POP受信のスクリプトサンプルを書いていましたが、
その時にはOpenSSLを使用しないとSSL通信できないものだと思っていました。

しばらく前から他のプログラムを作っていて、
SSL関連のことを思いだしました。


調べてみるとメールの送受信さえスクリプトを書いてしまえば、
追加のスクリプト等は一切書かないでGmailを送受信することが出来ることがわかりました。

有名な「Gmailの使い方!」の中に紹介されていました。
Gmailを非対応メールソフトで読む方法

つまり、Stunnelを使えばいいわけですね。

Gmailはメール内に広告が入らないですし、振り分け機能も強力。
使い方によっては超強力な情報収集ツールになるんですよね。
さらにHSPでメールが送れるとなると…具体的な使い方は書きませんが…


ちょっと話はそれますが、
私の場合は、スクリプトのコードの綺麗さよりも、
書いたスクリプトコードが、

1.まず、動くこと
2.動いた上で何ができるのか

ということにしか興味がないので、
コードが少しぐらい汚かったとしても
PC上で全体の動作が5秒程度早くなっても
その程度は誤差なんですよね。


例えば、自分で行うと一つの作業に1時間かかるものを
100個作業したとすると100時間かかるとする。

それでは、同じ時間のうちに99時間プログラム作成に充てて、
100時間目にそのプログラムを起動して同じ作業を1000個やったとすると、
プログラムを組んだときの方が「100時間目までの作業効率」は10倍になるわけです。

つまりこれは、60分の作業が6分になったことを示すのですね。

101時間目には、このスクリプトはさらに1000個の作業が出来るはずで、
そうすると作業効率は20倍、102時間目には作業効率が30倍になるわけです。

すると、99時間のプログラミングにかけた時間を、
プログラムの一プロセスの効率化のためだけにさらに時間をかけるのは、
もちろん、時間があったらやるのを勧めますが、
見直しに充分時間のある時でいいのではないかと思うんですよね。


問題は、作ろうと思ったら何をおいても

完成させること。
動作させること。
自分のために役立たせること。

これが重要なのだと思います。


私の場合も、StunnelのおかげでGmailとの受信部分がなんとかなりそうなので、
HSP3のモジュールを書いて何とかしようとしていた自分に、
「何でもかんでもHSPでやろうとしないこと」と自戒の念を込めてメモしておきます。
タグ:gmail HSP3
posted by シモン at 18:16 | Comment(1) | TrackBack(0) | HSP3

HSP3の正規表現(RegExp)を使った置換および検索モジュール

今回は、「正規表現(RegExp)を使った置換および検索モジュール」です。

作った検索モジュールがまったく同じカテゴリーのモジュールだったので、一部のコードを、HSP3ラウンジ掲示板から拝借しておりますことを先にお詫び申し上げます。(出自は明記してあります。)

私がHSP3で作っているプログラムは、自分で使うツール系が中心です。

ツール系を作っていると、文字列を一気に置換したり検索したりという操作がしたくなってきます。


HSP単体では命令が無いんですよね…(^^;

HSPでプログラムをはじめたころ(といっても数ヶ月前ですが…)
サンプルを見てプログラムに組み込んでいました、
その後正規表現を調べるためにネットで検索して
検索結果の掲示板(HSP3ラウンジ掲示板ですが)を見ると、
「ぷま」さんがモジュールを作られていたので、
ありがたく使わせていただいておりました。

一度は特殊文字で引っかかって悩んだことがありましたが、
このモジュールは今も頻繁に使わせていただいております。


検索モジュールは、文字列の中でマッチしたものがあるか?
個数はいくつか?というのを調べて条件分けしたくなり作ったものです。

HSP3ラウンジ掲示板の投稿ルールには、
「著作権を主張するなら掲示板に書き込まないように」
という一文があるので、
プログラムに組み込んだりして使われるのは
自由に行っていただいて問題無いと思います。

ただ、私の書いたものでないコードも含まれているので、
モジュールのみの再配布などはしないようにお願いします。m(__)m
続きを読む
posted by シモン at 23:56 | Comment(0) | TrackBack(0) | HSP3

hspsock32を使ったYahoo!メールの受信サンプル

hspsock32を作り始めたあとGmailが受信できないかなと思っているのですが、
SSL対応だとちょっと調べたところOpenSSLを使用しないとなんともならなさそう…

OpenSSLに手を出さなきゃだめなのか…


最近、GmailをはじめメールサービスがSSL対応になっています。
去年いきなりYahoo!メールがSSL対応になったときには、
普通に受信できなくてあせったことがあります。(今はSSL無しでも受信できるようです。)

SSLはOpenSSLを導入しないと汎用性が無いことがわかったので、
とりあえず、普通のメールの受信だけでもと思い、
普通のメールのサンプルを書いてみました。

メールソフトを作成するのが目的ではないので、
本当にメール一通の受信をテストするのみのサンプルです。

続きを読む
posted by シモン at 22:22 | Comment(0) | TrackBack(0) | HSP3

HSP3で役立つネットワーク系のモジュール

HSPでプログラムを組んで自分専用のツールを作っていると、
インターネットから情報を得たりアップロードしたりしたくなってきます。

そんなときに役に立つモジュールを紹介します。
今回は、「モジュール」なのでプラグインは無しです。


■FTP系のモジュール

FTP系のモジュールが必要なら、迷わずむしゃぺらり の HSP ページに行って下さい。

そのあと、HSP ver 3.0 [ ソース | モジュール | オブジェクト ]の
「モジュール」をクリックして画面中ほどにある「wininet.as」を手に入れてください。
FTPはこのモジュールで問題解決です。(著作権関係は作者さまにご確認ください)


■Sock系モジュール

拙作のHSP3のsock系互換モジュール、hspsock32を使ってみてください。


■プロキシ環境でHTTP通信モジュール

HSP3掲示板の「LAN、プロキシ環境でのsockopen」のスレッドで、「ANTARES」さまが、2008/9/5(Fri) 05:47:15の投稿で投稿されたモジュールを使いましょう。


この三つでDLLを使わないHSPのネットワーク関連の悩みは6割ぐらい解決するのではないでしょうか?

続きを読む
posted by シモン at 01:22 | Comment(1) | TrackBack(0) | HSP3

HSP3のタイムスタンプ操作モジュール exfxtgset

このモジュールは、ファイルとフォルダ両方のタイムスタンプを操作するモジュールです。

自作のソフトにタイムスタンプ操作を実装するためにHSP3のヘルプを見ると、hspext.dllを使用したfxtget,fxtsetという命令が出てきます。


基本的にdllを使用したくない私としては使いたくないんですよね〜。
グーグル先生にお世話になって探すといろいろ出てくるのですが、
タイムスタンプ操作したいのはファイルだけではなく、フォルダもタイムスタンプ操作したかったんです。

それで、マニアックなfxtgetの互換モジュールを発見したのですが、
テストしてみると…時間取れないじゃない?
(これのソースを再度探しているのですが発見できなくて困っています。
手元にはあるのですが、どこで見つけたかわからなくて…)


それで、結局自作することになったモジュールです。
改変というよりも、ベースのモジュールからライブラリの読み込み以外コードの9割以上手を加えてしまったので、元のものとは似ても似つかなくなってしまった。

参考にしたのは、ファイルとフォルダの判定の部分だけかもしれません。(それでも、先人の知識って大事だなあと感じたモジュール)


基本的な命令はfxtget,fxtsetに準じて作ってあるので使いやすいと思います。


■モジュール配布
お約束ながら、何か問題が起きても作者は一切の責任を負いませんのでよろしくお願いいたします。

exfxtgset.zip

posted by シモン at 15:24 | Comment(0) | TrackBack(0) | HSP3

行範囲指定で削除、切取り

先日簡単な文字列操作をしたかったので、
行を指定していろいろ操作をしたかったのですが、
なぜか行を指定して切取りしたり削除したりすることが出来なかったので…(^^;
わざわざ書いてしまったなでしこのコード


●行範囲指定(XのFからTまでCDで)
Rとは文字列。R=「」
Lとは文字列。L=「」
Xを反復
もし、(回数<F)または(回数>T)ならば、
R=R&「{対象}{改行}」
違えば、
L=L&「{対象}{改行}」

CDで条件分岐
「削除」ならば、
それ=R
「切取り」ならば、
それ=L

テストは「1行目
二行目
3行目
C行目
5行目
Y行目


テストと言う
テスト1=テストの3から5まで「削除」で行範囲指定
テスト1と言う
テスト2=テストの3から5まで「切取り」で行範囲指定
テスト2と言う



やりたいことの途中でいくつかこんなことがあったので、
結局「HSP」で組んでしまった…
なでしこに該当命令があれば30行程度ですんだのに…

posted by シモン at 01:56 | Comment(0) | TrackBack(0) | なでしこ

HSP3のsock系互換モジュール、hspsock32

HSP3のsock系互換モジュールを作ってみました。

hspsockやPCBNETさんのものは、DLLやプラグインを添付しないと動作しませんので、何も添付しないで動作するものは無いかと探していました。

「hspsock_.as」というものを見つけたのですが、これは以前のバージョン対応のようでHSP3.1ではそのまま動作しませんでした。

さらに探していると、placearkさんの「hspsockclone」を見つけたのですが、これもご当人が危険かもと考えられておられるようでしたので自分で作ってみました。


■モジュール配布
HSP3の「hspsock」のサンプルについているものを改変しモジュールが動作するか検証するためのサンプルとしましたので、そのまま添付しておきます。
お約束ながら、何か問題が起きても一切責任を負いませんのでよろしくお願いします。

現在のバージョン Ver1.02(2008-12-31)

sockmodule.zip


また、ある程度は自分でやりましたが、
バグフィクスが完全ではないと思いますので、
ご協力お願いします。

なお、「g_ipget」などの命令は「hspsock.as」にはないので、
御検証いただくときにはお手数ですが、「g_ipget」や「sockcleanup」等は、適宜コメントアウトしてください。

続きを読む
posted by シモン at 21:48 | Comment(6) | TrackBack(0) | HSP3
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。