■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50

monazilla

50 :デフォルトの名無しさん :2001/02/12(月) 00:49
ごめん。ギコナビがバグっていて、レス番号がdでもない数字になってた。

51 :デフォルトの名無しさん :2001/02/12(月) 00:55
>TWebBrowserのOnStatusTextChangeでポイントされたURLがとれるでしょ?

これを知らなんだ。これで、全部わかったです。ありがとー。
オレもブラウザ作るかな。


52 :デフォルトの名無しさん :2001/02/12(月) 02:24
どうせならIE使わずにってのは、無理?
.DATを直に拾ってくるなら問題ないよね。

53 :デフォルトの名無しさん :2001/02/12(月) 02:26
>>52
表示が面倒だよ?

54 :デフォルトの名無しさん :2001/02/12(月) 07:07
俺もそう思う

55 :turbo type D :2001/02/12(月) 16:25
>>52
ハイパーリンクがあるからこそ
使いやすいな。

IE使わないならAirWebの2chプラグインというのもある。

56 :デフォルトの名無しさん :2001/02/12(月) 18:21
アスキーアートが崩れると
誰にも評価されないソフトと化す

57 :デフォルトの名無しさん :2001/02/12(月) 18:28
今日、帰りにDelphi買ってきた。
プログラミング言語って高いな。

58 :デフォルトの名無しさん :2001/02/12(月) 19:32
いくらで買った?

59 :デフォルトの名無しさん :2001/02/12(月) 19:57
>>58
一番安いヤツ。
一万六千円くらいの。
あーでももう挫折の予感。

60 :デフォルトの名無しさん :2001/02/12(月) 20:28
本棚にでも飾っとけ>59

61 :59 :2001/02/12(月) 20:31
こういうのに触れると、ソフトウェア作者の凄さが痛いほどわかるな。
HelloWorld!万歳!あああああ!
何か本買ってくれば良かった。

62 :59 :2001/02/12(月) 20:37
こんなでかいの本棚はいんねえよ。>>60
なんだこの説明書の厚さ。バーカ!Delphiのバーカ!
みなさんこんなのどうやって勉強されたんですか
帰り道のあのワクワクが嘘みたいだ

63 :turbo type D :2001/02/12(月) 20:44
説明書なんて誰もみない。バカかおまえ?
初心者用の書籍探してそれで勉強しろ。

あと、ネットで2chじゃない所を利用しまくって己を磨け。
http://www.valley.ne.jp/~masaiku/index1.htm

64 :turbo type D :2001/02/12(月) 20:46
だいたい、モナジラスレで関係ない話題ふるな。
VB厨房と違ってDelphi使いならエレガントに学習しなさい。

65 :デフォルトの名無しさん :2001/02/12(月) 20:49
>>63
あんがと。とりあえず本買うわ。

66 :ヒロユキ@ギコナビ :2001/02/13(火) 00:41
なんだよー。全然進まないね。キタイシテイルノニ。
turbo type Dタンが進める役したら?
すごくスキルありそうだし。


67 :デフォルトの名無しさん :2001/02/13(火) 02:35
ギコナナビとかと違いを出すために誰かMindでやってみるってのは

68 :turbo type D :2001/02/13(火) 12:33
スキルねーよ。>ヒロユキ(w

とりあえず、TUIWebは導入したばかりで
俺はIndyでやるよ。
D6も見据えながら。

69 :デフォルトの名無しさん :2001/02/13(火) 13:58
ソース表示をすれば、タブ数はわかるるる

70 :turbo type D :2001/02/13(火) 17:51
IndyでHTTPをダウンロードするのはどうするんですか?

71 :turbo type D :2001/02/13(火) 18:16
Demo見たらわかった。。。。。
今後はボロカスに言われたらやだから
質問するときはコテハンヤメテおこ。

72 :turbo type D@monazilla :2001/02/13(火) 18:51
>>23>>41
の質問をまとめます。

まずはじめに
http://salad.2ch.net/bbstable.html
を解析する事で板一覧情報は取得でき

それを解析してプログラム板のリンク先
http://piza.2ch.net/tech/index2.html
を取得して変換して
http://piza.2ch.net/tech/subject.txt
のデータを取得できる。

それにxxxx.datとかかれているので
http://piza.2ch.net/tech/dat/981726544.dat
これをDownLoadすれば発言内容が現れるという事だね。

これをローカルに保存してWebBrowserで開くとよい。
これで合ってますよね。

>>44でガイシュツだ。

73 :デフォルトの名無しさん :2001/02/13(火) 18:54
>>72
dat ファイルは単なる CSV なので、
HTML のタグをつけてやらなきゃいけない。

74 :デフォルトの名無しさん :2001/02/13(火) 20:39
とりあえずジオにディスク12MBとりました。
URL
http://www.geocities.co.jp/SiliconValley-Oakland/9028/
ID : monazilla
PW : mona

75 :turbo type D@monazilla :2001/02/13(火) 20:42
トクトクの方がいいかもよ。
容量無制限だしー。CGI可だし。

とりあえず、IndyとUIWebBrowserはインストしておいてヨシって
ことでいいですか〜?

76 :turbo type D@monazilla :2001/02/13(火) 20:49
で、IndyのIdHTTP使って任意のページをUIWebBrowserに表示させるコード。
//*********************************
object IdHTTP1: TIdHTTP
 RecvBufferSize = 1024
 HandleRedirects = True
 ProtocolVersion = pv1_0
 Request.Accept = 'text/html, */*'
 Request.ContentLength = 0
 Request.ContentRangeEnd = 0
 Request.ContentRangeStart = 0
 Request.ProxyPort = 0
 Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)'
 Left = 88
 Top = 112
end
//*********************************
procedure TForm1.NanashiAction1Execute(Sender: TObject);
var
 SL: TStringList;
 SaveFileName: String;
 Flag: OleVariant;
begin
 SaveFileName := ExtractFilePath(Application.ExeName)+'URLData.html';

 SL := TStringList.Create;
 try
  IdHTTP1.Request.Username := '';
  IdHTTP1.Request.Password := '';
  IdHTTP1.Request.ProxyServer := 'xxx.xx.xx.xxx';
  IdHTTP1.Request.ProxyPort := 80;
  IdHTTP1.Request.ContentType := '';
  IdHTTP1.Intercept := nil;

  SL.Text := IdHTTP1.Get(Edit1.Text);

  SL.SaveToFile(SaveFileName);

  Flag := 0;
  UIWebBrowser1.Navigate(SaveFileName, Flag, Flag, Flag, Flag);
 finally
  SL.Free;
 end;
end;

77 :turbo type D@monazilla :2001/02/13(火) 20:50
TUIWebBrowser/TWebBrowserでHTMLファイルを作らなくても
ブラウザ表示させる方法はどうやるんだけ?

>>ご教授きぼーん。

78 :デフォルトの名無しさん :2001/02/13(火) 22:01
>>74
ワラワカシテモラタ

79 :デフォルトの名無しさん :2001/02/13(火) 22:28
Indyのコンポどこー?

80 :turbo type D@monazilla :2001/02/13(火) 22:35
見てなかったから気が付かなかったけど、
>>74
>turbo type D's page
つのはやめてくれよ。

アヤシイページと俺とは何も関係ないんだから、
あそこ2ch嫌ってるし。

つか、一瞬、個人名バレたのかってヒヤっとしたから
心臓に悪い事はやめてくれ。まじ・(xДx


kylixにもDelphi6にも搭載される予定のネット関係コンポ
Indyのリンクきぼーんよ。
http://www.nevrona.com/Indy/

81 :デフォルトの名無しさん :2001/02/13(火) 22:40
あ、やっぱまずかった?>>80
名前だけ消しときます。

82 :81 :2001/02/13(火) 22:41
勘違いでちた!>>80

83 :ヒロユキ@ギコナビ :2001/02/13(火) 23:18
>>80
分かっていると思うけど、
・Indy は Server Edition 以上につく
だそうです。Kilixの話ね。
Kilix-MLからの情報です。

84 :デフォルトの名無しさん :2001/02/13(火) 23:24
Server Editionだとホビープログラマはつらいですね。>>83
にしても話が進まないので分析/設計とプロトタイプ開発を
同時に進めるようなやり方で行きましょうか?


85 :デフォルトの名無しさん :2001/02/13(火) 23:29
>>77
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
HtmlView: DispHTMLDocument;
begin
s := '<html><body><font color=red size="+3">て</font>すと</body></html>';
HtmlView := WebBrowser_V11.Document as DispHTMLDocument;
if HtmlView <> nil then HtmlView.body.innerHTML := s
end;

じゃダメ? ただし、いちどNavigateかGoHomeなどしておく必要アリ。理由不明。

86 :デフォルトの名無しさん :2001/02/13(火) 23:29
プロトタイプってのは
技術的なプロトタイプね。
たとえばスレ一覧を取るだけのものとか。

87 :ヒロユキ@ギコナビ :2001/02/14(水) 00:23
>>85
var
v: OleVariant;
begin
v := 0;
WebBrowser1.Navigate('about:blank', v);
end;
これを最初にやるのはダメかな?

>>84 >>86
76でスレ一覧を取れたも同然じゃん。
とりあえず、骨組みとなるクラスを考えましょう。
>>28にあったように、あのクラスを元にして、決まったら一気に実装。


88 :turbo type D@monazilla :2001/02/14(水) 09:51
>>レス、サンクス
今から調べる。

コード規約みたいなのを考えてほしい。
コメントの書き方や関数ヘッダのコメントなど。
自分のやり方だと、個人名が特定されそうでやだし〜。

あと、画面周りは
通常の貧弱なMainMenuとToolbarを使ってActionで実装するつもり。
そうするとオプソならではの
MenuBar/ControlBar/Coolbar/CuteBarに至る改造を
各々が楽しめるようになるだろう。
Formの位置保存コードなども誰でも実装できそうな部分は
含めない方針でとりあえずめざします。

とりあえずはIndyを使いますが
関数化しておくから、NMHTTPやHTMLCLIを使っての置き換えが
容易に可能なようにもしておきます。

かちゅーしゃのデザインが優れていると感じるので
似たようにします。
3ペインの左がTreeViewにして,2ch用お気に入りもこのTreeに入るようにしたい。
上を、ListView,vsReport/StringGrid→迷っている。
下をTWebBrowserのPageControlにします。
(俺はTUIWebBrowserを使うけど多分置き換え可能だろう)

他に代替案があったらご意見よろしく。

89 :turbo type D@monazilla :2001/02/14(水) 09:58
関係無いけど
コードにはAAを嫌になるほどいれたい。(藁

Delphi自体のフォントをPゴシックに出来ないのは残念。

90 :turbo type D@monazilla :2001/02/14(水) 10:02
追加。データ保存はIniファイルでやる。

本当はマルチユーザ対応などレジストリでやるのが楽でいいんだが
コアなユーザーはIni好きだから。

91 :デフォルトの名無しさん :2001/02/14(水) 10:19
>>88
そこまで考えてくれるとありがてぇ

92 :turbo type D@monazilla :2001/02/14(水) 10:48
>>83
Indyは付属してなくてもDowlLoadすればいい話じゃないか?
HELPファイルなんかはServer版しか日本語化されないだろうけど。
MLで聞いてみてよ。俺ROMってるから(藁

93 :turbo type D@monazilla :2001/02/14(水) 12:07
Board一覧データの取得方法考えました。

クラスを作る
&nbsp;&nbsp;//インスタンスが一つだけのクラス
&nbsp;&nbsp;T2chBoardList&nbsp;class
&nbsp;&nbsp;&nbsp;&nbsp;BoardCategorys:&nbsp;TList;//カテゴリのリスト
&nbsp;&nbsp;end;

&nbsp;&nbsp;//カテゴリごとのクラス
&nbsp;&nbsp;TBoardCategory&nbsp;=&nbsp;class;
&nbsp;&nbsp;&nbsp;&nbsp;Title:&nbsp;String;//【おすすめ】などのカテゴリ名
&nbsp;&nbsp;&nbsp;&nbsp;BoardItems:&nbsp;TList;//カテゴリに属する板のTBordItemを保持
&nbsp;&nbsp;end;

&nbsp;&nbsp;//各板ごとのクラス
&nbsp;&nbsp;TBoardItem&nbsp;=&nbsp;class
&nbsp;&nbsp;&nbsp;&nbsp;Title:&nbsp;String;//板のタイトル
&nbsp;&nbsp;&nbsp;&nbsp;Name:&nbsp;String;//板の英語名
&nbsp;&nbsp;&nbsp;&nbsp;URL:&nbsp;String;//板のURL
&nbsp;&nbsp;end;

--http://salad.2ch.net/bbstable.htmlのソースから
2chBoardListを生成

S&nbsp;:=&nbsp;bbsSource;
CategoryDataStart&nbsp;:=&nbsp;Sから【&lt;B&gt;を探索
CategoryDataEnd&nbsp;:=&nbsp;Sから次の位置の【&lt;B&gt;を探索/見付からない場合は文末
CategoryData&nbsp;:=&nbsp;SのCategoryDataStartからCategoryDataEndまで
CategoryDataが取得できなかったらエラー
SからCategoryDataは削除

CategoryTitleStart&nbsp;:=&nbsp;CategoryDataから【&lt;B&gt;を探索
CategoryTitleEnd&nbsp;:=&nbsp;CategoryDateから&lt;/B&gt;】
CategoryTitle&nbsp;:=&nbsp;CategoryDataのCategoryTitleStartからCategoryTitleEndまで
CategoryTitleが取得できなかったらエラー
BoardCategoryを生成2chBoradListに登録、タイトルに代入
CategoryDataからCategoryTitleは削除

BoardItemCount&nbsp;:=&nbsp;CategoryDataの中ノ&lt;Aと&lt;/A&gt;の数を数える→一致しなければエラー
for&nbsp;i=0&nbsp;to&nbsp;BoardItemCount-1&nbsp;do
begin
&nbsp;&nbsp;BoardItemDataStart&nbsp;:=&nbsp;CategoryDataから&lt;A&nbsp;HREF=を検索
&nbsp;&nbsp;BoardItemDataEnd&nbsp;:=&nbsp;CategoryDataから&lt;/A&gt;を検索
&nbsp;&nbsp;BoardItemData&nbsp;:=&nbsp;CategoryDataのBoardItemDataStartからBoardItemDataEndまで
&nbsp;&nbsp;CategoryDataからBoarItemDataは削除
&nbsp;&nbsp;BoardItemDataは&lt;A...&gt;...&lt;/A&gt;という文字列になっているので解析して
&nbsp;&nbsp;&nbsp;&nbsp;リンク先とタイトルを取得する。
end;


94 :デフォルトの名無しさん :2001/02/14(水) 13:20
>>85
IEコンポは作成直後はHTMLDocumentがnilになってるからね。
innerHTML、outerHTMLを設定するんじゃなくてHTMLDocumentに
writeすれば問題ない。けど、フォントが変になったような気がする。
かちゅーしゃはHTMLにフォント設定を埋め込むことでこれを回避してるようだ。
>>87
(少なくともVC++/MFCでは)Navigateが非同期動作になるので、一旦Navigate
して、NavigateComplateかDocumentCompleteのイベントをトリガにする
必要がある。
まぁ、about:blankに飛ぶぐらいはすぐだろうから、WebBrowserのステータス
でループさせて終了を待ってもいいけどね。

あと、データアクセス層をきちんとつくっとかないと、マルチスレッドになって
複数のスレッドから同時にアクセスがあったときの処理が複雑になる。
Mutexで排他処理する部分は最小にしたいからね。

このような、ネットワークアプリは非同期処理との戦いになると思う。

95 :turbo type D@monazilla :2001/02/14(水) 13:23
>>85>>87
スマソ、追加で教えてキボーン
DispHTMLDocumentやWebBrowser_V11って何?


96 :turbo type D@monazilla :2001/02/14(水) 13:28
>>94厳しいな(TДT
浮津堕コーディングしよう。

97 :turbo type D@monazilla :2001/02/14(水) 13:50
>>93を考えていて>>28のクラスを再度確認してみた
T2chObjectっておかしくないか?
すべての基底クラスにダウソ開始/終了
なんていらないと思うのだが、
特にT2chResponseがT2chObjectから継承する
必要はないんじゃないか?

俺のクラス設計が甘いのか?わからない。

スレのダウンロードから
レス一つ一つのダウンロードメソッドを呼ぶ方がいいのか?


98 :デフォルトの名無しさん :2001/02/14(水) 14:29
俺もBCB4で似たようなの作ってるんだけどさ、
(勉強目的だから、VCLはUI以外は極力使わないようにしてるけど)
WebBrowserでNavigate2したときの表示がどうなってるかイマイチわからん。

スレを表示するとき、HTMLファイルを作ってNavigate2したときって
すごく速いんだよね。表示開始が。
これに対して、IHTMLDocument2のinnerHTMLをいじると、
表示開始までが遅い。全部解析してから1行目を表示している感じ。

1000近くあるスレで、insertAdjacentHTMLしながら、
適度にApplication->ProcessMessages()を含めてみると、
開示までの時間は問題無いが、終了までに余計時間がかかる。
それよりも気になるのが、表示されている様子が目に見えること。
Navigate2だと一瞬で表示されるのに、上から一行ずつ表示されているのが
見えるよう。
ProcessMessages()を呼ぶタイミングを動的に変更しても同じ気がする。

パイプでも使ってるのか、それともparent(IHTMLWindow2)に何かあるのか。
つーか、手元に資料が全然無くて、すげー苦労なんだけど。
MSHTML_TLB.hは15MBもあるし・・・

99 :turbo type D@monazilla :2001/02/14(水) 14:41
>>98
俺、まだNavigateとNavigate2の違いもわからん。
教えてくらさい。

98の話からすると、とりあえずファイルに書き出してから
読み込んだ方がいいって事か?

100 :turbo type D@monazilla :2001/02/14(水) 14:43
違いはURLにPIDLが使えるか否かだね。
で、PIDLって何だ?(w

101 :94 :2001/02/14(水) 15:10
>>96
似たようなアプリを書いた経験からだよ。

>>98
スレ100個分ぐらいのHTMLをつくって一気にinsertAdjacentHTMLすれば
いいんじゃない?それか、HTMLDocumentにwriteするとさらに速かったような
記憶がある(MFCでしかやったことないので適当に置き換えてね。COMの
インターフェイスだからそんなに違わないと思うけど)。
あと、OnNavigateCompleteとOnDocumentCompleteで発生するタイミングが
結構違ったような気がする。どっちが速かったかは覚えてない。

>>99>>100
PIDLじゃないと「マイコンピュータ」にNavigateすることができないね。

102 :98 :2001/02/14(水) 15:29
>101 遅さについて
いや、いろいろ試したんだ。
parse等の時間を全部無視して
50レスにしたり、100レスにしたり200にしたり、全部一括にしたり。
でも、やっぱりProcessMessages時だけ「表示」が遅いんだ。
(ちなみに、Sleep等も試したけど、表示されなかった・・・)
いや、俺のマシンが遅いのも原因だし、
「気にならない程度の遅さ」と言われれば、その通りなんだけど。

NavigateCompleteとDocumentCompleteは、確かRefreshが絡むと
面倒だったんだよね。って、俺も覚えてない。

そうそう、TWebBrowser_V1&NavigateはIE3、
TWebBrowser&Navigate2はIE4以降。

103 :98続き :2001/02/14(水) 15:31
フォントの問題は、
Create時にabout:blankにNavigate2しておいて、表示する時に
IHTMLDocument2Ptr doc; doc = browser->Document;
doc->charset = L"shift_jis";
doc->set_fgColor(0x000000);
doc->set_bgColor(0xEFEFEF);
doc->set_linkColor(0x0000FF);
doc->set_alinkColor(0xFF0000);
doc->set_vlinkColor(0x660099);
すれば、Win98SE+IE5.01の環境ではクリアできているけど、
IE5.5とかはどうなんでしょ?

Board一覧の取得は、俺もhttp://salad.2ch.net/bbstable.htmlを取ってる。
解析も同じ。('【'の検索)
【】の間をカテゴリ名として、board.txtを作ってる。
(2chブラウザと同じかな)
カテゴリ名の重複はそのまま放置し、読みこみ時に対応してる。
最後がindex2.htmlかを見て、2ch内部かどうか判断。
まちBBSは入らないが、datが取得できないのでそのままにしてる。

スレ一覧は、ListView→遅い、StringGrid→表示を停止させていても
一瞬待つのが嫌、という理由により、ListBoxのOwnerDrawにした。
(板によっては3000スレ近くがローカルにあり、マシンはPenII266)
表示終了までの時間はかかるが、動きが見えているので精神衛生上良い。
色を変えたりの小細工も出来る。
StringGridはスクロールバーが嫌だったのも理由の一つだけど、
まともなアプリを組んだ事のない素人なので、
やり方を知らないだけかもしれない。

104 :98 :2001/02/14(水) 15:40
連続でごめんなさい。
>>101をよく読んでなかった。
HTMLDocumentにwriteですか。ありがとうございます。
いろいろ試してみます。
・・・調べてみますと言えないのが悲しい。
サーチエンジンを使って、英語とも格闘して、試行錯誤します。

105 :デフォルトの名無しさん :2001/02/14(水) 16:04
>>103
>【】の間をカテゴリ名として、board.txtを作ってる。
>(2chブラウザと同じかな)
うんにゃ。<B></B>だよ。じゃないと、www.2ch.net/bbsmenu.htmlを読めない。


106 :turbo type D@monazilla :2001/02/14(水) 16:14
>>サンクス。
IE4以降限定でいいよね。

C++の人はDonut系ですか、すげ・詳しいな。

>>105
http://salad.2ch.net/bbstable.html
http://www.2ch.net/bbsmenu.html
どっちで取得するのが正しいの?
bbsmenu.htmlはメールリンクとかアってヤナ監事。

107 :デフォルトの名無しさん :2001/02/14(水) 16:15
んじゃコード規約(Delphi)を勝手に決めます。
コメントの書き方だけど

 //
 //   ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 //  ( ´∀`)< 文字列からほげほげを抜き出す
 //  (    )  \________________________
 //  | | |
 //  (__)_)
 //
 function ....

やっぱこんなの?
あ、Delphiのエディタじゃ AA 無理だっけ?

108 :デフォルトの名無しさん :2001/02/14(水) 16:27
end.の下の行は

//============== 終了==============

をつける。意味ないけど。

109 :98>105 :2001/02/14(水) 16:52
その通りっす。すみませんです。
さらに、カテゴリの重複→カテゴリの連続っす。

あれから少し調べると、
SAFEARRAYとか、SafeArrayCreateVector()とか、更に未知の物が。
が、close:
 Closes an output stream and forces the sent data to display.
なんて文も見かけたので、併せてもっと調べてみます。

110 :turbo type D@monazilla :2001/02/14(水) 16:53
>>107 実に助かるよ。
仕事中にコーディングしていると、ぶっ殺されそうだ。(ww

モナーのセソフ
機能の説明だけだと、わかりにくいから
更新履歴と引数/戻り値の説明も
入れれるようにしてプリ〜ズ

//============== 終了==============

111 :turbo type D@monazilla :2001/02/14(水) 17:13
等幅フォントだと、こんなもんかな?

//
// ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
// (´∀`)< ボードの一覧をhttp://salad.2ch.net/bbstable.htmlより得る
// (    ) \________________________
//  | | |
// (__)_)
//
しかし、このコメントがついてたら
まじで周りにビクビクしながらコード書かなきゃいけないから
すげー疲れる(w


112 :デフォルトの名無しさん :2001/02/14(水) 17:31
等幅でもずれとりまんがな。空白が寄せられただけ?
ところで、94さんは2chブラウザーの作者さんのような気がするけど、違うのかな?

113 :デフォルトの名無しさん :2001/02/14(水) 17:45
>>112 違わないよ。

114 :98 :2001/02/14(水) 18:08
かなり戻るけど、>>93のTBoardCategoryは必要ないと思う。
というのは、いずれ、貼りつけられたスレへのリンクからTBoardItemを
検索したくなるだろうから。
鯖移転にも対応するために、板名で検索できること
(さらに、mac板やbike板に対応すること)を考えると、
TBoardItemはどっかでまとめて持ち、
TreeNode->Dataに細工するのがいいと思う。

もしかしたら参考になるかもしれないので、
俺の使っている部分をそのまま載せます。
VCLも知らないので、批判もよろしく。

Board型はstaticメンバーで全体を保持。
Board::BoardCount()で全板数、
Board::At()で順アクセス、Board::Find()で検索、etc
Boardのインスタンスは、Name()がnilならカテゴリ名、
Name()の中身があればそれぞれの板。
stringとSTLを使っているのは、それらの勉強も目的だから。

 TTreeNodes *tree = BoardTree->Items;
 tree->Clear();
#if 0
 TTreeNode *root = tree->Add(NULL, "2ちゃんねる");
 //root->Data = NULL;
#else
 TTreeNode *root = NULL;
#endif
 int n = Board::BoardCount();

 string catename;
 vector<Board *> boards;

 for (int i = 0; i < n; ++i) {
  Board *bd = Board::At(i);
  if (bd->Name().empty()) {
   if (!boards.empty()) { //カテゴリ名の連続に対処するため
    TTreeNode *cate = tree->AddChild(root, catename.c_str());
    cate->Data = NULL;
    vector<Board *>::iterator it;
    for (it = boards.begin(); it != boards.end(); ++it) {
     TTreeNode *tmp = tree->AddChild(cate, (*it)->Title().c_str());
     tmp->Data = *it;
    }
   }
   boards.clear();
   catename = bd->Title();
  } else {
   boards.push_back(bd);
  }
 }

115 :turbo type D@monazilla :2001/02/14(水) 18:57
>>114
>TBoardCategoryは必要ないと思う。
ほっほー、そうなん。

mac板、bike板ってなんだろけ?

でも、もう殆ど実装してまった(゚Д゚)・・・・・・・
ま、データを保持するクラス階層は変更して
TreeViewの生成だけに利用するよ。
かちゅしゃーでも一応右端の色でわかれてるからなあ。
Boardクラスにカテゴリプロパ付けるだけで十分か?

それともTreeViewのTreeNodesとTreeNodeみたいに
データ構造をツリーと一覧の二通りのアクセスかましておきます。
98さんはVCL知らないか。

今日中に一覧をTreeで表示させたかったが、無理だわ。
また先ですわ。

116 :turbo type D@monazilla :2001/02/14(水) 19:04
かちゅしゃは右端じゃなくて左端でした
あせって左右もわからなくなってる。

98さんはVCLバリバリ使ってる気がするが,,,

117 :デフォルトの名無しさん :2001/02/14(水) 20:06
macとbikeってのはこれっす。
Mac
http://piza.2ch.net/mac/
mac
新Mac
http://teri.2ch.net/mac/
mac
バイク
http://tako.2ch.net/bike/
bike
自転車
http://mentai.2ch.net/bike/
bike

http://teri.2ch.net/test/read.cgi?bbs=mac&key=999999999
なんてのから板を特定するときに、'teri'の文字も必要だってことっす。

118 :デフォルトの名無しさん :2001/02/14(水) 22:20
>>103
ListViewは速くはないけど、Delphi4から導入されたVirtualModeを使えば、そんなに遅くないです。
でもこれだとオーナードローする必要があり面倒です。
ちなみに、どうせオーナードローするならStringGridよりDrawGridの方が多少速いです。
もっとも上にあげたものは全てTListからのオーナードローになると思うので、どれでも十分な
速さですけど。
実は、オレも作成中だったりして。

119 :28のクラス書いた人 :2001/02/14(水) 22:34
しばらくこないうちにだいぶ進んだなぁ。
個人的にはhtml,datダウソ部分の構造が先に知りたいです。
>97 名前:turbo type D@monazilla投稿日:2001/02/14(水) 13:50
>>93を考えていて>>28のクラスを再度確認してみた
>T2chObjectっておかしくないか?
>特にT2chResponseがT2chObjectから継承する
>必要はないんじゃないか?
T2chResponseは(既にある)T2chThreadの各レスにアクセスするため窓口だから
確かにダウソ開始/終了はいらないね。
いらないけどダウンロード可能・不可能をクラスで分類すると
数が増えて嫌だったというだけ。
まあレスをクラス化してT2chThreadのプロパティにすること自体は必要でしょ。

>すべての基底クラスにダウソ開始/終了
>なんていらないと思うのだが、
T2chResponse以外はダウソ開始・終了が必要でしょ。

>// ダウンローダ
>T2chDownloader = class(T2chObject)
>private
> FQueue: TObjectQueue; // スタックのがいいかも??
>public
この部分はdequeにして、ユーザーのクリックを優先的に処理して(stack)、
巡回を後回しに(queue)するのがいいかも。
マルチスレッドによる複数同時処理は
全部このクラスの内部に隠蔽しちゃえばすっきりすると思う。
とりあえずシングルスレッドで実装しといてあとで増やすこともできるし。

あとT2ch(Downloadable)Object自身に
巡回スケジュール&履歴プロパティがあるとよいかも。

turbo type D@monazillaたんがむばってね。

120 :デフォルトの名無しさん :2001/02/14(水) 22:45
>>118
OwnerData使うだけで速いよ、OwnerDrawする必要なんてない。


121 :turbo type D :2001/02/14(水) 23:48
むずかしいなーー、絶対ムズイよ。>>119
ある程度の所まで実装してアプしたら、
みんなさん、頼みまっせ。

htmlダウソならコンポつかっちゃってるけどそれじゃだめ?

ダウソドーロは全部スレッド化しろってぇ。難しいなあ。

122 :turbo type D :2001/02/15(木) 00:01
StringGridのスクロルバーは何とかできるが
マルチセレクトと非選択をやろうとするとだるい。

かちゅしゃと同様なUIだと
スレ表示されていてマルチセレか非選択状態ってのは
必要ないとも思える。

しかし、3000は厳しいな。

123 :ヒロユキ@ギコナビ :2001/02/15(木) 00:16
>>122
120さんも言っているけど、ListViewのOwnerDataを使うと簡単便利で高速だよ。
件数もあんまり関係ないし。
ギコナビもOwnerData。


124 :デフォルトの名無しさん :2001/02/15(木) 00:19
テクニシャンな方々はここだけでもコテハンきぼん。
特に 119 さん、なんかハンドル使ってください。

125 :turbo type D :2001/02/15(木) 00:24
>>124
そういう貴方も、コテハンを(・w・

126 :書記さん :2001/02/15(木) 00:34
>>125
すんづれぇーしました。書記さんです。
ジオのページ立ち上げた張本人です。
なお、ただいまぜんぜん役に立たないドキュソ、、、
じゃなくてドキュメントつくってます。

127 :書記さん :2001/02/15(木) 00:47
とりあえず資料をアップしてみました。
つーか全部こぴぺなんだけど。
http://www.geocities.co.jp/SiliconValley-Oakland/9028/

128 :デフォルトの名無しさん :2001/02/15(木) 00:48
http://www.geocities.co.jp/SiliconValley-Cupertino/1858/
とりあえず一連の流れだけのヤツを作ってみたぞ。オレ様はWininetでマターリと逝く。
ちなみに、クラス設計はボロボロ。
なんと言っても、クラス設計はコード書きながらやったからな(今後はちゃんと設計する)。
あまり期待はしないで頂戴な。

129 :書記さん :2001/02/15(木) 01:00
>>128
opengiko.res が見つからないってエラー出た場合は炒ってよしですか?
(Delphi 5 Pro)

130 :デフォルトの名無しさん :2001/02/15(木) 01:02
>>129
ありゃ、D5はリソースファイルがいるのか。
自動的に作られるんじゃないの?が〜ん。

131 :書記さん :2001/02/15(木) 01:06
ボタンの絵とかがからぽでした、
にしてもなかなか動作の感じは良かったです。


132 :デフォルトの名無しさん :2001/02/15(木) 01:08
ボタンの絵とかは募集中だ!

133 :書記さん :2001/02/15(木) 01:10
あ、そういうことでしたか、>>募集中

・ホームページ管理人募集。

これは私が引き受けてもいいです。

134 :デフォルトの名無しさん :2001/02/15(木) 01:13
んじゃ、決定だ。頼む。
掲示板にftp関係のは書いておく。しばし待たれよ!

135 :デフォルトの名無しさん :2001/02/15(木) 01:16
書いたぞ!ゴルァ!

136 :デフォルトの名無しさん :2001/02/15(木) 01:18
明日も仕事だ。もう寝る。

137 :turbo type D :2001/02/15(木) 01:29
ボタンの絵などは、オプソっぽく自由に設定しろという方式はダメかナー

138 :turbo type D :2001/02/15(木) 01:31
各種コンポーネントのインストール方法(特にHTTPCLIやIndy)
の説明をキボぅ,(なるべく多くの人が参加しやすくなるから)

139 :turbo type D :2001/02/15(木) 01:33
関係ないけど
monazillaよりモナプロ〜ラ〜やギコプロ〜ラ〜の方が
いいというような思いも…センスナイっすか?

140 :デフォルトの名無しさん :2001/02/15(木) 01:49
面白そうなことやってますね〜。
一応Delphi,C++Builder使いだけど、スキルがないから参加は無理っぽそう(汗

141 :turbo type D :2001/02/15(木) 02:00
とりあえず暫定Main.dfm/Mail.pas(3ペインの画面だけ)
をアプしたいけど、アプ板どこかないかな。

>>140
そういわずに、俺もスキルナイナイから安心せ。

142 :デフォルトの名無しさん :2001/02/15(木) 02:39
とりあえず、HTTPCLIもIndyもいらんと思うのだがどうか。

143 :デフォルトの名無しさん :2001/02/15(木) 02:53
「>>」の扱いはどうするの?

144 :turbo type D@monazilla :2001/02/15(木) 10:01
>>142
>>88を見てくださいな。置き換え可能を意識してコード書いておきましょう。
TWebBrowserだけで出来るって事かな?Wininet?
表示せずにHTMLソースをダウソするのはどうするの?

>>143
HintWindowとリンクをつけたいね。

145 :デフォルトの名無しさん :2001/02/15(木) 11:17
>>141
アップロードする方法は

以下を切り取ってローカルファイルとして保存すれば簡単
なお、既に同名のファイルがあるかどうかは自分で注意する事

<HTML> <HEAD> <TITLE>monazillaアップローダ</TITLE></HEAD> <BODY>
<FORM action=http://tools.geocities.co.jp/cgi-bin/members/file_manager encType=multipart/form-data method=post>
<INPUT TYPE="hidden" NAME="member" VALUE="monazilla">
<INPUT TYPE="hidden" NAME="passwd" VALUE="8EYNK=LO;3QTkEyPaPg">
<INPUT TYPE="hidden" NAME="fulladdress" VALUE="SiliconValley-Oakland/9028">
<INPUT TYPE="hidden" NAME="subdirectory" VALUE="src">
<INPUT TYPE="hidden" NAME="email" VALUE="monazilla@usa.net">
<INPUT TYPE="hidden" NAME="geoextras" VALUE="YN4<">
<INPUT TYPE="hidden" NAME="timestamp" VALUE="982202865">
<INPUT name=extlist type=hidden value=-1>
<INPUT name=lowercase type=checkbox> ファイル名を自動的に小文字に変換<BR>
<INPUT name=addhtml type=checkbox> 拡張子".htm"を".html"に自動的に変換<BR><BR>
<INPUT name=userfile size=80 type=file><BR><BR>
<INPUT type=submit value=アップロード>
<INPUT type=reset value=クリア><BR></FORM>
</BODY></HTML>


146 :turbo type D@monazilla :2001/02/15(木) 11:35
>>145
これでどこにアプされるの?

147 :145 :2001/02/15(木) 12:05
>>146
http://www.geocities.co.jp/SiliconValley-Oakland/9028/src/アプファイル名


148 :デフォルトの名無しさん :2001/02/15(木) 12:35
>>144
WinInetはwebBrowserと関係なく単独で使える
WebBrowserが使えるなら普通 WinInetも使えるという意味
使い方は こっちのリンクから
http://piza.2ch.net/test/read.cgi?bbs=tech&key=970606624&st=306&to=308&nofirst=true

Cのサンプルだが使い方はこれ見れば簡単
http://tokyo.cool.ne.jp/masapico/api_sample_inet04_c.html


149 :デフォルトの名無しさん :2001/02/15(木) 12:37
>>144
TWebBrowser使える環境ならURL Moniker使えるでしょうし。


317KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30