• R/O
  • HTTP
  • SSH
  • HTTPS

gikonavi: Commit


Commit MetaInfo

Revision3dfd8f486fcf2e1bca201b2bb93636de35e116d5 (tree)
Time2008-09-14 10:47:53
Authorcvs2git <cvs2git>
Commitercvs2git

Log Message

This commit was manufactured by cvs2svn to create tag 'v1_58_0_759'.

Change Summary

Incremental Difference

--- a/BoardGroup.pas
+++ b/BoardGroup.pas
@@ -353,8 +353,7 @@ var
353353 BBSs : array of TBBS;
354354 BoardGroups : array of TBoardGroup;
355355 SpecialBBS : TBBS;
356- SpecialBoard: TSpecialBoard;
357-
356+
358357 implementation
359358
360359 uses
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -8397,9 +8397,6 @@ object GikoForm: TGikoForm
83978397 object ID1: TMenuItem
83988398 Action = GikoDM.SameIDResAnchorAction
83998399 end
8400- object N83: TMenuItem
8401- Action = GikoDM.DereferenceResAction
8402- end
84038400 end
84048401 object BrowserTabPopupMenu: TPopupMenu
84058402 Images = HotToobarImageList
--- a/Giko.pas
+++ b/Giko.pas
@@ -419,7 +419,6 @@ type
419419 ResPopupClearTimer: TTimer;
420420 TaskTrayPopupMenu: TPopupMenu;
421421 Exit1: TMenuItem;
422- N83: TMenuItem;
423422 procedure FormCreate(Sender: TObject);
424423 procedure FormDestroy(Sender: TObject);
425424 procedure BrowserStatusTextChange(Sender: TObject;
@@ -692,9 +691,6 @@ type
692691 function isValidFile(FileName: String) : boolean;
693692 //! ListViewのD&D受け取り
694693 procedure AcceptDropFiles(var Msg: TMsg);
695- //! スレッド一覧更新処理
696- procedure UpdateListView();
697-
698694 protected
699695 procedure CreateParams(var Params: TCreateParams); override;
700696 procedure WndProc(var Message: TMessage); override;
@@ -2584,7 +2580,20 @@ begin
25842580 end;
25852581 TreeView.Refresh;
25862582 //ListViewでこのスレが含まれる板を表示しているときの更新処理
2587- UpdateListView();
2583+ if (ActiveList <> nil) and (ActiveList is TBoard) then begin
2584+ TBoard(ActiveList).LogThreadCount := TBoard(ActiveList).GetLogThreadCount;
2585+ TBoard(ActiveList).NewThreadCount := TBoard(ActiveList).GetNewThreadCount;
2586+ TBoard(ActiveList).UserThreadCount:= TBoard(ActiveList).GetUserThreadCount;
2587+ //ListViewのアイテムの個数も更新
2588+ case GikoForm.ViewType of
2589+ gvtAll: ListView.Items.Count := TBoard(ActiveList).Count;
2590+ gvtLog: ListView.Items.Count := TBoard(ActiveList).LogThreadCount;
2591+ gvtNew: ListView.Items.Count := TBoard(ActiveList).NewThreadCount;
2592+ gvtArch: ListView.Items.Count := TBoard(ActiveList).ArchiveThreadCount;
2593+ gvtLive: ListView.Items.Count := TBoard(ActiveList).LiveThreadCount;
2594+ gvtUser: ListView.Items.Count := TBoard(ActiveList).UserThreadCount;
2595+ end;
2596+ end;
25882597 RefreshListView(Item.ThreadItem);
25892598 end;
25902599
@@ -6784,6 +6793,8 @@ var
67846793 FOleInPlaceActiveObject: IOleInPlaceActiveObject;
67856794 p : TPoint;
67866795 AID: string;
6796+ stlist : TStringList;
6797+ i : Integer;
67876798 begin
67886799 result := true;
67896800 if not Assigned(FActiveContent) then
@@ -6808,7 +6819,29 @@ begin
68086819 Exit;
68096820
68106821 if (e.className = 'date') or (e.id = 'date') then begin
6811- AID := GikoSys.ExtructResID(e.innerText);
6822+ AID := e.innerText;
6823+ if AnsiPos('id', AnsiLowerCase(AID)) > 0 then begin
6824+ AID := Copy(AID, AnsiPos('id', AnsiLowerCase(AID)) - 1, 11);
6825+ if AnsiPos(' be:', AnsiLowerCase(AID)) > 0 then begin
6826+ AID := Copy(AID, 1, AnsiPos(' BE:', AnsiLowerCase(AID)) - 1)
6827+ end;
6828+ end else begin
6829+ stlist := TStringList.Create;
6830+ try
6831+ stList.DelimitedText := AID;
6832+ AID := '';
6833+ for i := 0 to stList.Count - 1 do begin
6834+ if Length(WideString(stList[i])) = 8 then begin
6835+ if GikoSys.NotDateorTimeString(stList[i]) then begin
6836+ AID := stList[i];
6837+ break;
6838+ end;
6839+ end;
6840+ end;
6841+ finally
6842+ stList.Free;
6843+ end;
6844+ end;
68126845 ShowSameIDAncher(AID);
68136846 end;
68146847 except
@@ -6837,7 +6870,7 @@ begin
68376870 end
68386871 end;
68396872 FActiveContent.IDAnchorPopup(
6840- GikoSys.CreateResAnchor(numbers, FActiveContent.Thread, limited));
6873+ GikoSys.CreateSameIDResAnchor(numbers, FActiveContent.Thread, limited));
68416874 finally
68426875 numbers.Free;
68436876 end;
@@ -7841,6 +7874,7 @@ var
78417874 Board: TBoard;
78427875 LogFolder: String;
78437876 datList: TStringList;
7877+ p: TPoint;
78447878 begin
78457879 // 表示しているの板のとき以外は拒否
78467880 if GetActiveList is TBoard then begin
@@ -7877,12 +7911,10 @@ begin
78777911 if (datList.Count > 0) then begin
78787912 GikoSys.AddOutofIndexDat(Board, datList, False);
78797913 ShowMessage(IntToStr(datList.Count) + '個のdatファイルがコピーされました。' );
7880- if GikoForm.TreeView.Visible then begin
7914+ if GikoForm.TreeView.Visible then
78817915 GikoForm.TreeView.Refresh;
7882- end;
7883- if GikoForm.ListView.Visible then begin
7884- UpdateListView();
7885- end;
7916+ if GikoForm.ListView.Visible then
7917+ GikoForm.ListView.Refresh;
78867918 end else begin
78877919 ShowMessage('一つもコピーされませんでした。' );
78887920 end;
@@ -7895,25 +7927,7 @@ begin
78957927 ShowMessage('板を表示してください。');
78967928 end;
78977929 end;
7898-procedure TGikoForm.UpdateListView();
7899-begin
7900- //ListViewでこのスレが含まれる板を表示しているときの更新処理
7901- if (ActiveList <> nil) and (ActiveList is TBoard) then begin
7902- TBoard(ActiveList).LogThreadCount := TBoard(ActiveList).GetLogThreadCount;
7903- TBoard(ActiveList).NewThreadCount := TBoard(ActiveList).GetNewThreadCount;
7904- TBoard(ActiveList).UserThreadCount:= TBoard(ActiveList).GetUserThreadCount;
7905- //ListViewのアイテムの個数も更新
7906- case GikoForm.ViewType of
7907- gvtAll: ListView.Items.Count := TBoard(ActiveList).Count;
7908- gvtLog: ListView.Items.Count := TBoard(ActiveList).LogThreadCount;
7909- gvtNew: ListView.Items.Count := TBoard(ActiveList).NewThreadCount;
7910- gvtArch: ListView.Items.Count := TBoard(ActiveList).ArchiveThreadCount;
7911- gvtLive: ListView.Items.Count := TBoard(ActiveList).LiveThreadCount;
7912- gvtUser: ListView.Items.Count := TBoard(ActiveList).UserThreadCount;
7913- end;
7914- end;
7915- ListView.Refresh;
7916-end;
7930+
79177931 //! ファイルチェック
79187932 function TGikoForm.isValidFile(FileName: String) : boolean;
79197933 var
@@ -7930,7 +7944,7 @@ begin
79307944 end else begin
79317945 // ログファイルの拡張子をはずしたものがスレ作成日時
79327946 try
7933- dt := GikoSys.GetCreateDateFromName(ExtractFileName(FileName));
7947+ dt := GikoSys.GetCreateDateFromName(FileName);
79347948 if ((UnixToDateTime(ZERO_DATE) + OffsetFromUTC) = dt) then begin
79357949 Result := False;
79367950 GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'のファイル名が不正です。', 'エラー', MB_ICONSTOP or MB_OK);
--- a/GikoDataModule.dfm
+++ b/GikoDataModule.dfm
@@ -315,7 +315,7 @@ object GikoDM: TGikoDM
315315 ImageIndex = 9
316316 ShortCut = 16433
317317 OnExecute = AllItemActionExecute
318- OnUpdate = DependActiveListTBoardWithSpeciapActionUpdate
318+ OnUpdate = DependActiveListTBoardActionUpdate
319319 end
320320 object LogItemAction: TAction
321321 Category = #26495
@@ -326,7 +326,7 @@ object GikoDM: TGikoDM
326326 ImageIndex = 10
327327 ShortCut = 16434
328328 OnExecute = LogItemActionExecute
329- OnUpdate = DependActiveListTBoardWithSpeciapActionUpdate
329+ OnUpdate = DependActiveListTBoardActionUpdate
330330 end
331331 object NewItemAction: TAction
332332 Category = #26495
@@ -337,7 +337,7 @@ object GikoDM: TGikoDM
337337 ImageIndex = 11
338338 ShortCut = 16435
339339 OnExecute = NewItemActionExecute
340- OnUpdate = DependActiveListTBoardWithSpeciapActionUpdate
340+ OnUpdate = DependActiveListTBoardActionUpdate
341341 end
342342 object ArchiveItemAction: TAction
343343 Category = #26495
@@ -347,7 +347,7 @@ object GikoDM: TGikoDM
347347 Hint = 'DAT'#33853#12385#12473#12524#12483#12489#12398#12415#34920#31034#12377#12427
348348 ImageIndex = 55
349349 OnExecute = ArchiveItemActionExecute
350- OnUpdate = DependActiveListTBoardWithSpeciapActionUpdate
350+ OnUpdate = DependActiveListTBoardActionUpdate
351351 end
352352 object LiveItemAction: TAction
353353 Category = #26495
@@ -357,7 +357,7 @@ object GikoDM: TGikoDM
357357 Hint = #29983#23384#12375#12390#12356#12427#12473#12524#12483#12489#12398#12415#12434#34920#31034#12377#12427
358358 ImageIndex = 54
359359 OnExecute = LiveItemActionExecute
360- OnUpdate = DependActiveListTBoardWithSpeciapActionUpdate
360+ OnUpdate = DependActiveListTBoardActionUpdate
361361 end
362362 object ThreadRangeAction: TAction
363363 Category = #26495
@@ -367,7 +367,7 @@ object GikoDM: TGikoDM
367367 Hint = #12473#12524#12483#12489#12398#34920#31034#31684#22258#12434#35373#23450
368368 ImageIndex = 10
369369 OnExecute = ThreadRangeActionExecute
370- OnUpdate = DependActiveListTBoardWithSpeciapActionUpdate
370+ OnUpdate = DependActiveCntentActionUpdate
371371 end
372372 object SelectItemAction: TAction
373373 Category = #26495
@@ -378,7 +378,7 @@ object GikoDM: TGikoDM
378378 ImageIndex = 12
379379 ShortCut = 16436
380380 OnExecute = SelectItemActionExecute
381- OnUpdate = DependActiveListTBoardWithSpeciapActionUpdate
381+ OnUpdate = DependActiveListTBoardActionUpdate
382382 end
383383 object StopAction: TAction
384384 Category = #34920#31034
@@ -538,7 +538,7 @@ object GikoDM: TGikoDM
538538 Hint = #29694#22312#34920#31034#12375#12390#12356#12427#26495#12434#12502#12521#12454#12470#12391#34920#31034#12377#12427
539539 ImageIndex = 27
540540 OnExecute = BoardIEActionExecute
541- OnUpdate = DependActiveListTBoardActionUpdate
541+ OnUpdate = BoardIEActionUpdate
542542 end
543543 object SelectItemURLCopyAction: TAction
544544 Category = #26495
@@ -1369,14 +1369,6 @@ object GikoDM: TGikoDM
13691369 Hint = #12479#12502#19968#35239#34920#31034
13701370 OnExecute = ShowTabListActionExecute
13711371 end
1372- object DereferenceResAction: TAction
1373- Tag = 1
1374- Category = #12473#12524#12483#12489
1375- Caption = #12371#12398#12524#12473#12434#21442#29031#12375#12390#12356#12427#12524#12473#12450#12531#12459#12540#34920#31034
1376- Hint = #12371#12398#12524#12473#12434#21442#29031#12375#12390#12356#12427#12524#12473#12450#12531#12459#12540#34920#31034
1377- OnExecute = DereferenceResActionExecute
1378- OnUpdate = DependActiveCntentLogActionUpdate
1379- end
13801372 end
13811373 object ToobarImageList: TImageList
13821374 Left = 44
--- a/GikoDataModule.pas
+++ b/GikoDataModule.pas
@@ -241,7 +241,6 @@ type
241241 AddIDtoNGWord1Action: TAction;
242242 ExtractSameIDAction: TAction;
243243 ShowTabListAction: TAction;
244- DereferenceResAction: TAction;
245244 procedure EditNGActionExecute(Sender: TObject);
246245 procedure ReloadActionExecute(Sender: TObject);
247246 procedure GoFowardActionExecute(Sender: TObject);
@@ -453,7 +452,7 @@ type
453452 procedure AddIDtoNGWord1ActionExecute(Sender: TObject);
454453 procedure ExtractSameIDActionExecute(Sender: TObject);
455454 procedure ShowTabListActionExecute(Sender: TObject);
456- procedure DereferenceResActionExecute(Sender: TObject);
455+ procedure BoardIEActionUpdate(Sender: TObject);
457456 private
458457 { Private 宣言 }
459458 procedure ClearResFilter;
@@ -486,10 +485,8 @@ type
486485 procedure DependActiveCntentActionUpdate(Sender: TObject);
487486 //! TActionでGetActiveContentがnil以外かつログを持っていると有効になる
488487 procedure DependActiveCntentLogActionUpdate(Sender: TObject);
489- //! TActionでActiveListがTBoard(非特殊板)で有効になる
490- procedure DependActiveListTBoardActionUpdate(Sender: TObject);
491488 //! TActionでActiveListがTBoardで有効になる
492- procedure DependActiveListTBoardWithSpeciapActionUpdate(Sender: TObject);
489+ procedure DependActiveListTBoardActionUpdate(Sender: TObject);
493490 end;
494491
495492 var
@@ -530,17 +527,9 @@ begin
530527 and (GikoForm.GetActiveContent.IsLogFile);
531528 end;
532529 // *************************************************************************
533-//! TActionでActiveListがTBoard(非特殊板)で有効になる
534-// *************************************************************************
535-procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
536-begin
537- TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard) and
538- (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
539-end;
540-// *************************************************************************
541530 //! TActionでActiveListがTBoardで有効になる
542531 // *************************************************************************
543-procedure TGikoDM.DependActiveListTBoardWithSpeciapActionUpdate(Sender: TObject);
532+procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
544533 begin
545534 TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard);
546535 end;
@@ -2652,7 +2641,7 @@ end;
26522641 procedure TGikoDM.UpFolderActionUpdate(Sender: TObject);
26532642 begin
26542643 UpFolderAction.Enabled := not (GikoForm.GetActiveList is TBBS) and
2655- (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
2644+ (GikoForm.GetActiveList <> BoardGroup.SpecialBBS.Items[0].Items[0]);
26562645 end;
26572646 // *************************************************************************
26582647 //! 表示 表示リストのモード変更
@@ -3017,7 +3006,7 @@ begin
30173006 TAction(Sender).Enabled := True
30183007 else if GikoForm.GetActiveList is TBoard then begin
30193008 TAction(Sender).Enabled :=
3020- (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
3009+ (GikoForm.GetActiveList <> BoardGroup.SpecialBBS.Items[0].Items[0]);
30213010 end else
30223011 TAction(Sender).Enabled := False;
30233012 end;
@@ -3216,10 +3205,8 @@ end;
32163205 // *************************************************************************
32173206 procedure TGikoDM.LogFolderOpenActionUpdate(Sender: TObject);
32183207 begin
3219- if (((GikoForm.GetActiveList is TBoard) and
3220- (GikoForm.GetActiveList <> BoardGroup.SpecialBoard))
3221- or (GikoForm.GetActiveList is TCategory))
3222- and (GikoForm.ListView.SelCount > 0) then
3208+ if ((GikoForm.GetActiveList is TBoard) or (GikoForm.GetActiveList is TCategory))
3209+ and (GikoForm.ListView.SelCount > 0) then
32233210 TAction(Sender).Enabled := True
32243211 else
32253212 TAction(Sender).Enabled := False;
@@ -4401,7 +4388,7 @@ begin
44014388 // レスの番号を更新
44024389 if (Pos('menu:', url) > 0) then begin
44034390 index := StrToInt64Def(
4404- Copy(url, 6, Length(url)), index + 1
4391+ Copy(url, 5, Length(url)), index + 1
44054392 );
44064393 end else begin
44074394 // 開始レス番号以降かチェック
@@ -4484,83 +4471,23 @@ end;
44844471 //! タブのスレッド一覧を表示する
44854472 procedure TGikoDM.ShowTabListActionExecute(Sender: TObject);
44864473 var
4487- i : Integer;
4474+ i, j : Integer;
4475+ sBoard : TSpecialBoard;
44884476 begin
4489- GikoForm.ListView.Items.BeginUpdate;
4490- GikoForm.ListView.Items.Clear;
4491- BoardGroup.SpecialBoard.Clear;
4477+ sBoard := TSpecialBoard(SpecialBBS.Items[0].Items[0]);
4478+ sBoard.Clear;
44924479 for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
4493- BoardGroup.SpecialBoard.Add(
4480+ sBoard.Add(
44944481 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Thread);
44954482 end;
4496- GikoForm.ListView.Items.EndUpdate;
4497- GikoForm.SetActiveList(BoardGroup.SpecialBoard);
4483+ GikoForm.SelectTreeNode(sBoard , True );
44984484 end;
4499-//! 逆参照しているレスを追加する
4500-procedure TGikoDM.DereferenceResActionExecute(Sender: TObject);
4501-var
4502- i, currentNo, No : Integer;
4503- links : IHTMLElementCollection;
4504- threadItem : TThreadItem;
4505- item : IHTMLElement;
4506- url, url2 : string;
4507- resNo : TStringList;
4508- alreadyExist : Boolean;
4509- PathRec: TPathRec;
4485+//! TBoardかつ特殊用途板でない
4486+procedure TGikoDM.BoardIEActionUpdate(Sender: TObject);
45104487 begin
4511- No := GikoForm.KokoPopupMenu.Tag;
4512- if No = 0 then Exit;
4513-
4514- ThreadItem := GikoForm.GetActiveContent;
4515- // アクティブタブから全てのリンクを取得する
4516- links := GetActiveThreadLinks;
4517- if (ThreadItem <> nil) and (links <> nil) then begin
4518- resNo := TStringList.Create;
4519- try
4520- currentNo := 0;
4521- alreadyExist := False;
4522- // リンクを全て走査する
4523- for i := 0 to links.length - 1 do begin
4524- item := links.item(i, 0) as IHTMLElement;
4525- if (item <> nil) then begin
4526- url := item.getAttribute('href', 0);
4527- // レスの番号を更新
4528- if (Pos('menu:', url) > 0) then begin
4529- currentNo := StrToInt64Def(
4530- Copy(url, 6, Length(url)), currentNo + 1
4531- );
4532- alreadyExist := False;
4533- end else if (currentNo <> -1) and (not alreadyExist) then begin
4534- // IE7対応
4535- if Pos('about:..', url) = 1 then begin
4536- url := 'about:blank..' + Copy( url, Length('about:..')+1, Length(url) )
4537- end;
4538- // 自分へのリンクからレスポップ用の番号取得
4539- if Pos('about:blank..', url) = 1 then begin
4540- // No 番へのリンクがあれば参照あり
4541- url2 := THTMLCreate.GetRespopupURL(url, ThreadItem.URL);
4542- PathRec := Gikosys.Parse2chURL2(url2);
4543- if (not PathRec.FNoParam) then begin
4544- Gikosys.GetPopupResNumber(url2,PathRec.FSt,PathRec.FTo);
4545- end;
4546- // 対象レスもしくはそれを含むなら参照ありとする
4547- if (PathRec.FSt = No) or
4548- ((PathRec.FSt <= No) and (PathRec.FTo >= No)) then begin
4549- alreadyExist := True;
4550- resNo.Add(IntToStr(currentNo));
4551- end;
4552- end;
4553- end;
4554- end;
4555- end;
4556- // 無制限なので-1固定
4557- GikoForm.ActiveContent.IDAnchorPopup(
4558- GikoSys.CreateResAnchor(resNo, ThreadItem, -1));
4559- finally
4560- resNo.Clear;
4561- resNo.Free;
4562- end;
4563- end;
4488+ TAction(Sender).Enabled :=
4489+ (GikoForm.GetActiveList is TBoard) and
4490+ (GikoForm.GetActiveList <> BoardGroup.SpecialBBS.Items[0].Items[0]);
45644491 end;
45654492
45664493 end.
--- a/GikoSystem.pas
+++ b/GikoSystem.pas
@@ -213,11 +213,10 @@ type
213213 procedure GetPopupResNumber(URL : string; var stRes, endRes : Int64);
214214
215215 property Bayesian : TGikoBayesian read FBayesian write FBayesian;
216- function CreateResAnchor(var Numbers: TStringList; ThreadItem: TThreadItem; limited: Integer):string;
216+ function CreateSameIDResAnchor(var Numbers: TStringList; ThreadItem: TThreadItem; limited: Integer):string;
217217 procedure GetSameIDRes(const AID : string; ThreadItem: TThreadItem;var body: TStringList); overload;
218218 procedure GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); overload;
219219 function GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String;
220- function ExtructResID(ADateStr: String): String;
221220 //! 単語解析
222221 procedure SpamCountWord( const text : string; wordCount : TWordCount );
223222 //! 学習クリア
@@ -226,6 +225,8 @@ type
226225 procedure SpamLearn( wordCount : TWordCount; isSpam : Boolean );
227226 //! スパム度数
228227 function SpamParse( const text : string; wordCount : TWordCount ) : Extended;
228+ //引数が、日付でも時刻でもないことを調べる
229+ function NotDateorTimeString(const AStr : string): boolean;
229230
230231 //! 引数に送られてきた日付/ID部にBEの文字列があったら、プロファイルへのリンクを追加
231232 function AddBeProfileLink(AID : string; ANum: Integer): string;
@@ -2509,6 +2510,7 @@ var
25092510 boardFileList : TStringList;
25102511 i, l : Integer;
25112512 sCategory : TCategory;
2513+ sBoard : TBoard;
25122514 begin
25132515 // BBS の開放
25142516 try
@@ -2561,10 +2563,9 @@ begin
25612563 sCategory.No := 1;
25622564 sCategory.Title := '特殊用途(非表示)';
25632565 SpecialBBS.Add(sCategory);
2564- BoardGroup.SpecialBoard := TSpecialBoard.Create(nil, 'http://localhost/gikonavi/special/index.html');
2565- BoardGroup.SpecialBoard.Title := 'タブ一覧';
2566- BoardGroup.SpecialBoard.IsThreadDatRead := True;
2567- sCategory.Add(BoardGroup.SpecialBoard);
2566+ sBoard := TSpecialBoard.Create(nil, 'http://localhost/gikonavi/special/index.html');
2567+ sBoard.IsThreadDatRead := True;
2568+ sCategory.Add(sBoard);
25682569 end;
25692570
25702571 {!
@@ -2769,7 +2770,7 @@ end;
27692770 \param limited 列挙する数を制限するなら1以上
27702771 \return 列挙されたレスアンカー
27712772 }
2772-function TGikoSys.CreateResAnchor(
2773+function TGikoSys.CreateSameIDResAnchor(
27732774 var Numbers: TStringList; ThreadItem: TThreadItem;
27742775 limited: Integer):string;
27752776 var
@@ -2881,6 +2882,8 @@ function TGikoSys.GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String;
28812882 var
28822883 Res: TResRec;
28832884 boardPlugIn : TBoardPlugIn;
2885+ stList: TStringList;
2886+ i : Integer;
28842887 begin
28852888 Result := '';
28862889 if (ThreadItem <> nil) and (ThreadItem.IsLogFile)
@@ -2894,40 +2897,51 @@ begin
28942897 end else begin
28952898 THTMLCreate.DivideStrLine( ReadThreadFile(ThreadItem.GetThreadFileName, AIDNum), @Res);
28962899 end;
2897- Result := ExtructResID(Res.FDateTime);
2900+ Result := Res.FDateTime;
2901+ if AnsiPos('id', AnsiLowerCase(Result)) > 0 then begin
2902+ Result := Copy(Result, AnsiPos('id', AnsiLowerCase(Result)) - 1, 11);
2903+ if AnsiPos(' be:', AnsiLowerCase(Result)) > 0 then begin
2904+ Result := Copy(Result, 1, AnsiPos(' BE:', AnsiLowerCase(Result)) - 1)
2905+ end;
2906+ end else begin
2907+ stlist := TStringList.Create;
2908+ try
2909+ stList.DelimitedText := Result;
2910+ Result := '';
2911+ for i := 0 to stList.Count - 1 do
2912+ if Length(WideString(stList[i])) = 8 then begin
2913+ if NotDateorTimeString(stList[i]) then begin
2914+ Result := stList[i];
2915+ break;
2916+ end;
2917+ end;
2918+ finally
2919+ stList.Free;
2920+ end;
2921+ end;
28982922 end;
28992923 end;
2924+
29002925 {!
2901-\brief レスの時刻部からIDを抽出する
2902-\param ADateStr 時刻部の文字列
2903-\return ID(IDとみなせる部分がないときは空文字列)
2926+\brief 時刻を示す文字列では無いかどうか
2927+\param AStr 調べる文字列
2928+\return 時刻では無いなら True
2929+\todo 否定形(Not)より肯定系(Is)
29042930 }
2905-function TGikoSys.ExtructResID(ADateStr: String): String;
2906-var
2907- stlist : TStringList;
2931+function TGikoSys.NotDateorTimeString(const AStr : string): boolean;
29082932 begin
2909- Result := '';
2910- if AnsiPos('id', AnsiLowerCase(ADateStr)) > 0 then begin
2911- Result := Copy(ADateStr, AnsiPos('id', AnsiLowerCase(ADateStr)), Length(ADateStr));
2912- if AnsiPos(' ', Result) > 0 then begin
2913- Result := Copy(Result, 1, AnsiPos(' ', Result) - 1);
2914- end;
2915- Result := ' ' + Result;
2916- end else begin
2917- stlist := TStringList.Create;
2918- try
2919- stList.Delimiter := ' ';
2920- stList.DelimitedText := ADateStr;
2921- // 日付 時刻 ID 他 と固定で考える
2922- if (stList.Count >= 3) then begin
2923- if Length(stList[3 - 1]) >= 7 then begin
2924- Result := stList[3 - 1];
2925- end;
2926- end;
2927- finally
2928- stList.Free;
2929- end;
2930- end;
2933+ Result := false;
2934+ try
2935+ StrToDate(AStr);
2936+ except
2937+ try
2938+ StrToTime(AStr);
2939+ Result := false;
2940+ except
2941+ Result := true;
2942+ end;
2943+ end;
2944+
29312945 end;
29322946
29332947 {!
--- a/Option.pas
+++ b/Option.pas
@@ -1325,19 +1325,13 @@ begin
13251325 end;
13261326
13271327 procedure TOptionDialog.SoundPlayButtonClick(Sender: TObject);
1328-var
1329- s : String;
13301328 begin
1331- s := SoundFileEdit.Text;
1332- if (AnsiPos('.\', s) = 1) then begin
1333- s := GikoSys.Setting.GetAppDir + Copy(s, 2, Length(s));
1334- end;
1335- if not FileExists(s) then begin
1329+ if not FileExists(SoundFileEdit.Text) then begin
13361330 MsgBox(Handle, '存在しないファイルです', 'エラー', MB_ICONSTOP or MB_OK);
13371331 SoundFileEdit.Text := '';
13381332 Exit;
13391333 end;
1340- if not sndPlaySound(PChar(s), SND_ASYNC or SND_NOSTOP) then begin
1334+ if not sndPlaySound(PChar(SoundFileEdit.Text), SND_ASYNC or SND_NOSTOP) then begin
13411335 sndPlaySound(nil, SND_ASYNC);
13421336 end;
13431337 end;
--- a/ResPopupBrowser.pas
+++ b/ResPopupBrowser.pas
@@ -66,8 +66,6 @@ begin
6666 RawDocument := '';
6767 FEvent := nil;
6868 ShowWindow(Self.Handle, SW_HIDE);
69- GikoSys.ShowRefCount('ResPop Create', Self.ControlInterface);
70- GikoSys.ShowRefCount('ResPop.Document Create', Self.ControlInterface.Document);
7169 end;
7270
7371 destructor TResPopupBrowser.Destroy;
@@ -86,10 +84,6 @@ begin
8684 FEvent := nil;
8785 end;
8886 FThread := nil;
89-
90- GikoSys.ShowRefCount('ResPop Desctroy', Self.ControlInterface);
91- GikoSys.ShowRefCount('ResPop.Document Create', Self.ControlInterface.Document);
92-
9387 inherited Destroy;
9488 end;
9589
@@ -142,7 +136,7 @@ begin
142136 end;
143137 procedure TResPopupBrowser.NavigateBlank(Forced: Boolean);
144138 begin
145- if (not Assigned(Self.ControlInterface.Document)) or (Forced) then begin
139+ if (not Assigned(Self.Document)) or (Forced) then begin
146140 Self.Navigate('about:blank');
147141 end;
148142 while (Self.ReadyState <> READYSTATE_COMPLETE) and
@@ -198,7 +192,7 @@ begin
198192 ARect := CalcRect(Screen.MonitorFromPoint(p).WorkareaRect,
199193 not OnlyTitle);
200194
201- FEvent := THTMLDocumentEventSink.Create(Self, Self.OleObject.Document, HTMLDocumentEvents2);
195+ FEvent := THTMLDocumentEventSink.Create(Self, Self.Document, HTMLDocumentEvents2);
202196 FEvent.OnClick := ResPopupBrowserClick;
203197 FEvent.OnDoubleClick := ResPopupBrowserDbClick;
204198 Self.Visible := True;
@@ -278,7 +272,7 @@ var
278272 DIV_X, DIV_Y: Integer;
279273 begin
280274 GetCursorpos(p);
281- ele := ((Self.ControlInterface.Document as IHTMLDocument2).body as IHTMLElement2);
275+ ele := ((Self.Document as IHTMLDocument2).body as IHTMLElement2);
282276 if Scroll then begin
283277 h := GetWindowHeight + 10;
284278 w := ele.scrollWidth + 25
--- a/Setting.pas
+++ b/Setting.pas
@@ -1218,16 +1218,8 @@ begin
12181218 if Exists then begin
12191219 for i := 0 to GetSoundCount - 1 do begin
12201220 SoundFileName[i] := ini.ReadString('Sound', SoundName[i], '');
1221- // 相対参照対策
1222- s := SoundFileName[i];
1223- if (AnsiPos('.\', SoundFileName[i]) = 1) then begin
1224- s := GetAppDir
1225- + Copy(SoundFileName[i], 2, Length(SoundFileName[i]));
1226- end;
1227- // ファイルの存在チェック
1228- if not FileExists(SoundFileName[i]) then begin
1229- SoundFileName[i] := '';
1230- end;
1221+ if not FileExists(SoundFileName[i]) then
1222+ SoundFileName[i] := '';
12311223 end;
12321224 end else begin
12331225 s := GetAppDir + '\sound\';
@@ -1880,11 +1872,6 @@ begin
18801872 for i := 0 to GetSoundCount - 1 do begin
18811873 if SoundName[i] = Name then begin
18821874 Result := SoundFileName[i];
1883- // 相対パス対策
1884- if (AnsiPos('.\', Result) = 1) then begin
1885- Result := GetAppDir
1886- + Copy(Result, 2, Length(Result));
1887- end;
18881875 Exit;
18891876 end;
18901877 end;
Binary files a/gikoNavi.res and b/gikoNavi.res differ
--- a/readme/readme.txt
+++ b/readme/readme.txt
@@ -79,7 +79,7 @@ http://www.microsoft.com/windows95/downloads/contents/WUAdminTools/S_WUNetworkin
7979 ------------------------------
8080 開発ツール:Delphi6 Professional (UP2 + RTL UP2 + RTL UP3)
8181 Delphi6 Personal(UP2 + RTL UP2 + RTL UP3)
82-OS :WindowsXP Professional Edition(SP3) + IE7
82+OS :WindowsXP Professional Edition(SP2) + IE7
8383 WindowsXP Professional Edition(SP1) + IE6(SP1)
8484 Windows2000 Professional (SP4) + IE6(SP1)
8585
@@ -108,17 +108,13 @@ LICENSE
108108 ------------------------------
109109 履歴
110110 ------------------------------
111-2008/09/20
111+2008/0X/XX
112112 Version バタ58
113113 プレビューのURLから登録してある外部アプリを起動する機能を追加
114114 レス送信エディタで、連続して投稿できるようにする機能を追加
115115 開いているタブのスレッドの一覧をスレッド一覧に表示する機能を追加
116116 まちBBSのPATH_INFO形式のURLに対応
117- サウンドイベントのファイル指定を相対パスで指定できるように修正
118- 表示中のタブの一覧をスレッド一覧に表示するアクションを追加
119- したらばJBBSの板更新機能修正
120- datファイルをスレッド一覧にD&Dしたときに、ファイル名が不正ですエラーに常になる不具合の修正
121-
117+
122118 2008/03/22
123119 Version バタ57 リリース2
124120 名前欄の数字のレスポップアップができない不具合の修正
--- a/res/ExternalBoardPlugIn/ShitarabaJBBSAcquireBoard.pas
+++ b/res/ExternalBoardPlugIn/ShitarabaJBBSAcquireBoard.pas
@@ -201,9 +201,6 @@ var
201201 key : string;
202202 htmlList : TStringList;
203203 i : Integer;
204-
205- resultArea : Boolean;
206- pos : Integer;
207204 const
208205 //http://rentalbbs.livedoor.com/jbbs/search/?word=%C2%E7%B3%D8&category=auto
209206 BBS_HOST = 'http://rentalbbs.livedoor.com/';
@@ -215,7 +212,7 @@ const
215212 label
216213 NextBoard;
217214 begin
218- responseCode := 0;
215+
219216 category := CATEGORIES[ CategoryComboBox.ItemIndex ];
220217 boardname := BoardNameEdit.Text;
221218
@@ -240,30 +237,31 @@ begin
240237 htmlList := TStringList.Create();
241238 try
242239 htmlList.Text := CustomStringReplace(downResult, '<br>', #13#10);
243- resultArea := False;
244- for i := 0 to htmlList.Count - 1 do begin
240+ for i := htmlList.Count - 1 downto 0 do begin
245241 downResult := htmlList[i];
246242 try
247- //<div class="searchResults">
248- //<h2><span class="ranking">[1]</span><a href="http://jbbs.livedoor.jp/auto/5497/">MIT-MCC BBS</a><span class="point"><span class="all">4750pt</span><span class="yesterday">(Yesterday40 pt)</span></span></h2>
249- //<p>武蔵工業大学 モータサイクル部のBBSです。各自チェックするようにしましょう♪(&amp;gt;_&amp;lt;)b</p>
250- //</div>
251- if (not resultArea) and (AnsiPos('class="searchResults"', downResult) > 0) then begin
252- resultArea := True;
253- end else if (resultArea) then begin
254- pos := AnsiPos('<a href="', downResult);
255- if (pos > 0) then begin
256- resultArea := False;
257- downResult := Copy(downResult, pos + 9, Length(downResult));
258- key := Copy(downResult, 1, AnsiPos('"', downResult)-1);
259- downResult := Copy(downResult, AnsiPos('>', downResult) + 1, Length(downResult));
260-
261- board := Copy(downResult, 1, AnsiPos('</a>', downResult) -1);
262-
263- board := CustomStringReplace(board, '=', '=') + '=' + key;
264- LogEdit.SelText := board + #13#10;
265- FBoardList.Add( board );
266- end;
243+ //<a href="/auto/2348/">トヨタ自動車掲示板</a>
244+ //<small><strng><a href="http://jbbs.livedoor.jp/auto/4112/">明治大学 二部・短大</a></strong></small></td>
245+ if (AnsiPos('<small><strng><a href="', downResult) > 0)
246+ and (AnsiPos(category, downResult) > 0) then begin
247+ downResult := CustomStringReplace(downResult, '<small><strng>', '');
248+ board := Copy(downResult, AnsiPos('<a href="', downResult) + 9,
249+ Length(downResult));
250+ key := Copy(board, AnsiPos('">', board) + 2,
251+ Length(board));
252+ key := Copy(key, 1, AnsiPos('</a>', key) -1);
253+
254+ board := Copy(board, 1, AnsiPos('">', board) - 1);
255+ if (board = '../') then begin
256+ board := CustomStringReplace(board, '../', BOARD_HOST);
257+ end else if (AnsiPos('/', board) = 1) then begin
258+ board := BOARD_HOST + Copy(board, 2, Length(board));
259+ end;
260+
261+ board := key + '=' + board;
262+
263+ LogEdit.SelText := board + #13#10;
264+ FBoardList.Add( board );
267265 end;
268266 except
269267 end;
--- a/res/ExternalBoardPlugIn/ShitarabaJBBSPlugIn.dpr
+++ b/res/ExternalBoardPlugIn/ShitarabaJBBSPlugIn.dpr
@@ -2,7 +2,7 @@ library ShitarabaJBBSPlugIn;
22
33 {
44 ShitarabaJBBSPlugIn
5- $Id: ShitarabaJBBSPlugIn.dpr,v 1.45 2008/08/03 02:45:48 h677 Exp $
5+ $Id: ShitarabaJBBSPlugIn.dpr,v 1.44 2006/07/02 09:48:04 h677 Exp $
66 }
77
88 uses
@@ -83,7 +83,7 @@ const
8383 MAJOR_VERSION = 1;
8484 MINOR_VERSION = 1;
8585 RELEASE_VERSION = 'alpha';
86- REVISION_VERSION = 17;
86+ REVISION_VERSION = 15;
8787
8888 SYNCRONIZE_MENU_CAPTION = 'したらばJBBS板更新';
8989
Binary files a/res/ExternalBoardPlugIn/ShitarabaJBBSPlugIn.res and b/res/ExternalBoardPlugIn/ShitarabaJBBSPlugIn.res differ
--- a/res/default/Samba.default
+++ b/res/default/Samba.default
@@ -1,31 +1,40 @@
11 [Setting]
2-@endless=20
32 @liveplus=10
4-@news=156
3+@news=30
54 @newsplus=128
6-@operate=24
7-@sec2chd=20
8-academy6=45
9-babiru=30
10-bubble6=45
11-changi=45
12-ex24=45
13-food8=45
14-gimpo=45
15-ipv6=45
16-life9=45
17-live23=15
18-live24=15
19-love6=45
20-mamono=45
21-namidame=45
22-pc11=45
23-qb5=45
24-qiufen=30
25-schiphol=45
26-science6=45
27-set=30
28-society6=45
29-venus=30
30-yomi=30
31-yutori=10
5+@news4vip=10
6+@news4viptasu=10
7+academy6=20
8+anime3=20
9+bubble6=20
10+etc7=20
11+ex21=20
12+food8=20
13+game13=20
14+game14=20
15+hobby10=20
16+human7=20
17+life9=20
18+live23=10
19+live24=10
20+live27=10
21+love6=20
22+mamono=10
23+money6=20
24+music8=20
25+namidame=10
26+news24=20
27+pc11=20
28+qb5=20
29+qiufen=20
30+babiru=20
31+yomi=20
32+venus=20
33+set=20
34+school7=20
35+science6=20
36+society6=20
37+sports11=20
38+tmp7=20
39+tv11=20
40+yutori=20
\ No newline at end of file
Show on old repository browser