• R/O
  • HTTP
  • SSH
  • HTTPS

gikonavi: Commit


Commit MetaInfo

Revisionbfc7469a30e7965ecc58092dbd0bfbb1617cb432 (tree)
Time2004-10-03 03:37:54
Authorcvs2git <cvs2git>
Commitercvs2git

Log Message

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

Change Summary

Incremental Difference

--- a/ExternalBoardPlugInMain.pas
+++ b/ExternalBoardPlugInMain.pas
@@ -229,8 +229,7 @@ var
229229 // httpSocket : TIdHTTP;
230230 resStream : TMemoryStream;
231231 content : string;
232-const
233- LIVEDOOR_URL = 'http://jbbs.livedoor.jp/';
232+
234233 begin
235234
236235 {$IFDEF DEBUG}
@@ -271,8 +270,7 @@ begin
271270 Result := socket.ResponseCode;
272271 if (Length( content ) = 0) and (Result = 206) then
273272 Result := 304;
274- //したらばJBBSはヘッダにエラー情報が載るらしいので、ここでチェック
275- if ( AnsiPos(LIVEDOOR_URL, inURL) > 0 ) and (Result = 200) then begin
273+ if ( AnsiPos('http://jbbs.livedoor.com/', inURL) > 0 ) and (Result = 200) then begin
276274 if( AnsiPos('STORAGE IN', socket.Response.RawHeaders.Text) > 0 ) then begin
277275 Result := 302;
278276 end;
--- a/Giko.pas
+++ b/Giko.pas
@@ -1105,11 +1105,8 @@ type
11051105 { Public 宣言 }
11061106 // FDownload: TDownload;
11071107 FControlThread: TThreadControl;
1108- procedure MoveToURL(const inURL: string);
1109- function InsertBrowserTab(
1110- ThreadItem : TThreadItem;
1111- ActiveTab : Boolean = True
1112- ) : TBrowserRecord;
1108+ procedure MoveToURL(URL: string);
1109+ procedure InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
11131110 procedure ReloadBBS;
11141111 function GetHttpState: Boolean;
11151112 procedure SetEnabledCloseButton(Enabled: Boolean);
@@ -1194,18 +1191,18 @@ type
11941191 TBrowserRecord = class( TObject )
11951192 private
11961193 FBrowser : TWebBrowser;
1197- FEvent: THTMLDocumentEventSink; //!< ブラウザドキュメントイベント
1194+ FEvent: THTMLDocumentEventSink;//ブラウザドキュメントイベント
11981195 FThread : TThreadItem;
11991196 FLastSize : Integer;
12001197 FRepaint : Boolean;
1201- FMovement : string; //!< スクロール先アンカー
1198+ // FOnlyHundred: Boolean;
12021199 public
12031200 destructor Destroy; override;
12041201 property Browser : TWebBrowser read FBrowser write FBrowser;
12051202 property Thread : TThreadItem read FThread write FThread;
12061203 property LastSize : Integer read FLastSize write FLastSize;
12071204 property Repaint : Boolean read FRepaint write FRepaint;
1208- property Movement : string read FMovement write FMovement;
1205+// property OnlyHundred : Boolean read FOnlyHundred write FOnlyHundred;
12091206 end;
12101207
12111208 var
@@ -2877,32 +2874,45 @@ begin
28772874 end else begin
28782875 threadItem := GetActiveContent;
28792876 if Pos('about:blank..', Text) = 1 then begin
2880- wkInt := LastDelimiter( '/', threadItem.URL );
2881- if Pos( '?', Copy( threadItem.URL, wkInt, MaxInt ) ) = 0 then begin
2882- // Thread.URL は PATH_INFO 渡し
2883- URL := Copy( threadItem.URL, 1, LastDelimiter( '/', threadItem.URL ) );
2884- wkInt := LastDelimiter( '/', Text );
2885- if Pos( '?', Copy( Text, wkInt, MaxInt ) ) = 0 then
2886- // Text も PATH_INFO 渡し
2887- URL := URL + Copy( Text, LastDelimiter( '/', Text ) + 1, MaxInt )
2888- else
2889- // Text は QUERY_STRING 渡し
2890- URL := URL + Copy( Text, LastDelimiter( '?', Text ) + 1, MaxInt );
2877+ if(AnsiPos('http://jbbs.livedoor.jp/', threadItem.URL) <> 0) or
2878+ (AnsiPos('http://jbbs.livedoor.com/', threadItem.URL) <> 0) or
2879+ (AnsiPos('http://jbbs.shitaraba.com/', threadItem.URL) <> 0) then begin
2880+ URL := Copy(threadItem.URL, 1, LastDelimiter('/',threadItem.URL));
2881+ Gikosys.GetPopupResNumber(Text,PathRec.FSt,PathRec.FTo);
2882+ if ( PathRec.FSt <> 0 ) and ( PathRec.FTo <> 0 ) then
2883+ buf := IntToStr(PathRec.FSt) + '-' + IntToStr(PathRec.FTo)
2884+ else if( PathRec.FSt <> 0 ) then
2885+ buf := IntToStr(PathRec.FSt);
2886+ end else if AnsiPos('machi.to/bbs/', threadItem.URL) <> 0 then begin
2887+ URL := threaditem.URL;
2888+ buf := Copy(Text,AnsiPos('&st=',Text),Length(Text)-AnsiPos('&st=',Text) + 1);
28912889 end else begin
2892- // Thread.URL は QUERY_STRING 渡し
2893- URL := Copy( threadItem.URL, 1, LastDelimiter( '?', threadItem.URL ) );
2894- wkInt := LastDelimiter( '/', Text );
2895- if Pos( '?', Copy( Text, wkInt, MaxInt ) ) = 0 then begin
2896- // Text は PATH_INFO 渡し
2897- // URL に板とキーが足らないので Text から頂戴する
2898- wkInt := LastDelimiter( '/', Copy( Text, 1, wkInt - 1 ) );
2899- wkInt := LastDelimiter( '/', Copy( Text, 1, wkInt - 1 ) );
2900- URL := Copy( URL, 1, Length( URL ) - 1 ) + Copy( Text, wkInt, MaxInt );
2890+ if (AnsiPos('&', threadItem.URL) <> 0) and (AnsiPos('&', Text) = 0)then begin
2891+ URL := threadItem.URL;
2892+ buf := Copy(Text,LastDelimiter('/',Text)+1,Length(Text)-LastDelimiter('/',Text));
2893+ if AnsiPos('-', buf) <> 0 then begin
2894+ buf2 := Copy(buf, AnsiPos('-', buf) + 1, Length(buf));
2895+ Delete(buf, AnsiPos('-', buf), Length(buf));
2896+ if (IsNumeric(buf)) and (IsNumeric(buf2)) then
2897+ buf := Format('&st=%s&to=%s', [buf, buf2])
2898+ else if (IsNumeric(buf)) then
2899+ buf := Format('&st=%s&to=%s', [buf, buf])
2900+ else if (IsNumeric(buf)) then
2901+ buf := Format('&st=%s&to=%s', [buf2, buf2])
2902+ else
2903+ buf := '';
2904+ end else begin
2905+ if IsNumeric(buf) then
2906+ buf := Format('&st=%s&to=%s', [buf, buf])
2907+ else
2908+ buf := '';
2909+ end;
29012910 end else begin
2902- // Text も QUERY_STRING 渡し
2903- URL := URL + Copy( Text, LastDelimiter( '?', Text ) + 1, MaxInt )
2911+ URL := Copy(threadItem.URL, 1, LastDelimiter('/',threadItem.URL));
2912+ buf := Copy(Text,LastDelimiter('/',Text)+1,Length(Text)-LastDelimiter('/',Text));
29042913 end;
29052914 end;
2915+ URL := URL + buf;
29062916 end else begin
29072917 URL := Text;
29082918 end;
@@ -2911,9 +2921,8 @@ begin
29112921 if (PathRec.FNoParam) then begin
29122922 PathRec.FSt := 1;
29132923 PathRec.FTo := 1;
2914- end else begin
2924+ end else
29152925 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
2916- end;
29172926 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
29182927
29192928 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
@@ -2940,10 +2949,10 @@ begin
29402949 // wkIntTo := 1;
29412950 //if PathRec.FFirst then
29422951 // wkIntSt := 1;
2943- //if PathRec.FStBegin then //http://〜〜〜〜/-50というとき
2944- // wkIntSt := 1; //
2945- //if PathRec.FToEnd then //http://〜〜〜〜/50-というとき
2946- // wkIntTo := 9999; // どちらの場合も、GetPopupResNumberでうまく番号を調整するのでふよう。
2952+ if PathRec.FStBegin then
2953+ wkIntSt := 1;
2954+ if PathRec.FToEnd then
2955+ wkIntTo := 9999;
29472956
29482957 //ATitle := ActiveFileName <> PathRec.FKey;
29492958 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
@@ -3459,7 +3468,6 @@ var
34593468 s: string;
34603469 boardPlugIn : TBoardPlugIn;
34613470 i: Integer;
3462- browserRec : TBrowserRecord;
34633471 begin
34643472 try
34653473 if Item.DownType = gdtBoard then
@@ -3501,15 +3509,11 @@ begin
35013509 end;
35023510 if GikoSys.Setting.BrowserTabVisible then begin
35033511 if GetActiveContent = Item.ThreadItem then
3504- browserRec := InsertBrowserTab(Item.ThreadItem)
3512+ InsertBrowserTab(Item.ThreadItem)
35053513 else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
3506- browserRec := InsertBrowserTab(Item.ThreadItem, True)
3514+ InsertBrowserTab(Item.ThreadItem, True)
35073515 else
3508- browserRec := InsertBrowserTab(Item.ThreadItem, False);
3509- if browserRec.Thread = BrowserNullTab.Thread then begin
3510- browserRec.Movement := BrowserNullTab.Movement;
3511- BrowserNullTab.Movement := '';
3512- end;
3516+ InsertBrowserTab(Item.ThreadItem, False);
35133517 end else begin
35143518 if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
35153519 InsertBrowserTab(Item.ThreadItem);
@@ -3642,17 +3646,14 @@ begin
36423646 end;
36433647 end;}
36443648
3645-function TGikoForm.InsertBrowserTab(
3646- ThreadItem : TThreadItem;
3647- ActiveTab : Boolean = True
3648-) : TBrowserRecord;
3649+procedure TGikoForm.InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
3650+
36493651 var
3650- i, j, idx : Integer;
3651- favItem : TFavoriteThreadItem;
3652+ i, j, idx: Integer;
3653+ favItem : TFavoriteThreadItem;
36523654 newBrowser : TBrowserRecord;
36533655 begin
36543656
3655- Result := nil;
36563657 if Threaditem = nil then Exit;
36573658
36583659 if ThreadItem.IsLogFile then begin
@@ -3671,7 +3672,6 @@ begin
36713672 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
36723673 if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
36733674 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
3674- Result := TBrowserRecord( BrowserTab.Tabs.Objects[i] );
36753675 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = nil then begin
36763676 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
36773677 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
@@ -3758,7 +3758,6 @@ begin
37583758 BrowserTab.TabIndex := i;
37593759 end;
37603760 end;
3761- Result := newBrowser;
37623761 if(ActiveTab) or (idx = -1) then begin
37633762 BrowserTab.OnChange(nil);
37643763 end;
@@ -3768,7 +3767,6 @@ begin
37683767 BrowserNullTab.Browser := Browser;
37693768 end;
37703769 BrowserNullTab.thread := ThreadItem;
3771- Result := BrowserNullTab;
37723770 BrowserTab.TabIndex := -1;
37733771 SetContent(BrowserNullTab);
37743772 end;
@@ -3859,13 +3857,11 @@ begin
38593857
38603858
38613859 try
3862- {
38633860 if ThreadItem.UnRead then begin
38643861 ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
38653862 if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
38663863 TreeView.Refresh;
38673864 end;
3868- }
38693865 if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
38703866 if (FActiveContent.Browser <> BrowserNullTab.Browser) then
38713867 ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
@@ -4008,16 +4004,12 @@ end;
40084004 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean);
40094005 var
40104006 Board: TBoard;
4011- i: Integer;
40124007 begin
40134008 if ActiveList is TBoard then begin
4014- for i := Length( BBSs ) - 1 downto 0 do begin
4015- BBSs[i].SelectText := SelectText;
4016- BBSs[i].KubetsuChk := KubetsuChk;
4017- end;
40184009 Board := TBoard(ActiveList);
4019-// Board.ParentCategory.ParenTBBS.SelectText := SelectText;
4020-// Board.ParentCategory.ParenTBBS.KubetsuChk := KubetsuChk;
4010+
4011+ Board.ParentCategory.ParenTBBS.SelectText := SelectText;
4012+ Board.ParentCategory.ParenTBBS.KubetsuChk := KubetsuChk;
40214013 // Board.SelectText := SelectText;
40224014 // Board.KubetsuChk := KubetsuChk;
40234015 ViewType := AViewType;
@@ -6694,21 +6686,8 @@ begin
66946686 Assigned( BrowserRecord.Thread ) then begin
66956687 threadItem := BrowserRecord.Thread;
66966688
6697- if (BrowserRecord <> nil) and (Length( BrowserRecord.Movement ) > 0) then begin
6698- if threadItem.UnRead then begin
6699- threadItem.UnRead := False;
6700- threadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
6701- if threadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0;
6702- TreeView.Refresh;
6703- ListView.Refresh;
6704- end;
6705- BrowserMovement( BrowserRecord.Movement, BrowserRecord );
6706- BrowserRecord.Movement := '';
6707- end else if threadItem.UnRead then begin
6689+ if threadItem.UnRead then begin
67086690 threadItem.UnRead := False;
6709- threadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
6710- if threadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0;
6711- TreeView.Refresh;
67126691 BrowserMovement( 'new', BrowserRecord );
67136692 ListView.Refresh;
67146693 end else if threadItem.ScrollTop <> 0 then begin
@@ -7494,10 +7473,11 @@ begin
74947473 end;
74957474 end;
74967475
7497-procedure TGikoForm.MoveToURL(const inURL: string);
7476+procedure TGikoForm.MoveToURL(URL: string);
7477+
74987478 var
74997479 protocol, host, path, document, port, bookmark : string;
7500- URL, protocol2, host2, path2, document2, port2, bookmark2 : string;
7480+ URL2, protocol2, host2, path2, document2, port2, bookmark2 : string;
75017481 tmp1, tmp2: string;
75027482 BBSID, BBSKey: string;
75037483 tmpBoard, Board: TBoard;
@@ -7510,21 +7490,19 @@ var
75107490 // boardNode : TTreeNode;
75117491 shiftDown : Boolean;
75127492 ctrlDown : Boolean;
7513- stRes, edRes : Int64;
7514- browserRec : TBrowserRecord;
75157493 begin
75167494
7517- GikoSys.ParseURI( inURL, protocol, host, path, document, port, bookmark );
7518- GikoSys.Parse2chURL( inURL, path, document, BBSID, BBSKey );
7495+ GikoSys.ParseURI( URL, protocol, host, path, document, port, bookmark );
7496+ GikoSys.Parse2chURL( URL, path, document, BBSID, BBSKey );
75197497
75207498
75217499 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
75227500 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
75237501 if shiftDown then begin
7524- GikoSys.OpenBrowser(inURL, gbtUserApp);
7502+ GikoSys.OpenBrowser(URL, gbtUserApp);
75257503 Exit;
75267504 end else if ctrlDown then begin
7527- GikoSys.OpenBrowser(inURL, gbtIE);
7505+ GikoSys.OpenBrowser(URL, gbtIE);
75287506 Exit;
75297507 end;
75307508
@@ -7534,16 +7512,15 @@ begin
75347512 bi := High( BoardPlugIns );
75357513 for i := Low( BoardPlugIns ) to bi do begin
75367514 if Assigned( Pointer( BoardPlugIns[ i ].Module ) ) then begin
7537- case BoardPlugIns[ i ].AcceptURL( inURL ) of
7515+ case BoardPlugIns[ i ].AcceptURL( URL ) of
75387516 atThread:
75397517 begin
7540- tmpThread := TThreadItem.Create( BoardPlugIns[ i ], inURL );
7518+ tmpThread := TThreadItem.Create( BoardPlugIns[ i ], URL );
75417519 boardURL := tmpThread.BoardPlugIn.GetBoardURL( DWORD( tmpThread ) );
75427520 Board := BBSsFindBoardFromURL( boardURL );
75437521 if Board = nil then begin
7544- //break;
75457522 // ※作っても追加するところが無いので激しく保留
7546- //GikoSys.OpenBrowser(inURL, gbtUserApp);
7523+ //GikoSys.OpenBrowser(URL, gbtUserApp);
75477524 //Exit;
75487525 {
75497526 Board := GikoSys.GetUnknownBoard( tmpThread.BoardPlugIn, boardURL );
@@ -7555,40 +7532,34 @@ begin
75557532 GikoSys.ReadSubjectFile( Board );
75567533 Exit;
75577534 end;
7558- ThreadItem := Board.FindThreadFromFileName( tmpThread.FileName );
7559- if ThreadItem = nil then begin
7560- ThreadItem := tmpThread;
7561- Board.Insert( 0, ThreadItem );
7562- if ActiveList is TBoard then begin
7563- if TBoard(ActiveList) = Board then
7564- ListView.Items.Count := ListView.Items.Count + 1;
7565- end;
7566- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7567- browserRec := InsertBrowserTab( ThreadItem );
7568- if (browserRec <> nil) and (stRes > 0) then
7569- browserRec.Movement := IntToStr( stRes );
7535+ end;
7536+
7537+ ThreadItem := Board.FindThreadFromFileName( tmpThread.FileName );
7538+ if ThreadItem = nil then begin
7539+ ThreadItem := tmpThread;
7540+ Board.Insert( 0, ThreadItem );
7541+ if ActiveList is TBoard then begin
7542+ if TBoard(ActiveList) = Board then
7543+ ListView.Items.Count := ListView.Items.Count + 1;
7544+ end;
7545+ InsertBrowserTab( ThreadItem );
7546+ DownloadContent( ThreadItem );
7547+ Exit;
7548+ end else begin
7549+ tmpThread.Free;
7550+ InsertBrowserTab( ThreadItem );
7551+ if not ThreadItem.IsLogFile then begin
75707552 DownloadContent( ThreadItem );
7571- Exit;
7572- end else begin
7573- tmpThread.Free;
7574- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7575- browserRec := InsertBrowserTab( ThreadItem );
7576- if ThreadItem.IsLogFile then begin
7577- if (browserRec <> nil) and (stRes > 0) then
7578- BrowserMovement( IntToStr( stRes ), browserRec );
7579- end else begin
7580- if (browserRec <> nil) and (stRes > 0) then
7581- browserRec.Movement := IntToStr( stRes );
7582- DownloadContent( ThreadItem );
7583- end;
7584- Exit;
75857553 end;
7554+ Exit;
75867555 end;
7556+
7557+ //Exit;
75877558 end;
75887559
75897560 atBoard:
75907561 begin
7591- tmpBoard := TBoard.Create(BoardPlugIns[ i ], inURL);
7562+ tmpBoard := TBoard.Create(BoardPlugIns[ i ], URL);
75927563 Board := BBSsFindBoardFromURL( tmpBoard.URL );
75937564 tmpBoard.Free;
75947565 if Board <> nil then begin
@@ -7607,7 +7578,7 @@ begin
76077578
76087579
76097580 if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin
7610- boardURL := GikoSys.Get2chThreadURL2BoardURL( inURL );
7581+ boardURL := GikoSys.Get2chThreadURL2BoardURL( URL );
76117582 Board := BBSsFindBoardFromURL( boardURL );
76127583 if Board = nil then
76137584 Board := BBSsFindBoardFromBBSID( BBSID );
@@ -7619,23 +7590,23 @@ begin
76197590 end;
76207591 if Board = nil then begin
76217592 // 入るべき板が見つからなかったので、普通のブラウザで開く
7622- GikoSys.OpenBrowser(inURL, gbtUserApp);
7593+ GikoSys.OpenBrowser(URL, gbtUserApp);
76237594 Exit;
76247595 end else begin
76257596 // 外部の板なのに2chのURLにされてしまった奴をここで確認する
7626- URL := Board.URL;
7627- GikoSys.ParseURI(URL , protocol2, host2, path2, document2, port2, bookmark2 );
7597+ URL2 := Board.URL;
7598+ GikoSys.ParseURI(URL2 , protocol2, host2, path2, document2, port2, bookmark2 );
76287599 tmp1 := Copy(host, AnsiPos('.', host) + 1, Length(host));
76297600 tmp2 := Copy(host2, AnsiPos('.', host2) + 1, Length(host2));
76307601 if ( not GikoSys.Is2chHost(tmp1)) and (tmp1 <> tmp2) then begin
7631- GikoSys.OpenBrowser(inURL, gbtUserApp);
7602+ GikoSys.OpenBrowser(URL, gbtUserApp);
76327603 Exit;
76337604 end;
76347605 end;
76357606
76367607 if not Board.IsThreadDatRead then
76377608 GikoSys.ReadSubjectFile(Board);
7638- URL := GikoSys.Get2chBrowsableThreadURL( inURL );
7609+ URL := GikoSys.Get2chBrowsableThreadURL( URL );
76397610 ThreadItem := Board.FindThreadFromURL( URL );
76407611 // 過去ログ倉庫から、ダウソしたスレが発見できないのでここで探すようにする (2004/01/22)
76417612 if ThreadItem = nil then begin
@@ -7648,9 +7619,9 @@ begin
76487619 {shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
76497620 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
76507621 if shiftDown then
7651- GikoSys.OpenBrowser(URL1, gbtUserApp)
7622+ GikoSys.OpenBrowser(URL, gbtUserApp)
76527623 else if ctrlDown then
7653- GikoSys.OpenBrowser(URL1, gbtIE)
7624+ GikoSys.OpenBrowser(URL, gbtIE)
76547625 else begin
76557626 }
76567627 ThreadItem := TThreadItem.Create( nil, URL );
@@ -7664,34 +7635,25 @@ begin
76647635 if TBoard(ActiveList) = Board then
76657636 ListView.Items.Count := ListView.Items.Count + 1;
76667637 end;
7667- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7668- browserRec := InsertBrowserTab(ThreadItem);
7669- if (browserRec <> nil) and (stRes > 0) then
7670- browserRec.Movement := IntToStr( stRes );
7638+ InsertBrowserTab(ThreadItem);
76717639 DownloadContent(ThreadItem);
76727640 {end;}
76737641 end else begin
7674- if ThreadItem.IsLogFile then begin
7675- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7676- browserRec := InsertBrowserTab(ThreadItem);
7677- if (browserRec <> nil) and (stRes > 0) then
7678- browserRec.Movement := IntToStr( stRes );
7679- end else begin
7642+ if ThreadItem.IsLogFile then
7643+ InsertBrowserTab(ThreadItem)
7644+ else begin
76807645 if AnsiPos(Host, Board.URL) = 0 then
76817646 ThreadItem.DownloadHost := Host
76827647 else
76837648 ThreadItem.DownloadHost := '';
7684- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7685- browserRec := InsertBrowserTab(ThreadItem);
7686- if (browserRec <> nil) and (stRes > 0) then
7687- browserRec.Movement := IntToStr( stRes );
7649+ InsertBrowserTab(ThreadItem);
76887650 DownloadContent(ThreadItem);
76897651 end;
76907652 end;
76917653 end else begin
7692- Board := BBSsFindBoardFromURL( inURL );
7654+ Board := BBSsFindBoardFromURL( URL );
76937655 if Board = nil then begin
7694- GikoSys.OpenBrowser(inURL, gbtAuto);
7656+ GikoSys.OpenBrowser(URL, gbtAuto);
76957657 end else begin
76967658 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
76977659 ShowBBSTree( Board.ParentCategory.ParenTBBS );
@@ -9010,10 +8972,9 @@ begin
90108972 ModifySelectList;
90118973 end else if Length( SelectComboBox.Text ) = 0 then
90128974 begin
9013- {* SelectComboBox.Textが空でも、入力途中でEscしたとか
9014- * 空のときにDelキーを押したとかなので、スレの絞込みを維持する。
9015- * (ここでは何もしない)
9016- *}
8975+ AllItemAction.Checked := True;
8976+ LogItemAction.Checked := False;
8977+ NewItemAction.Checked := False;
90178978 end else begin
90188979 // チラつくと嫌だから、一応押してあるときだけ処理する
90198980 if AllItemAction.Checked then
@@ -10134,12 +10095,7 @@ procedure TGikoForm.BrowserTabMouseUp(Sender: TObject;
1013410095 begin
1013510096 if FDragWFirst <> true then begin
1013610097 FDragWFirst := false;
10137-{
10138- end else if (abs( X - FMouseDownPos.X ) < Mouse.DragThreshold)
10139- and (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
10140-(*}
10141- end else begin
10142-//*)
10098+ end else if (X = FMouseDownPos.X) and (Y = FMouseDownPos.Y) then begin
1014310099 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1014410100 if GikoSys.Setting.ListWidthState = glsMin then begin
1014510101 BrowserMaxAndFocusAction.Execute;
@@ -11165,16 +11121,12 @@ begin
1116511121 SelectListItem(List);
1116611122 for i := 0 to List.Count - 1 do begin
1116711123 if TObject(List[i]) is TThreadItem then begin
11168- if (TThreadItem(List[i]).UnRead) then begin
11169- TThreadItem(List[i]).UnRead := false;
11170- TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1;
11171- end;
11124+ TThreadItem(List[i]).UnRead := false;
11125+ TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1;
1117211126 end;
1117311127 end;
1117411128 if TreeView.Visible then
1117511129 TreeView.Refresh;
11176- if ListView.Visible then
11177- ListView.Refresh;
1117811130 finally
1117911131 List.Free;
1118011132 end;
@@ -11190,16 +11142,12 @@ begin
1119011142 SelectListItem(List);
1119111143 for i := 0 to List.Count - 1 do begin
1119211144 if TObject(List[i]) is TThreadItem then begin
11193- if (TThreadItem(List[i]).IsLogFile) and (not TThreadItem(List[i]).UnRead) then begin
11194- TThreadItem(List[i]).UnRead := true;
11195- TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1;
11196- end;
11145+ TThreadItem(List[i]).UnRead := true;
11146+ TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1;
1119711147 end;
1119811148 end;
1119911149 if TreeView.Visible then
1120011150 TreeView.Refresh;
11201- if ListView.Visible then
11202- ListView.Refresh;
1120311151 finally
1120411152 List.Free;
1120511153 end;
--- a/GikoSystem.pas
+++ b/GikoSystem.pas
@@ -187,7 +187,7 @@ type
187187 function Is2chHost(Host: string): Boolean;
188188 function Parse2chURL(const url: string; const path: string; const document: string; var BBSID: string; var BBSKey: string): Boolean;
189189 function Parse2chURL2(URL: string): TPathRec;
190- procedure ParseURI(const URL : string; var Protocol, Host, Path, Document, Port, Bookmark: string);
190+ procedure ParseURI(var URL, Protocol, Host, Path, Document, Port, Bookmark: string);
191191 function GetVersionBuild: Integer;
192192 function GetBrowsableThreadURL( inURL : string ) : string;
193193 function GetThreadURL2BoardURL( inURL : string ) : string;
@@ -3424,7 +3424,7 @@ begin
34243424 end;
34253425 end;
34263426
3427-procedure TGikoSys.ParseURI(const URL : string; var Protocol, Host, Path, Document, Port, Bookmark: string);
3427+procedure TGikoSys.ParseURI(var URL, Protocol, Host, Path, Document, Port, Bookmark: string);
34283428 var
34293429 URI: TIdURI;
34303430 begin
--- a/ItemDownload.pas
+++ b/ItemDownload.pas
@@ -1259,10 +1259,8 @@ begin
12591259 OldCnt := Body.IndexOf(oldBody.Strings[ LastIdx ]) + 1;
12601260 until ( OldCnt <> 0 ) or (LastIdx = 0);
12611261
1262- if OldCnt >= Body.Count then OldCnt := Body.Count - 1;
12631262 NewRes := Body.Count - OldCnt;
12641263
1265-
12661264 finally
12671265 oldBody.Free;
12681266 end;
@@ -1299,10 +1297,8 @@ begin
12991297 ThreadItem.AllResCount := ThreadItem.Count;
13001298 ThreadItem.IsLogFile := True;
13011299 ThreadItem.RoundDate := Now;
1302- if not ThreadItem.UnRead then begin
1303- ThreadItem.UnRead := True;
1304- ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead + 1;
1305- end;
1300+ ThreadItem.UnRead := True;
1301+ ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead + 1;
13061302 // if ThreadItem.RoundNo = 6 then
13071303 // ThreadItem.RoundNo := 0;
13081304
--- a/KuroutSetting.dfm
+++ b/KuroutSetting.dfm
@@ -147,7 +147,6 @@ object KuroutOption: TKuroutOption
147147 Height = 57
148148 Caption = #12395#12385#12419#12435#35486#26696#20869#27231#33021
149149 TabOrder = 2
150- Visible = False
151150 object Label5: TLabel
152151 Left = 8
153152 Top = 16
--- a/Setting.pas
+++ b/Setting.pas
@@ -1223,7 +1223,7 @@ begin
12231223 FDeleteSyria := ini.ReadBool('Abon','DeleteSyria',false);
12241224
12251225 // エディタ
1226- FSpaceToNBSP := ini.ReadBool( 'Editor', 'SpaceToNBSP', False );
1226+ FSpaceToNBSP := ini.ReadBool( 'Editor', 'SpaceToNBSP', True );
12271227 FAmpToCharRef := ini.ReadBool( 'Editor', 'AmpToCharRef', False );
12281228
12291229 //Tab自動保存、読み込み
Binary files a/gikoNavi.res and b/gikoNavi.res differ
--- a/readme/readme.txt
+++ b/readme/readme.txt
@@ -89,20 +89,16 @@ Windows Server 2003 Enterprise Edition IE6
8989 ------------------------------
9090 履歴
9191 ------------------------------
92-2004/10/XX
92+2004/XX/XX
9393 Version バタ49
9494 お気に入りの読み込みの高速化による起動時間の短縮
95+ スレ一覧の表示カラム(列)を設定できるようになった
9596 StatusBarにNGワードファイルの名前が出ない不具合の修正
9697 「指定した番号のレスに飛ぶ」機能追加(キー設定で、スレッドカテゴリの一番最後)
98+ レスアンカーでレスポップアップする形式の拡大(チャットちゃんねる等)
9799 ログを削除した際に未読スレッド数 (UnRead) の表示が更新されないバグを修正
98100 ここにレスだと、レスエディターのショートカットキーが設定されない不具合の修正
99101 あぼーん時にココまで読んだと新着レスを調整するのに不具合があったので修正
100- スレッド一覧の表示カラムの設定ができるようになった。「オプション」->「詳細設定」->「詳細設定2」
101- デフォルトでのレスアンカーポップアップが種種の形式に対応
102- 3ちゃんねる(8ちゃんねる)を登録すると2ちゃんねるの板が表示される不具合の解消
103- お気に入りで編集中にスペースキー入力の不具合の修正
104- したらばJBBSの過去ログに関する不具合の修正
105- スレッドのリンクでレス番があるものを踏んだときに、そのレス番号までスクロールするようにした。
106102
107103 2004/09/05
108104 Version バタ48
--- a/res/ExternalBoardPlugIn/ShitarabaJBBSPlugIn.dpr
+++ b/res/ExternalBoardPlugIn/ShitarabaJBBSPlugIn.dpr
@@ -3,7 +3,7 @@ library ShitarabaJBBSPlugIn;
33 {
44 ShitarabaJBBSPlugIn
55 したらば処理ユニット
6- $Id: ShitarabaJBBSPlugIn.dpr,v 1.36 2004/09/30 11:49:44 h677 Exp $
6+ $Id: ShitarabaJBBSPlugIn.dpr,v 1.33 2004/09/28 12:10:20 h677 Exp $
77 }
88
99 uses
@@ -33,7 +33,7 @@ type
3333
3434 private
3535 function Download : TDownloadState;
36- function StorageDownload(AURL : string) : TDownloadState;
36+ function StorageDownload(Path, Document : string) : TDownloadState;
3737 function Write( inName : string; inMail : string; inMessage : string ) : TDownloadState;
3838 function GetRes( inNo : Integer ) : string;
3939 function GetDat( inNo : Integer ) : string;
@@ -505,14 +505,22 @@ begin
505505 uriList := TStringList.Create;
506506 try
507507 ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
508- if uriList[ 5 ] = 'l100' then begin
509- FileName := uriList[ 4 ] + '.dat';
510- FilePath := MyLogFolder + uriList[ 2 ] + '\' + uriList[ 3 ] + '\' + uriList[ 4 ] + '.dat';
511- IsLogFile := FileExists( FilePath );
512- end else begin
513- FileName := uriList[ 5 ] + '.dat';
514- FilePath := MyLogFolder + uriList[ 3 ] + '\' + uriList[ 4 ] + '\' + uriList[ 5 ] + '.dat';
508+ if (AnsiPos('.html', uri.Document) = 0) then begin //通常
509+ if uriList[ 5 ] = 'l100' then begin
510+ FileName := uriList[ 4 ] + '.dat';
511+ FilePath := MyLogFolder + uriList[ 2 ] + '\' + uriList[ 3 ] + '\' + uriList[ 4 ] + '.dat';
512+ IsLogFile := FileExists( FilePath );
513+ end else begin
514+ FileName := uriList[ 5 ] + '.dat';
515+ FilePath := MyLogFolder + uriList[ 3 ] + '\' + uriList[ 4 ] + '\' + uriList[ 5 ] + '.dat';
516+ IsLogFile := FileExists( FilePath );
517+ end;
518+ end else begin //過去ログ
519+ //http://jbbs.livedoor.com/game/1578/storage/1086710948.html
520+ FileName := Copy(uri.Document, 1, Length(uri.Document) - 5) + '.dat';
521+ FilePath := MyLogFolder + CustomStringReplace(CustomStringReplace(uri.Path, '/storage', ''), '/', '\') + FileName;
515522 IsLogFile := FileExists( FilePath );
523+
516524 end;
517525 finally
518526 uri.Free;
@@ -549,109 +557,115 @@ var
549557 logStream : TFileStream;
550558 uri : TIdURI;
551559 uriList : TStringList;
552- datURL, tmpURL : string;
553- tmpText: string;
560+ datURL : string;
561+ tmpText: string;
554562 begin
555563
556564 Result := dsError;
557565
558566 uri := TIdURI.Create( ReadURL );
559- uriList := TStringList.Create;
560- try
561- ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
562- FileName := uriList[ 5 ] + '.dat';
563- // http://jbbs.livedoor.com/bbs/rawmode.cgi/game/1578/1067968274/l100
564- // protocol://host/1/2/3/4/5/uriList.Count - 1
565- if MyLogFolder = '' then begin
566- // どこに保存していいのか分からないので一時ファイルに保存
567- FilePath := TemporaryFile;
568- FIsTemporary := True;
569- end else begin
570- FilePath := MyLogFolder + uriList[ 3 ] + '\' + uriList[ 4 ] + '\' + uriList[ 5 ] + '.dat';
571- FIsTemporary := False;
572- end;
573- finally
567+ if(( AnsiPos('.html', uri.Document) >0 ) and ( AnsiPos('/storage/', uri.Path) > 0 )) then begin
568+ //過去ログ
569+ Result := StorageDownload(uri.Path, uri.Document);
574570 uri.Free;
575- uriList.Free;
576- end;
571+ end else begin
572+ //現在生きてるスレッド
573+ uriList := TStringList.Create;
574+ try
575+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
576+ FileName := uriList[ 5 ] + '.dat';
577+ // http://jbbs.livedoor.com/bbs/rawmode.cgi/game/1578/1067968274/l100
578+ // protocol://host/1/2/3/4/5/uriList.Count - 1
579+ if MyLogFolder = '' then begin
580+ // どこに保存していいのか分からないので一時ファイルに保存
581+ FilePath := TemporaryFile;
582+ FIsTemporary := True;
583+ end else begin
584+ FilePath := MyLogFolder + uriList[ 3 ] + '\' + uriList[ 4 ] + '\' + uriList[ 5 ] + '.dat';
585+ FIsTemporary := False;
586+ end;
587+ finally
588+ uri.Free;
589+ uriList.Free;
590+ end;
577591
578- // 保存用のディレクトリを掘る
579- ForceDirectoriesEx( Copy( FilePath, 1, LastDelimiter( '\', FilePath ) ) );
592+ // 保存用のディレクトリを掘る
593+ ForceDirectoriesEx( Copy( FilePath, 1, LastDelimiter( '\', FilePath ) ) );
580594
581- // 独自にダウンロードやフィルタリングを行わない場合は
582- // InternalDownload に任せることが出来る
583- modified := LastModified;
584- datURL := ReadURL + IntToStr( Count + 1 ) + '-'; // 新着のみ
585- responseCode := InternalDownload( PChar( datURL ), modified, tmp, 0 );
595+ // 独自にダウンロードやフィルタリングを行わない場合は
596+ // InternalDownload に任せることが出来る
597+ modified := LastModified;
598+ datURL := ReadURL + IntToStr( Count + 1 ) + '-'; // 新着のみ
599+ responseCode := InternalDownload( PChar( datURL ), modified, tmp, 0 );
586600
587- try
588- if (responseCode = 200) or (responseCode = 206) then begin
589- downResult := TStringList.Create;
590- try
591- tmpText := CustomStringReplace( string( tmp ), '。?ョ', ',' );
592- downResult.Text := EUCtoSJIS( tmpText );
593- ArrangeDownloadData(Count, downResult);
594- if downResult.Count > 0 then begin
595- if FileExists( FilePath ) then
596- logStream := TFileStream.Create( FilePath, fmOpenReadWrite or fmShareDenyWrite )
597- else
598- logStream := TFileStream.Create( FilePath, fmCreate or fmShareDenyWrite );
599- try
600- logStream.Position := logStream.Size;
601- logStream.Write( PChar( downResult.Text )^, Length( downResult.Text ) );
602- finally
603- logStream.Free;
604- end;
601+ try
602+ if (responseCode = 200) or (responseCode = 206) then begin
603+ downResult := TStringList.Create;
604+ try
605+ tmpText := CustomStringReplace( string( tmp ), '。?ョ', ',' );
606+ downResult.Text := EUCtoSJIS( tmpText );
607+ ArrangeDownloadData(Count, downResult);
608+ if downResult.Count > 0 then begin
609+ if FileExists( FilePath ) then
610+ logStream := TFileStream.Create( FilePath, fmOpenReadWrite or fmShareDenyWrite )
611+ else
612+ logStream := TFileStream.Create( FilePath, fmCreate or fmShareDenyWrite );
613+ try
614+ logStream.Position := logStream.Size;
615+ logStream.Write( PChar( downResult.Text )^, Length( downResult.Text ) );
616+ finally
617+ logStream.Free;
618+ end;
605619
606- if Count = 0 then
607- // 新規
608- Result := dsComplete
609- else
610- // 追記
611- Result := dsDiffComplete;
620+ if Count = 0 then
621+ // 新規
622+ Result := dsComplete
623+ else
624+ // 追記
625+ Result := dsDiffComplete;
612626
613- Size := Size + Length( downResult.Text );
614- // CGI からは正しい日付が得られないので現在に設定
615- LastModified := Now;
627+ Size := Size + Length( downResult.Text );
628+ // CGI からは正しい日付が得られないので現在に設定
629+ LastModified := Now;
616630
617631
618632
619- NewReceive := Count + 1;
620- Count := Count + downResult.Count;
621- NewResCount := downResult.Count;
633+ NewReceive := Count + 1;
634+ Count := Count + downResult.Count;
635+ NewResCount := downResult.Count;
622636
623637
624638
625- end else begin
626- Result := dsNotModify;
639+ end else begin
640+ Result := dsNotModify;
641+ end;
642+ finally
643+ downResult.Free;
627644 end;
628- finally
629- downResult.Free;
630- end;
631- end else if responseCode = 302 then begin
632- //http://jbbs.shitaraba.com/bbs/read.cgi/game/3477/1077473358/
633- //http://jbbs.shitaraba.com/game/bbs/read.cgi?BBS=3477&KEY=1077473358
634- //http://jbbs.shitaraba.com/game/3477/storage/1077473358.html
635- //過去ログ
636- //tmpURL := URL;
637- if Assigned( InternalPrint ) then
638- InternalPrint( '過去ログ倉庫入り' );
639- uri := TIdURI.Create( ReadURL );
640- uriList := TStringList.Create;
641- try
642- ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
643- tmpURL := uri.Protocol + '://' + uri.Host +
644- '/' + uriList[3] + '/' + uriList[4] + '/storage/' + uriList[ 5 ] + '.html';
645- finally
646- uriList.Free;
645+ end else if responseCode = 302 then begin
646+ //http://jbbs.shitaraba.com/bbs/read.cgi/game/3477/1077473358/
647+ //http://jbbs.shitaraba.com/game/bbs/read.cgi?BBS=3477&KEY=1077473358
648+ //http://jbbs.shitaraba.com/game/3477/storage/1077473358.html
649+ //過去ログ
650+ uri := TIdURI.Create( ReadURL );
651+ uriList := TStringList.Create;
652+ try
653+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
654+ URL := uri.Protocol + '://' + uri.Host +
655+ '/' + uriList[3] + '/' + uriList[4] + '/storage/' + uriList[ 5 ] + '.html';
656+ finally
657+ uriList.Free;
658+ uri.Free;
659+ end;
660+ uri := TIdURI.Create( ReadURL );
661+ Result := StorageDownload(uri.Path, uri.Document);
647662 uri.Free;
663+ end else if responseCode = 304 then begin
664+ Result := dsNotModify;
648665 end;
649- Result := StorageDownload(tmpURL);
650- end else if responseCode = 304 then begin
651- Result := dsNotModify;
666+ finally
667+ DisposeResultString( tmp );
652668 end;
653- finally
654- DisposeResultString( tmp );
655669 end;
656670
657671 end;
@@ -691,16 +705,17 @@ end;
691705 // 過去ログ用Download関数
692706 // *************************************************************************
693707 function TShitarabaThreadItem.StorageDownload(
694- AURL : string
708+ Path, Document : string
695709 ) : TDownloadState;
696710 var
697711 modified : Double;
698712 tmp : PChar;
699- uri : TIdURI;
700- uriList : TStringList;
701713 downResult : TStringList;
702714 responseCode : Longint;
703715 logStream : TFileStream;
716+ //uri : TIdURI;
717+ //uriList : TStringList;
718+ datURL : string;
704719 tmpText, tmpLine, tmpTitle: string;
705720 tmpHTML: TStringList;
706721
@@ -709,24 +724,23 @@ var
709724 begin
710725
711726 Result := dsError;
712- uri := TIdURI.Create( ReadURL );
713- uriList := TStringList.Create;
727+
728+ //uri := TIdURI.Create( ReadURL );
714729 try
715- ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
716- FileName := uriList[ 5 ] + '.dat';
717- // http://jbbs.livedoor.com/bbs/rawmode.cgi/game/1578/1067968274/l100
718- // protocol://host/1/2/3/4/5/uriList.Count - 1
730+ FileName := Copy(Document, 1, Length(Document) - 5) + '.dat';
719731 if MyLogFolder = '' then begin
720732 // どこに保存していいのか分からないので一時ファイルに保存
721733 FilePath := TemporaryFile;
722734 FIsTemporary := True;
723735 end else begin
724- FilePath := MyLogFolder + uriList[ 3 ] + '\' + uriList[ 4 ] + '\' + uriList[ 5 ] + '.dat';
736+ FilePath := MyLogFolder
737+ + CustomStringReplace(CustomStringReplace(Path, '/storage', ''), '/', '\')
738+ + FileName;
739+
725740 FIsTemporary := False;
726741 end;
727742 finally
728- uri.Free;
729- uriList.Free;
743+ //uri.Free;
730744 end;
731745
732746 // 保存用のディレクトリを掘る
@@ -738,7 +752,8 @@ begin
738752 // InternalDownload に任せることが出来る
739753 modified := LastModified;
740754
741- responseCode := InternalDownload( PChar( AURL ), modified, tmp, 0 );
755+ datURL := ReadURL;
756+ responseCode := InternalDownload( PChar( datURL ), modified, tmp, 0 );
742757
743758 try
744759 if (responseCode = 200) or (responseCode = 206) then begin
@@ -1163,12 +1178,19 @@ begin
11631178 if (tmphost = BBS_HOST_OLD) or (tmphost = BBS_HOST_OLD2) then
11641179 tmphost := BBS_HOST;
11651180
1166- FileName := uriList[ 5 ] + '.dat';
1167- // http://jbbs.livedoor.com/bbs/read.cgi/computer/351/1090404452/l100
1168- // http://jbbs.livedoor.com/bbs/read.cgi/game/1578/1067968274/l100
1169- // http://jbbs.livedoor.com/game/1000/subject.txt
1170- Result := CreateResultString(
1171- uri.Protocol + '://' + tmphost + '/' + uriList[ 3 ] + '/' + uriList[ 4 ] + '/' );
1181+ if( AnsiPos('.html', uri.Document) = 0 ) then begin //通常
1182+ FileName := uriList[ 5 ] + '.dat';
1183+ // http://jbbs.livedoor.com/bbs/read.cgi/computer/351/1090404452/l100
1184+ // http://jbbs.livedoor.com/bbs/read.cgi/game/1578/1067968274/l100
1185+ // http://jbbs.livedoor.com/game/1000/subject.txt
1186+ Result := CreateResultString(
1187+ uri.Protocol + '://' + tmphost + '/' + uriList[ 3 ] + '/' + uriList[ 4 ] + '/' );
1188+ end else begin
1189+ //http://jbbs.livedoor.com/game/1578/storage/1086710948.html
1190+ Result := CreateResultString(
1191+ uri.Protocol + '://' + tmphost + CustomStringReplace(uri.Path, '/storage', ''));
1192+ end;
1193+
11721194 finally
11731195 uri.Free;
11741196 uriList.Free;
@@ -1265,8 +1287,7 @@ begin
12651287 end else if AnsiPos(THREAD_MARK, URL) = 0 then begin
12661288 //ココで過去ログかどうかチェック?
12671289 if(AnsiPos('.html/', uri.Path) > 0) then begin
1268- Result := uri.Protocol + '://' + tmphost + THREAD_MARK +
1269- CustomStringReplace(CustomStringReplace(uri.Path, '/storage', ''), '.html/', '/') + 'l100';
1290+ Result := uri.Protocol + '://' + tmphost + Copy(uri.Path, 1, Length(uri.Path) - 1);
12701291 end else
12711292 Result := URL;
12721293 end;
@@ -1334,6 +1355,12 @@ begin
13341355 Result :=
13351356 uri.Protocol + '://' + tmphost + '/bbs/rawmode.cgi/' +
13361357 uriList[ 3 ] + '/' + uriList[ 4 ] + '/' + uriList[ 5 ] + '/';
1358+ end else if AnsiPos(THREAD_MARK, URL) = 0 then begin
1359+ //ココで過去ログかどうかチェック?
1360+ if(AnsiPos('.html/', uri.Path) > 0) then begin
1361+ Result := uri.Protocol + '://' + tmphost + Copy(uri.Path, 1, Length(uri.Path) - 1);
1362+ end else
1363+ Result := URL;
13371364 end;
13381365 finally
13391366 uri.Free;
Show on old repository browser