HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1112
gao文字列をエンコード8解決


gao

リンク

2012/11/12(Mon) 00:40:08|NO.50590

よろしくお願いします。

文字列をデコードする命令(form_decode)は存在するようですが、逆に文字列をエンコードする命令ってないのでしょうか?



この記事に返信する


晩御飯

リンク

2012/11/12(Mon) 02:55:41|NO.50591

HSPとURLエンコードで検索するといくつか出てくるから検討してみると良いと思う



gao

リンク

2012/11/12(Mon) 05:10:59|NO.50593

>晩御飯さん
ありがとうございます!
理想通りの処理が出来ました。

ただ、ひとつ問題が発生しました。
下記のスクリプトでうまく行くのですが、他の処理の都合でこのスクリプトに
>#include "hspda.as"
>#include "hspinet.as"
この二行を付け加えるとエラーが出てしまいます。
何がいけないのでしょうか?



#module modMultiLanguage2 #const global CODE_EUC_JP 51932 #const global CODE_SHIFT_JIS 932 #const global CODE_UTF_8 65001 #define IID_IMultiLanguage2 "{DCCFC164-2B38-11d2-B7EC-00C04F8F5D9A}" #define CLSID_CMultiLanguage "{275c23e2-3747-11d0-9fea-00aa003f8646}" #usecom IMultiLanguage2 IID_IMultiLanguage2 CLSID_CMultiLanguage #comfunc MLangConvertString 9 var,int,int,var,var,var,var #deffunc URLEncode var data tmp = 0 : strTmp = "" repeat ret = peek(data, cnt) : if( ret == 0 ) : break if( ret == '-' || ret == '.' || ret == '_' ) : ret = 0 if( '0' <= ret && ret <= '9' ) : ret = 0 if( ('A' <= ret && ret <= 'Z') || ('a' <= ret && ret <= 'z' ) ) : ret = 0 if( ret == 0 ){poke strTmp,tmp,ret} else{if(ret == ' '){poke strTmp,tmp,'+'}else{strTmp+="%"+strf("%.2X",ret):tmp+=2}} tmp++ loop data = strTmp : strTmp = 0 return #deffunc URLDecode var data tmp = 0 repeat ret = peek(data, tmp) if( ret != '%' ){if(ret=='+'){poke data,cnt,' '}else{poke data,cnt,ret}} else{poke data,cnt,int("$"+strmid(data, tmp + 1, 2)) : tmp += 2} tmp++ : if( peek(data, tmp ) == 0 ) : poke data, cnt + 1, 0 : break loop return #deffunc MLangConvert int srcCode,int dstCode,var src,var dst newcom MLang, IMultiLanguage2 srcsize = -1 : sdim dst, strlen(src)*2 : dstsize = strlen(src)*2 MLangConvertString MLang, mode,srcCode,dstCode,src,srcsize,dst,dstsize delcom MLang return #global src = "晴れ" // src から dst へ UTF-8 変換 ⇒ URLエンコード MLangConvert CODE_SHIFT_JIS, CODE_UTF_8, src, dst URLEncode dst : mes dst



gao

リンク

2012/11/12(Mon) 05:23:12|NO.50594

言葉足らずでした。


1行目と2行目に

>#include "hspda.as"
>#include "hspinet.as"

と追加した際のエラーメッセージが以下です。

#HSP script preprocessor ver3.3RC1 / onion software 1997-2011(c)
#Use file [hspdef.as]
#Error:symbol in use in line 13 [???]
#Fatal error reported.



skyblue

リンク

2012/11/12(Mon) 18:46:45|NO.50601

hspdef.asの13行目で定義されている関数などが
インクルードしたファイルのどちらかでも定義されている。



gao

リンク

2012/11/12(Mon) 19:04:29|NO.50603

>skyblueさん
解説ありがとうございます。
つまり、これは同時には使えないってことでしょうか?



暇人

リンク

2012/11/12(Mon) 19:56:26|NO.50605

>つまり、これは同時には使えないってことでしょうか?
同じ名前が使えないだけ
hspinet.asにもURLEncode,URLDecodeって新規名称が登録されてる



レノス

リンク

2012/11/12(Mon) 20:49:43|NO.50607

> #Error:symbol in use in line 13 [???]
これは、ファイル ??? (= 保存されていないスクリプト) の 13 行目で
使おうとしている名前が既に使われているのでエラー、という意味です。
> #Use file [hspdef.as]
これは hspdef.as が #addition されているということ。今は関係ないです。

つまり URLEncode, URLDecode を何か別の名前に変える必要があります。

……あれ?
エンコードあるじゃないですか!笑



gao

リンク

2012/11/15(Thu) 09:58:06|NO.50676

>暇人さん
そういうことでしたか。
やり方はわかりませんがw理由がわかってスッキリしました。
ありがとうございます。

>レノスさん
URLEncodeってちょっと前までなかったはずなのに、突然存在しました。
3.3から、ということでしょうかね。
これでやってみます!
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.