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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0923
panda続! : この掲示板のブラウザアプリを作る。20解決


panda

リンク

2008/9/23(Tue) 01:39:30|NO.19684

なんだか、作ってしまった。後悔はしてないよ (^^;;
本来は ZIP にすべきかもしれないですが、お手軽さを優先して、ココに貼り付けて起きます。
既存のモジュールはURLからダウンロード(コピペ)してください。

誰かココから進歩させてください。私にはこれが精一杯です^^;;

必読!

@問題点や今後の課題
・スレ主やレスした人の名前が表示されない
・書き込みができない (Read Only)
・日付が表示されない
・HSPではデフォルトで正規表現が使えないために、
<A HERF>...</A> のタグのみエスケープされていません。


; ―――――――――――――――――――――――――――――――――――――――――――――――――― ; ; !!! ここに以下のアドレスの "文字コード変換モジュール"と"文字列の置換モジュール" を貼り付けてください!!! ; ; http://hspdev-wiki.net/?Module%2F%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9%CA%D1%B4%B9%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB#o6553784 ; http://hspdev-wiki.net/?Module%2F%CA%B8%BB%FA%CE%F3%A4%CE%C3%D6%B4%B9 ; ; ―――――――――――――――――――――――――――――――――――――――――――――――――― // 代入 RES_NO = 19616 ; レス No. ver = "0.01b" V = "HSP-TV 掲示板 ブラウザー(仮称) "+ver // 開発者名(開発に加わった人のHN)をいれてね〜(遠慮無用) thismaker = "panda(hspuser)\n" thismaker+= "...\n" #define ctype HIWORD(%1) (%1 >> 16 & $FFFF) ; WM_COMMAND oncmd gosub *command, $111 #module module_connect #uselib "wininet" #func InternetOpen "InternetOpenA" int,int,int,int,int #func InternetOpenUrl "InternetOpenUrlA" int,int,int,int,int,int #func InternetQueryDataAvailable "InternetQueryDataAvailable" int,int,int,int #func InternetReadFile "InternetReadFile" int,int,int,int #func InternetCloseHandle "InternetCloseHandle" int #const null 0 #const INTERNET_OPEN_TYPE_PRECONFIG $00000000 #const INTERNET_FLAG_DONT_CACHE $04000000 #const INTERNET_FLAG_RELOAD $80000000 //―――――――――――――――――――― // ネットからテキストのURL指定 // // // // InternetTextURL p1 // // // // p1:URL // //―――――――――――――――――――― #deffunc InternetTextURL str p1 url@ymd = p1 return //―――――――――――――――――――― // ネットからテキストファイルをロード // // // // InternetTextGet p1,p2 // // // // p1:変数 p2:ファイル // //―――――――――――――――――――― #deffunc InternetTextGet var p1 , str p2 // セッションの初期化 InternetOpen null, INTERNET_OPEN_TYPE_PRECONFIG, null, null, 0 if stat { hSession = stat // URLをオープン // INTERNET_FLAG_DONT_CHACHE ... データをキャッシュしない // INTERNET_FLAG_RELOAD ... キャッシュを無視してデータを取得 uFile = url@ymd uFile += p2 InternetOpenUrl hSession, varptr(uFile), null, 0, INTERNET_FLAG_RELOAD, 0 if stat { hService = stat // 一度に読み込めるサイズを問い合わせる InternetQueryDataAvailable hService, varptr(availableSize), 0, 0 sdim buf, availableSize + 1 doc = "" repeat // ダウンロード InternetReadFile hService, varptr(buf), availableSize, varptr(done) if stat & (done = 0) : break doc += buf memset buf, 0, availableSize await 0 loop InternetCloseHandle hService } InternetCloseHandle hSession } p1 = doc return #global // HTML 取得用のメモリ確保 sdim buf,1024*500 sdim RES_TITLE,1024 sdim RES_BODY,1024*50,100 ; レス用 sdim writelist,1024 sdim tmp,1024*5000 // スクリーン初期化 screen 0,800,600,6 title ""+V syscolor 15:boxf:syscolor 8 pos 10,10 sysfont 17 mes "タイトル" pos 20,25 font "メイリオ",16,1 mes "読み込み中だわさ (^^ノ" pos 20,25 font "メイリオ",16,1 mes RES_TITLE font "メイリオ",12,1 objmode 2 // スレ主板 pos 40,60 RES_BODY(0) = "PleaseWait..." mesbox RES_BODY(0),720,80,0 id_bodybox = stat // レス板 tmp = "右側のリストから閲覧するレスをクリックしてください..." pos 40,220 mesbox tmp,570,340,0 id_rebox = stat // 返信インデックス pos 640,200 objsize 120,310 listbox sel_list,80,writelist id_list = stat hListbox = objinfo (id_list, 2) line 10,160,780,160 gsel 0,1 wait 50 // レスを取得 gosub *LB_GetResInternet // 簡単コンパイル(エンコード) gosub *LB_EasyCompile // ソース画面 screen 2,800,640,6 title "ソース" mesbox buf,1024,768,5 gsel 0,1 // レスのタイトル取得 gosub *LB_GetResTitle // レスの本文取得 gosub *LB_GetResBody // ---- ---- ---- 画面描画 ---- ---- ---- ---- ---- ---- // クリア syscolor 15:boxf:syscolor 8 // オブジェクトに代入 title ""+V+" - No,"+RES_NO objprm id_bodybox,RES_BODY(0) objprm id_list,writelist // 文字描画 sysfont 17 pos 10,10 mes "タイトル" pos 20,170 t = RES_MAX-1 mes "このスレに対する返信 ("+t+")" pos 630,180 mes "返信のインデックス" pos 20,25 font "メイリオ",16,1 mes RES_TITLE // ライン描画 line 10,160,780,160 stop ; ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ; ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ; ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ; ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ; ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ; ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- *LB_GetResInternet InternetTextURL "http://hsp.tv/play/" InternetTextGET buf,"pforum.php?mode=all&num="+RES_NO return *LB_EasyCompile // 文字コード変換 buf = eucjp2sjis(buf) // Linuxの改行コードをHSPで扱えるように置き換え target = "" : poke target,0,0x0A ; 置き換えの対象 _replace = "\n" ; 置き換え後の文字 replace buf, target,_replace // タグの除去 target = "<br>" ; 置き換えの対象 _replace = "" ; 置き換え後の文字 replace buf, target,_replace target = "<span class=\"quotation\">>" ; 置き換えの対象 _replace = "> " ; 置き換え後の文字 replace buf, target,_replace target = "</span>" ; 置き換えの対象 _replace = "" ; 置き換え後の文字 replace buf, target,_replace return *LB_GetResTitle // ---- ---- ---- レスのタイトル取得 ---- ---- ---- ---- ---- ---- seek = instr(buf,0,"margin-top:1px;\"") // 始まり位置から切り取る t_start = -1 t_end = -1 repeat strlen(buf),seek if ((strmid(buf,cnt,1) == ">")and(t_start == -1)){ t_start = cnt t_start++ } if ((strmid(buf,cnt,1) == "<")and(t_start ! -1)){ t_end = cnt break } wait 0 loop // 最後に切り取る RES_TITLE = strmid(buf,t_start,(t_end-t_start)) // タイトルに改行が入っていたら失敗報告 (たまにサーバーがエラーを起こすので) if instr(RES_TITLE,0,"\n") ! -1{ RES_TITLE = "タイトル取得失敗..." } return *LB_GetResBody // ---- ---- ---- レスの本文取得 ---- ---- ---- ---- ---- ---- // リセット t_start = 0 t_end = 0 seek = 0 // 本文の前にあるタグ targetA = "<div class=\"main\">" targetB = "</div>" repeat 100 // 本文の始まりを探す searchA = instr(buf,seek,targetA) seek = seek+searchA+1 // 本文の終わりを探す searchB = instr(buf,seek,targetB) // 始まりと終わりを切り取る RES_BODY(cnt) = strmid(buf,seek+19,searchB-23) if (searchA == searchC)and(searchB == searchD){ RES_MAX = cnt-1 break } searchC = searchA searchD = searchB loop // 返信ボックス作成 writelist+= "すべて表示...\n" repeat RES_MAX-1,1 writelist+= "Re: "+strf("%03d",cnt)+"\n" loop return *LB_GetResNo if no = 0{ tmp="! このスレに対しての全員の返信です !\n\n" repeat RES_MAX-1,1 tmp+= "----------------------------------\n" tmp+= " No."+cnt+"\n" tmp+= "----------------------------------\n" tmp+= RES_BODY(cnt) tmp+= "\n\n" loop tmp+= "\n以上 "+(RES_MAX-1)+"件" objprm id_rebox,tmp } else { objprm id_rebox,RES_BODY(no) } return *command ; back to hwnd of listbox if lparam = hListbox { if HIWORD(wparam) = 1 { sendmsg hListbox, $188 no = stat gosub *LB_GetResNo } } return



この記事に返信する


S&R(楓)

リンク

2008/9/23(Tue) 07:58:20|NO.19687

暴言吐かなきゃ何してもいい掲示板ておかしいですね。



あり

リンク

2008/9/23(Tue) 09:17:32|NO.19690

S&Rさん>>
>暴言吐かなきゃ何してもいい掲示板ておかしいですね。
それはご自分に仰っているのですか?
ならば歓迎ですね、あなたが態度を改めれば
少なくともそれが理由で掲示板が荒れることがなくなります。
大変喜ばしい事です。

そうでないのなら、発言の真意がわかりません。
誰に対して何を言いたいのでしょうか?
pandaさんは責められるほどのマナー違反はしていないと思いますが?


まぁ、このまま長いスクリプトをいくつも張り続ける事になると
問題が生じてくるとは思いますので
このまま本格的に開発を進められるのなら、HSP開発wikiなどを
使わせてもらうのは如何でしょうか?
http://hspdev-wiki.net/?Top



SYAM

リンク

2008/9/23(Tue) 09:22:48|NO.19691

ううん…S&R(楓)さんはどうも、言ってることの内容だけが間違ってない感じがするんですよね。

とりあえず。
共同開発をするのに掲示板で相談するところまでは間違ってないと思うんですが、
スクリプトを共有するのに掲示板の発言としてベターッと貼るのはあまりうまいやり方ではないでしょう。
どこかにファイルの置き場など用意することから相談したほうが いいでしょうね。



774

リンク

2008/9/23(Tue) 21:51:33|NO.19708

>暴言吐かなきゃ何してもいい掲示板ておかしいですね。
「長いスクリプトを貼りつけるのは歓迎しません。他にいい方法を探しましょう」と
フツーに書けば何も言われないのに、わざわざ自らの敵を増やすような…

しかもそのたった1行という書き込み自体が暴言と言えなくもない。


こういう書き方しか出来ないの?
インターネットからしばらく身を離してみてはどうですか?



名のる名もない

リンク

2008/9/23(Tue) 23:58:04|NO.19709

個人をたたくのはスレ違い。
専用のスレでも作れよ。

というこのレスがスレ違いっていう。



チャックパウダー

リンク

2008/9/24(Wed) 00:00:51|NO.19710

> panda さん

このトピックが立てられたすぐあとに見た私の感想は
「なんて仕事の速い人だ!」、です。
(こういう人と仲間でソフトを作る人は幸せだなと思いました。)

今回のソースは自分の興味とはちがう方面でしたが、
今後ももしビカッとその気になったときはズバッと組んで、
ベガッとスクリプト貼っちゃってください。

長いスクリプトを貼ってあるのが好きじゃない人もいるようですが、
私はダウンロードよりも親切で安全だと思っています。



S&R(楓)

リンク

2008/9/24(Wed) 06:48:35|NO.19714

あり>
軽く挑発してるよね その言い方わ。

SYAM>
ありがとうございます。

774>
>「長いスクリプトを貼りつけるのは歓迎しません。他にいい方法を探しましょう」と
>フツーに書けば何も言われないのに
そうでしょうか?「S&R=暴言魔・悪い奴」というのがインプリンティングされてしまってる人もいるみたいです。
人の成長が分かる人はその人も成長しているといえるでしょう。SYAMさんのように。

>しかもそのたった1行という書き込み自体が暴言と言えなくもない
「1行=暴言」ということ自体が暴言と言えなくもない。

>インターネットからしばらく身を離してみてはどうですか?
そういうことは自分で決めますので指図は受けません。

名のる名もない>
専用スレを作れば叩いてもよいとはいえないと思います。HSPと無関係なので。
個人を叩きたいなら2chへどうぞと言うべきです。
「はぁ?にちゃん?だから何wwにちゃんだから何www」って感じですが。

チャックパウダー>
>私はダウンロードよりも親切で安全だと思っています。
そうですね。
でもこの掲示板はpandaさんが借りている無料レンタル掲示板とは違います。



黒色迷彩

リンク

2008/9/24(Wed) 10:16:31|NO.19720

ども、旧スレ主です。
挑発するような発言を見かけても気にしない方向でお願いします。
スレが荒れるのは暴言よりも不快ですから。



あり

リンク

2008/9/24(Wed) 10:44:38|NO.19721

>挑発するような発言を見かけても気にしない方向でお願いします。
>スレが荒れるのは暴言よりも不快ですから。
という事ですので、投稿しようとした発言は取り下げました。
ですが、何が一番不快なのかは人それぞれなので
私の不快の要因も無くなってくれる事を切望はしておきます。



感想

リンク

2008/9/24(Wed) 12:23:37|NO.19722

やたらと攻撃的な多感な時期の子の今後の成長と、ブラウザアプリの行く末が楽しみです。



Gugurecus

リンク

2008/9/24(Wed) 14:22:54|NO.19723

そろそろ論旨を戻さないか。
もっともこのスレはpandaのソースについて議論すべきか、
専ブラについて議論すべきかよく分からんが。
そもそも前スレをどうするのか。
意見が両スレに分かれたら見にくくて仕方ない。
黒色迷彩かpandaが決めれ。


#オレもS&Rの発言は的を射てると思う。
#言い方がちょっとあれな時もあるが、個人差の範囲だろ。
#しかしpandaが自分のソースを公開するために次スレでこれを立てたせいで、
#専ブラの議論をどっちですべきか分からんくなったな。
#DLにすれば前スレに簡潔に張れて分かりにくくならなかったと思うが。
#自分の手軽さのために周りの不便を考えれない時点で十分マナー違反だろ。



lim7000

リンク

2008/9/24(Wed) 14:44:49|NO.19725

敵は一人だと思い込んでいる「視野の狭い人」が少なからず居られるようで。



s

リンク

2008/9/24(Wed) 15:07:35|NO.19726

何故敬称略なんでしょう・・・

言ってることが間違ってないからといって
挑発的な態度を取ったりする、
暴言を吐いたりする、というのはいかがなものでしょうか・・・。

あとこれはとても個人的ですが、
周りがどのような人が書き込んでるかどうかわからずに議論するのに
常体を使われるのはネチケット的な問題としてあまり良くないんじゃないかと思いました。
流石に人それぞれなので何も言えませんが;



p

リンク

2008/9/24(Wed) 17:18:30|NO.19727

なんとなく作っていたり。
コンテストに出してみる予定なのでよろしく。
ちなみにpandaさんのスクリプトは一切使っていません。

ま、前から作ろうと思ってたんだからね!
と言い訳。

#専ブラについて議論するスレでいいんじゃね?
#一応 続ってスレだし。



raisen

リンク

2008/9/24(Wed) 19:10:01|NO.19728


screen 34 mesbox buf,640,480,5 stop
これを*LB_GetResInternetのreturnの前にコピペするとデータが表示されます。
それをメモ帳に貼り付けて色々と・・・

おそらく <td valign="top" width="90" class="info">が見つかってからは投稿画面の物だと思います。



panda

リンク

2008/9/24(Wed) 22:29:00|NO.19733

ども、スレ主です。

皆さんのレス拝見させていただきました。いくつか気になる点だけ返信させていただきますね。

> ありさん
wiki を検討してみますね。

> #しかしpandaが自分のソースを公開するために次スレでこれを立てたせいで、
> #専ブラの議論をどっちですべきか分からんくなったな。

確かに、公開するためだけに新スレッドを立てたのは今考えると間違えだったかもしれませんね。
しかし、私は自分のソースを公開したいがためにスレッドを立てたのではなく、
非常にスクロールが長くなることを考慮して新スレッドを立てさせていただきました。

> #DLにすれば前スレに簡潔に張れて分かりにくくならなかったと思うが。
> #自分の手軽さのために周りの不便を考えれない時点で十分マナー違反だろ。

私の書き込み内容が悪かったと反省しています
> 本来は ZIP にすべきかもしれないですが、お手軽さを優先して、ココに貼り付けて起きます。
でも、内訳すると自分の手軽さのためではありません。
利用者の手軽さを優先させたつもりでした。それ故に公開されているモジュールは自分で取得するようにしました。
私のメイン使用のPCの解像度では問題なく表示されましたが
サブ利用のパソコン(解像度:XGA)で確認した結果大きくレイアウトが崩れてしまうようですね。

レイアウトが崩れたユーザー方々は申し訳なく思います。

> p さん
がんばってください

次回からは考えてカキコさせていただきますね。

----
やはり、HTMLデータから解析するので、なかなかの労力をつかいます。
おにたまさんが API などを公開していただけると、すごく助かるかとおもいます。
・・・が、
自分が公開側の身だとしたらセキュリティ的にいろいろ問題がありますので、実現は無いと考えてますが…。



raisen

リンク

2008/9/25(Thu) 18:35:48|NO.19754

HSPに貼り付ければ改行されました。

レスした人の名前取得

<a name=" で検索。ちなみに、続く " までの数字は番号。19733とか。
その行で<p>を検索。</p>までがそのレスをした人の名前。

番号と名前を取得するスクリプトを作ってきます。



raisen

リンク

2008/9/25(Thu) 19:07:29|NO.19755

*LB_GetResBodyの内容を全てこれに置き換えてください。番号と名前が右のリストボックスに表示されます。
番号と名前は一つずれているようです。今は時間が無いのでまた。


loopsu=100 targetA = "<a name=\"" targetB = "\"" strcutA=0,0 strcutB=5,0 repeat 2 t_start = 0 t_end = 0 seek = 0 mcnt=cnt repeat loopsu // 本文の始まりを探す searchA = instr(buf,seek,targetA) seek = seek+searchA+1 strcutA(0)=seek+8 strcutA(1)=seek+2 // 本文の終わりを探す searchB = instr(buf,seek,targetB) strcutB(1)=searchB-2 // 始まりと終わりを切り取る RES_BODY(cnt) = strmid(buf,strcutA(mcnt),strcutB(mcnt)) if (searchA == searchC)and(searchB == searchD){ RES_MAX = cnt-1 break } searchC = searchA searchD = searchB loop RES_MAX-2 ;最後の二つが chang と res"> のため // 返信ボックス作成 writelist+= "すべて表示...\n" repeat RES_MAX-1,1 writelist+=""+RES_BODY(cnt)+"\n" loop loopsu=RES_MAX targetA = "<p>" targetB = "</p>" loop



黒色迷彩

リンク

2008/9/28(Sun) 10:08:31|NO.19814

当方、コンパイル+実行してもすぐ終了してしまいます。
どうやらスレタイ取得したあたりで落ちるようです。



黒色迷彩

リンク

2008/9/28(Sun) 10:32:14|NO.19815




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