■スレッドリストへ戻る■ 全部 1- 最新50

モナプロ〜ラ〜

1 :turbo type D@monazilla :2001/02/18(日) 10:56

 //
 //   ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 //  ( ´∀`)< モナ?
 //  (    )  \________________________
 //  | | |
 //  (__)_)
 //

2 :turbo type D :2001/02/18(日) 10:59
unit Board2ch;interfaceuses
Classes;type
TNichNet = class;
TNichCategory = class;
TNichBoard = class;
TNichThread = class;
TNichResponse = class; //2ch全体
TNichNet = class
private
FCategorys: TList;
FBoards: TList;
function GetCategorys(Index: Integer): TNichCategory;
function GetBoards(Index: Integer): TNichBoard;
public
constructor Create;
destructor Destroy; override;
property Categorys[Index: Integer]: TNichCategory read GetCategorys;
procedure AddCategory(Category: TNichCategory);
property Boards[Index: Integer]: TNichBoard read GetBoards;
procedure AddBoard(Board: TNichBoard);
end; //2chのカテゴリー
TNichCategory = class
private
FTitle: String;
FBoardItems: TList;
function GetBoardItems(Index: Integer): TNichBoard;
public
constructor Create;
destructor Destroy; override;
property Title: String read FTitle write FTitle;
property BoardItems[Index: Integer]: TNichBoard read GetBoardItems;
procedure AddBoard(Board: TNichBoard);
end; //2chのボード
TNichBoard = class
private
FTitle: String; //日本語名(ユニーク)
FName: String; //英語名(バイク板やマック板がありユニークではない)
FURL: String; //(ユニーク)
FThreads: TList;
FOwnerCategory: TNichCategory;
function GetCategory: TNichCategory;
function GetThreads(Index: Integer): TNichThread;
public
constructor Create;
destructor Destroy; override;
property Title: String read FTitle write FTitle;
property Name: String read FName write FName;
property URL: String read FURL write FURL;
property Category: TNichCategory read GetCategory;
property Threads[Index: Integer]: TNichThread read GetThreads;
end; //2chのスレッド
TNichThread = class
private
FTitle: String;
FNumber: Integer;
FFavorite: Boolean;
FOwnerBoard: TNichBoard;
FResponses: TList;
function GetResponses(Index: Integer): TNichResponse;
function GetBoard: TNichBoard;
public
property Title: String read FTitle write FTitle;
property Number: Integer read FNumber write FNumber;
property Board: TNichBoard read GetBoard;
property Responses[Index: Integer]: TNichResponse read GetResponses;
end; //2chのレス
TNichResponse = class
private
FNo: Integer;
FEmail: String;
FDateTime: TDateTime;
FText: String;
public
property No: Integer read FNo write FNo;
property Email: String read FEmail write FEmail;
property DateTime: TDateTime read FDateTime write FDateTime;
property Text: String read FText write FText;
end;var
NiChannel: TNichNet;

3 :turbotypeD@monazilla.org :2001/02/18(日) 11:01
インデント抜けたモナ。
unit Board2ch;interfaceuses
 Classes;type
 TNichNet = class;
 TNichCategory = class;
 TNichBoard = class;
 TNichThread = class;
 TNichResponse = class; //2ch全体
 TNichNet = class
 private
  FCategorys: TList;
  FBoards: TList;
  function GetCategorys(Index: Integer): TNichCategory;
  function GetBoards(Index: Integer): TNichBoard;
 public
  constructor Create;
  destructor Destroy; override;
  property Categorys[Index: Integer]: TNichCategory read GetCategorys;
  procedure AddCategory(Category: TNichCategory);
  property Boards[Index: Integer]: TNichBoard read GetBoards;
  procedure AddBoard(Board: TNichBoard);
 end; //2chのカテゴリー
 TNichCategory = class
 private
  FTitle: String;
  FBoardItems: TList;
  function GetBoardItems(Index: Integer): TNichBoard;
 public
  constructor Create;
  destructor Destroy; override;
  property Title: String read FTitle write FTitle;
  property BoardItems[Index: Integer]: TNichBoard read GetBoardItems;
  procedure AddBoard(Board: TNichBoard);
 end; //2chのボード
 TNichBoard = class
 private
  FTitle: String; //日本語名(ユニーク)
  FName: String; //英語名(バイク板やマック板がありユニークではない)
  FURL: String;  //(ユニーク)
  FThreads: TList;
  FOwnerCategory: TNichCategory;
  function GetCategory: TNichCategory;
  function GetThreads(Index: Integer): TNichThread;
 public
  constructor Create;
  destructor Destroy; override;
  property Title: String read FTitle write FTitle;
  property Name: String read FName write FName;
  property URL: String read FURL write FURL;
  property Category: TNichCategory read GetCategory;
  property Threads[Index: Integer]: TNichThread read GetThreads;
 end; //2chのスレッド
 TNichThread = class
 private
  FTitle: String;
  FNumber: Integer;
  FFavorite: Boolean;
  FOwnerBoard: TNichBoard;
  FResponses: TList;
  function GetResponses(Index: Integer): TNichResponse;
  function GetBoard: TNichBoard;
 public
  property Title: String read FTitle write FTitle;
  property Number: Integer read FNumber write FNumber;
  property Board: TNichBoard read GetBoard;
  property Responses[Index: Integer]: TNichResponse read GetResponses;
 end; //2chのレス
 TNichResponse = class
 private
  FNo: Integer;
  FEmail: String;
  FDateTime: TDateTime;
  FText: String;
 public
  property No: Integer read FNo write FNo;
  property Email: String read FEmail write FEmail;
  property DateTime: TDateTime read FDateTime write FDateTime;
  property Text: String read FText write FText;
 end;var
 NiChannel: TNichNet;

4 :turbotypeD@monazilla.org :2001/02/18(日) 11:02
>>3の続き。
データ保持クラスの現在の現状。implementation{ TNichNet }
procedure TNichNet.AddBoard(Board: TNichBoard);
begin
 if Assigned(Board) then
  FBoards.Add(Board)
 else
  Assert(false, 'ボードが登録されてないぞ(゚Д゚)ゴルァ');
end;procedure TNichNet.AddCategory(Category: TNichCategory);
begin
 if Assigned(Category) then
  FCategorys.Add(Category)
 else
  Assert(false, 'カテゴリが登録されてないぞ(゚Д゚)ゴルァ');
end;constructor TNichNet.Create;
begin
 FCategorys := TList.Create;
 FBoards := TList.Create;
end;destructor TNichNet.Destroy;
begin
 FBoards.Free;
 FBoards := nil;
 FCategorys.Free;
 FCategorys := nil;
 inherited;
end;function TNichNet.GetBoards(Index: Integer): TNichBoard;
begin
 if ( 0<=Index) and ( Index<=FCategorys.Count-1 ) then
 begin
  Result := TNichBoard(FBoards.Items[Index]);
 end else
 begin
  Assert(false, '不正なボードへのアクセスだ(゚Д゚)ゴルァ');
  Result := nil;
 end;
end;function TNichNet.GetCategorys(Index: Integer): TNichCategory;
begin
 if ( 0<=Index) and ( Index<=FCategorys.Count-1 ) then
 begin
  Result := TNichCategory(FCategorys.Items[Index]);
 end else
 begin
  Assert(false, '不正なカテゴリへのアクセスだ(゚Д゚)ゴルァ');
  Result := nil;
 end;
end;
{ TNichCategory }procedure TNichCategory.AddBoard(Board: TNichBoard);
begin
 if Assigned(Board) then
  FBoardItems.Add(Board)
 else
  Assert(false, 'ボードが登録されてないぞ(゚Д゚)ゴルァ');
end;constructor TNichCategory.Create;
begin
 FBoardItems := TList.Create;
end;destructor TNichCategory.Destroy;
begin
 FBoardItems.Free;
 FBoardItems := nil;
 inherited;
end;function TNichCategory.GetBoardItems(Index: Integer): TNichBoard;
begin
 if ( 0<=Index) and ( Index<=FBoardItems.Count-1 ) then
 begin
  Result := TNichBoard(FBoardItems.Items[Index]);
 end else
 begin
  Assert(false, '不正なボードへのアクセスだ(゚Д゚)ゴルァ');
  Result := nil;
 end;
end;
{ TNichBoard }constructor TNichBoard.Create;
begin
 FThreads := TList.Create;
end;destructor TNichBoard.Destroy;
begin
 FThreads.Free;
 FThreads := nil;
 inherited;
end;function TNichBoard.GetCategory: TNichCategory;
begin
 if Assigned(FOwnerCategory) then
  Result := FOwnerCategory
 else
 begin
  Assert(false, 'カテゴリが登録されてないぞ(゚Д゚)ゴルァ');
  Result := nil;
 end;
end;function TNichBoard.GetThreads(Index: Integer): TNichThread;
begin
 if ( 0<=Index) and ( Index<=FThreads.Count-1 ) then
 begin
  Result := TNichThread(FThreads.Items[Index]);
 end else
 begin
  Assert(false, '不正なスレッドへのアクセスだ(゚Д゚)ゴルァ');
  Result := nil;
 end;
end;{ TNichThread }function TNichThread.GetBoard: TNichBoard;
begin
 if Assigned(FOwnerBoard) then
  Result := FOwnerBoard
 else
 begin
  Assert(false, 'ボードが登録されてないぞ(゚Д゚)ゴルァ');
  Result := nil;
 end;
end;function TNichThread.GetResponses(Index: Integer): TNichResponse;
begin
 if ( 0<=Index) and ( Index<=FResponses.Count-1 ) then
 begin
  Result := TNichResponse(FResponses.Items[Index]);
 end else
 begin
  Assert(false, '不正なレスへのアクセスだ(゚Д゚)ゴルァ');
  Result := nil;
 end;
end;end.

5 :書記さん :2001/02/18(日) 17:37
いちお、同じ内容のコードをモナプロ〜ラ〜のページにもアップしておきました。
http://www.geocities.co.jp/SiliconValley-Oakland/9028/document/monaplorer/index.html

6 :名無しさん :2001/02/18(日) 18:11
ありがとう書記さん

7 :名無しさん :2001/02/19(月) 08:31
Monaplorer 2/16版、
Delphi4環境でも開けました。
(TSplitterの AutoSnapプロパティが無いっていうエラーは無視)

8 :turbotypeD@monazilla.org :2001/02/19(月) 10:19
>>7
試してくれてサンクス。
D4はAutoSnap無いのか.AutoSnap:=falseなので(Trueだとバグあるのよ)
無視してくれたら正解。
2/16版はわすれたけど今はdfmファイルはD4形式にしてます。んー。オブジェクト破棄が面倒なのでTObjectListを使いたいが
D5だけだから自分で実装しておくか。
…だれか、D4版TObjectList作ってくれない?
VCLソースからパクルかナー(・w・

9 :名無しさん :2001/02/19(月) 11:32
Assertの使い方がちょっと変じゃない?
 if Assigned(Board) then
  FBoards.Add(Board)
 else
  Assert(false, 'ボードが登録されてないぞ(゚Д゚)ゴルァ');

 Assert(Assigned(Board), 'ボードが登録されてないぞ(゚Д゚)ゴルァ');
 FBoards.Add(Board);

 if Assigned(Board) then
  FBoards.Add(Board)
 else
  raise ENichError.Create('ボードが登録されてないぞ(゚Д゚)ゴルァ');
にすべきでは。


10 :turbotypeD@monazilla.org :2001/02/19(月) 16:35
おぉ、そうなんですか?
おれ、イマイチ、Assertとraise Exx.Createの
違いを区別しきれてないです。
Assertは強制停止みたいなものだよね。とりあえず、よくわからないのでraiseに変更しておきまフ

11 :turbotypeD@monazilla.org :2001/02/19(月) 16:37
Assertは変える前に、アプしました。
Indyのインストはまだ必要ありません。
D4/D5デフォルト状態で動作するはず。
データをそろえていないので
三国志板しか見れないけど、スレ一覧表示までいきました。
次はレス表示してみます。

12 :turbotypeD@monazilla.org :2001/02/19(月) 16:39
monazilla_studioで確認してみてね。

13 :書記さん :2001/02/19(月) 18:21
2/19版確認!ページ更新完了!

14 :名無しさん :2001/02/19(月) 21:18
Assertは内部バグのチェックコードで100%成功しなければならない。
また、リリース時にはコンパイルオプションによってチェックコードを無効にできる。
Assertにfailした場合、リカバリは困難。
(C/C++の場合はメッセージ吐いて強制終了する。例外を投げるDelphiは例外的:-)例外をraiseすることはメソッドの仕様であり、
一般に外的要因(設定ファイルが無い、引数にnilが渡された、メモリが足りない)
によって発生し、そのメソッドの呼び出し側がexceptしリカバリする(かまたは無視して終了する)。なので、(引数としての)インデックスの範囲チェックは例外、
privateフィールドの初期化し忘れはAssertにするのが筋かも。

15 :turbotypeD@monazilla.org(w :2001/02/20(火) 16:24
>>14名無しさんありがとう。オレの経験不足だね。
今回の場合はなるべくraiseで処理してみます。多分、次アプするのはWinInetで実装して低速でも
オンラインで全スレを見れるようにしてみます。
レスは見れないというショボいもんになりそうだが(w結局Indy使わないナー。書記さん適当に直しておいてください。

16 :書記さん :2001/02/20(火) 18:54
あらら、残念です。>Indy
では近日中に訂正しておきます。

17 :turbotypeD@monazilla.org(w :2001/02/20(火) 19:43
WinInet使ってネット接続でボード一覧を取得する
ソースアプしました。しかし、、、、、メモリリークしている気が
そこはかとなくします。うわぁ、最悪モナー(T∀T)
リスト構造のデータは嫌モナ

18 :turbo typeD@モナぢら :2001/02/22(木) 01:22
メモりリークは大丈夫だったようだ。2chのスレを引用しておく。
非常に便利にメモリリークを検知できるでしょう。> 350 名前:デフォルトの名無しさん投稿日:2001/02/20(火) 20:18
> >でも、オレがタコなのでメモリリークしているみたいだ。
> >メモリクバグを発見する方法知っている人、教えて。
> アプリ終了時にメモリリークの個数を報告するユニット。
> >>348
> オレは
> http://www.yks.ne.jp/~hori/MemCheck.html
> これを使ってるよん。かなり便利。

19 :名無しさん :2001/02/24(土) 15:25
アイコン描いてみたよ。
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□■□□□□□□□□□□□□□□□□■□□□□□□□□
□□□□□□■□□□□□□□□□□□□□□□□■□□□□□□□□
□□□□□■□■□□□□□□□□□□□□□□■□■□□□□□□□
□□□□□■□■□□□□□□□□□□□□□□■□■□□□□□□□
□□□□■□□□■□□□□□□□□□□□□■□□□■□□□□□□
□□□□■□□□■□□□□□□□□□□□□■□□□■□□□□□□
□□□■□□□□□■□□□□□□□□□□■□□□□□■□□□□□
□□□□□□□□□□□■■■■■■■■□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□■□□□□□□■■□□■□□□□□■□□■■□□■□□□□
□□■□□□□□□■□□□□□■□□□■□□□□□■□□■□□□
□■□□□□□□□□□□□□□■□□□■□□□□□□□□□■□□
□■□□□□□□□□□□□□□□■■■■□□□□□□□□□■□□
□■□□□□□□□□□□□□□□■□□■□□□□□□□□□■□□
□■□□□□□□□□□□□□□□■■■□□□□□□□□□□■□□
□□■□□□□□□□□□□□□□□■□□□□□□□□□□■□□□
□□□■□□□□□□□□□□□□□□□□□□□□□□□■□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□■□□□■□■□□□■■■■□□□□□■■■■□□□■□□
□□■□□■□□■□■□■□□□□■□□□■□□□□■□□□■□
□■□□□□■□□□□□■□□□□■□□□■□□□□■□□□□■
□■□□□□□■□□□□■□□□□■□□□■□□□□■□□□□■
□■□□□□□■■□□□■□□□□■□□□■□□□□■□□□□■
□■□□□□□□■□□□■□□□□■□□□■□□□□■□□□□■
□□■□□□□□□□□□■□□□□■□□□■□□□□■□□□■□
□□□■□□□□□□□□□□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

20 :turbo_type_D@モナブロラ :2001/02/24(土) 15:29
オレです。

21 :turbotypeD@monazilla.org(w :2001/03/01(木) 18:20
http://www.geocities.co.jp/SiliconValley-Oakland/9028/src/monaplorer010301.lzh
今日もアプしたよ。不完全っぽい(というか不完全)だけど
[戻る][進む]とタブページを閉じる
などを実装しました。

22 :turbotypeD@monazilla.org(w :2001/03/02(金) 12:58
φ(.. )メモメモ************************カンマ区切りサーバー(?)の仕様**********************
例:プログラム技術板 http://piza.2ch.net/tech/subject.txt
-------------------------------
981726544.dat,monazilla (434)
-------------------------------
・数字:現状9桁だが10桁に変わる可能性もある)
・'.dat'
・カンマ
・スレッド名
・任意個数のスペース:スペースの数が何を示すのかは不明
           スペース無しの場合もある
・'('数字')':この数字はageレスの数を示している
       総レス数 = ageレス + sageレス
-------------------------------
例:スレの内容 http://piza.2ch.net/tech/dat/983502650.dat
-------------------------------
初心者,,2001/03/02(金) 12:10,ダイアログ..す。,_____Visual C++での質問
デフォルトの名無しさん,sage ,2001/03/02(金) 12:27,この、スレたて荒らしめ!!,
-------------------------------
初回の投稿
・名前
・カンマ
・メールアドレス:指定無しならヌル文字sageなら'sage'と半角スペース
 メールアドレスにスペースを含むものもある
・カンマ
・2001/03/02(金) 12:10:2ch形式の日付文字列
・カンマ
・本文:本文中にカンマがあるばあいは','という文字で代用されている
・カンマ
・スレタイトル
二回目以降の投稿
・スレタイトルが無い
・1行の最後はカンマで終わる************************タグ区切りサーバー(?)の仕様**********************
都合により半角タグを全角タグで示す例:削除以来板 http://teri.2ch.net/saku/subject.txt
-------------------------------
982418943.dat<>麻雀板スレッド削除依頼    <8>
-------------------------------
・数字:現状9桁だが10桁に変わる可能性もある)
・'.dat'
・タグ<>
・スペース:1スペース分あるものとないものがある
・スレッド名:スレッド名にスペースを含むものもあると思う
・任意個数のスペース:スペース無しの場合もある
・'<'数字'>':この数字はageレスの数を示している
 総レス数 = ageレス + sageレス
-------------------------------
例:スレの内容 http://teri.2ch.net/saku/dat/982081535.dat
-------------------------------
マジレスさん <><> 2001/02/14(水) 01:25 ID:vzfaj84k <> これは昨年末の... <br>  <> 人生相談板削除依頼
必殺削除組 ★ <>sage<> 2001/02/15(木) 21:57 ID:??? <> 依頼の仕方を勉強しましょう <> 
-------------------------------
初回の投稿
・名前
・半角スペース+タグ<>
・メールアドレス:無しならヌル文字sageなら'sage'のみ
・タグ<>+半角スペース
・2001/03/02(金) 12:10:2ch形式の日付文字列
・半角スペース
・ID:xxxx:なんのIDだかは不明
・スペース+タグ<>+スペース
・本文:本文中にタグがあるばあいは不明
・スペース+タグ<>+スペース
・スレタイトル
二回目以降の投稿
・スレタイトルが無い
・1行の最後はスペース+タグ<>+スペースで終わる
他の区切り方式のサーバーは
現在調査していません。

23 :turbotypeD@monazilla.org(w :2001/03/02(金) 13:07
タグ区切りサーバー追加
・IDが無い(=ヌル)場合もある。

24 :turbotypeD@monazilla.org(w :2001/03/08(木) 17:55
今日もアプしたよ。
だけどダウソ部分が旧式のまま。
だから暫定的コードみたいなもん。主な変更点
・なんかUIをちょっとましにした。
 どうにか普通のアプリっぽいはず。
・履歴機能をよろしくした
 バグ排除とスレ名表示が出来た
・メモリリークする。仕様です。(ウソ)
・差分ダウソが実現している(はずだが差分じゃないのと同じくらい遅い)
 しかもそのおかげでバグ内包!とりあえずダウソ部分をDownLoad2ch.pasという
のにまとめてコーディング中ですが
全く使用していない。(だって全く機能しないもの)とても難しくて詰まってます。おまけ
□□■■□□□□□□□■■□□□
□□■■□□□□□□□■■□□□
□■□□■□□□□□■□□■□□
□■□□■□■■■■■□□■□□
□■□□□□□□□□□□□□■□
■□□■■□□□□□□■■□□■
■□■□□□■□□□■□□■□■
■□□□□□□■■■□□□□□■
■□□□□□□■□■□□□□□■
□■□□□□□□■□□□□□■□
□□□□□□□□□□□□□□□□
□■□□□□□□□□□□□□■□
■□□□□■■□□□■■□□□■
■□□□■□□■□■□□■□□■
■□□□■□□■□■□□■□□■
□■□□■□□■□■□□■□■□

25 :turbotypeD@monazilla.org(w :2001/03/12(月) 10:43
ダウンロードだけをニナウ
WinInetを使った汎用ダウソユニットをアプします。
http://green.nttec.com/tech/read.cgi?KEY=984361155
ダウンロードとキャッシュファイルと組にして使ってください。基本部分なのでスレッド対応ではないです。
これを継承したり所有したりしてスレッド化させます。

26 :Dax :2001/03/12(月) 11:03
またパクらさせていただきます。

27 :turbotypeD@monazilla.org(w :2001/03/12(月) 12:39
とのことなので、あらためて見るとusesが出来ないソスもあるので
なるべく単体動作するように修正しました。
http://green.nttec.com/tech/read.cgi?KEY=984368149Daxさんにはかなり便利につかえるんじゃないかな?
TDataModule上にHTTPCliとIdHttpを配置して
type TDownLoadCompo = (dlcWinInet, dlcHTTPCli, dlcIdHttp);
なんて定義してプロパにしてしまえばいいのかな。
ホットゾヌ風にもっとかっこよく実装してくれるのかな。TDataModuleってオーバーヘッド大きいのだろうか?
単なるTComponentの軽い入れ物だけならいいんだけど。

28 :turbotypeD@monazilla.org(w :2001/03/12(月) 20:19
http://green.nttec.com/tech/read.cgi?KEY=984395817
負け犬です。(xДx)ゴルァ

29 :turbotypeD@monazilla.org(w :2001/03/13(火) 19:28
どこにカキコするのか迷うな...FormDestoroyでスレッドを破棄すると
タイミングが遅いみたいですね。
シンクロナイズが誤作動してアクセス違反する。FormCloseQueryでやると何の問題も無い...くはー、何時間も手間取った。たぶん、オレのスレッドの使い方がまずいのだが
とにかくスレッドというのは難しいよ。デバッグの方法にしても・スレッドを起動しないで終了
・スレッドを起動して停止している状態で終了
・スレッド動作中に終了
・スレッド動作中にサスペンドしているときに終了
このときのメモリリークについても全部考えなきゃいけない
っていうんだから、極悪だ。
デバッグもアクセス違反までやってIDE道連れに臣でくれると
時間を食ってしかたねえわ。Allダウソ=1スレッドしか使わないでダウソするような方式だからだめなんだろうなあ。
明日には現状のダウンロードスレッドが出来そうだけど
かなりトリッキーなコードになってしまた。1ダウソ=1スレッド方式(自動破棄)方式にした方が
ホント、いいかもしんない。

30 :turbotypeD@monazilla.org(w :2001/03/13(火) 19:31
マルチスレッドの勉強に役にタタのは
BorlandのTipsページ
http://www.borland.co.jp/tips/delphi/dh004/index.html
の、マルチスレッドの使用例(2) dニ( ∀ )トテモ"ィィ"

31 :Dax :2001/03/13(火) 22:41
>FormDestoroyでスレッドを破棄すると
>タイミングが遅いみたいですね。
いま、ホットゾヌでスレッド動作中に閉じてみると見事に落ちました(涙
いちお改善してみたけど同じくトリッキー、、

32 :名無しさん :2001/03/14(水) 08:51
WaitFor使ってる?

33 :turbotypeD@monazilla.org(w :2001/03/14(水) 10:16
FormDestoryでWaitForすると
別スレッドがシンクロナイズしようとして
メインスレッドを待つのだけど、既にメインスレッドは破棄されて
別スレッドが無限ループという憂き目もあるみたいだよ。>>32

34 :名無しさん :2001/03/14(水) 10:41
if not Terminated then
 Synchronize
とすればいい。Terminated時にもSynchronizeの呼び出しが
必須だとしたら構造的欠陥という気がする。

35 :turbotypeD@monazilla.org(w :2001/03/14(水) 14:37
>>34
一応それもしています。それで大分問題は解決されたんだけど。
何がずばり正解なのか、非常にわかりにくくって、
力技になってしまいますの。

36 :名無しさん :2001/03/17(土) 10:49
010308を W2K+D5で動かしているんですが
板一覧やスレ一覧を取得する際に「不正なファイル名です。」で落ちます。
(HtmlAccess.pas GetHtmlPageSourceToFile)
存在しないファイルを Rewriteしようとしてるからかな?

37 :turbotypeD :2001/03/17(土) 15:28
すいません、最新版ではHTMLAccess.pasは滅びます
もう1っ週間ほど、ダウンロード部分にこだわって改良してたので
次の版をまってくださいな。次はいけるはずだ!きっときっと。

38 :名無しさん :2001/03/17(土) 16:49
了解です。ところでMSHTML.pasってのは何ですかね??

39 :turbotypeD :2001/03/18(日) 21:22
知りません。

40 :Dax :2001/03/18(日) 22:16
Debug.pasで usesしていますね>MSHTML.pas
Delphi5なら Source\Internet\MSHTML.pasですが
D4には無いのかも。(自宅 D5 会社 D4 なので会社で確認してみます)

41 :turbotypeD :2001/03/18(日) 22:40
自分で、usesしておいて、なんつーコメントだ!<<オレ(藁藁藁、
知らん間にウセsされてたんだな、これが。めんゴ調べて必要なかったら
はずしておくよ。TWebBrowserなのかな?恥ずかしいから今からソッコウしらべるわ。

42 :turbotypeD :2001/03/18(日) 22:55
3分でわかった。
IHTMLDocument2の定義がかかれています。MSHTML.pas
TWebBrowserのスクロールバー位置を知るために必要でした。DelphiTechスレ379みてください。

43 :turbotypeD :2001/03/19(月) 00:06
MSHTML.pasはD5Pro/Entしかついていないのかな。モナプロラは生産性のために
TStackやTObjectListTObjectQueueを多用しはじめたので
完全にD5依存してしまいました。許して。

44 :turbotypeD :2001/03/19(月) 07:11
なんとか動いたのでアプしたけど。。。
全く安定してないです。動かすなら覚悟しなあよ(゚Д゚)ゴルァ
http://www.geocities.co.jp/SiliconValley-Oakland/9028/src/monaplorer010319.lzhスレッドの難しさに翻弄されてるって感じだな。
アプが10日ぶりにしては成果がないなあ。あと、以前のmonaplorerソースは削除しちゃっていいかな?

45 :turbotypeD@monazilla.org(w :2001/03/19(月) 10:35
書記さん、本当に更新、速すぎるや。おかしいよぜったい。
オレの後に一緒にモニターみているんじゃないのか?[岩蔭|]_・)ソォーッ ( ・∀・)mm_□カタカタ
>今回は変更点が書かれて無かったので書記さんの思いこみで書いてます。
>変更点はダウンロードエンジンを一新してます!おっしゃる通りでございます。
変更点はいっぱいありそうですがとりあえず
・ダウソエンジンの改良。将来の仕様変更にも存分に耐えられそうに
ヨロシク出来上がりました。
・Aviファイル(なぜか添付までしちゃった)を切り替え機能付
・起動時から板タタタ一覧の表示とExpandedの保持・復帰
・スレ/レス/板一覧の各ペインの表示非表示をいい感じに実装
んなかんジっす。まだ、若干不安定なのと、ダウソがエラった時の処理が甘いので直しますわ。

46 :turbotypeD@monazilla.org(w :2001/03/19(月) 15:11
わからんなあ。
例外難しい。全例外を把握しておきたいけど
全然うまくいかないよ。はーあ。

47 :turbotypeD@monazilla.org(w :2001/03/19(月) 15:30
例外例外例外例外.....例外をいかに発生させていかに抑えるべきなのかが
全然わからん、鬱だ....気分転換に違う事やろ。(゚Д゚)ゴルァ

48 :turbotypeD@monazilla.org(w :2001/03/19(月) 17:50
で、疲れを癒すためにオープンギコをみていたら
ゲージがついていたので、ちょっぴり悔しくなったので
プロラにも実装してみました。http://www.geocities.co.jp/SiliconValley-Oakland/9028/src/monaplorer010320.lzh
日付は明日だけど、いいよね。

49 :turbotypeD@monazilla.org(w :2001/03/19(月) 18:00
ちょっちうれしくなったので、画像もアプしてみました。
http://www.geocities.co.jp/SiliconValley-Oakland/9028/src/monaplorer0320.gif

50 :ふみもたたけし :2001/03/21(水) 01:39
別スレに出てたけど、スレ・レスのインスタンスの管理は思ったよりヤヤコシイね。
スレ・レスインスタンスは常にひとつだけだと考えてたけどそうも行かないみたい。アプリから見えないように内部で生成・廃棄するやり方はやめて
やっぱりアプリにやらせるようにするつもり。
でもリファレンスカウントは使わないと思う。
TWinControl.Tagにインスタンスを持たせるようになりそう。ところでWinInetとIndyって性能に違いはあるのかな?
TWebBrowserとその他のブラウザコントロールは?
特に問題なければWinInet+TWebBrowser使いたいんだけど。

51 :ふみもたたけし :2001/03/21(水) 01:40
激しくスレ違った。ごめん。

52 :turbotypeD@monazilla.org(w :2001/03/21(水) 09:50
壁|∀・)ヨンダ?>激しくスレ違った。ごめん。
きにぜず♪ドウゾー

53 :turbotypeD@monazilla.org(w :2001/03/21(水) 10:03
とりあえず、答えてみよう、ほととぎす。> 別スレに出てたけど、スレ・レスのインスタンスの管理は思ったよりヤヤコシイね。
> スレ・レスインスタンスは常にひとつだけだと考えてたけどそうも行かないみたい。うん、すっげ、ダルい。
データのスレ・レスなどのインスタンスはオレはこうしている。
実装名は違っていたかもしれないが
Nichannel<<インスタンス一つ。TNichBoardとTNichCategoryをリストとして複数所有
NichCategory<<Nichannelに所有されている個数だけインスタンスが存在
  Nichannelが所有しているNichBoardへのポインタも持っている
  (カテゴリに属しているBoardに対して)
NichBoard<<Nichannelに所有されているものと現在表示されている分(1コ)のインスタンスが存在
  Nichannelのボード一覧が再生成されたときに表示されているボードが消えたら困るから
  NichThreadを所有
NichThread
  NichBoardに所有されて一覧表示されているインスタンスと
  ブラウザに表示されている分のインスタンスと
  ブラウザの履歴バッファにたまっている分のインスタンス
  が存在する。それぞれ表示されているものが再読込みされた時のことに対処しなければいけないから
  必要なときにはポインタ渡しではなくてAssignでコピーするようにしている。

54 :turbotypeD@monazilla.org(w :2001/03/21(水) 10:05

> アプリから見えないように内部で生成・廃棄するやり方はやめて
> やっぱりアプリにやらせるようにするつもり。
> でもリファレンスカウントは使わないと思う。
> TWinControl.Tagにインスタンスを持たせるようになりそう。オレの場合リファレンスカウントはとりあえず後回し、
メモリ効率が悪くても現状が動いてから改造ポイントにしたい。> ところでWinInetとIndyって性能に違いはあるのかな?
> TWebBrowserとその他のブラウザコントロールは?
> 特に問題なければWinInet+TWebBrowser使いたいんだけど。問題ないとおもうけど
TWebBrowserよりはTUIWebBrowserの方が扱いやすいでしょう。
他のブラウザは知らないけど
Delphi3/4付属の例の古いHTMLコンポは使わない方がいいでしょう。WinInetはなぜかしらないけど今のオレの所の現状では
差分読み込みが全く早くない。役に立たなくてどうしようかと思っている。
Indyの方が何かと便利ではあるとは思う。
いずれはIndyにしたいと思ってる。(kylixにも移植しやすくなるしね。)
一応monaplorerのWinInetを使ったDownLoad.pasのインターフェースは崩さずに
Indy実装すれば差し替えは容易だろうと踏んでる&対応可能なように作ってる

55 :Dax :2001/03/21(水) 10:58
>差分読み込みが全く早くない。んーこちら、ケーブル環境なので早くてわからんですが
遅くは無いような気がします。
コードも間違ってないみたいだし。

56 :turbotypeD@monazilla.org(w :2001/03/21(水) 11:28
でも、かちゅの方が速い気がしません?
気のせいだったらいいんですが。

57 :turbotypeD@monazilla.org(w :2001/03/21(水) 11:50
アプしました。
小改造で、WebBrowserの複数ページ動作について
正常動作するようにしています。
http://www.geocities.co.jp/SiliconValley-Oakland/9028/src/monaplorer010321.lzh

58 :名無しさん :2001/03/22(木) 11:11
exeでかすぎ!
なんでこんなにでかいの?

59 :turbotypeD@monazilla.org(w :2001/03/22(木) 11:49
ほんとだ!
なんで?(藁、やばいな。いくらなんでも4.5MBはないよな。

60 :turbotypeD@monazilla.org(w :2001/03/22(木) 13:49
どうしよう、なぜこんなにでかいファイルになっているのかが
さっぱりわからない。誰か解決してくださいな。

61 :ななしくん :2001/03/22(木) 14:00
[プロジェクト]-[オプション]-[コンパイラ]の「スタックフレーム生成」とか
同じく[リンカ]の「TD32 デバッグ情報を含める」とかにチェックが入って
るんじゃないの?

62 :turbotypeD@monazilla.org(w :2001/03/22(木) 15:59
まー、ななしくんさんありがとう。
exeが600KBにまで落ちました(藁.....ってる場合か!
メモリリーク調べのMemoryChk.pasで設定したままだったのね。
どもども。exe版だけアプしておきます。

63 :ななしくん :2001/03/22(木) 17:03
お,当たってたのね。
デバッグ用とリリース用の Dprファイル作っておくと便利かも。
開発は,デバッグ用で行って,リリースするときは,リリース用を
って感じで。

64 :turbotypeD@monazilla.org(w :2001/03/22(木) 18:50
>>63
あらま力シコイ

65 :ふみもたたけし :2001/03/23(金) 01:22
俺はこんなのを使ってる。sw_unit.pas
// 共通のコンパイラ指令{$ALIGN ON}
{$BOOLEVAL OFF}
{$EXTENDEDSYNTAX ON}
{$HINTS ON}
{$IOCHECKS ON}
{$LONGSTRINGS ON}
{$MINENUMSIZE 1}
{$SAFEDIVIDE OFF}
{$REALCOMPATIBILITY OFF}
{$TYPEINFO OFF}
{$WARNINGS ON}
{$STACKFRAMES OFF}
{$WRITEABLECONST ON}{$ifdef Release}
{$ASSERTIONS OFF}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}{$DEBUGINFO OFF}
{$LOCALSYMBOLS OFF}
{$else}
{$ASSERTIONS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS ON}
{$RANGECHECKS ON}{$DEBUGINFO ON}
{$LOCALSYMBOLS ON}
{$endif}使い方
unit foo;
{$i sw_unit}
interface
...

66 :turbotypeD@monazilla.org(w :2001/03/27(火) 20:49
さて、大分前の今後の予定> 今後の予定
> TWebBrowser部分
>  スクロール機能をつける
>  タブを閉じる関数をつける
>
> データ構造
>  T2チャンスレッドのメンバーにスクロールバー位置を追加
>
> 全体
>  ちょっとくらい使い勝手を意識しろツコトデ
>  UIの改善
>   →PopupMenuで読み込むのをやめよう。
>   →現在読み込んでいる板とスレの表示
>  データのIniFile保存をすべてクリアしましたんで、次からの予定つことで。今後の予定
TWebBrowser部分
  閲覧スレッド履歴機能のデバッグ&完成度アップ
  >>番号のHint表示機能
  ttp://リンク機能の充実
  同スレの重複タブ禁止機能
  noDataタブをなるべく表示しない機能
  ActionUpdateをつかったタブ表示問題(noDataが表示されてしまう)の改善
  ブラウザタブのPopupmenuにブラウザで表示を追加スレ一覧部分
  ログ削除機能
  表示データの改善(データ構造と組み合わせて改善)書き込み部分の実装
  書き込み履歴機能の搭載
  実験すらしていない。お気に入りスレ機能の実装
  TNichSiteを追加するので決行オオゴト!
  同様にmonazilla掲示板もサポートする事にしてみよう(オオゴト)
検索機能の実装
  全然未定Formの位置保存
  気が向いたら実装する

67 :名無しさん :2001/09/06(木) 15:40
要望ですが、プロキシ設定に対応していただけませんでしょうか

34KB
新着レスの表示

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

0ch BBS 2004-10-30