AbonUnit;
type
+ // =========================================================================
+ // PlugInMain \8aÖ\98A
+ // =========================================================================
+
+ // \83_\83E\83\93\83\8d\81[\83h\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
+ TDownloadState = (dsWait, dsWork, dsComplete, dsDiffComplete, dsNotModify, dsAbort, dsError);
+
+ // *************************************************************************
+ // \83v\83\89\83O\83C\83\93\82Ì\83o\81[\83W\83\87\83\93
+ // *************************************************************************
+ TOnVersionInfo = procedure(
+ var outAgent : PChar; // \83o\81[\83W\83\87\83\93\82ð\88ê\90Ø\8aÜ\82Ü\82È\82¢\8f\83\90\88\82È\96¼\8fÌ
+ var outMajor : DWORD; // \83\81\83W\83\83\81[\83o\81[\83W\83\87\83\93
+ var outMinor : DWORD; // \83}\83C\83i\81[\83o\81[\83W\83\87\83\93
+ var outRelease : PChar; // \83\8a\83\8a\81[\83X\92i\8aK\96¼
+ var outRevision : DWORD // \83\8a\83r\83W\83\87\83\93\83i\83\93\83o\81[
+ ); stdcall;
+
+ // *************************************************************************
+ // \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
+ // *************************************************************************
+ TOnAcceptURL = function(
+ inURL : PChar // \94»\92f\82ð\8bÂ\82¢\82Å\82¢\82é URL
+ ): Boolean; stdcall; // \8eó\82¯\95t\82¯\82é\82È\82ç True
+
+ // *************************************************************************
+ // \83X\83\8c\88ê\97\97\82Ì URL \82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\93±\82«\8fo\82·
+ // *************************************************************************
+ TOnListURL2ThreadURL = function(
+ inListURL : PChar; // \83X\83\8c\88ê\97\97\82ð\8e¦\82µ\82½ URL
+ inFileName : PChar // \83X\83\8c\83b\83h\83t\83@\83C\83\8b\96¼
+ ) : PChar; stdcall; // \83X\83\8c\83b\83h\82Ì URL
+
+
+
+ // =========================================================================
+ // TThreadItem \8aÖ\98A
+ // =========================================================================
+
// TThreadItem \82Ì\83v\83\8d\83p\83e\83B\90Ý\92è\81^\8eæ\93¾ ID
TThreadItemProperty = (
tipContext, // : DWORD // \8e©\97R\82É\90Ý\92è\82µ\82Ä\82¢\82¢\92l
);
// *************************************************************************
- // \83v\83\89\83O\83C\83\93\82Ì\83o\81[\83W\83\87\83\93
- // *************************************************************************
- TOnVersionInfo = procedure(
- var outAgent : PChar; // \83o\81[\83W\83\87\83\93\82ð\88ê\90Ø\8aÜ\82Ü\82È\82¢\8f\83\90\88\82È\96¼\8fÌ
- var outMajor : DWORD; // \83\81\83W\83\83\81[\83o\81[\83W\83\87\83\93
- var outMinor : DWORD; // \83}\83C\83i\81[\83o\81[\83W\83\87\83\93
- var outRelease : PChar; // \83\8a\83\8a\81[\83X\92i\8aK\96¼
- var outRevision : DWORD // \83\8a\83r\83W\83\87\83\93\83i\83\93\83o\81[
- ); stdcall;
-
- // *************************************************************************
- // \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
- // *************************************************************************
- TOnAcceptURL = function(
- inURL : PChar // \94»\92f\82ð\8bÂ\82¢\82Å\82¢\82é URL
- ): Boolean; stdcall; // \8eó\82¯\95t\82¯\82é\82È\82ç True
-
- // *************************************************************************
// TThreadItem \82ª\90¶\90¬\82³\82ê\82½
// *************************************************************************
TThreadItemCreate = procedure(
// *************************************************************************
// \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
// *************************************************************************
- TThreadItemOnDownload = procedure(
- inInstance : DWORD // \83C\83\93\83X\83^\83\93\83X
- ); stdcall; // \83_\83E\83\93\83\8d\81[\83h\82³\82ê\82½\83X\83\8c\83b\83h
+ TThreadItemOnDownload = function(
+ inInstance : DWORD // \83C\83\93\83X\83^\83\93\83X
+ ) : TDownloadState; stdcall; // \83_\83E\83\93\83\8d\81[\83h\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
// *************************************************************************
// \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é html \82ð\97v\8b\81\82³\82ê\82½
// =========================================================================
+ // TBoardItem \8aÖ\98A
+ // =========================================================================
+
+ // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\90Ý\92è\81^\8eæ\93¾ ID
+ TBoardItemProperty = (
+ bipContext, // : DWORD // \8e©\97R\82É\90Ý\92è\82µ\82Ä\82¢\82¢\92l
+ bipItems, // : TThreadItem // \94Â\82É\8cq\82ª\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h
+ bipNo, // : Integer // \94Ô\8d\86
+ bipTitle, // : string // \94Â\83^\83C\83g\83\8b
+ bipRoundDate, // : TDateTime // \94Â\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e\81i\8f\84\89ñ\93ú\8e\9e\81j
+ bipLastModified, // : TDateTime // \94Â\82ª\8dX\90V\82³\82ê\82Ä\82¢\82é\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81j
+ 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
+ bipRound, // : Boolean // \8f\84\89ñ\97\\96ñ
+ bipRoundName, // : string // \8f\84\89ñ\96¼
+ bipIsLogFile, // : Boolean // \83\8d\83O\91¶\8dÝ\83t\83\89\83O
+ bipUnRead, // : Integer // \83X\83\8c\83b\83h\96¢\93Ç\90\94
+ bipURL, // : string // \94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
+ bipFilePath // : string // \82±\82Ì\94Â\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
+ );
+
+ // *************************************************************************
+ // TBoardItem \82ª\90¶\90¬\82³\82ê\82½
+ // *************************************************************************
+ TBoardItemCreate = procedure(
+ inInstance : DWORD
+ ); stdcall;
+
+ // *************************************************************************
+ // TBoardItem \82ª\94j\8aü\82³\82ê\82½
+ // *************************************************************************
+ TBoardItemDispose = procedure(
+ inInstance : DWORD
+ ); stdcall;
+
+ // *************************************************************************
+ // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
+ // *************************************************************************
+ TBoardItemOnDownload = function(
+ inInstance : DWORD // \83C\83\93\83X\83^\83\93\83X
+ ) : TDownloadState; stdcall; // \83_\83E\83\93\83\8d\81[\83h\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
+
+ // *************************************************************************
+ // \8ae\83X\83\8c\82Ì\8fî\95ñ\82ð\95Ô\8bp
+ // *************************************************************************
+ TBoardItemEnumThreadCallBack = function(
+ inURL : PChar; // \83X\83\8c\83b\83h\82Ì URL
+ inTitle : PChar; // \83X\83\8c\83^\83C
+ inCount : DWORD // \83\8c\83X\82Ì\90\94
+ ) : Boolean; stdcall; // \97ñ\8b\93\82ð\91±\82¯\82é\82È\82ç True
+
+ // *************************************************************************
+ // \82±\82Ì\94Â\82É\95Û\97L\82µ\82Ä\82¢\82é\83X\83\8c\82ð\97ñ\8b\93
+ // *************************************************************************
+ TBoardItemOnEnumThread = procedure(
+ inInstance : DWORD; // \83C\83\93\83X\83^\83\93\83X
+ inCallBack : TBoardItemEnumThreadCallBack // \95Ô\8bp\82·\82×\82«\83R\81[\83\8b\83o\83b\83N
+ ); stdcall;
+
+
+
+ // =========================================================================
// \83v\83\89\83O\83C\83\93\82ð\8aÇ\97\9d\82·\82é TBoardPlugin \83N\83\89\83X
// =========================================================================
TBoardPlugIn = class( TObject )
FVersionInfo : TOnVersionInfo;
FAcceptURL : TOnAcceptURL;
+
FCreateThreadItem : TThreadItemCreate;
FDisposeThreadItem : TThreadItemDispose;
- FDownload : TThreadItemOnDownload;
+ FDownloadThread : TThreadItemOnDownload;
FGetRes : TThreadItemOnGetRes;
FGetHeader : TThreadItemOnGetHeader;
FGetFooter : TThreadItemOnGetFooter;
+ FCreateBoardItem : TBoardItemCreate;
+ FDisposeBoardItem : TBoardItemDispose;
+ FDownloadBoard : TBoardItemOnDownload;
+ FEnumThread : TBoardItemOnEnumThread;
+
public
// \83R\83\93\83X\83g\83\89\83N\83^
constructor Create;
procedure LoadFromName( inName : string );
// \83\82\83W\83\85\81[\83\8b\83n\83\93\83h\83\8b\82ð\8ew\92è\82µ\82Ä\83\8d\81[\83h
procedure LoadFromModule( inModule : HMODULE );
+
+ //===== PlugInMain \8aÖ\98A
// \83o\81[\83W\83\87\83\93\8fî\95ñ
procedure VersionInfo( var outAgent : string;
var outMajor : DWORD; var outMinor : DWORD;
var outRelease : string; var outRevision : DWORD );
// \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
function AcceptURL( inURL : string ) : Boolean;
+
+ //===== TThreadItem \8aÖ\98A
// TThreadItem \82ª\90¶\90¬\82³\82ê\82½
procedure CreateThreadItem( threadItem : DWORD );
// TThreadItem \82ª\94j\8aü\82³\82ê\82½
procedure DisposeThreadItem( threadItem : DWORD );
// \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
- procedure Download( threadItem: DWORD );
+ function DownloadThread( threadItem : DWORD ) : TDownloadState;
// \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é html \82ð\97v\8b\81
function GetRes( threadItem : DWORD; inNo : DWORD ) : string;
// \83X\83\8c\83b\83h\82Ì\83w\83b\83_ html \82ð\97v\8b\81
// \83X\83\8c\83b\83h\82Ì\83t\83b\83^ html \82ð\97v\8b\81
function GetFooter( threadItem : DWORD; inOptionalFooter : string ) : string;
+ //===== TBoardItem \8aÖ\98A
+ // TBoard \82ª\90¶\90¬\82³\82ê\82½
+ procedure CreateBoardItem( boardItem : DWORD );
+ // TBoardItem \82ª\94j\8aü\82³\82ê\82½
+ procedure DisposeBoardItem( boardItem : DWORD );
+ // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
+ function DownloadBoard( boardItem : DWORD ) : TDownloadState;
+ // \82±\82Ì\94Â\82É\95Û\97L\82µ\82Ä\82¢\82é\83X\83\8c\82ð\97ñ\8b\93
+ procedure EnumThread( inInstance : DWORD; inCallBack : TBoardItemEnumThreadCallBack );
+
private
procedure LoadPlugInAPI;
uses GikoSystem, BoardGroup;
-// =========================================================================
-// \83v\83\89\83O\83C\83\93\82ð\8aÇ\97\9d\82·\82é TBoardPlugin \83N\83\89\83X
-// =========================================================================
-
// *************************************************************************
// BoardPlugin \83t\83H\83\8b\83_\82É\82 \82é\83v\83\89\83O\83C\83\93\82ð\91S\82Ä\83\8d\81[\83h
// *************************************************************************
FVersionInfo := nil;
FAcceptURL := nil;
+
FCreateThreadItem := nil;
FDisposeThreadItem := nil;
- FDownload := nil;
+ FDownloadThread := nil;
FGetRes := nil;
FGetHeader := nil;
FGetFooter := nil;
+ FCreateBoardItem := nil;
+ FDisposeBoardItem := nil;
+ FDownloadBoard := nil;
+ FEnumThread := nil;
+
end;
// *************************************************************************
// *************************************************************************
// \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
// *************************************************************************
-procedure TBoardPlugIn.Download( threadItem: DWORD );
+function TBoardPlugIn.DownloadThread(
+ threadItem : DWORD
+) : TDownloadState;
begin
- if Assigned( FDownload ) then
- FDownload( threadItem );
+ if Assigned( FDownloadThread ) then
+ Result := FDownloadThread( threadItem )
+ else
+ Result := dsError;
end;
end;
// *************************************************************************
+// TBoardItem \82ª\90¶\90¬\82³\82ê\82½
+// *************************************************************************
+procedure TBoardPlugIn.CreateBoardItem(
+ BoardItem : DWORD
+);
+begin
+
+ if Assigned( FCreateBoardItem ) then
+ FCreateBoardItem( BoardItem );
+
+end;
+
+// *************************************************************************
+// TBoardItem \82ª\94j\8aü\82³\82ê\82½
+// *************************************************************************
+procedure TBoardPlugIn.DisposeBoardItem(
+ BoardItem : DWORD
+);
+begin
+
+ if Assigned( FDisposeBoardItem ) then
+ FDisposeBoardItem( BoardItem );
+
+end;
+
+// *************************************************************************
+// \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
+// *************************************************************************
+function TBoardPlugIn.DownloadBoard(
+ BoardItem : DWORD
+) : TDownloadState;
+begin
+
+ if Assigned( FDownloadBoard ) then
+ Result := FDownloadBoard( BoardItem )
+ else
+ Result := dsError;
+
+end;
+
+// *************************************************************************
+// \82±\82Ì\94Â\82É\95Û\97L\82µ\82Ä\82¢\82é\83X\83\8c\82ð\97ñ\8b\93
+// *************************************************************************
+procedure TBoardPlugIn.EnumThread(
+ inInstance : DWORD;
+ inCallBack : TBoardItemEnumThreadCallBack
+);
+begin
+
+ if Assigned( FEnumThread ) then
+ FEnumThread( inInstance, inCallBack );
+
+end;
+
+// *************************************************************************
// \83v\83\89\83O\83C\83\93\82Ì API \82ð\8eæ\93¾
// *************************************************************************
procedure TBoardPlugIn.LoadPlugInAPI;
if Assigned( Pointer( FModule ) ) then begin
FVersionInfo := GetProcAddress( FModule, 'OnVersionInfo' );
FAcceptURL := GetProcAddress( FModule, 'OnAcceptURL' );
+
FCreateThreadItem := GetProcAddress( FModule, 'ThreadItemCreate' );
FDisposeThreadItem := GetProcAddress( FModule, 'ThreadItemDispose' );
- FDownload := GetProcAddress( FModule, 'ThreadItemOnDownload' );
+ FDownloadThread := GetProcAddress( FModule, 'ThreadItemOnDownload' );
FGetRes := GetProcAddress( FModule, 'ThreadItemOnGetRes' );
FGetHeader := GetProcAddress( FModule, 'ThreadItemOnGetHeader' );
FGetFooter := GetProcAddress( FModule, 'ThreadItemOnGetFooter' );
+
+ FCreateBoardItem := GetProcAddress( FModule, 'BoardItemCreate' );
+ FDisposeBoardItem := GetProcAddress( FModule, 'BoardItemDispose' );
+ FDownloadBoard := GetProcAddress( FModule, 'BoardItemOnDownload' );
+ FEnumThread := GetProcAddress( FModule, 'BoardItemOnEnumThread' );
end;
except
end;
end;
// *************************************************************************
-// \83_\83E\83\93\83\8d\81[\83h\82ª\90i\8ds\82µ\82½
+// \83X\83\8c\83b\83h\82Ì\83_\83E\83\93\83\8d\81[\83h\82ª\90i\8ds\82µ\82½
// *************************************************************************
procedure ThreadItemWork(
inInstance : DWORD; // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
end;
// *************************************************************************
-// \83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½
+// \83X\83\8c\83b\83h\82Ì\83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½
// *************************************************************************
procedure ThreadItemWorkBegin(
inInstance : DWORD; // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
end;
// *************************************************************************
-// \83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½
+// \83X\83\8c\83b\83h\82Ì\83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½
// *************************************************************************
procedure ThreadItemWorkEnd(
inInstance : DWORD // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
end;
+
+
+// =========================================================================
+// BoardItem
+// =========================================================================
+
+// *************************************************************************
+// TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\8eæ\93¾\82·\82é
+// *************************************************************************
+function BoardItemGetLong(
+ instance : DWORD;
+ propertyID : TBoardItemProperty
+) : DWORD; stdcall;
+var
+ boardItem : TBoard;
+begin
+
+ boardItem := TBoard( instance );
+ case propertyID of
+ bipContext: // : DWORD // \8e©\97R\82É\90Ý\92è\82µ\82Ä\82¢\82¢\92l
+ Result := boardItem.Context;
+ bipNo: // : Integer // \94Ô\8d\86
+ Result := boardItem.No;
+ bipTitle: // : string // \83X\83\8c\83b\83h\83^\83C\83g\83\8b
+ Result := DWORD( CreateResultString( boardItem.Title ) );
+ bipRound: // : Boolean // \8f\84\89ñ\83t\83\89\83O
+ Result := DWORD( boardItem.Round );
+ bipRoundName: // : string // \8f\84\89ñ\96¼
+ Result := DWORD( CreateResultString( boardItem.RoundName ) );
+ bipIsLogFile: // : Boolean // \83\8d\83O\91¶\8dÝ\83t\83\89\83O
+ Result := DWORD( boardItem.IsLogFile );
+ bipUnRead: // : Integer // \83X\83\8c\83b\83h\96¢\93Ç\90\94
+ Result := DWORD( boardItem.UnRead );
+ bipURL: // : string // \83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
+ Result := DWORD( CreateResultString( boardItem.URL ) );
+ bipFilePath: // \82±\82Ì\83X\83\8c\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
+ Result := DWORD( CreateResultString( boardItem.FilePath ) );
+ else
+ Result := 0;
+ end;
+end;
+
+// *************************************************************************
+// TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\90Ý\92è\82·\82é
+// *************************************************************************
+procedure BoardItemSetLong(
+ instance : DWORD;
+ propertyID : TBoardItemProperty;
+ param : DWORD
+); stdcall;
+var
+ boardItem : TBoard;
+begin
+
+ boardItem := TBoard( instance );
+ case propertyID of
+ bipContext: // : DWORD // \8e©\97R\82É\90Ý\92è\82µ\82Ä\82¢\82¢\92l
+ boardItem.Context := param;
+ bipNo: // : Integer // \94Ô\8d\86
+ boardItem.No := param;
+ bipTitle: // : string // \83X\83\8c\83b\83h\83^\83C\83g\83\8b
+ boardItem.Title := string( PChar( param ) );
+ bipRound: // : Boolean // \8f\84\89ñ\83t\83\89\83O
+ boardItem.Round := Boolean( param );
+ bipRoundName: // : string // \8f\84\89ñ\96¼
+ boardItem.RoundName := string( PChar( param ) );
+ bipIsLogFile: // : Boolean // \83\8d\83O\91¶\8dÝ\83t\83\89\83O
+ boardItem.IsLogFile := Boolean( param );
+ bipUnRead: // : Integer // \83X\83\8c\83b\83h\96¢\93Ç\90\94
+ boardItem.UnRead := Integer( param );
+ bipURL: // : string // \83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
+ boardItem.URL := string( PChar( param ) );
+ bipFilePath: // : string // \82±\82Ì\83X\83\8c\82ª\95Û\91¶\82³\82ê\82Ä\82¢\82é\83p\83X
+ boardItem.FilePath := string( PChar( param ) );
+ end;
+
+end;
+
+// *************************************************************************
+// TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\8eæ\93¾\82·\82é
+// *************************************************************************
+function BoardItemGetDouble(
+ instance : DWORD;
+ propertyID : TBoardItemProperty
+) : Double; stdcall;
+var
+ boardItem : TBoard;
+begin
+
+ boardItem := TBoard( instance );
+ case propertyID of
+ bipRoundDate: // : TDateTime // \83X\83\8c\83b\83h\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e\81i\8f\84\89ñ\93ú\8e\9e\81j
+ Result := boardItem.RoundDate;
+ 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
+ Result := boardItem.LastModified;
+ 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
+ Result := boardItem.LastGetTime;
+ else
+ Result := 0;
+ end;
+
+end;
+
+// *************************************************************************
+// TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\90Ý\92è\82·\82é
+// *************************************************************************
+procedure BoardItemSetDouble(
+ instance : DWORD;
+ propertyID : TBoardItemProperty;
+ param : Double
+); stdcall;
+var
+ boardItem : TBoard;
+begin
+
+ boardItem := TBoard( instance );
+ case propertyID of
+ bipRoundDate: // : TDateTime // \83X\83\8c\83b\83h\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e\81i\8f\84\89ñ\93ú\8e\9e\81j
+ boardItem.RoundDate := param;
+ 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
+ boardItem.LastModified := param;
+ 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
+ boardItem.LastGetTime := param;
+ end;
+
+end;
+
+// *************************************************************************
+// \94Â\82Ì\83_\83E\83\93\83\8d\81[\83h\82ª\90i\8ds\82µ\82½
+// *************************************************************************
+procedure BoardItemWork(
+ inInstance : DWORD; // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
+ inWorkCount : Integer // \8c»\8dÝ\82Ì\90i\95à\8fó\8bµ(\83J\83E\83\93\83g)
+); stdcall;
+begin
+
+ if Assigned( OnWork ) then
+ OnWork( TObject( inInstance ), wmRead, inWorkCount );
+
+end;
+
+// *************************************************************************
+// \94Â\82Ì\83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½
+// *************************************************************************
+procedure BoardItemWorkBegin(
+ inInstance : DWORD; // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
+ inWorkCountMax : Integer // \92Ê\90M\82Ì\8fI\82í\82è\82ð\8e¦\82·\83J\83E\83\93\83g
+); stdcall;
+begin
+
+ if Assigned( OnWorkBegin ) then
+ OnWorkBegin( TObject( inInstance ), wmRead, inWorkCountMax );
+
+end;
+
+// *************************************************************************
+// \94Â\82Ì\83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½
+// *************************************************************************
+procedure BoardItemWorkEnd(
+ inInstance : DWORD // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
+); stdcall;
+begin
+
+ if Assigned( OnWorkEnd ) then
+ OnWorkEnd( TObject( inInstance ), wmRead );
+
+end;
+
+// *************************************************************************
+// \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½
+// *************************************************************************
+procedure BoardItemEnumThread(
+ inInstance : DWORD;
+ inCallBack : TBoardItemEnumThreadCallBack;
+ inSubjectText : PChar
+); stdcall;
+var
+ board : TBoard;
+ subject : TStringList;
+ i : Integer;
+ rec : TSubjectRec;
+ isContinue : Boolean;
+begin
+
+ try
+ board := TBoard( inInstance );
+ subject := TStringList.Create;
+ try
+ subject.Text := inSubjectText;
+
+ for i := 0 to subject.Count - 1 do begin
+ rec := GikoSys.DivideSubject( subject[i] );
+ rec.FFileName := Trim(rec.FFileName);
+ if (rec.FTitle = '') and (rec.FCount = 0) then
+ Continue;
+
+ isContinue := inCallBack(
+ PChar( GikoSys.GetURL( board.BBSID, rec.FFileName ) ),
+ PChar( rec.FTitle ),
+ DWORD( rec.FCount ) );
+
+ if ( not isContinue ) then
+ Break;
+ end;
+ finally
+ subject.Free;
+ end;
+ except
+ end;
+
+end;
+
exports
CreateResultString,
DisposeResultString,
ThreadItemGetFooter,
ThreadItemWork,
ThreadItemWorkBegin,
- ThreadItemWorkEnd;
+ ThreadItemWorkEnd,
+ BoardItemGetLong,
+ BoardItemSetLong,
+ BoardItemGetDouble,
+ BoardItemSetDouble,
+ BoardItemEnumThread,
+ BoardItemWork,
+ BoardItemWorkBegin,
+ BoardItemWorkEnd;
end.