1 unit ExternalBoardItem;
6 Windows, Classes, SysUtils,
8 ExternalBoardPlugInMain;
11 // TBoardItem
\82Ì
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
\81^
\8eæ
\93¾ ID
12 TBoardItemProperty = (
13 bipContext, // : DWORD //
\8e©
\97R
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82¢
\92l
14 bipItems, // : TThreadItem //
\94Â
\82É
\8cq
\82ª
\82ê
\82Ä
\82¢
\82é
\83X
\83\8c\83b
\83h
15 bipNo, // : Integer //
\94Ô
\8d\86
16 bipTitle, // : string //
\94Â
\83^
\83C
\83g
\83\8b
17 bipRoundDate, // : TDateTime //
\94Â
\82ð
\8eæ
\93¾
\82µ
\82½
\93ú
\8e\9e\81i
\8f\84\89ñ
\93ú
\8e\9e\81j
18 bipLastModified, // : TDateTime //
\94Â
\82ª
\8dX
\90V
\82³
\82ê
\82Ä
\82¢
\82é
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81j
19 bipLastGetTime, // : TDateTime //
\83X
\83\8c\83b
\83h
\82Ü
\82½
\82Í
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\8dÅ
\8cã
\82É
\8dX
\90V
\82µ
\82½
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81E
\8f\91\82«
\8d\9e\82Ý
\8e\9e\82É
\8eg
\97p
\82·
\82é
\81j
20 bipRound, // : Boolean //
\8f\84\89ñ
\97\
\96ñ
21 bipRoundName, // : string //
\8f\84\89ñ
\96¼
22 bipIsLogFile, // : Boolean //
\83\8d\83O
\91¶
\8dÝ
\83t
\83\89\83O
23 bipUnRead, // : Integer //
\83X
\83\8c\83b
\83h
\96¢
\93Ç
\90\94
24 bipURL, // : string //
\94Â
\82ð
\83u
\83\89\83E
\83U
\82Å
\95\
\8e¦
\82·
\82é
\8dÛ
\82Ì URL
25 bipFilePath, // : string //
\82±
\82Ì
\94Â
\82ª
\95Û
\91¶
\82³
\82ê
\82Ä
\82¢
\82é
\83p
\83X
26 bipIs2ch // : Boolean //
\83z
\83X
\83g
\82ª2ch
\82©
\82Ç
\82¤
\82©
29 // *************************************************************************
30 // TBoardItem
\82ª
\90¶
\90¬
\82³
\82ê
\82½
31 // *************************************************************************
32 TBoardItemCreate = procedure(
36 // *************************************************************************
37 // TBoardItem
\82ª
\94j
\8aü
\82³
\82ê
\82½
38 // *************************************************************************
39 TBoardItemDispose = procedure(
43 // *************************************************************************
44 //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8ew
\8e¦
\82³
\82ê
\82½
45 // *************************************************************************
46 TBoardItemOnDownload = function(
47 inInstance : DWORD //
\83C
\83\93\83X
\83^
\83\93\83X
48 ) : TDownloadState; stdcall; //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\90¬
\8c÷
\82µ
\82½
\82©
\82Ç
\82¤
\82©
50 // *************************************************************************
51 //
\83X
\83\8c\97§
\82Ä
\82ð
\8ew
\8e¦
52 // *************************************************************************
53 TBoardItemOnCreateThread = function(
54 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
55 inSubject : PChar; //
\83X
\83\8c\83^
\83C
56 inName : PChar; //
\96¼
\91O(
\83n
\83\93\83h
\83\8b)
57 inMail : PChar; //
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
58 inMessage : PChar //
\96{
\95¶
59 ) : TDownloadState; stdcall; //
\8f\91\82«
\8d\9e\82Ý
\82ª
\90¬
\8c÷
\82µ
\82½
\82©
\82Ç
\82¤
\82©
61 // *************************************************************************
62 //
\8ae
\83X
\83\8c\82Ì
\8fî
\95ñ
\82ð
\95Ô
\8bp
63 // *************************************************************************
64 TBoardItemEnumThreadCallBack = function(
65 inInstance : DWORD; // TBoardItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
66 inURL : PChar; //
\83X
\83\8c\83b
\83h
\82Ì URL
67 inTitle : PChar; //
\83X
\83\8c\83^
\83C
68 inCount : DWORD //
\83\8c\83X
\82Ì
\90\94
69 ) : Boolean; stdcall; //
\97ñ
\8b\93\82ð
\91±
\82¯
\82é
\82È
\82ç True
71 // *************************************************************************
72 //
\82±
\82Ì
\94Â
\82É
\95Û
\97L
\82µ
\82Ä
\82¢
\82é
\83X
\83\8c\82ð
\97ñ
\8b\93
73 // *************************************************************************
74 TBoardItemOnEnumThread = procedure(
75 inInstance : DWORD; //
\83C
\83\93\83X
\83^
\83\93\83X
76 inCallBack : TBoardItemEnumThreadCallBack //
\95Ô
\8bp
\82·
\82×
\82«
\83R
\81[
\83\8b\83o
\83b
\83N
79 // *************************************************************************
80 //
\83t
\83@
\83C
\83\8b\96¼
\82©
\82ç
\83X
\83\8c\83b
\83h
\82Ì URL
\82ð
\97v
\8b\81\82³
\82ê
\82½
81 // *************************************************************************
82 TBoardItemOnFileName2ThreadURL = function(
83 inInstance : DWORD; //
\83C
\83\93\83X
\83^
\83\93\83X
84 inFileName : PChar //
\8c³
\82É
\82È
\82é
\83t
\83@
\83C
\83\8b\96¼
89 uses ExternalBoardManager, GikoSystem, BoardGroup, MojuUtils;
91 // *************************************************************************
92 // TBoardItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\8eæ
\93¾
\82·
\82é
93 // *************************************************************************
94 function BoardItemGetLong(
96 propertyID : TBoardItemProperty
102 boardItem := TBoard( instance );
104 bipContext: // : DWORD //
\8e©
\97R
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82¢
\92l
105 Result := boardItem.Context;
106 bipNo: // : Integer //
\94Ô
\8d\86
107 Result := boardItem.No;
108 bipTitle: // : string //
\83X
\83\8c\83b
\83h
\83^
\83C
\83g
\83\8b
109 Result := DWORD( CreateResultString( boardItem.Title ) );
110 bipRound: // : Boolean //
\8f\84\89ñ
\83t
\83\89\83O
111 Result := DWORD( boardItem.Round );
112 bipRoundName: // : string //
\8f\84\89ñ
\96¼
113 Result := DWORD( CreateResultString( boardItem.RoundName ) );
114 bipIsLogFile: // : Boolean //
\83\8d\83O
\91¶
\8dÝ
\83t
\83\89\83O
115 Result := DWORD( boardItem.IsLogFile );
116 bipUnRead: // : Integer //
\83X
\83\8c\83b
\83h
\96¢
\93Ç
\90\94
117 Result := DWORD( boardItem.UnRead );
118 bipURL: // : string //
\83X
\83\8c\83b
\83h
\82ð
\83u
\83\89\83E
\83U
\82Å
\95\
\8e¦
\82·
\82é
\8dÛ
\82Ì URL
119 Result := DWORD( CreateResultString( boardItem.URL ) );
120 bipFilePath: //
\82±
\82Ì
\83X
\83\8c\82ª
\95Û
\91¶
\82³
\82ê
\82Ä
\82¢
\82é
\83p
\83X
121 Result := DWORD( CreateResultString( boardItem.FilePath ) );
123 Result := DWORD( boardItem.Is2ch );
129 // *************************************************************************
130 // TBoardItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\90Ý
\92è
\82·
\82é
131 // *************************************************************************
132 procedure BoardItemSetLong(
134 propertyID : TBoardItemProperty;
141 boardItem := TBoard( instance );
143 bipContext: // : DWORD //
\8e©
\97R
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82¢
\92l
144 boardItem.Context := param;
145 bipNo: // : Integer //
\94Ô
\8d\86
146 boardItem.No := param;
147 bipTitle: // : string //
\83X
\83\8c\83b
\83h
\83^
\83C
\83g
\83\8b
148 boardItem.Title := string( PChar( param ) );
149 bipRound: // : Boolean //
\8f\84\89ñ
\83t
\83\89\83O
150 boardItem.Round := Boolean( param );
151 bipRoundName: // : string //
\8f\84\89ñ
\96¼
152 //boardItem.RoundName := string( PChar( param ) );
153 boardItem.RoundName := PChar( param );
154 bipIsLogFile: // : Boolean //
\83\8d\83O
\91¶
\8dÝ
\83t
\83\89\83O
155 boardItem.IsLogFile := Boolean( param );
156 bipUnRead: // : Integer //
\83X
\83\8c\83b
\83h
\96¢
\93Ç
\90\94
157 boardItem.UnRead := Integer( param );
158 bipURL: // : string //
\83X
\83\8c\83b
\83h
\82ð
\83u
\83\89\83E
\83U
\82Å
\95\
\8e¦
\82·
\82é
\8dÛ
\82Ì URL
159 boardItem.URL := string( PChar( param ) );
160 bipFilePath: // : string //
\82±
\82Ì
\83X
\83\8c\82ª
\95Û
\91¶
\82³
\82ê
\82Ä
\82¢
\82é
\83p
\83X
161 boardItem.FilePath := string( PChar( param ) );
163 boardItem.Is2ch := Boolean( param );
168 // *************************************************************************
169 // TBoardItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\8eæ
\93¾
\82·
\82é
170 // *************************************************************************
171 function BoardItemGetDouble(
173 propertyID : TBoardItemProperty
179 boardItem := TBoard( instance );
181 bipRoundDate: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ð
\8eæ
\93¾
\82µ
\82½
\93ú
\8e\9e\81i
\8f\84\89ñ
\93ú
\8e\9e\81j
182 Result := boardItem.RoundDate;
183 bipLastModified: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ª
\8dX
\90V
\82³
\82ê
\82Ä
\82¢
\82é
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81j
184 Result := boardItem.LastModified;
185 bipLastGetTime: // : TDateTime //
\83X
\83\8c\83b
\83h
\82Ü
\82½
\82Í
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\8dÅ
\8cã
\82É
\8dX
\90V
\82µ
\82½
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81E
\8f\91\82«
\8d\9e\82Ý
\8e\9e\82É
\8eg
\97p
\82·
\82é
\81j
186 Result := boardItem.LastGetTime;
193 // *************************************************************************
194 // TBoardItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\90Ý
\92è
\82·
\82é
195 // *************************************************************************
196 procedure BoardItemSetDouble(
198 propertyID : TBoardItemProperty;
205 boardItem := TBoard( instance );
207 bipRoundDate: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ð
\8eæ
\93¾
\82µ
\82½
\93ú
\8e\9e\81i
\8f\84\89ñ
\93ú
\8e\9e\81j
208 boardItem.RoundDate := param;
209 bipLastModified: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ª
\8dX
\90V
\82³
\82ê
\82Ä
\82¢
\82é
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81j
210 boardItem.LastModified := param;
211 bipLastGetTime: // : TDateTime //
\83X
\83\8c\83b
\83h
\82Ü
\82½
\82Í
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\8dÅ
\8cã
\82É
\8dX
\90V
\82µ
\82½
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81E
\8f\91\82«
\8d\9e\82Ý
\8e\9e\82É
\8eg
\97p
\82·
\82é
\81j
212 boardItem.LastGetTime := param;
217 // *************************************************************************
218 // TBoardItem
\83N
\83\89\83X
\82É
\8cq
\82ª
\82ê
\82Ä
\82¢
\82é TThreadItem
\83N
\83\89\83X
\82ð
\8eæ
\93¾
\82·
\82é
219 // *************************************************************************
220 function BoardItemGetItems(
228 boardItem := TBoard( instance );
229 Result := DWORD( boardItem.Items[ index ] );
233 // *************************************************************************
234 //
\94Â
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\90i
\8ds
\82µ
\82½
235 // *************************************************************************
236 procedure BoardItemWork(
237 inInstance : DWORD; //
\83N
\83\89\83X
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
238 inWorkCount : Integer //
\8c»
\8dÝ
\82Ì
\90i
\95à
\8fó
\8bµ(
\83J
\83E
\83\93\83g)
242 if Assigned( OnWork ) then
243 OnWork( TObject( inInstance ), wmRead, inWorkCount );
247 // *************************************************************************
248 //
\94Â
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8en
\82Ü
\82Á
\82½
249 // *************************************************************************
250 procedure BoardItemWorkBegin(
251 inInstance : DWORD; //
\83N
\83\89\83X
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
252 inWorkCountMax : Integer //
\92Ê
\90M
\82Ì
\8fI
\82í
\82è
\82ð
\8e¦
\82·
\83J
\83E
\83\93\83g
256 if Assigned( OnWorkBegin ) then
257 OnWorkBegin( TObject( inInstance ), wmRead, inWorkCountMax );
261 // *************************************************************************
262 //
\94Â
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8fI
\82í
\82Á
\82½
263 // *************************************************************************
264 procedure BoardItemWorkEnd(
265 inInstance : DWORD //
\83N
\83\89\83X
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
269 if Assigned( OnWorkEnd ) then
270 OnWorkEnd( TObject( inInstance ), wmRead );
274 // *************************************************************************
275 //
\94Â
\82ª
\95Û
\97L
\82·
\82é
\83X
\83\8c\88ê
\97\97\82Ì
\97ñ
\8b\93\8f\88\97\9d\82ð
\83v
\83\8d\83O
\83\89\83\80\96{
\91Ì
\82É
\94C
\82³
\82ê
\82½
276 // *************************************************************************
277 procedure BoardItemEnumThread(
279 inCallBack : TBoardItemEnumThreadCallBack;
280 inSubjectText : PChar
284 subject : TStringList;
287 isContinue : Boolean;
293 Writeln('ExternalBoardManager.BoardItemEnumThread');
296 board := TBoard( inInstance );
297 subject := TStringList.Create;
299 //FileName
\82É
\82æ
\82Á
\82Ä
\95Ï
\89»
\82·
\82é
\95\94\95ª
\82ð'(FILENAME!)'
\82Æ
\82µ
\82½
\81A
\95¶
\8e\9a\97ñ
\82ð
\82à
\82ç
\82¤
\81B
300 template := board.BoardPlugIn.FileName2ThreadURL( DWORD( board ), '(FILENAME!)' );
301 subject.Text := inSubjectText;
303 for i := 0 to subject.Count - 1 do begin
304 rec := GikoSys.DivideSubject( subject[i] );
305 rec.FFileName := Trim(rec.FFileName);
306 if AnsiPos('.', rec.FFileName) > 0 then
307 rec.FFileName := Copy(rec.FFileName, 1, AnsiPos('.', rec.FFileName) - 1);
308 if (rec.FTitle = '') and (rec.FCount = 0) then
311 //
\83e
\83\93\83v
\83\8c\81[
\83g
\82Ì'(FILENAME!)'
\82ðFileName
\82É
\92u
\8a·
\82·
\82é
312 threadURL := CustomStringReplace(template, '(FILENAME!)', Rec.FFileName);
314 isContinue := inCallBack(
318 DWORD( rec.FCount ) );
320 if ( not isContinue ) then