Classes,
Math,
IdURI,
- YofUtils in '..\..\YofUtils.pas',
PlugInMain in 'PlugInMain.pas',
ThreadItem in 'ThreadItem.pas',
BoardItem in 'BoardItem.pas',
FilePath in 'FilePath.pas',
- PzConv in 'PzConv.pas';
+ Y_TextConverter in 'Y_TextConverter.pas';
{$R *.res}
MAJOR_VERSION = 1;
MINOR_VERSION = 0;
RELEASE_VERSION = 'alpha';
- REVISION_VERSION = 3;
+ REVISION_VERSION = 4;
// =========================================================================
// \8eG\97p\8aÖ\90\94
Result := ForceDirectoriesEx(ExtractFilePath(Dir)) and CreateDir(Dir);
end;
+// \82Æ\82è\82 \82¦\82¸\82Ì\91ã\97p\95i\82È\82Ì\82Å chrWhite \82ð\8dl\97¶\82µ\82Ä\82¢\82È\82¢\82±\82Æ\82É\92\8d\88Ó\81I\81I\81I
+procedure ExtractHttpFields(
+ const chrSep : TSysCharSet;
+ const chrWhite : TSysCharSet;
+ const strValue : string;
+ var strResult : TStringList;
+ unknownFlag : boolean = false
+);
+var
+ last, p, strLen : Integer;
+begin
+
+ strLen := Length( strValue );
+ p := 1;
+ last := 1;
+
+ while p <= strLen do
+ begin
+
+ if strValue[ p ] in chrSep then
+ begin
+ strResult.Add( Copy( strValue, last, p - last ) );
+ last := p + 1;
+ end;
+
+ p := p + 1;
+
+ end;
+
+ if last <> p then
+ strResult.Add( Copy( strValue, last, strLen - last + 1 ) );
+
+end;
+
// =========================================================================
uri := TIdURI.Create( URL + '/' );
uriList := TStringList.Create;
try
- YofUtils.ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
FileName := uriList[ 5 ] + '.dat';
FilePath := MyLogFolder + uriList[ 3 ] + '\' + uriList[ 4 ] + '\' + uriList[ 5 ] + '.dat';
IsLogFile := FileExists( FilePath );
uri := TIdURI.Create( URL + '/' );
uriList := TStringList.Create;
try
- YofUtils.ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
FileName := uriList[ 5 ] + '.dat';
// http://jbbs.shitaraba.com/bbs/read.cgi/game/1578/1067968274/l100
// protocol://host/1/2/3/4/5/uriList.Count - 1
uri := TIdURI.Create( URL + '/' );
uriList := TStringList.Create;
try
- YofUtils.ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
FileName := uriList[ 5 ] + '.dat';
// http://jbbs.shitaraba.com/bbs/read.cgi/game/1578/1067968274/l100
// http://jbbs.shitaraba.com/game/1000/subject.txt
ioHTML : TStringList
);
var
- conv : TPzConv;
i, bound : Integer;
foundPos : Integer;
strTmp : string;
begin
// \82µ\82½\82ç\82Î\82Í EUC \82È\82Ì\82Å Shift_JIS \82É\95Ï\8a·
- conv := TPzConv.Create( nil );
- try
- ioHTML.Text := conv.EucToSJis( ioHTML.Text );
- finally
- conv.Free;
- end;
+ ioHTML.Text := EUCtoSJIS( ioHTML.Text );
- //===== 2ch \82Ì dat \8c`\8e®\82É\95Ï\8a·
+ //===== 2ch \82Ì dat \8c`\8e®\82É\95Ï\8a·(\91¬\93x\82ð\89Ò\82®\82½\82ß\82É rgIgnoreCase \82ð\90Ø\82Á\82Ä\82¢\82é\82Ì\82Å\92\8d\88Ó\81I)
+ // \81¦\81«\82±\82Á\82©\82ç\81«\81¦
// \83z\83X\83g\96¼\82Ì\8cã\82Å\89ü\8ds\82³\82ê\82Ä\82¢\82½\82è\82·\82é\82Ì\82Å\89ü\8ds\82ð\82·\82×\82Ä\8eæ\82è\8f\9c\82
ioHTML.Text := StringReplace( ioHTML.Text, #13#10, '', [rfReplaceAll] );
// \91ã\82í\82è\82É <dt> \82ð\8ds\82Ì\8bæ\90Ø\82è\82É\82·\82é
if Length( ioHTML[ 0 ] ) = 0 then
ioHTML.Delete( 0 );
// \83g\83\8a\83b\83v\82Ì\8cã\82Ì '<b> </b>' \82ð\8bó\82É
- ioHTML.Text := StringReplace( ioHTML.Text, '<b> </b>', '', [rfReplaceAll, rfIgnoreCase] );
+ ioHTML.Text := StringReplace( ioHTML.Text, '<b> </b>', '', [rfReplaceAll{, rfIgnoreCase}] );
// '<b>' \82Í\83\81\81[\83\8b\82Æ\96¼\91O\82Ì\8bæ\90Ø\82è
- ioHTML.Text := StringReplace( ioHTML.Text, '<b>', '<>', [rfReplaceAll, rfIgnoreCase] );
+ ioHTML.Text := StringReplace( ioHTML.Text, '<b>', '<>', [rfReplaceAll{, rfIgnoreCase}] );
// \83\81\81[\83\8b\82Æ\96¼\91O\82É\82Â\82¢\82Ä\82\82é\95Â\82¶\83^\83O\82ð\93\8a\8de\93ú\82Æ\82Ì\8bæ\90Ø\82è\82É
- ioHTML.Text := StringReplace( ioHTML.Text, '</b></a>', '<>', [rfReplaceAll, rfIgnoreCase] );
- ioHTML.Text := StringReplace( ioHTML.Text, '</b>', '<>', [rfReplaceAll, rfIgnoreCase] );
+ // \91¬\93x\82ð\89Ò\82®\82½\82ß\92\86\8e~
+ //ioHTML.Text := StringReplace( ioHTML.Text, '</b></a>', '<>', [rfReplaceAll{, rfIgnoreCase}] );
+ ioHTML.Text := StringReplace( ioHTML.Text, '</b>', '<>', [rfReplaceAll{, rfIgnoreCase}] );
// '<dd>' \82ð\96{\95¶\82Æ\82Ì\8bæ\90Ø\82è\82É
- ioHTML.Text := StringReplace( ioHTML.Text, '<dd>', '<>', [rfReplaceAll, rfIgnoreCase] );
+ ioHTML.Text := StringReplace( ioHTML.Text, '<dd>', '<>', [rfReplaceAll{, rfIgnoreCase}] );
+ // \81¦\81ª\82±\82±\82Ü\82Å\82ª\83{\83g\83\8b\83l\83b\83N\81ª\81¦
res := TStringList.Create;
try
uri := TIdURI.Create( SubjectURL );
uriList := TStringList.Create;
try
- YofUtils.ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
// http://jbbs.shitaraba.com/game/1000/subject.txt
FilePath := MyLogFolder + uriList[ 1 ] + '\' + uriList[ 2 ] + '\' + uri.Document;
IsLogFile := FileExists( FilePath );
function TShitarabaBoardItem.Download : TDownloadState;
var
modified : Double;
- conv : TPzConv;
downResult : PChar;
responseCode : Longint;
uri : TIdURI;
end;
end;
FDat := TStringList.Create;
- conv := TPzConv.Create( nil );
uri := TIdURI.Create( SubjectURL );
uriList := TStringList.Create;
// \93Æ\8e©\82É\83_\83E\83\93\83\8d\81[\83h\82â\83t\83B\83\8b\83^\83\8a\83\93\83O\82ð\8ds\82í\82È\82¢\8fê\8d\87\82Í
if responseCode = 200 then begin
try
// \83p\83X\82ð\8eZ\8fo
- YofUtils.ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
if MyLogFolder = '' then begin
// \82Ç\82±\82É\95Û\91¶\82µ\82Ä\82¢\82¢\82Ì\82©\95ª\82©\82ç\82È\82¢\82Ì\82Å\88ê\8e\9e\83t\83@\83C\83\8b\82É\95Û\91¶
FilePath := TemporaryFile;
ForceDirectoriesEx( Copy( FilePath, 1, LastDelimiter( '\', FilePath ) ) );
// EUC \82ð Shift_JIS \82É
- FDat.Text := conv.EucToSjis( string( downResult ) );
+ FDat.Text := EUCtoSJIS( string( downResult ) );
// \95Û\91¶
FDat.SaveToFile( FilePath );
RoundDate := Now;
LastModified := modified;
finally
- conv.Free;
uri.Free;
uriList.Free;
end;
uriList := TStringList.Create;
try
try
- YofUtils.ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
threadURL := uri.Protocol + '://' + uri.Host + '/bbs/read.cgi/' +
uriList[ 1 ] + '/' + uriList[ 2 ] + '/' + inFileName + '/l100';
Result := threadURL;
uriList := TStringList.Create;
try
// \83p\83X\82ð\8eZ\8fo
- YofUtils.ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+ ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
// http://jbbs.shitaraba.com/game/1000/subject.txt
FilePath := MyLogFolder + uriList[ 1 ] + '\' + uriList[ 2 ] + '\' + uri.Document;
if FileExists( FilePath ) then