implementation
uses
- Trip;
+ Trip, NGWordUnit;
const
URL_CHAR: string = '0123456789'
if (Trim(ReadList[i]) <> '') then begin
DivideStrLine(ReadList[i], @Res);
- AddAnchorTag(@Res);
- ConvRes(@Res, @ResLink);
- Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
-
- if NewReceiveNo <= (i + 1) then
- // \90V\92\85\83\8c\83X
- html.Add(SkinedRes(SkinNewRes, @Res, IntToStr(i + 1)))
- else
- // \92Ê\8fí\82Ì\83\8c\83X
- html.Add(SkinedRes(SkinRes, @Res, IntToStr(i + 1)));
+ if (NGWordList.IsNG(@Res) = -1) then begin
+ AddAnchorTag(@Res);
+ ConvRes(@Res, @ResLink);
+ Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
+
+ if NewReceiveNo <= (i + 1) then
+ // \90V\92\85\83\8c\83X
+ html.Add(SkinedRes(SkinNewRes, @Res, IntToStr(i + 1)))
+ else
+ // \92Ê\8fí\82Ì\83\8c\83X
+ html.Add(SkinedRes(SkinRes, @Res, IntToStr(i + 1)));
+ end else begin
+{$IFDEF DEBUG}
+ html.Add('<h4>\82 \82Ú\81`\82ñ</h4>');
+{$ENDIF}
+ end;
end;
if ThreadItem.Kokomade = (i + 1) then begin
if (Trim(ReadList[i]) <> '') then begin
No := IntToStr(i + 1);
DivideStrLine(ReadList[i], @Res);
- AddAnchorTag(@Res);
- ConvRes(@Res, @ResLink);
- Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
- if Res.FMailTo = '' then
- html.Add(Format(FORMAT_NOMAIL, [No, No, No, Res.FName, Res.FDateTime, Res.FBody]))
- else if GikoSys.Setting.ShowMail then
- html.Add(Format(FORMAT_SHOWMAIL, [No, No, No, Res.FMailTo, Res.FName, Res.FMailTo, Res.FDateTime, Res.FBody]))
- else
- html.Add(Format(FORMAT_NOSHOW, [No, No, No, Res.FMailTo, Res.FName, Res.FDateTime, Res.FBody]));
- end;
+ if (NGWordList.IsNG(@Res) = -1) then begin
+ AddAnchorTag(@Res);
+ ConvRes(@Res, @ResLink);
+ Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
+ if Res.FMailTo = '' then
+ html.Add(Format(FORMAT_NOMAIL, [No, No, No, Res.FName, Res.FDateTime, Res.FBody]))
+ else if GikoSys.Setting.ShowMail then
+ html.Add(Format(FORMAT_SHOWMAIL, [No, No, No, Res.FMailTo, Res.FName, Res.FMailTo, Res.FDateTime, Res.FBody]))
+ else
+ html.Add(Format(FORMAT_NOSHOW, [No, No, No, Res.FMailTo, Res.FName, Res.FDateTime, Res.FBody]));
+ end;
+ end else begin
+{$IFDEF DEBUG}
+ html.Add('<h4>\82 \82Ú\81`\82ñ</h4>');
+{$ENDIF}
+ end;
if ThreadItem.Kokomade = (i + 1) then begin
html.Add('<a name="koko"></a><div class="koko">\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</div>');
if (Trim(ReadList[i]) <> '') then begin
No := IntToStr(i + 1);
DivideStrLine(ReadList[i], @Res);
+
AddAnchorTag(@Res);
ConvRes(@Res, @ResLink);
Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
html.Add('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> \96¼\91O\81F<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> [' + Res.FMailTo + '] \93\8a\8de\93ú\81F <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)
else
html.Add('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> \96¼\91O\81F<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> \93\8a\8de\93ú\81F <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10);
- end;
+ end else begin
+{$IFDEF DEBUG}
+ html.Add('<h4>\82 \82Ú\81`\82ñ</h4>');
+{$ENDIF}
+ end;
+
if ThreadItem.Kokomade = (i + 1) then begin
html.Add('</dl>');
html.Add('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</b></font></td></tr></table>');
ReadList.LoadFromFile(FileName);
ReadList.EndUpdate;
GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG'));
- GikoSys.FAbon.Execute(ReadList); // \82 \82Ú\81`\82ñ\82µ\82Ä
+ //GikoSys.FAbon.Execute(ReadList); // \82 \82Ú\81`\82ñ\82µ\82Ä
GikoSys.FSelectResFilter.Execute(ReadList); //\83\8c\83X\82Ì\83t\83B\83\8b\83^\83\8a\83\93\83O\82ð\82·\82é
if ThreadItem.Title = '' then begin
DivideStrLine(ReadList[0], @Res);
Menu = MainMenu1
OldCreateOrder = False
OnCreate = FormCreate
- OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 12
object Panel1: TPanel
Height = 25
Caption = #22793#26356
TabOrder = 0
+ OnClick = ModifiedNGButtonClick
end
object AddNGButton: TButton
Left = 24
RowSelect = True
TabOrder = 2
ViewStyle = vsReport
+ OnSelectItem = GikoListView2SelectItem
end
end
object MainMenu1: TMainMenu
Save1: TMenuItem;
procedure Load1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure GikoListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure AddButtonClick(Sender: TObject);
procedure DeleteButtonClick(Sender: TObject);
procedure ApplyButtonClick(Sender: TObject);
+ procedure ModifiedNGButtonClick(Sender: TObject);
+ procedure GikoListView2SelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
private
{ Private \90é\8c¾ }
- FNGWordList : TNGWordList;
function AddNGWord(ngWord: TNGWords): TListItem;
procedure AddWord(word: TNGWord);
public
fname : String;
i: Integer;
begin
- fname := GikoSys.GetAppDir + 'ngwords.xml';
- if (FNGWordList <> nil) then begin
- FNGWordList.Free;
- end else begin
- FNGWordList := TNGWordList.Create;
- end;
- FNGWordList.LoadFromFile(fname);
- GikoListView1.Items.Clear;
- for i :=0 to FNGWordList.Count - 1 do begin
- AddNGWord(TNGWords(FNGWordList.Items[i]));
+ GikoListView2.Items.BeginUpdate;
+ GikoListView1.Items.BeginUpdate;
+ try
+ GikoListView2.Items.Clear;
+ GikoListView1.Items.Clear;
+ fname := GikoSys.GetAppDir + 'ngwords.xml';
+ NGWordList.LoadFromFile(fname);
+
+ for i :=0 to NGWordList.Count - 1 do begin
+ AddNGWord(TNGWords(NGWordList.Items[i]));
+ end;
+ finally
+ GikoListView1.Items.EndUpdate;
+ GikoListView2.Items.EndUpdate;
end;
end;
function TNGWordEditForm.AddNGWord(ngWord: TNGWords): TListItem;
procedure TNGWordEditForm.Save1Click(Sender: TObject);
begin
- if (FNGWordList <> nil) then begin
- FNGWordList.SaveToFrile(GikoSys.GetAppDir + 'ngwords2.xml');
- end;
-end;
-
-procedure TNGWordEditForm.FormDestroy(Sender: TObject);
-begin
- if (FNGWordList <> nil) then begin
- FreeAndNil(FNGWordList);
+ if (NGWordList <> nil) then begin
+ NGWordList.SaveToFrile(GikoSys.GetAppDir + 'ngwords2.xml');
end;
end;
procedure TNGWordEditForm.FormCreate(Sender: TObject);
var
column1,column2: TListColumn;
+ i: Integer;
begin
- GikoListView1.Columns.BeginUpdate;
+ GikoListView1.Columns.BeginUpdate;
column1 := GikoListView1.Columns.Add;
column1.ImageIndex := -1;
column1.Caption := '\93§\96¾';
column2.Width := 190;
GikoListView2.Columns.EndUpdate;
+ GikoListView1.Items.BeginUpdate;
+ for i :=0 to NGWordList.Count - 1 do begin
+ AddNGWord(TNGWords(NGWordList.Items[i]));
+ end;
+ GikoListView1.Items.EndUpdate;
end;
// \8fã\95\94\83\8a\83X\83g\91I\91ð\83C\83x\83\93\83g
procedure TNGWordEditForm.GikoListView1SelectItem(Sender: TObject;
var
ngWords: TNGWords;
begin
- if (FNGWordList <> nil) then begin
+ if (NGWordList <> nil) then begin
ngWords := TNGWords.Create;
- FNGWordList.Add(ngWords);
+ NGWordList.Add(ngWords);
GikoListView1.Selected := AddNGWord(ngWords);
GikoListView1.SetFocus;
end;
begin
// \8c»\8dÝ\91I\91ð\82³\82ê\82Ä\82¢\82é\8ds\82ð\8eæ\93¾\82·\82é
litem := GikoListView1.Selected;
- if (litem <> nil) and (FNGWordList <> nil) then begin
- FNGWordList.Delte( TNGWords(litem.Data));
+ if (litem <> nil) and (NGWordList <> nil) then begin
+ NGWordList.Delte( TNGWords(litem.Data));
GikoListView1.DeleteSelected;
end;
end;
end;
end;
+procedure TNGWordEditForm.ModifiedNGButtonClick(Sender: TObject);
+var
+ litem, litem2: TListItem;
+begin
+ // \8c»\8dÝ\91I\91ð\82³\82ê\82Ä\82¢\82é\8ds\82ð\8eæ\93¾\82·\82é
+ litem := GikoListView1.Selected;
+ if (litem <> nil) then begin
+ litem2 := GikoListView2.Selected;
+ if litem2 <> nil then begin
+ TNGWord(litem2.Data).NGType := TGikoNGType(ComboBox1.ItemIndex);
+ TNGWord(litem2.Data).Word := NGWordEdit.Text;
+ litem.SubItems.Clear;
+ litem.SubItems.Add(TNGWords(litem.Data).ToString);
+
+ case Integer(TNGWord(litem2.Data).NGType) of
+ Integer(gntAll): litem2.Caption := '\91S\95\94';
+ Integer(gntName): litem2.Caption := '\96¼\91O\97\93';
+ Integer(gntMail): litem2.Caption := '\83\81\81[\83\8b\97\93';
+ Integer(gntDateId):litem2.Caption := '\93ú\95tID\97\93';
+ Integer(gntBody): litem2.Caption := '\96{\95¶';
+ end;
+ litem2.SubItems.Clear;
+ litem2.SubItems.Add(TNGWord(litem2.Data).Word);
+ end;
+ end;
+end;
+
+procedure TNGWordEditForm.GikoListView2SelectItem(Sender: TObject;
+ Item: TListItem; Selected: Boolean);
+var
+ word : TNGWord;
+ i: Integer;
+begin
+ if (Item <> nil) and (Item.Data <> nil) then begin
+ word := TNGWord(item.Data);
+ ComboBox1.ItemIndex := Ord(word.NGType);
+ NGWordEdit.Text := word.Word;
+ end;
+end;
end.
interface
uses
Windows,Messages, ShellAPI, SysUtils, Classes,StdCtrls,StrUtils,
- GikoXMLDoc, GikoSystem;
+ GikoXMLDoc, GikoSystem, bmRegExp;
type
//\83\8a\83X\83g\82Ì\95\\8e¦\83A\83C\83e\83\80\91I\91ð
private
FRank : Integer;
FInvisible: Boolean;
+ FAWKStr: TAWKStr;
public
constructor Create;
procedure Free;
function ToXMLString(): String;
function ToString(): String;
procedure Delete(word: TNGWord); overload;
+ function IsNG(PRes : PResRec): Boolean;
end;
{\
procedure LoadFromFile(fileName: String);
procedure SaveToFrile(fileName: String);
procedure Delte(NGWords: TNGWords); overload;
- function IsNG(PRes : PResRec): Boolean;
+ function IsNG(PRes : PResRec): Integer;
end;
function CompareRank(Item1, Item2: Pointer): Integer;
+var
+ NGWordList: TNGWordList;
implementation
constructor TNGWords.Create;
begin
FRank := 0;
+ FAWKStr := TAWKStr.Create(nil);
end;
procedure TNGWords.Free;
var
for i := 0 to Count - 1 do begin
TObject(Items[i]).Free;
end;
+ FAWKStr.Free;
inherited Free;
end;
function TNGWords.ReadXMLElement(element :IXMLNode): Boolean;
end;
end;
end;
+function TNGWords.IsNG(PRes : PResRec): Boolean;
+var
+ i, oLength: Integer;
+ RStart, RLength: Integer;
+ word: TNGWord;
+begin
+ Result := True;
+ for i := 0 to Count - 1 do begin
+ word := TNGWord(Items[i]);
+ FAWKStr.RegExp := word.Word;
+ case Ord(word.FNGType) of
+ Ord(gntAll):
+ begin
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FTitle),
+ RStart, RLength) <> 0;
+ if Result then break;
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FMailTo),
+ RStart, RLength) <> 0;
+ if Result then break;
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FName),
+ RStart, RLength) <> 0;
+ if Result then break;
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FDateTime),
+ RStart, RLength) <> 0;
+ if Result then break;
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FBody),
+ RStart, RLength) <> 0;
+ end;
+ Ord(gntName):
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FName),
+ RStart, RLength) <> 0;
+ Ord(gntMail):
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FMailTo),
+ RStart, RLength) <> 0;
+ Ord(gntDateId):
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FDateTime),
+ RStart, RLength) <> 0;
+ Ord(gntBody):
+ Result := FAWKStr.Match(FAWKStr.ProcessEscSeq(PRes.FBody),
+ RStart, RLength) <> 0;
+ end;
+ if not Result then Exit;
+ end;
+end;
+
+
procedure TNGWord.ReadXMLElement(element :IXMLNode);
begin
- FRank := StrToIntDef(element.Attributes['rank'],
- MaxInt);
- FNGType := TGikoNGType(StrToIntDef(
- Trim(element.Attributes['ngtype']),
- Integer(gntAll)));
+ FRank := StrToIntDef(element.Attributes['rank'],
+ MaxInt);
+ FNGType := TGikoNGType(StrToIntDef(
+ Trim(element.Attributes['ngtype']),
+ Integer(gntAll)));
- FWord := Trim(element.Attributes['word']);
- if FWord <> '' then begin
- FWord := MojuUtils.UnSanitize( FWord );
- end;
+ FWord := Trim(element.Attributes['word']);
+ if FWord <> '' then begin
+ FWord := MojuUtils.UnSanitize( FWord );
+ end;
end;
+
function TNGWord.ToXMLString(): String;
begin
Result := '<NGWord ' +
end;
end;
//! NG\94»\92è
-function TNGWordList.IsNG(PRes : PResRec): Boolean;
+function TNGWordList.IsNG(PRes : PResRec): Integer;
var
i: Integer;
+ tRes : TResRec;
begin
- for i := 0 to Count - 1 do begin
- //
+ Result := -1;
+ if Count > 0 then begin
+ for i := 0 to Count - 1 do begin
+ if (TNGWords(Items[i]).IsNG(PRes)) then begin
+ Result := i;
+ break;
+ end;
+ end;
end;
end;
+// \83V\83\93\83O\83\8b\83g\83\93\82Ì\83C\83\93\83X\83^\83\93\83X
+initialization
+ NGWordList := TNGWordList.Create;
+
+finalization
+ if NGWordList <> nil then begin
+ NGWordList.Free;
+ NGWordList := nil;
+ end;
+
end.