OSDN Git Service

・スレタイの特定ワードを非表示にする機能に「©bbspink.com」も追加
[gikonavigoeson/gikonavi.git] / Setting.pas
index 6264258..6c549d5 100644 (file)
@@ -1,51 +1,28 @@
 unit Setting;
 
+
 interface
 
 uses
-       SysUtils, Classes, Graphics, Forms, Math, IniFiles, UCryptAuto, UBase64,
-       ComCtrls, GestureModel;
+       SysUtils, Classes, Graphics, Forms, {Math, IniFiles, UCryptAuto, UBase64,}
+       ComCtrls, GestureModel, IniFiles, SkinFiles;
 
 const
        MAIN_COOLBAND_COUNT = 4;                //\83\81\83C\83\93CoolBand\82Ì\90\94
        LIST_COOLBAND_COUNT = 2;                //\94ÂCoolBand\82Ì\90\94
        BROWSER_COOLBAND_COUNT = 3;     //\83u\83\89\83E\83UCoolBand\82Ì\90\94
 
-       BOARD_FILE_NAME                                                         = 'board.2ch';
-       CUSTOMBOARD_FILE_NAME                                   = 'custom.2ch';
-       BOARD_DIR_NAME                                                          = 'Board';
-       KEY_SETTING_FILE_NAME                                   = 'key.ini';
-       EKEY_SETTING_FILE_NAME                          = 'Ekey.ini';
-       TEMP_FOLDER                                                                             = 'Temp';
-       OUTBOX_FILE_NAME                                                        = 'outbox.ini';
-       SENT_FILE_NAME                                                          = 'sent.ini';
-       CONFIG_DIR_NAME                                                         = 'config';
-       CSS_DIR_NAME                                                                    = 'css';
-       SKIN_DIR_NAME                                                                   = 'skin';
-       SKIN_HEADER_FILE_NAME                                   = 'Header.html';
-       SKIN_FOOTER_FILE_NAME                                   = 'Footer.html';
-       SKIN_NEWRES_FILE_NAME                                   = 'NewRes.html';
-       SKIN_RES_FILE_NAME                                              = 'Res.html';
-       SKIN_BOOKMARK_FILE_NAME                         = 'Bookmark.html';
-       SKIN_NEWMARK_FILE_NAME                          = 'Newmark.html';
-       NGWORDs_DIR_NAME : String               = 'NGwords';
-       BOARD_PLUGIN_DIR_NAME                                   = 'BoardPlugin';
-       SAMBATIME_FILE_NAME : String    = 'Samba.ini';
-       IGNORE_FILE_NAME : String               = 'Ignore.txt';
-//     DOLIB_LOGIN_URL     = '/~tora3n2c/futen.cgi';
-       MAX_POPUP_RES : Integer = 10;
-       GESTURE_FILE_NAME                                                       = 'Gestures.ini';
-       SPAMFILTER_FILE_NAME                                    = 'SpamFilter.ini';
+
 type
        TGikoTabPosition = (gtpTop, gtpBottom);                                                         // \83^\83u\88Ê\92u
-       TGikoTabAppend = (gtaFirst, gtpLast);                                                                   // \83^\83u\92Ç\89Á\88Ê\92u
+       TGikoTabAppend = (gtaFirst, gtaLast, gtaRight, gtaLeft);                                                                        // \83^\83u\92Ç\89Á\88Ê\92u
        TGikoTabStyle = (gtsTab, gtsButton, gtsFlat);                                   // \83^\83u\83X\83^\83C\83\8b
        TGikoListOrientation = (gloHorizontal, gloVertical);    // \83\8a\83X\83g\90\82\92¼\81E\90\85\95½
        TGikoListState = (glsMax, glsNormal, glsMin);                                   // \83\8a\83X\83g\83T\83C\83Y\8fó\91Ô
                                                                                                                                                                                                                                // \83|\83b\83v\83A\83b\83v\95\\8e¦\88Ê\92u
-       TGikoPopupPosition = (gppRightTop, gppTop, gppLeftTop,
-                                                                                               gppRight, gppCenter, gppLeft,
-                                                                                               gppRightBottom, gppBottom, gppLeftBottom);
+       TGikoPopupPosition = (gppLeftTop = 0, gppTop, gppRightTop,
+                                                                                               gppLeft, gppCenter, gppRight,
+                                                                                               gppLeftBottom, gppBottom, gppRightBottom);
                                                                                                                                                                                                                                //\83v\83\8c\83r\83\85\81[\83T\83C\83Y
        TGikoPreviewSize = (gpsXLarge, gpsLarge, gpsMedium, gpsSmall, gpsXSmall);
        TGikoBrowserAutoMaximize        = (gbmNone, gbmClick, gbmDoubleClick);
@@ -55,12 +32,13 @@ type
        TGikoResRange = (grrAll, grrSelect, grrKoko, grrNew);
 
        /// \83X\83\8c\83b\83h\88ê\97\97\95\\8e¦\94Í\88Í
-       TGikoThreadRange = (gtrAll, gtrSelect, gtrLog, gtrNew);
+       TGikoThreadRange = (gtrAll, gtrSelect, gtrLog, gtrNew, gtrLive, gtrArch);
 
        //! \83X\83p\83\80\83t\83B\83\8b\83^\81[\83A\83\8b\83S\83\8a\83Y\83\80
        TGikoSpamFilterAlgorithm = (
                gsfaNone, gsfaPaulGraham, gsfaGaryRobinson, gsfaGaryRobinsonFisher);
 
+
        /// \83J\83e\83S\83\8a\83\8a\83X\83g\82Ì\83J\83\89\83\80 ID
        type    TGikoBBSColumnID = (gbbscTitle);
        /// \83J\83e\83S\83\8a\83\8a\83X\83g\82Ì\83J\83\89\83\80\96¼
@@ -95,15 +73,15 @@ type
        end;
        /// \83X\83\8c\83\8a\83X\83g\82Ì\83J\83\89\83\80 ID
        type    TGikoBoardColumnID = (gbcTitle, gbcAllCount, gbcLocalCount, gbcNonAcqCount,
-               gbcNewCount, gbcUnReadCount, gbcRoundName, gbcRoundDate, gbcCreated, gbcLastModified );{gbcLastModified,}
+               gbcNewCount, gbcUnReadCount, gbcRoundName, gbcRoundDate, gbcCreated, gbcLastModified, gbcVigor );{gbcLastModified,}
        /// \83X\83\8c\83\8a\83X\83g\82Ì\83J\83\89\83\80\96¼
-       const   GikoBoardColumnCaption : array[0..9] of string =
+       const   GikoBoardColumnCaption : array[0..10] of string =
                ( '\83X\83\8c\83b\83h\96¼', '\83J\83E\83\93\83g', '\8eæ\93¾', '\96¢\8eæ\93¾', '\90V\92\85',
-               '\96¢\93Ç', '\8f\84\89ñ\97\\96ñ', '\8eæ\93¾\93ú\8e\9e', '\83X\83\8c\8dì\90¬\93ú\8e\9e', '\8dÅ\8fI\8dX\90V\93ú\8e\9e' );
-       const GikoBoardColumnAlignment : array[0..9] of TAlignment = (
+               '\96¢\93Ç', '\8f\84\89ñ\97\\96ñ', '\8eæ\93¾\93ú\8e\9e', '\83X\83\8c\8dì\90¬\93ú\8e\9e', '\8dÅ\8fI\8dX\90V\93ú\8e\9e', '\90¨\82¢' );
+       const GikoBoardColumnAlignment : array[0..10] of TAlignment = (
                taLeftJustify, taRightJustify, taRightJustify, taRightJustify,
                taRightJustify, taRightJustify, taLeftJustify, taLeftJustify,
-               taLeftJustify, taLeftJustify);
+               taLeftJustify, taLeftJustify, taRightJustify);
        /// \83X\83\8c\83\8a\83X\83g\83J\83\89\83\80\94z\97ñ
        type    TGikoBoardColumnList = class( TList )
        private
@@ -247,17 +225,17 @@ type
                FEditWindowHeight: Integer;
                FEditWindowWidth: Integer;
                FEditWindowMax: Boolean;
-        FEditWindowStay: Boolean;
-        FEditWindowTranslucent: Boolean;
+                FEditWindowStay: Boolean;
+                FEditWindowTranslucent: Boolean;
 
                //\83\8a\83X\83g\94Ô\8d\86\95\\8e¦
                FListViewNo: Boolean;
                //CSS\95\\8e¦
                FUseCSS: Boolean;
-               //CSS\83t\83@\83C\83\8b\96¼
-               FCSSFileName: string;
                // \83X\83L\83\93\95\\8e¦(\88ê\8e\9e\93I\82È\82à\82Ì\82Å ini \82É\95Û\91\82Í\82³\82ê\82È\82¢)
                FUseSkin: Boolean;
+               //\82©\82¿\82ã\81`\82µ\82á\97p\82ÌSkin\82ð\97\98\97p\82·\82é\82©
+               FUseKatjushaType : Boolean;
                //mail\97\93\95\\8e¦
                FShowMail: Boolean;
                /// \83\8c\83X\95\\8e¦\94Í\88Í
@@ -270,15 +248,20 @@ type
                FUnActivePopup: Boolean;
                //\83\8c\83X\83|\83b\83v\83A\83b\83v\83w\83b\83_\81[\83{\81[\83\8b\83h
                FResPopupHeaderBold: Boolean;
+        // BE\83A\83C\83R\83\93\81EEmoticon\89æ\91\9c\95\\8e¦
+        FIconImageDisplay: Boolean;
+        // \83X\83\8c\83^\83C\93Á\92è\95\8e\9a\97ñ\8f\9c\8b\8e
+        FThreadTitleTrim: Boolean;
 
                //\83\8d\83O\83t\83H\83\8b\83_
                FLogFolder: string;
+        FLogFolderP: string; //\83p\83X\96¼\82ª\83p\83X\8bæ\90Ø\82è\8bL\8d\86\82Å\8fI\82í\82Á\82Ä\82¢\82é\81B
                FNewLogFolder: string;
 
                //\83\8a\83X\83g\83J\83\89\83\80\83w\83b\83_\81[\83T\83C\83Y
                FBBSColumnWidth: array[0..0] of Integer;
                FCategoryColumnWidth: array[0..2] of Integer;
-               FBoardColumnWidth: array[0..9] of Integer;
+               FBoardColumnWidth: array[0..10] of Integer;
 
                /// \83J\83e\83S\83\8a\83\8a\83X\83g\83J\83\89\83\80\8f\87\8f\98
                FBBSColumnOrder : TGikoBBSColumnList;
@@ -311,7 +294,7 @@ type
                FUserID: string;
                FPassword: string;
                FAutoLogin: Boolean;
-        FForcedLogin: Boolean;
+                FForcedLogin: Boolean;
                FDolibURL: string;
 
                //URL\83N\83\8a\83b\83N\8e\9e\8bN\93®\83A\83v\83\8a
@@ -353,9 +336,9 @@ type
                //\83X\83\8c\83b\83h\88ê\97\97\8dX\90V\83A\83C\83R\83\93\95\\8e¦
                FListIconVisible: Boolean;
 
-                               //\83X\83\8c\83b\83h\88ê\97\97\82ÅLog\82Ì\82 \82é\83X\83\8c\83b\83h\82Ì\82Ý\83X\83\8c\8dì\90¬\93ú\82ð\95\\8e¦\82·\82é\82©
-                               FCreationTimeLogs: Boolean;
-        //\83X\83\8c\83b\83h\88ê\97\97\82Ì\83X\83\8c\90\90¬\93ú\82Å\96¢\97\88\82Ì\83X\83\8c\82Ì\90\90¬\93ú\82ð\95\\8e¦\82µ\82È\82¢
+                //\83X\83\8c\83b\83h\88ê\97\97\82ÅLog\82Ì\82 \82é\83X\83\8c\83b\83h\82Ì\82Ý\83X\83\8c\8dì\90¬\93ú\82ð\95\\8e¦\82·\82é\82©
+                FCreationTimeLogs: Boolean;
+                //\83X\83\8c\83b\83h\88ê\97\97\82Ì\83X\83\8c\90\90¬\93ú\82Å\96¢\97\88\82Ì\83X\83\8c\82Ì\90\90¬\93ú\82ð\95\\8e¦\82µ\82È\82¢
                FFutureThread: Boolean;
 
                //\8f\91\82«\8d\9e\82Ý\8e\9e\83}\83V\83\93\8e\9e\8aÔ\8eg\97p\90Ý\92è
@@ -369,7 +352,8 @@ type
                FPopUpAbon               : Boolean; //\83\8c\83X\83|\83b\83v\83A\83b\83v\8e\9e\82Ì\82 \82Ú\81`\82ñ\97L\8cø
                FShowNGLinesNum : Boolean; //\8aY\93\96\82µ\82½\82m\82f\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\8ds\90\94\82ð\95\\8e¦
                FAddResAnchor : Boolean; //NG\83\8c\83X\82Ö\82Ì\83\8c\83X\83A\83\93\83J\81[\82ð\92Ç\89Á\82·\82é
-        FDeleteSyria : Boolean;        //\83V\83\8a\83A\8cê\83u\83\89\83N\83\89\91Î\8dô
+               FDeleteSyria : Boolean; //\83V\83\8a\83A\8cê\83u\83\89\83N\83\89\91Î\8dô
+               FIgnoreKana     : Boolean;      //\91S\94¼\8ap\82Ð\82ç\83J\83i\82Ì\88á\82¢\82ð\96³\8e\8b\82·\82é\82©
 
                // \83X\83\8c\83b\83h\8di\8d\9e\83t\83B\81[\83\8b\83h\82Ì\95\9d
                FSelectComboBoxWidth : Integer;
@@ -387,16 +371,19 @@ type
                //\8eæ\93¾\83\8c\83X\90\94\82Æ\83X\83\8c\83b\83h\82Ì\83\8c\83X\90\94\82ª\88Ù\82È\82Á\82½\82Æ\82«\82É\92Ê\8fí\94w\8ci\90F\82Æ\88á\82Á\82½\90F\82Ì\94w\8ci\90F\82ð\8eg\97p\82·\82é\82©
                FUseOddColorOddResNum: Boolean;
                FOddColor: TColor;
+               //\83\8c\83X\90\94\91\9d\8c¸\8b­\92²\8e\9e\82É\81A\91I\91ð\83A\83C\83e\83\80\82É\83t\83H\81[\83J\83X\82ª\96³\82¢\82Æ\82«\82É\91¾\8e\9a\82É\82·\82é\82©
+               FUnFocusedBold : Boolean;
 
-        //Samba24\91Î\8dô\8b@\94\\82ð\8eg\82¤\82©
-        FUseSamba: Boolean;
+               //Samba24\91Î\8dô\8b@\94\\82ð\8eg\82¤\82©
+               FUseSamba: Boolean;
 
                //\83\8c\83X\83A\83\93\83J\81[\82ð\83N\83\8a\83b\83N\82µ\82Ä\83W\83\83\83\93\83v\82·\82é\82©
                FResAnchorJamp: Boolean;
 
                 //Tab\8e©\93®\95Û\91
                 FTabAutoLoadSave : Boolean;
-
+                //\8dÅ\8cã\82É\8aJ\82¢\82Ä\82¢\82½\83X\83\8c\83b\83h\82ÌURL
+                FLastCloseTabURL: String;
                 //\82É\82¿\82á\82ñ\8cê\88Ä\93à\83T\83|\81[\83g\8b@\94\
                 F2chSupport : Boolean;
 
@@ -414,10 +401,8 @@ type
                FGestures       : TGestureModel;
                //! \83}\83E\83X\83W\83F\83X\83`\83\83\81[\82ð\8eg\97p\82·\82é\82©\82Ç\82¤\82©
                FGestureEnabled : Boolean;
-
-               //2ch\8c¾\8cê\90Ý\92è
-               F2chLanguage : TStringList;
-
+        //! \83}\83E\83X\83W\83F\83X\83`\83\83\81[\82ð\83R\83\93\83e\83L\83X\83g\93\99\82Ì\8fã\82Å\96³\8cø
+        FGestureIgnoreContext : Boolean;
                //\83t\83V\83A\83i\83g\83\89\83b\83v\90Ý\92è
                FLocalTrapAtt : Boolean;
                FRemoteTrapAtt : Boolean;
@@ -429,6 +414,83 @@ type
                FMute: Boolean;
                //\83X\83\8c\8di\8d\9e\82Ý\82Å\96¢\8am\92è\95\8e\9a\82à\97L\8cø\82É\82·\82é\82©
                FUseUndecided: Boolean;
+
+                               //Be2ch
+                //\94F\8fØ\97p\83\86\81[\83UID\81E\83p\83X\83\8f\81[\83h
+               FBeUserID: String;
+               FBePassword: String;
+               FBeAutoLogin: Boolean;
+               FBeLogin: Boolean;
+               //\97\9a\97ð\82Ì\8dÅ\91å\95Û\91\8c\8f\90\94
+               FMaxRecordCount : Integer;
+
+               //\83X\83\8c\83b\83h\88ê\97\97\82ð\83_\83E\83\93\83\8d\81[\83h\8cã\82É\83\\81[\83g\82·\82é\82©
+               FAutoSortThreadList : Boolean;
+
+               //InputAssist\83t\83H\81[\83\80\82Ì\88Ê\92u
+               FInputAssistFormLeft :Integer;
+               FInputAssistFormTop :Integer;
+               //InputAssist\83t\83H\81[\83\80\82Ì\83T\83C\83Y
+               FInputAssistFormWidth: Integer;
+               FInputAssistFormHeight: Integer;
+
+               //! Cookie\82É\95t\89Á\82·\82é\8cÅ\92è\83R\81[\83h
+               FFixedCookie: String;
+        //! \83\8a\83\93\83N\88Ú\93®\97\9a\97ð\82Ì\95Û\8e\9d\90\94
+        FMoveHistorySize : Integer;
+        //! \8dÅ\8f¬\89»\82µ\82½\82Æ\82«\82É\83^\83X\83N\83g\83\8c\83C\82É\8ai\94[\82·\82é\82©
+        FStoredTaskTray : Boolean;
+        //! \83^\83u\82Ì\88Ú\93®\82Å\83\8b\81[\83v\82ð\8b\96\89Â\82·\82é
+        FLoopBrowserTabs : Boolean;
+        //! 100\83\8c\83X\95\\8e¦\82Ì\90æ\93ª\95\\8e¦\83\8c\83X\90\94
+        FHeadResCount : Integer;
+        //! 100\83\8c\83X\95\\8e¦\90\94\81i\8ag\92£\97p\81j
+        FResRangeExCount: Integer;
+        //! \8aÖ\98A\83L\81[\83\8f\81[\83h\92Ç\89Á\83t\83\89\83O
+        FAddKeywordLink: Boolean;
+        //! dat\92u\8a·\82ð\97L\8cø\82É\82·\82é
+        FReplaceDat: Boolean;
+        //! sent.ini\83t\83@\83C\83\8b\82Ì\83T\83C\83Y\81i\92P\88ÊMB\81j
+        FSentIniFileSize: Integer;
+        //! \83\8a\83\93\83NURL\8eæ\93¾\82Ì\91Î\8fÛ\8ag\92£\8eq
+        FExtList: String;
+        //! Skin\8aÖ\98A
+        FSkinFiles: TSkinFiles;
+        //! index\83t\83@\83C\83\8b\82ð\93Ç\82Ý\8e\9e\82Édat\82ð\8c\9f\8dõ\82·\82é
+        FCheckDatFile: Boolean;
+        //! \93¯ID\83\8c\83X\83A\83\93\83J\81[\95\\8e¦
+        FLimitResCountMessage: Boolean;
+        //! \83\8c\83X\83|\83b\83v\83A\83b\83v\95\\8e¦\88Ê\92udeltaX
+        FRespopupDeltaX: Integer;
+        //! \83\8c\83X\83|\83b\83v\83A\83b\83v\95\\8e¦\88Ê\92udeltaY
+        FRespopupDeltaY: Integer;
+        //! \83\8c\83X\83|\83b\83v\83A\83b\83v\83^\83C\83}\81[
+        FRespopupWait: Integer;
+        //! \83\81\81[\83\8b\97\93\83\8c\83X\83|\83b\83v\83A\83b\83v
+        FRespopupMailTo: Boolean;
+        //! \8cë\94\9a\83`\83F\83b\83N
+        FUseGobakuCheck: Boolean;
+        //! Unicode\94Å\83G\83f\83B\83^
+        FUseUnicode: Boolean;
+        //! \8dí\8f\9c\97v\90¿\94Â\82ð\93Á\95Ê\88µ\82¢
+        FSakuBoard: Boolean;
+
+               //! \83X\83\8c\83^\83C\8c\9f\8dõ\83E\83B\83\93\83h\83E
+               FThrdSrchTop: Integer;
+               FThrdSrchLeft: Integer;
+               FThrdSrchWidth: Integer;
+               FThrdSrchHeight: Integer;
+               FThrdSrchMax: Boolean;
+        FThrdSrchStay: Boolean;
+        FThrdSrchCol1W: Integer;
+        FThrdSrchCol2W: Integer;
+        FThrdSrchCol3W: Integer;
+        FThrdSrchCol4W: Integer;
+        FThrdSrchHistory: TStringList;
+
+        //! \96`\8c¯\82Ì\8f\91\97pCookie
+        FBoukenCookieList: TStringList;
+
                function GetMainCoolSet(Index: Integer): TCoolSet;
                function GetBoardCoolSet(Index: Integer): TCoolSet;
                function GetBrowserCoolSet(Index: Integer): TCoolSet;
@@ -454,6 +516,17 @@ type
 
                procedure SetUseCSS( value: Boolean );
                procedure SetCSSFileName( fileName: string );
+        function GetCSSFileName: string;
+        //! \83v\83\8d\83L\83V\90Ý\92è\93Ç\82Ý\8d\9e\82Ý
+        procedure ReadProxySettings(memIni: TMemIniFile);
+        //! \8ae\8eí\83E\83B\83\93\83h\83E\90Ý\92è\93Ç\82Ý\8d\9e\82Ý
+        procedure ReadWindowSettings(memIni: TMemIniFile);
+        //! \93ü\97Í\97\9a\97ð\93Ç\82Ý\8d\9e\82Ý\81i\8c\9f\8dõ\81{\83\81\81[\83\8b\97\93\81{\96¼\91O\81j
+        procedure ReadInputHisotrys(memIni: TMemIniFile);
+        //! \83\8a\83X\83g\83J\83\89\83\80\95\9d\93Ç\82Ý\8d\9e\82Ý
+        procedure ReadListColumnWidth(memIni: TMemIniFile);
+        //! \83J\83e\83S\83\8a\83\8a\83X\83g\83J\83\89\83\80\8f\87\8f\98\93Ç\82Ý\8d\9e\82Ý
+        procedure ReadOrdColumn(memIni: TMemIniFile);
        protected
 
        public
@@ -468,6 +541,7 @@ type
                procedure WriteNameMailSettingFile;
                procedure WriteFolderSettingFile();
                procedure WriteBoardURLSettingFile;
+               procedure WriteBoukenSettingFile;
                function GetSoundCount: Integer;
                function FindSoundFileName(Name: string): string;
 
@@ -480,21 +554,30 @@ type
                function GetSentFileName: string;
                function GetConfigDir: string;
                function GetSkinDir: string;
-               function GetSkinHeaderFileName: string;
-               function GetSkinFooterFileName: string;
-               function GetSkinResFileName: string;
-               function GetSkinNewResFileName: string;
-               function GetSkinBookmarkFileName: string;
-               function GetSkinNewmarkFileName: string;
                function GetStyleSheetDir: string;
                function GetOutBoxFileName: string;
+               function GetDefaultFilesFileName: string;
                function GetNGWordsDir: string;
                function GetBoardPlugInDir: string;
                function GetSambaFileName: string;
                function GetIgnoreFileName: string;
                function GetGestureFileName : string;
                function GetSpamFilterFileName : string;
-
+               function GetLanguageFileName: string;
+               function GetMainKeyFileName: String;
+               function GetEditorKeyFileName: String;
+               procedure WriteLogFolder(AVal : String);
+               function GetInputAssistFileName : String;
+        function GetReplaceFileName: String;
+        function GetExtprevieFileName: String;
+        function GetBoukenCookie(AHostName: String): String;
+        procedure SetBoukenCookie(ACookieValue, AHostName: String);
+        procedure GetBouken(AHostName: String; var Domain:String; var Cookie:String);
+        {
+        \brief  \83\8a\83\93\83N\97\9a\97ð\82Ì\95Û\8e\9d\83T\83C\83Y\82Ìsetter
+        \param  AVal    \90Ý\92è\82·\82é\83T\83C\83Y( >0)
+        }
+        procedure SetMoveHistorySize(AVal : Integer);
                //\8eó\90M\83o\83b\83t\83@\83T\83C\83Y
                property RecvBufferSize: Integer read FRecvBufferSize write FRecvBufferSize;
                //HTTP1.1\8eg\97p
@@ -604,7 +687,8 @@ type
 
                property ListViewNo: Boolean read FListViewNo write FListViewNo;
                property UseCSS: Boolean read FUseCSS write SetUseCSS;
-               property CSSFileName: string read FCSSFileName write SetCSSFileName;
+               property CSSFileName: string read GetCSSFileName write SetCSSFileName;
+               property UseKatjushaType : Boolean read FUseKatjushaType write FUseKatjushaType;
                property UseSkin: Boolean read FUseSkin;
 
                property ShowMail: Boolean read FShowMail write FShowMail;
@@ -613,8 +697,11 @@ type
                property ThreadRange    : TGikoThreadRange read FThreadRange write FThreadRange;
                property UnActivePopup: Boolean read FUnActivePopup write FUnActivePopup;
                property ResPopupHeaderBold: Boolean read FResPopupHeaderBold write FResPopupHeaderBold;
+        property IconImageDisplay: Boolean read FIconImageDisplay write FIconImageDisplay;
+        property ThreadTitleTrim: Boolean read FThreadTitleTrim write FThreadTitleTrim;
 
-               property LogFolder: string read FLogFolder write FLogFolder;
+               property LogFolder: string read FLogFolder write WriteLogFolder;
+        property LogFolderP: string read FLogFolderP;
                property NewLogFolder: string read FNewLogFolder write FNewLogFolder;
 
                property BBSColumnWidth[index: Integer]: Integer read GetBBSColumnWidth write SetBBSColumnWidth;
@@ -689,6 +776,7 @@ type
                property ShowNGLinesNum : Boolean read FShowNGLinesNum write FShowNGLinesNum;
                property AddResAnchor : Boolean read FAddResAnchor write FAddResAnchor;
                property DeleteSyria : Boolean read FDeleteSyria write FDeleteSyria;
+               property IgnoreKana : Boolean read FIgnoreKana write FIgnoreKana;
                // \83X\83\8c\83b\83h\8di\8d\9e\83t\83B\81[\83\8b\83h\82Ì\95\9d
                property SelectComboBoxWidth : Integer read FSelectComboBoxWidth write FSelectComboBoxWidth;
 
@@ -704,6 +792,7 @@ type
                //\8eæ\93¾\83\8c\83X\90\94\82Æ\83X\83\8c\83b\83h\82Ì\83\8c\83X\90\94\82ª\88Ù\82È\82Á\82½\82Æ\82«\82É\92Ê\8fí\94w\8ci\90F\82Æ\88á\82Á\82½\90F\82Ì\94w\8ci\90F\82ð\8eg\97p\82·\82é\82©
                property UseOddColorOddResNum: Boolean read FUseOddColorOddResNum write FUseOddColorOddResNum;
                property OddColor: TColor read FOddColor write FOddColor;
+               property UnFocusedBold : Boolean read FUnFocusedBold write FUnFocusedBold;
                property UseSamba: Boolean read FUseSamba write FUseSamba;
                                property ResAnchorJamp: Boolean read FResAnchorJamp write FResAnchorJamp;
 
@@ -714,13 +803,16 @@ type
                property SelectInterval : Integer       read FSelectInterval    write FSelectInterval;
                //Tab\95Û\91
                property TabAutoLoadSave: Boolean           read FTabAutoLoadSave      write FTabAutoLoadSave;
-                               property Gengo: TStringList read F2chLanguage write F2chLanguage;
+        //\83^\83u\82Ì\95\9c\8c³\82Æ\82©\97p
+        property LastCloseTabURL: String read FLastCloseTabURL write FLastCloseTabURL;
+                               //property Gengo: TStringList read F2chLanguage write F2chLanguage;
                                property GengoSupport : Boolean read F2chSupport write F2chSupport;
                property KuroutSettingTabIndex: Integer read FKuroutSettingTabIndex write FKuroutSettingTabIndex;
                //! \83}\83E\83X\83W\83F\83X\83`\83\83\81[
                property Gestures : TGestureModel read FGestures write FGestures;
                //! \83}\83E\83X\83W\83F\83X\83`\83\83\81[\82ð\8eg\97p\82·\82é\82©\82Ç\82¤\82©
                property GestureEnabled : Boolean read FGestureEnabled write FGestureEnabled;
+        property GestureIgnoreContext : Boolean read FGestureIgnoreContext write FGestureIgnoreContext;
                //\83t\83V\83A\83i\83g\83\89\83b\83v\90Ý\92è
                property LocalTrapAtt : Boolean read FLocalTrapAtt write FLocalTrapAtt;
                property RemoteTrapAtt : Boolean read FRemoteTrapAtt write FRemoteTrapAtt;
@@ -730,12 +822,112 @@ type
                        read FSpamFilterAlgorithm write FSpamFilterAlgorithm;
                property Mute: Boolean read FMute write FMute;
                property UseUndecided: Boolean read FUseUndecided write FUseUndecided;
+
+               property BeUserID: string read FBeUserID write FBeUserID;
+               property BePassword: string read FBePassword write FBePassword;
+               property BeAutoLogin: Boolean read FBeAutoLogin write FBeAutoLogin;
+               property BeLogin: Boolean read FBeLogin write FBeLogin;
+               property MaxRecordCount : Integer read FMaxRecordCount write FMaxRecordCount;
+               //! \83X\83\8c\83b\83h\88ê\97\97\83_\83E\83\93\83\8d\81[\83h\8cã\82É\83X\83\8c\83b\83h\96¼\82Å\8f¸\8f\87\83\\81[\83g\82·\82é\82©
+               property AutoSortThreadList : Boolean read FAutoSortThreadList write FAutoSortThreadList;
+               //! InputAssist\83t\83H\81[\83\80\82Ì\88Ê\92u
+               property InputAssistFormLeft :Integer read FInputAssistFormLeft write FInputAssistFormLeft;
+               property InputAssistFormTop :Integer read FInputAssistFormTop write FInputAssistFormTop;
+               //! InputAssist\83t\83H\81[\83\80\82Ì\83T\83C\83Y
+               property InputAssistFormWidth: Integer read FInputAssistFormWidth write FInputAssistFormWidth;
+               property InputAssistFormHeight: Integer read FInputAssistFormHeight write FInputAssistFormHeight;
+               //! Cookie\82É\95t\89Á\82·\82é\8cÅ\92è\83R\81[\83h
+               property FixedCookie: String read FFixedCookie write FFixedCookie;
+        //! \83\8a\83\93\83N\88Ú\93®\97\9a\97ð\82Ì\95Û\8e\9d\90\94
+        property MoveHistorySize : Integer read FMoveHistorySize write SetMoveHistorySize;
+        //! \8dÅ\8f¬\89»\8e\9e\82É\83^\83X\83N\83g\83\8c\83C\82É\8ai\94[\82·\82é\82©
+        property StoredTaskTray : Boolean read FStoredTaskTray write FStoredTaskTray;
+        //! \83u\83\89\83E\83U\83^\83u\82Ì\83\8b\81[\83v\82ð\8b\96\89Â\82·\82é
+        property LoopBrowserTabs : Boolean read FLoopBrowserTabs write FLoopBrowserTabs;
+        //! 100\83\8c\83X\95\\8e¦\82Ì\90æ\93ª\95\\8e¦\83\8c\83X\90\94
+        property HeadResCount : Integer read FHeadResCount write FHeadResCount;
+        //! 100\83\8c\83X\95\\8e¦\90\94\81i\8ag\92£\97p\81j
+        property ResRangeExCount: Integer read FResRangeExCount write FResRangeExCount;
+        //! \8aÖ\98A\83L\81[\83\8f\81[\83h\92Ç\89Á\83t\83\89\83O
+        property AddKeywordLink: Boolean read FAddKeywordLink write FAddKeywordLink;
+        //! dat\82Ì\92u\8a·\82ð\97L\8cø\82É\82·\82é\82©
+        property ReplaceDat: Boolean read FReplaceDat write FReplaceDat;
+        //! sent.ini\83t\83@\83C\83\8b\82Ì\83T\83C\83Y\81i\92P\88ÊMB\81j
+        property SentIniFileSize: Integer read FSentIniFileSize write FSentIniFileSize;
+        //! \83\8a\83\93\83NURL\8eæ\93¾\82Ì\91Î\8fÛ\8ag\92£\8eq
+        property ExtList: String read FExtList write FExtList;
+        //! Skin\83t\83@\83C\83\8b\8aÇ\97\9d
+        property SkinFiles: TSkinFiles read FSkinFiles;
+        //! \83C\83\93\83f\83b\83N\83X\93Ç\82Ý\8d\9e\82Ý\8e\9edat\83t\83@\83C\83\8b\83`\83F\83b\83N
+        property CheckDatFile: Boolean read FCheckDatFile write FCheckDatFile;
+        property LimitResCountMessage: Boolean read FLimitResCountMessage write FLimitResCountMessage;
+        //! \83\8c\83X\83|\83b\83v\83A\83b\83v\95\\8e¦\88Ê\92udeltaX
+        property  RespopupDeltaX: Integer read FRespopupDeltaX write FRespopupDeltaX;
+        //! \83\8c\83X\83|\83b\83v\83A\83b\83v\95\\8e¦\88Ê\92udeltaY
+        property RespopupDeltaY: Integer read FRespopupDeltaY write FRespopupDeltaY;
+        //! \83\8c\83X\83|\83b\83v\83A\83b\83v\83^\83C\83}\81[
+        property RespopupWait: Integer read FRespopupWait write FRespopupWait;
+        property RespopupMailTo: Boolean read FRespopupMailTo write FRespopupMailTo;
+        //! \8cë\94\9a\83`\83F\83b\83N
+        property UseGobakuCheck: Boolean read FUseGobakuCheck write FUseGobakuCheck;
+        //! Unicode\94Å\83G\83f\83B\83^
+        property UseUnicode: Boolean read FUseUnicode write FUseUnicode;
+        //! \8dí\8f\9c\97v\90¿\94Â\82ð\93Á\95Ê\88µ\82¢
+        property SakuBoard: Boolean read FSakuBoard write FSakuBoard;
+               //! \83X\83\8c\83^\83C\8c\9f\8dõ\83E\83B\83\93\83h\83E
+               //! \83X\83\8c\83^\83C\8c\9f\8dõ\83E\83B\83\93\83h\83E
+               property ThrdSrchTop: Integer read FThrdSrchTop write FThrdSrchTop;
+               property ThrdSrchLeft: Integer read FThrdSrchLeft write FThrdSrchLeft;
+               property ThrdSrchWidth: Integer read FThrdSrchWidth write FThrdSrchWidth;
+               property ThrdSrchHeight: Integer read FThrdSrchHeight write FThrdSrchHeight;
+               property ThrdSrchMax: Boolean read FThrdSrchMax write FThrdSrchMax;
+        property ThrdSrchStay: Boolean read FThrdSrchStay write FThrdSrchStay;
+        property ThrdSrchCol1W: Integer read FThrdSrchCol1W write FThrdSrchCol1W;
+        property ThrdSrchCol2W: Integer read FThrdSrchCol2W write FThrdSrchCol2W;
+        property ThrdSrchCol3W: Integer read FThrdSrchCol3W write FThrdSrchCol3W;
+        property ThrdSrchCol4W: Integer read FThrdSrchCol4W write FThrdSrchCol4W;
+        property ThrdSrchHistory: TStringList read FThrdSrchHistory write FThrdSrchHistory;
+        //! \96`\8c¯\82Ì\8f\91
+        property BoukenCookieList: TStringList read FBoukenCookieList write FBoukenCookieList; 
 end;
 
 
+const
+//     MAIN_COOLBAND_COUNT = 4;                //\83\81\83C\83\93CoolBand\82Ì\90\94
+//     LIST_COOLBAND_COUNT = 2;                //\94ÂCoolBand\82Ì\90\94
+//     BROWSER_COOLBAND_COUNT = 3;     //\83u\83\89\83E\83UCoolBand\82Ì\90\94
+
+       BOARD_FILE_NAME                                                         = 'board.2ch';
+       CUSTOMBOARD_FILE_NAME                                   = 'custom.2ch';
+       BOARD_DIR_NAME                                                          = 'Board';
+       KEY_SETTING_FILE_NAME                                   = 'key.ini';
+       EKEY_SETTING_FILE_NAME                          = 'Ekey.ini';
+       TEMP_FOLDER                                                                             = 'Temp';
+       OUTBOX_FILE_NAME                                                        = 'outbox.ini';
+       SENT_FILE_NAME                                                          = 'sent.ini';
+       DEFFILES_FILE_NAME                                                      = 'defaultFiles.ini';
+       CONFIG_DIR_NAME                                                         = 'config';
+       CSS_DIR_NAME                                                                    = 'css';
+       SKIN_DIR_NAME                                                                   = 'skin';
+       NGWORDs_DIR_NAME : String               = 'NGwords';
+       BOARD_PLUGIN_DIR_NAME                                   = 'BoardPlugin';
+       SAMBATIME_FILE_NAME : String    = 'Samba.ini';
+       IGNORE_FILE_NAME : String               = 'Ignore.txt';
+//     DOLIB_LOGIN_URL     = '/~tora3n2c/futen.cgi';
+       MAX_POPUP_RES : Integer = 10;
+       GESTURE_FILE_NAME                                                       = 'Gestures.ini';
+       SPAMFILTER_FILE_NAME                                    = 'SpamFilter.ini';
+               LANGUAGE_FILE_NAME    = 'language.ini';
+       INPUTASSIST_FILE_NAME   = 'InputAssist.ini';
+    FIXED_COOKIE =           '';
+    REPLACE_FILE_NAME = 'replace.ini';
+    EXT_PREVIEW_FILE_NAME = 'extpreview.ini';
 
 implementation
 
+uses
+       Math, UCryptAuto, UBase64, Windows,GikoUtil;
+
 type
        TSoundName = record
                Name: string;
@@ -752,10 +944,7 @@ const
        DEFAULT_WINDOW_COLOR: string    = 'clWindow';
        DEFAULT_TAB_FONT_NAME: string            = '\82l\82\82o\83S\83V\83b\83N';
        DEFAULT_TAB_FONT_SIZE: Integer          = 9;
-       DEFAULT_2CH_BOARD_URL1: string = 'http://www6.ocn.ne.jp/~mirv/2chmenu.html';
-       DEFAULT_2CH_BOARD_URL2: string = 'http://www.ff.iij4u.or.jp/~ch2/bbsmenu.html';
-                                     //http://menu.2ch.net/bbsmenu.html //\82à\82¤\82·\82®\82±\82ê\82ª\90³\8e®\82È\94Â\88ê\97\97\82É\82È\82é\82æ\82¤
-                                                                                                                               //'http://www.2ch.net/newbbsmenu.html';
+       DEFAULT_2CH_BOARD_URL1: string = 'http://menu.2ch.net/bbsmenu.html';
        GIKO_ENCRYPT_TEXT: string                = 'gikoNaviEncryptText';
 
 var
@@ -854,10 +1043,13 @@ begin
        FCategoryColumnOrder := TGikoCategoryColumnList.Create;
        FBoardColumnOrder := TGikoBoardColumnList.Create;
        FGestures := TGestureModel.Create;
+    FSkinFiles := TSkinFiles.Create;
        FNameList.Duplicates := dupIgnore;
        FMailList.Duplicates := dupIgnore;
        FBoardURLs.Duplicates := dupIgnore;
        FSelectTextList.Duplicates := dupIgnore;
+    FThrdSrchHistory := TStringList.Create;
+    FBoukenCookieList := TStringList.Create;
        ReadSettingFile();
        ReadBoardURLsFile();
 end;
@@ -865,46 +1057,43 @@ end;
 //\83f\83X\83g\83\89\83N\83^
 destructor TSetting.Destroy();
 begin
+    FThrdSrchHistory.Free;
+    FBoukenCookieList.Free;
+       FBoardColumnOrder.Free;
+       FCategoryColumnOrder.Free;
+       FBBSColumnOrder.Free;
+       FSelectTextList.Free;
+       FBoardURLs.Free;
+       FMailList.Free;
+       FNameList.Free;
+       FGestures.Free;
+    FSkinFiles.Free;
        inherited;
-       FBoardColumnOrder.Free;
-       FCategoryColumnOrder.Free;
-       FBBSColumnOrder.Free;
-       FSelectTextList.Free;
-       FBoardURLs.Free;
-       FMailList.Free;
-       FNameList.Free;
-       FGestures.Free;
 end;
 
 //\8f\89\8aú\89»\83t\83@\83C\83\8b\96¼\8eæ\93¾\81i\83p\83X\81{\83t\83@\83C\83\8b\96¼\81j
 function TSetting.GetFileName(): string;
 begin
-       Result := ExtractFilePath(Application.ExeName) + INI_FILE_NAME;
+       Result := GetAppDir + INI_FILE_NAME;
 end;
 
 //\94Â\8dX\90V\97pURL\90Ý\92è\83t\83@\83C\83\8b\96¼\81i\83p\83X\81{\83t\83@\83C\83\8b\96¼\81j
 function TSetting.GetBoardURLFileName(): string;
 begin
-       Result := ExtractFilePath(Application.ExeName) + BOARD_URL_INI_FILE_NAME;
+       Result := GetAppDir + BOARD_URL_INI_FILE_NAME;
 end;
 
 //\90Ý\92è\83t\83@\83C\83\8b\93Ç\8d\9e
 procedure TSetting.ReadSettingFile();
-const
-       DEFAULT_BBS_WIDTH: array[0..0] of Integer = (140);
-       DEFAULT_CATEGORY_WIDTH: array[0..2] of Integer = (150, 80, 130);
-       DEFAULT_BOARD_WIDTH: array[0..9] of Integer = (350, 60, 60, 60, 60, 60, 80, 130, 130, 130);
-       MAX_WIDTH: Integer = 2000;
 var
        ini: TMemIniFile;
        i: Integer;
-       id, code : Integer;
-       wkList: TStringList;
-       wkStr: string;
        Exists: Boolean;
-       s: string;                                               
-//     id: Integer;
+       s: string;
        CoolSet: TCoolSet;
+    msg: String;
+    hostList: TStringList;
+    Cnt: Integer;
 begin
        Exists := FileExists(GetFileName);
        ini := TMemIniFile.Create(GetFileName);
@@ -916,59 +1105,11 @@ begin
                //\83v\83\8d\83L\83V\90Ú\91±HTTP1.1\8eg\97p
                FProxyProtocol := ini.ReadBool('HTTP', 'ProxyProtocol', False);
 
-               FReadProxy := ini.ReadBool('ReadProxy', 'Proxy', false);
-               FReadProxyAddress := ini.ReadString('ReadProxy', 'Address', '');
-               FReadProxyPort := ini.ReadInteger('ReadProxy', 'Port', 0);
-               FReadProxyUserID := ini.ReadString('ReadProxy', 'UserID', '');
-               FReadProxyPassword := ini.ReadString('ReadProxy', 'Password', '');
-
-               FWriteProxy := ini.ReadBool('WriteProxy', 'Proxy', false);
-               FWriteProxyAddress := ini.ReadString('WriteProxy', 'Address', '');
-               FWriteProxyPort := ini.ReadInteger('WriteProxy', 'Port', 0);
-               FWriteProxyUserID := ini.ReadString('WriteProxy', 'UserID', '');
-               FWriteProxyPassword := ini.ReadString('WriteProxy', 'Password', '');
-
-               FBrowserFontName := ini.ReadString('Window', 'BrowserFontName', '');
-               FBrowserFontSize := ini.ReadInteger('Window', 'BrowserFontSize', 0);
-               FBrowserFontBold := ini.ReadInteger('Window', 'BrowserFontBold', 0);
-               FBrowserFontItalic := ini.ReadInteger('Window', 'BrowserFontItalic', 0);
-               FBrowserFontColor := ini.ReadInteger('Window', 'BrowserFontColor', -1);
-               FBrowserBackColor := ini.ReadInteger('Window', 'BrowserBackColor', -1);
-
-               FCabinetFontName := ini.ReadString('Window', 'CabinetFontName', DEFAULT_FONT_NAME);
-               FCabinetFontSize := ini.ReadInteger('Window', 'CabinetFontSize', DEFAULT_FONT_SIZE);
-               FCabinetFontBold := ini.ReadBool('Window', 'CabinetFontBold', False);
-               FCabinetFontItalic := ini.ReadBool('Window', 'CabinetFontItalic', False);
-               FCabinetFontColor := StringToColor(ini.ReadString('Window', 'CabinetFontColor', DEFAULT_FONT_COLOR));
-               FCabinetBackColor := StringToColor(ini.ReadString('Window', 'CabinetBackColor', DEFAULT_WINDOW_COLOR));
-
-               FListFontName := ini.ReadString('Window', 'ListFontName', DEFAULT_FONT_NAME);
-               FListFontSize := ini.ReadInteger('Window', 'ListFontSize', DEFAULT_FONT_SIZE);
-               FListFontBold := ini.ReadBool('Window', 'ListFontBold', False);
-               FListFontItalic := ini.ReadBool('Window', 'ListFontItalic', False);
-               FListFontColor := StringToColor(ini.ReadString('Window', 'ListFontColor', DEFAULT_FONT_COLOR));
-               FListBackColor := StringToColor(ini.ReadString('Window', 'ListBackColor', DEFAULT_WINDOW_COLOR));
-                FUseOddColorOddResNum := ini.ReadBool('Window','UseOddColor', False);
-                FOddColor := StringToColor(ini.ReadString('Window', 'OddColor', DEFAULT_WINDOW_COLOR));
-
-               FEditorFontName := ini.ReadString('Window', 'EditorFontName', DEFAULT_FONT_NAME);
-               FEditorFontSize := ini.ReadInteger('Window', 'EditorFontSize', DEFAULT_FONT_SIZE);
-               FEditorFontBold := ini.ReadBool('Window', 'EditorFontBold', False);
-               FEditorFontItalic := ini.ReadBool('Window', 'EditorFontItalic', False);
-               FEditorFontColor := StringToColor(ini.ReadString('Window', 'EditorFontColor', DEFAULT_FONT_COLOR));
-               FEditorBackColor := StringToColor(ini.ReadString('Window', 'EditorBackColor', DEFAULT_WINDOW_COLOR));
-
-               FBrowserTabFontName := ini.ReadString('Window', 'BrowserTabFontName', DEFAULT_TAB_FONT_NAME);
-               FBrowserTabFontSize := ini.ReadInteger('Window', 'BrowserTabFontSize', DEFAULT_TAB_FONT_SIZE);
-               FBrowserTabFontBold := ini.ReadBool('Window', 'BrowserTabFontBold', False);
-               FBrowserTabFontItalic := ini.ReadBool('Window', 'BrowserTabFontItalic', False);
-
-               FHintFontName := ini.ReadString('Window', 'HintFontName', Screen.HintFont.Name);
-               FHintFontSize := ini.ReadInteger('Window', 'HintFontSize', Screen.HintFont.Size);
-               //FHintFontBold := ini.ReadBool('Window', 'HintFontBold', False);
-               //FHintFontItalic := ini.ReadBool('Window', 'HintFontItalic', False);
-               FHintFontColor := StringToColor(ini.ReadString('Window', 'HintFontColor', DEFAULT_FONT_COLOR));
-               FHintBackColor := StringToColor(ini.ReadString('Window', 'HintBackColor', 'clInfoBk'));
+        // \83v\83\8d\83L\83V\90Ý\92è\93Ç\82Ý\8d\9e\82Ý
+        ReadProxySettings( ini );
+
+        // \8ae\8eí\83E\83B\83\93\83h\83E\82Ì\90Ý\92è\93Ç\82Ý\8d\9e\82Ý
+        ReadWindowSettings( ini );
 
                FWindowTop := ini.ReadInteger('WindowSize', 'Top', -1);
                FWindowLeft := ini.ReadInteger('WindowSize', 'Left', -1);
@@ -1025,108 +1166,14 @@ begin
 //             FListHeightMax := ini.ReadBool('List', 'HeightMax', False);
 //             FListWidthMax := ini.ReadBool('List', 'WidthMax', False);
 
-               wkList := TStringList.Create;
-               try
-                       ini.ReadSection('Name', wkList);
-                       for i := 0 to wkList.Count - 1 do begin
-                               wkStr := ini.ReadString('Name', wkList[i], '');
-                               if (wkStr <> '') and (FNameList.IndexOf(wkStr) = -1) then
-                                       FNameList.Add(wkStr);
-                       end;
-                       ini.ReadSection('Mail', wkList);
-                       for i := 0 to wkList.Count - 1 do begin
-                               wkStr := ini.ReadString('Mail', wkList[i], '');
-                               if (wkStr <> '') and (FMailList.IndexOf(wkStr) = -1) then
-                                       FMailList.Add(wkStr);
-                       end;
-                       ini.ReadSection('SelectText', wkList);
-                       for i := 0 to wkList.Count - 1 do begin
-                               wkStr := ini.ReadString('SelectText', wkList[i], '');
-                               if (wkStr <> '') and (FSelectTextList.IndexOf(wkStr) = -1) then
-                                       FSelectTextList.Add(wkStr);
-                       end;
-               finally
-                       wkList.Free;
-               end;
+        // \93ü\97Í\8d\80\96Ú\82Ì\97\9a\97ð\82ð\93Ç\82Ý\8d\9e\82Þ
+        ReadInputHisotrys( ini );
 
                // \83\8a\83X\83g\83J\83\89\83\80\95\9d
-               wkList := TStringList.Create;
-               try
-                       ini.ReadSection('BBSColumnWidth', wkList);
-                       if Length(FBBSColumnWidth) <> wkList.Count then begin
-                               ini.EraseSection('BBSColumnWidth');
-                       end;
-                       for i := 0 to Length(FBBSColumnWidth) - 1 do begin
-                               BBSColumnWidth[i] := ini.ReadInteger('BBSColumnWidth', 'ID' + IntToStr(i), DEFAULT_BBS_WIDTH[i]);
-                               if BBSColumnWidth[i] > MAX_WIDTH then
-                                       BBSColumnWidth[i] := DEFAULT_BBS_WIDTH[i];
-                       end;
-                       ini.ReadSection('CategoryColumnWidth', wkList);
-                       if Length(FCategoryColumnWidth) <> wkList.Count then begin
-                               ini.EraseSection('CategoryColumnWidth');
-                       end;
-                       for i := 0 to Length(FCategoryColumnWidth) - 1 do begin
-                               CategoryColumnWidth[i] := ini.ReadInteger('CategoryColumnWidth', 'ID' + IntToStr(i), DEFAULT_CATEGORY_WIDTH[i]);
-                               if CategoryColumnWidth[i] > MAX_WIDTH then
-                                       CategoryColumnWidth[i] := DEFAULT_CATEGORY_WIDTH[i];
-                       end;
-                       ini.ReadSection('BoardColumnWidth', wkList);
-                       if Length(FBoardColumnWidth) <> wkList.Count then begin
-                               ini.EraseSection('BoardColumnWidth');
-                       end;
-                       for i := 0 to Length(FBoardColumnWidth) - 1 do begin
-                               BoardColumnWidth[i] := ini.ReadInteger('BoardColumnWidth', 'ID' + IntToStr(i), DEFAULT_BOARD_WIDTH[i]);
-                               if BoardColumnWidth[i] > MAX_WIDTH then
-                                       BoardColumnWidth[i] := DEFAULT_BOARD_WIDTH[i];
-                       end;
-               finally
-                       wkList.Free;
-               end;
+        ReadListColumnWidth( ini );
 
                // \83J\83e\83S\83\8a\83\8a\83X\83g\83J\83\89\83\80\8f\87\8f\98
-               wkList := TStringList.Create;
-               try
-                       ini.ReadSection( 'BBSColumnOrder', wkList );
-                       for i := 0 to wkList.Count - 1 do begin
-                               wkStr := ini.ReadString( 'BBSColumnOrder', 'ID' + IntToStr( i ), '' );
-                               Val( wkStr, id, code );
-                               if code = 0 then
-                                       FBBSColumnOrder.Add( TGikoBBSColumnID( id ) );
-                       end;
-                       if FBBSColumnOrder.Count = 0 then begin
-                               // \90Ý\92è\82ª\96³\82¢\82Ì\82Å\8dì\90¬
-                               for i := 0 to Integer( High( TGikoBBSColumnID ) ) do
-                                       FBBSColumnOrder.Add( TGikoBBSColumnID( i ) );
-                       end;
-
-                       ini.ReadSection( 'CategoryColumnOrder', wkList );
-                       for i := 0 to wkList.Count - 1 do begin
-                               wkStr := ini.ReadString( 'CategoryColumnOrder', 'ID' + IntToStr( i ), '' );
-                               Val( wkStr, id, code );
-                               if code = 0 then
-                                       FCategoryColumnOrder.Add( TGikoCategoryColumnID( id ) );
-                       end;
-                       if FCategoryColumnOrder.Count = 0 then begin
-                               // \90Ý\92è\82ª\96³\82¢\82Ì\82Å\8dì\90¬
-                               for i := 0 to Integer( High( TGikoCategoryColumnID ) ) do
-                                       FCategoryColumnOrder.Add( TGikoCategoryColumnID( i ) );
-                       end;
-
-                       ini.ReadSection( 'BoardColumnOrder', wkList );
-                       for i := 0 to wkList.Count - 1 do begin
-                               wkStr := ini.ReadString( 'BoardColumnOrder', 'ID' + IntToStr( i ), '' );
-                               Val( wkStr, id, code );
-                               if code = 0 then
-                                       FBoardColumnOrder.Add( TGikoBoardColumnID( id ) );
-                       end;
-                       if FBoardColumnOrder.Count = 0 then begin
-                               // \90Ý\92è\82ª\96³\82¢\82Ì\82Å\8dì\90¬
-                               for i := 0 to Integer( High( TGikoBoardColumnID ) ) do
-                                       FBoardColumnOrder.Add( TGikoBoardColumnID( i ) );
-                       end;
-               finally
-                       wkList.Free;
-               end;
+        ReadOrdColumn( ini );
 
                //\83\8a\83X\83g\94Ô\8d\86
                FListViewNo := ini.ReadBool('Function', 'ListViewNo', True);
@@ -1134,6 +1181,8 @@ begin
                UseCSS := ini.ReadBool('CSS', 'UseCSS', True);
                //CSS\83t\83@\83C\83\8b\96¼
                CSSFileName := ini.ReadString('CSS', 'FileName', 'default.css');
+               //\82©\82µ\82ã\81`\82µ\82á\82Ì\83X\83L\83\93\82ð\8eg\82¤\82©
+               FUseKatjushaType := ini.ReadBool('CSS', 'UseKatjushaType', false);
 
                //Mail\97\93\95\\8e¦
                FShowMail := ini.ReadBool('Thread', 'ShowMail', True);
@@ -1143,12 +1192,18 @@ begin
                else
                        FResRange := ini.ReadInteger( 'Thread', 'ResRange', Ord( grrAll ) );
                FResRangeHold := ini.ReadBool( 'Thread', 'ResRangeHold', False );
+        FHeadResCount := ini.ReadInteger('Thread', 'HeadResCount', 1);
+        FResRangeExCount:= ini.ReadInteger('Thread','ResRangeExCount', 100);
                // \83X\83\8c\83b\83h\88ê\97\97\95\\8e¦\94Í\88Í
                FThreadRange := TGikoThreadRange( ini.ReadInteger('ThreadList', 'ThreadRange', Ord( gtrAll )) );
                //\94ñ\83A\83N\83e\83B\83u\8e\9e\83\8c\83X\83|\83b\83v\83A\83b\83v\95\\8e¦
                FUnActivePopup := ini.ReadBool('Thread', 'UnActivePopup', False);
                //\83\8c\83X\83|\83b\83v\83A\83b\83v\83w\83b\83_\81[\83{\81[\83\8b\83h
                FResPopupHeaderBold := ini.ReadBool('Thread', 'ResPopupHeaderBold', True);
+        // BE\83A\83C\83R\83\93\81EEmoticon\89æ\91\9c\95\\8e¦
+        FIconImageDisplay := ini.ReadBool('Thread', 'IconImageDisplay', True);
+        // \83X\83\8c\83^\83C\93Á\92è\95\8e\9a\97ñ\8f\9c\8b\8e
+        FThreadTitleTrim := ini.ReadBool('Thread', 'ThreadTitleTrim', False);
                //\8dí\8f\9c\8am\94F
                FDeleteMsg := ini.ReadBool('Function', 'LogDeleteMessage', True);
                //\8fI\97¹\8am\94F
@@ -1160,7 +1215,7 @@ begin
                //ResAnchorjamp
                ResAnchorJamp := ini.ReadBool('Function', 'ResAnchoJamp', True);
                //\83\8d\83O\83t\83H\83\8b\83_
-               FLogFolder := ini.ReadString('Folder', 'LogFolder', ExtractFilePath(Application.ExeName) + 'Log');
+               LogFolder := ini.ReadString('Folder', 'LogFolder', GetAppDir + 'Log');
                NewLogFolder := '';
 
                //\94ÂURL
@@ -1182,7 +1237,15 @@ begin
                FOpenMailer := ini.ReadBool('Mailto', 'Open', True);
 
                //\83|\83b\83v\83A\83b\83v\88Ê\92u
-               FPopupPosition := TGikoPopupPosition(ini.ReadInteger('Browser', 'PopupPosition', Ord(gppLeftBottom)));
+               FPopupPosition := TGikoPopupPosition(ini.ReadInteger('Browser', 'PopupPosition', Ord(gppRightTop)));
+        // \83o\83^56\88È\91O\82©\82ç\82Ì\83A\83b\83v\83f\81[\83g\91Î\8dô
+        if (FPopupPosition = gppCenter) then begin
+            FPopupPosition := gppTop;
+        end;
+        FRespopupDeltaX := ini.ReadInteger('Browser', 'RespopupDelteX', 5);
+        FRespopupDeltaY := ini.ReadInteger('Browser', 'RespopupDelteY', 5);
+        FRespopupWait   := ini.ReadInteger('Browser', 'RespopupWait', 1000);
+        FRespopupMailTo := ini.ReadBool('Browser', 'RespopupMailTo', true);
 
                //\83A\83h\83\8c\83X\83o\81[
                FURLDisplay := ini.ReadBool('AddressBar', 'URLDisplay', False);
@@ -1211,6 +1274,8 @@ begin
                FCategorySortOrder := ini.ReadBool('ThreadList', 'CategorySortOrder', True);
                FBoardSortIndex := ini.ReadInteger('ThreadList', 'BoardSortIndex', 0);
                FBoardSortOrder := ini.ReadBool('ThreadList', 'BoardSortOrder', True);
+               // DL\8cã\82Ì\8e©\93®\83\\81[\83g
+               FAutoSortThreadList := ini.ReadBool('ThreadList', 'AutoSort', False);
                //Dat\97\8e\82¿\83X\83\8c\83\\81[\83g\8f\87
                FDatOchiSortIndex := ini.ReadInteger('ThreadList', 'DatOchiSortIndex', -1);
                FDatOchiSortOrder := ini.ReadBool('ThreadList', 'DatOchiSortOrder', False);
@@ -1222,13 +1287,17 @@ begin
 
                //\83T\83E\83\93\83h
                if Exists then begin
+            SetCurrentDir(ExtractFilePath(Application.ExeName));
                        for i := 0 to GetSoundCount - 1 do begin
                                SoundFileName[i] := ini.ReadString('Sound', SoundName[i], '');
-                               if not FileExists(SoundFileName[i]) then
-                                       SoundFileName[i] := '';
+                // \91\8a\91Î\8eQ\8fÆ\91Î\8dô
+                // \83t\83@\83C\83\8b\82Ì\91\8dÝ\83`\83F\83b\83N
+                if not FileExists(ExpandFileName(SoundFileName[i])) then begin
+                    SoundFileName[i] := '';
+                end;
                        end;
                end else begin
-                       s := ExtractFileDir(Application.ExeName) + '\sound\';
+                       s := 'Sound\';
                        SoundFileName[0] := s + '\8eæ\93¾\90¬\8c÷.wav';
                        SoundFileName[1] := s + '\8eæ\93¾\90¬\8c÷(\8d·\95ª).wav';
                        SoundFileName[2] := s + '\96¢\8dX\90V.wav';
@@ -1263,20 +1332,23 @@ begin
                FPopUpAbon               := ini.ReadBool('Abon','Popup',false);
                FShowNGLinesNum := ini.ReadBool('Abon','ShowNGLines',false);
                FAddResAnchor := ini.ReadBool('Abon','AddResAnchor',false);
-                               FDeleteSyria :=  ini.ReadBool('Abon','DeleteSyria',false);
+               FDeleteSyria :=  ini.ReadBool('Abon','DeleteSyria',false);
+               FIgnoreKana  :=  ini.ReadBool('Abon','IgnoreKana',false);
 
                // \83G\83f\83B\83^
                FSpaceToNBSP    := ini.ReadBool( 'Editor', 'SpaceToNBSP', False );
                FAmpToCharRef   := ini.ReadBool( 'Editor', 'AmpToCharRef', False );
+        FUseGobakuCheck := ini.ReadBool( 'Editor', 'UseGobakuCheck', True );
+        FUseUnicode     := ini.ReadBool( 'Editor', 'UseUnicode', False );
 
                //Tab\8e©\93®\95Û\91\81A\93Ç\82Ý\8d\9e\82Ý
                FTabAutoLoadSave    := ini.ReadBool('TabAuto', 'TabAutoLoadSave', False);
-
+        FLastCloseTabURL    := ini.ReadString('Thread', 'LastCloseTabURL', '');
                FKuroutSettingTabIndex := ini.ReadInteger('OptionDialog', 'KuroutTabIndex' , 0);
 
                // \83}\83E\83X\83W\83F\83X\83`\83\83\81[
                FGestureEnabled := ini.ReadBool( 'Guesture', 'Enabled', False );
-
+        FGestureIgnoreContext := ini.ReadBool( 'Guesture', 'IgnoreContext', False );
                //2ch\8c¾\8cê\83T\83|
                F2chSupport := ini.ReadBool('2chSupport', 'Support', False);
 
@@ -1290,6 +1362,87 @@ begin
                        ini.ReadInteger( 'Abon', 'SpamFilterAlgorithm', Ord( gsfaNone ) ) );
                FMute := ini.ReadBool('Function', 'Mute', false);
                FUseUndecided := ini.ReadBool('ThreadList', 'UseUndecided', False);
+
+        //Be2ch
+               //\94F\8fØ\97p\83\86\81[\83UID\81E\94F\8fØ\83R\81[\83h
+               FBeUserID := ini.ReadString('Be', 'UserID', '');
+               FBePassword := Decrypt(ini.ReadString('Be', 'Password', ''));
+               FBeAutoLogin := ini.ReadBool('Be', 'AutoLogin', False);
+               //\97\9a\97ð\82Ì\8dÅ\91å\95Û\91\8c\8f\90\94
+               FMaxRecordCount := Max(ini.ReadInteger('Recode', 'Max', 100), 1);
+
+        //! \8dí\8f\9c\97v\90¿\94Â\82ð\93Á\95Ê\88µ\82¢
+        FSakuBoard := ini.ReadBool('NewBoard', 'SakuSpecial', True);
+
+               // \93ü\97Í\83A\83V\83X\83g
+               FInputAssistFormTop := ini.ReadInteger('IAtWindowsSize', 'Top', 0);
+               FInputAssistFormLeft := ini.ReadInteger('IAtWindowsSize', 'Left', 0);
+               FInputAssistFormWidth := ini.ReadInteger('IAtWindowsSize', 'Width', 400);
+               FInputAssistFormHeight := ini.ReadInteger('IAtWindowsSize', 'Height', 460);
+
+               //! \83X\83\8c\83^\83C\8c\9f\8dõ\83E\83B\83\93\83h\83E
+               FThrdSrchTop    := ini.ReadInteger('ThreadSearch', 'Top',    0);
+               FThrdSrchLeft   := ini.ReadInteger('ThreadSearch', 'Left',   0);
+               FThrdSrchWidth  := ini.ReadInteger('ThreadSearch', 'Width',  526);
+               FThrdSrchHeight := ini.ReadInteger('ThreadSearch', 'Height', 550);
+               FThrdSrchMax    := ini.ReadBool(   'ThreadSearch', 'Max',    False);
+        FThrdSrchStay   := ini.ReadBool(   'ThreadSearch', 'Stay',   False);
+        FThrdSrchCol1W  := ini.ReadInteger('ThreadSearch', 'Col1W',  80);
+        FThrdSrchCol2W  := ini.ReadInteger('ThreadSearch', 'Col2W',  350);
+        FThrdSrchCol3W  := ini.ReadInteger('ThreadSearch', 'Col3W',  40);
+        FThrdSrchCol4W  := ini.ReadInteger('ThreadSearch', 'Col4W',  500);
+        Cnt := ini.ReadInteger('ThreadSearch', 'HistoryCount',  0);
+        if (Cnt > 0) then begin
+            for i := 1 to Cnt do begin
+                s := ini.ReadString('ThreadSearch', 'History' + IntToStr(i), '');
+                if (s <> '') then
+                    FThrdSrchHistory.Add(s);
+            end;
+        end;
+
+               // Cookie\82É\95t\89Á\82·\82é\8cÅ\92è\83R\81[\83h
+               FFixedCookie := ini.ReadString('Cookie', 'fixedString', FIXED_COOKIE);
+
+        // \83\8a\83\93\83N\88Ú\93®\97\9a\97ð\82Ì\8dÅ\91å\95Û\8e\9d\90\94
+        FMoveHistorySize := ini.ReadInteger('MoveHisotry', 'Max', 20);
+
+        FStoredTaskTray := ini.ReadBool('Function', 'StroedTaskTray', false);
+        FLoopBrowserTabs := ini.ReadBool('Function', 'LoopBrowserTabs', false);
+        FAddKeywordLink := ini.ReadBool('Thread', 'AddKeywordLink', false);
+        if not (ini.ValueExists('Thread', 'ReplaceDat')) then begin
+            msg := '\83Z\83L\83\85\83\8a\83e\83B\83\\83t\83g\82Ì\8cë\94½\89\9e\91Î\8dô\82ð\82µ\82Ü\82·\82©\81H'+ #13#10 +
+                 '\81i\90\84\8f§:\82Í\82¢\81j'+ #13#10+'\8fÚ\8d×\90Ý\92è\82©\82ç\95Ï\8dX\82Å\82«\82Ü\82·\81B';
+                   if MsgBox(Application.Handle,
+                 msg, '\83M\83R\83i\83r', MB_YESNO or MB_ICONQUESTION) = IDYES then begin
+                 FReplaceDat := True;
+            end;
+        end else begin
+            FReplaceDat := ini.ReadBool('Thread', 'ReplaceDat', False);
+        end;
+
+        FSentIniFileSize := ini.ReadInteger('Function', 'SentIniFileSize', 3);
+        FExtList := ini.ReadString('Function', 'ExtList', '*.gif;*.jpg;*.jpeg;*.png;*.zip;*.rar');
+
+        FCheckDatFile := ini.ReadBool('ThreadList', 'CheckDatFile', True);
+        FLimitResCountMessage := ini.ReadBool('Thread', 'LimitResCountMessage', True);
+
+        // \96`\8c¯\82Ì\8f\91Cookie\93Ç\82Ý\8d\9e\82Ý
+        hostList := TStringList.Create;
+        ini.ReadSection('Bouken', hostList);
+        for i := 0 to hostList.Count - 1 do begin
+            FBoukenCookieList.Add( hostList[i] + '=' +
+                ini.ReadString('Bouken', hostList[i], '') );
+        end;
+        hostList.Free;
+
+        // \83M\83R\83i\83r\8dX\90V\82Å\97\98\97p\82µ\82½\83C\83\93\83X\83g\81[\83\89\82Ì\8dí\8f\9c
+        s := ini.ReadString('Update', 'Remove0', '');
+        if (FileExists(s)) then begin
+            SysUtils.DeleteFile(s);
+            // \8dí\8f\9c\82É\8e¸\94s\82µ\82Ä\82à\96³\8e\8b\82·\82é
+            ini.DeleteKey('Update', 'Remove0');
+        end;
+
                ini.UpdateFile;
        finally
                ini.Free;
@@ -1363,8 +1516,9 @@ begin
                ini.WriteString('Window', 'ListBackColor', ColorToString(FListBackColor));
                ini.WriteBool('Window', 'ListFontBold', FListFontBold);
                ini.WriteBool('Window', 'ListFontItalic', FListFontItalic);
-                               ini.WriteBool('Window','UseOddColor',FUseOddColorOddResNum);
-                ini.WriteString('Window', 'OddColor',ColorToString(FOddColor));
+               ini.WriteBool('Window','UseOddColor',FUseOddColorOddResNum);
+               ini.WriteString('Window', 'OddColor',ColorToString(FOddColor));
+               ini.WriteBool('Window','UnFocusedBold', FUnFocusedBold);
 
                ini.WriteString('Window', 'EditorFontName', FEditorFontName);
                ini.WriteInteger('Window', 'EditorFontSize', FEditorFontSize);
@@ -1415,6 +1569,12 @@ begin
 
                ini.WriteInteger('OptionDialog', 'TabIndex', FOptionDialogTabIndex);
 
+               // \93ü\97Í\83A\83V\83X\83g
+               ini.WriteInteger('IAtWindowsSize', 'Top', FInputAssistFormTop);
+               ini.WriteInteger('IAtWindowsSize', 'Left', FInputAssistFormLeft);
+               ini.WriteInteger('IAtWindowsSize', 'Width', FInputAssistFormWidth);
+               ini.WriteInteger('IAtWindowsSize', 'Height', FInputAssistFormHeight);
+
                //\83c\81[\83\8b\83o\81[
                ini.WriteBool('ToolBar', 'StdVisible', FStdToolBarVisible);
                ini.WriteBool('ToolBar', 'AddressVisible', FAddressBarVisible);
@@ -1461,14 +1621,18 @@ begin
                ini.WriteBool('Function', 'ListViewNo', FListViewNo);
                //CSS\8eg\97p
                ini.WriteBool('CSS', 'UseCSS', FUseCSS);
+               //\82©\82µ\82ã\81`\82µ\82á\82Ì\83X\83L\83\93\82ð\8eg\82¤\82©
+               ini.WriteBool('CSS', 'UseKatjushaType', FUseKatjushaType);
                //CSS\83t\83@\83C\83\8b\96¼
-               ini.WriteString('CSS', 'FileName', FCSSFileName);
+               ini.WriteString('CSS', 'FileName', FSkinFiles.FileName);
                //Mail\97\93\95\\8e¦
                ini.WriteBool('Thread', 'ShowMail', FShowMail);
                // \83\8c\83X\95\\8e¦\94Í\88Í
                ini.DeleteKey( 'Thread', 'OnlyAHundredRes' );   // \8cÃ\82¢\90Ý\92è\82Ì\8dí\8f\9c
                ini.WriteInteger('Thread', 'ResRange', FResRange);
                ini.WriteBool('Thread', 'ResRangeHold', FResRangeHold);
+        ini.WriteInteger('Thread', 'HeadResCount', FHeadResCount);
+        ini.WriteInteger('Thread','ResRangeExCount', FResRangeExCount);
                // \83X\83\8c\83b\83h\88ê\97\97\95\\8e¦\94Í\88Í
                ini.WriteInteger('ThreadList', 'ThreadRange', Ord( FThreadRange ));
                //\83\8d\83O\8dí\8f\9c\8am\94F
@@ -1486,6 +1650,10 @@ begin
                ini.WriteBool('Thread', 'UnActivePopup', FUnActivePopup);
                //\83\8c\83X\83|\83b\83v\83A\83b\83v\83w\83b\83_\81[\83{\81[\83\8b\83h
                ini.WriteBool('Thread', 'ResPopupHeaderBold', FResPopupHeaderBold);
+        // BE\83A\83C\83R\83\93\81EEmoticon\89æ\91\9c\95\\8e¦
+        ini.WriteBool('Thread', 'IconImageDisplay', FIconImageDisplay);
+        // \83X\83\8c\83^\83C\93Á\92è\95\8e\9a\97ñ\8f\9c\8b\8e
+        ini.WriteBool('Thread', 'ThreadTitleTrim', FThreadTitleTrim);
                //ini.WriteString('BoardURL', '2ch', FBoardURL2ch);
 
                //\94F\8fØ\97p\83\86\81[\83UID\81E\83p\83X\83\8f\81[\83h
@@ -1504,7 +1672,11 @@ begin
 
                //\83|\83b\83v\83A\83b\83v\88Ê\92u
                ini.WriteInteger('Browser', 'PopupPosition', Ord(FPopupPosition));
-
+        ini.WriteInteger('Browser', 'RespopupDelteX', FRespopupDeltaX);
+        ini.WriteInteger('Browser', 'RespopupDelteY', FRespopupDeltaY);
+        ini.WriteInteger('Browser', 'RespopupWait', FRespopupWait);
+        ini.WriteBool('Browser', 'RespopupMailTo', FRespopupMailTo);
+        
                //\83A\83h\83\8c\83X\83o\81[
                ini.WriteBool('AddressBar', 'URLDisplay', FURLDisplay);
                ini.WriteBool('AddressBar', 'TabStop', FAddressBarTabStop);
@@ -1532,6 +1704,8 @@ begin
                ini.WriteBool('ThreadList', 'BoardSortOrder', FBoardSortOrder);
                ini.WriteInteger('ThreadList', 'DatOchiSortIndex', FDatOchiSortIndex);
                ini.WriteBool('ThreadList', 'DatOchiSortOrder', FDatOchiSortOrder);
+               // DL\8cã\82Ì\8e©\93®\83\\81[\83g
+               ini.WriteBool('ThreadList', 'AutoSort', FAutoSortThreadList);
 
                //\8f\91\82«\8d\9e\82Ý\8e\9e\83}\83V\83\93\8e\9e\8d\8f\8eg\97p\90Ý\92è
                ini.WriteBool('PostTime', 'UseMachineTime', FUseMachineTime);
@@ -1609,17 +1783,24 @@ begin
                //\82 \82Ú\81`\82ñ
                ini.WriteBool('Abon','Deleterlo',FAbonDeleterlo);
                ini.WriteBool('Abon','Replaceul',FAbonReplaceul);
-                               ini.WriteBool('Abon','Popup',FPopUpAbon);
+               ini.WriteBool('Abon','Popup',FPopUpAbon);
                ini.WriteBool('Abon','ShowNGLines',FShowNGLinesNum);
                ini.WriteBool('Abon','AddResAnchor',FAddResAnchor);
-                               ini.WriteBool('Abon','DeleteSyria',FDeleteSyria);
+               ini.WriteBool('Abon','DeleteSyria',FDeleteSyria);
+               ini.WriteBool('Abon','IgnoreKana', FIgnoreKana);
 
                // \83G\83f\83B\83^
                ini.WriteBool( 'Editor', 'SpaceToNBSP', FSpaceToNBSP );
                ini.WriteBool( 'Editor', 'AmpToCharRef', FAmpToCharRef );
+        ini.WriteBool( 'Editor', 'UseGobakuCheck', FUseGobakuCheck );
+        ini.WriteBool( 'Editor', 'UseUnicode', FUseUnicode );
+
+        //! \8dí\8f\9c\97v\90¿\94Â\82ð\93Á\95Ê\88µ\82¢
+        ini.WriteBool('NewBoard', 'SakuSpecial', FSakuBoard);
 
                 //\83^\83u\8e©\93®\95Û\91
                ini.WriteBool('TabAuto', 'TabAutoLoadSave', FTabAutoLoadSave);
+        ini.WriteString('Thread', 'LastCloseTabURL', FLastCloseTabURL);
                 //\8fÚ\8d×\90Ý\92è
                ini.WriteInteger('OptionDialog', 'KuroutTabIndex', FKuroutSettingTabIndex);
 
@@ -1628,7 +1809,7 @@ begin
 
                // \83}\83E\83X\83W\83F\83X\83`\83\83\81[\82ð\8eg\97p\82·\82é\82©\82Ç\82¤\82©
                ini.WriteBool( 'Guesture', 'Enabled', FGestureEnabled );
-
+        ini.WriteBool( 'Guesture', 'IgnoreContext', FGestureIgnoreContext );
                //FusianaTrap
                ini.WriteBool('Trap', 'LocalTrap', FLocalTrapAtt);
                ini.WriteBool('Trap', 'RemoteTrap', FRemoteTrapAtt);
@@ -1636,8 +1817,68 @@ begin
 
                // \8eg\97p\82·\82é\83X\83p\83\80\83t\83B\83\8b\83^
                ini.WriteInteger( 'Abon', 'SpamFilterAlgorithm', Ord( FSpamFilterAlgorithm ) );
-        ini.WriteBool('Function', 'Mute', FMute);
-        ini.WriteBool('ThreadList', 'UseUndecided', FUseUndecided);
+                ini.WriteBool('Function', 'Mute', FMute);
+                ini.WriteBool('ThreadList', 'UseUndecided', FUseUndecided);
+
+               //\94F\8fØ\97p\83\86\81[\83UID\81E\83p\83X\83\8f\81[\83h
+               ini.WriteString('Be', 'UserID', FBeUserID);
+               ini.WriteString('Be', 'Password', Encrypt(FBePassword));
+               ini.WriteBool('Be', 'AutoLogin', FBeAutoLogin);
+
+               //\97\9a\97ð\82Ì\8dÅ\91å\95Û\91\8c\8f\90\94
+               ini.WriteInteger('Recode', 'Max', FMaxRecordCount);
+               // \8cÅ\92è\82ÌCookie\95\8e\9a\97ñ
+        ini.WriteString('Cookie', 'fixedString', FFixedCookie);
+
+        // \83\8a\83\93\83N\88Ú\93®\97\9a\97ð\82Ì\8dÅ\91å\95Û\8e\9d\90\94
+        ini.WriteInteger('MoveHisotry', 'Max', FMoveHistorySize);
+
+        ini.WriteBool('Function', 'StroedTaskTray', FStoredTaskTray);
+        ini.WriteBool('Function', 'LoopBrowserTabs', FLoopBrowserTabs);
+        ini.WriteBool('Thread', 'AddKeywordLink', FAddKeywordLink);
+        ini.WriteBool('Thread', 'ReplaceDat', FReplaceDat);
+        ini.WriteInteger('Function', 'SentIniFileSize', FSentIniFileSize);
+        ini.WriteString('Function', 'ExtList', FExtList);
+        ini.WriteBool('ThreadList', 'CheckDatFile', FCheckDatFile);
+        ini.WriteBool('Thread', 'LimitResCountMessage', FLimitResCountMessage);
+
+               //! \83X\83\8c\83^\83C\8c\9f\8dõ\83E\83B\83\93\83h\83E
+               ini.WriteInteger('ThreadSearch', 'Top',    FThrdSrchTop);
+               ini.WriteInteger('ThreadSearch', 'Left',   FThrdSrchLeft);
+               ini.WriteInteger('ThreadSearch', 'Width',  FThrdSrchWidth);
+               ini.WriteInteger('ThreadSearch', 'Height', FThrdSrchHeight);
+               ini.WriteBool(   'ThreadSearch', 'Max',    FThrdSrchMax);
+        ini.WriteBool(   'ThreadSearch', 'Stay',   FThrdSrchStay);
+        ini.WriteInteger('ThreadSearch', 'Col1W',  FThrdSrchCol1W);
+        ini.WriteInteger('ThreadSearch', 'Col2W',  FThrdSrchCol2W);
+        ini.WriteInteger('ThreadSearch', 'Col3W',  FThrdSrchCol3W);
+        ini.WriteInteger('ThreadSearch', 'Col4W',  FThrdSrchCol4W);
+        ini.WriteInteger('ThreadSearch', 'HistoryCount', FThrdSrchHistory.Count);
+        if (FThrdSrchHistory.Count > 0) then begin
+            for i := 1 to FThrdSrchHistory.Count do begin
+                ini.WriteString('ThreadSearch', 'History' + IntToStr(i), FThrdSrchHistory.Strings[i-1]);
+            end;
+        end;
+
+
+               ini.UpdateFile;
+       finally
+               ini.Free;
+       end;
+end;
+//\90Ý\92è\83t\83@\83C\83\8b\95Û\91¶(\96`\8c¯\82Ì\8f\91)
+procedure TSetting.WriteBoukenSettingFile;
+var
+       i: Integer;
+       ini: TMemIniFile;
+begin
+       ini := TMemIniFile.Create(GetFileName());
+       try
+               ini.EraseSection('Bouken');
+        // \96`\8c¯\82Ì\8f\91Cookie\8f\91\82«\8d\9e\82Ý
+        for i := 0 to FBoukenCookieList.Count - 1 do begin
+            ini.WriteString('Bouken', FBoukenCookieList.Names[i], FBoukenCookieList.Values[FBoukenCookieList.Names[i]]);
+        end;
                ini.UpdateFile;
        finally
                ini.Free;
@@ -1682,7 +1923,7 @@ var
 begin
        ini := TMemIniFile.Create(GetFileName());
        try
-               if ExtractFilePath(Application.ExeName) + 'Log' = NewLogFolder then
+               if GetAppDir + 'Log' = NewLogFolder then
                        ini.DeleteKey('Folder', 'LogFolder')
                else
                        ini.WriteString('Folder', 'LogFolder', NewLogFolder);
@@ -1796,7 +2037,8 @@ var
 begin
        for i := 0 to GetSoundCount - 1 do begin
                if SoundName[i] = Name then begin
-                       Result := SoundFileName[i];
+            SysUtils.SetCurrentDir(GetAppDir);
+                       Result := ExpandFileName(SoundFileName[i]);
                        Exit;
                end;
        end;
@@ -1906,10 +2148,13 @@ var
 begin
        ini := TMemIniFile.Create(GetBoardURLFileName());
        try
-               ini.WriteInteger('URL','count',2);
-               ini.WriteInteger('URL','selected',2);
+               //\8dX\90VURL\82Ì\90\94
+               ini.WriteInteger('URL','count',1);
+               //\83f\83t\83H\83\8b\83g\82Å\8eg\97p\82·\82é\82t\82q\82k\82Ì\83C\83\93\83f\83b\83N\83X
+               ini.WriteInteger('URL','selected',1);
+               //\88È\89º\95K\97v\82È\90\94\82¾\82¯\81A\8dX\90V\82t\82q\82k\82ð\92Ç\89Á
                ini.WriteString('URL','1',DEFAULT_2CH_BOARD_URL1);
-               ini.WriteString('URL','2',DEFAULT_2CH_BOARD_URL2);
+               //ini.WriteString('URL','2',DEFAULT_2CH_BOARD_URL2);
                ini.UpdateFile;
        finally
                ini.Free;
@@ -1921,7 +2166,7 @@ end;
  *************************************************************************)
 function TSetting.GetBoardFileName: string;
 begin
-       Result := GetAppDir + CONFIG_DIR_NAME + '\' + BOARD_FILE_NAME;
+       Result := GetConfigDir + BOARD_FILE_NAME;
 end;
 
 (*************************************************************************
@@ -1929,15 +2174,15 @@ end;
  *************************************************************************)
 function TSetting.GetCustomBoardFileName: string;
 begin
-       Result := GetAppDir + CONFIG_DIR_NAME + '\' + CUSTOMBOARD_FILE_NAME;
+       Result := GetConfigDir + CUSTOMBOARD_FILE_NAME;
 end;
 
 (*************************************************************************
- *\83{\81[\83h\83f\83B\83\8c\83N\83g\83\8a\8eæ\93¾
+ *\83{\81[\83h\83f\83B\83\8c\83N\83g\83\8a\8eæ\93¾(\\82Å\8fI\82í\82é)
  *************************************************************************)
 function TSetting.GetBoardDir: string;
 begin
-       Result := GetAppDir + CONFIG_DIR_NAME + '\' + BOARD_DIR_NAME + '\';
+       Result := IncludeTrailingPathDelimiter(GetConfigDir + BOARD_DIR_NAME);
 end;
 
 (*************************************************************************
@@ -1950,7 +2195,7 @@ end;
 
 
 (*************************************************************************
- *\8eÀ\8ds\83t\83@\83C\83\8b\83t\83H\83\8b\83_\8eæ\93¾
+ *\8eÀ\8ds\83t\83@\83C\83\8b\83t\83H\83\8b\83_\8eæ\93¾(\8dÅ\8cã\82É\\82ª\82 \82é)
  *************************************************************************)
 function TSetting.GetAppDir: string;
 begin
@@ -1982,58 +2227,44 @@ begin
 end;
 
 (*************************************************************************
- *Config\83t\83H\83\8b\83_\8eæ\93¾
+ *defaultFiles.ini\83t\83@\83C\83\8b\96¼\8eæ\93¾\81i\83p\83X\81{\83t\83@\83C\83\8b\96¼\81j
+ *************************************************************************)
+function TSetting.GetDefaultFilesFileName: string;
+begin
+       Result := GetAppDir + DEFFILES_FILE_NAME;
+end;
+
+(*************************************************************************
+ *Config\83t\83H\83\8b\83_\8eæ\93¾(\\82Å\8fI\82í\82é)
  *************************************************************************)
 function TSetting.GetConfigDir: string;
 begin
        Result := IncludeTrailingPathDelimiter(GetAppDir + CONFIG_DIR_NAME);
 end;
-
+(*************************************************************************
+ *CSS\83t\83H\83\8b\83_\8eæ\93¾(\\82Å\8fI\82í\82é)
+ *************************************************************************)
 function TSetting.GetStyleSheetDir: string;
 begin
        Result := IncludeTrailingPathDelimiter(GetConfigDir + CSS_DIR_NAME);
 end;
-
+(*************************************************************************
+ *skin\83t\83H\83\8b\83_\8eæ\93¾(\\82Å\8fI\82í\82é)
+ *************************************************************************)
 function TSetting.GetSkinDir: string;
 begin
        Result := IncludeTrailingPathDelimiter(GetConfigDir + SKIN_DIR_NAME);
 end;
-
-function TSetting.GetSkinHeaderFileName: string;
-begin
-       Result := CSSFileName + SKIN_HEADER_FILE_NAME;
-end;
-
-function TSetting.GetSkinFooterFileName: string;
-begin
-       Result := CSSFileName + SKIN_FOOTER_FILE_NAME;
-end;
-
-function TSetting.GetSkinNewResFileName: string;
-begin
-       Result := CSSFileName + SKIN_NEWRES_FILE_NAME;
-end;
-
-function TSetting.GetSkinResFileName: string;
-begin
-       Result := CSSFileName + SKIN_RES_FILE_NAME;
-end;
-
-function TSetting.GetSkinBookmarkFileName: string;
-begin
-       Result := CSSFileName + SKIN_BOOKMARK_FILE_NAME;
-end;
-
-function TSetting.GetSkinNewmarkFileName: string;
-begin
-       Result := CSSFileName + SKIN_NEWMARK_FILE_NAME;
-end;
-
+(*************************************************************************
+ *NG\83\8f\81[\83h\83f\83B\83\8c\83N\83g\83\8a\8eæ\93¾(\\82Å\8fI\82í\82é)
+ *************************************************************************)
 function TSetting.GetNGWordsDir: string;
 begin
        Result := IncludeTrailingPathDelimiter(GetConfigDir + NGWORDs_DIR_NAME);
 end;
-
+(*************************************************************************
+ *Board\83v\83\89\83O\83C\83\93\83f\83B\83\8c\83N\83g\83\8a\8eæ\93¾(\\82Å\8fI\82í\82é)
+ *************************************************************************)
 function TSetting.GetBoardPlugInDir: string;
 begin
        Result := IncludeTrailingPathDelimiter(GetConfigDir + BOARD_PLUGIN_DIR_NAME);
@@ -2043,26 +2274,29 @@ procedure TSetting.SetUseCSS( value: Boolean );
 begin
 
        FUseCSS := value;
-
+       // Windows\93I\82É\83t\83@\83C\83\8b\83p\83X\82Ì\91å\95\8e\9a\8f¬\95\8e\9a\82Ì\88á\82¢\82Í\96³\8e\8b\82³\82ê\82é\82Ì\82Å\81A
+       // \83R\83R\82Å\82Ì\94»\92è\82Å\82à\91å\95\8e\9a\8f¬\95\8e\9a\82Ì\88á\82¢\82Í\96³\8e\8b\82·\82é\81B
        FUseSkin :=
                UseCSS and
-               (Pos( GetSkinDir, CSSFileName ) > 0) and
-               FileExists( GetSkinHeaderFileName );
+               (Pos( AnsiLowerCase(GetSkinDir), AnsiLowerCase(FSkinFiles.FileName) ) > 0) and
+               FileExists( FSkinFiles.GetSkinHeaderFileName );
 
 end;
 
 procedure TSetting.SetCSSFileName( fileName: string );
 begin
-
-       FCSSFileName := fileName;
-
+    FSkinFiles.FileName := fileName;
+       // Windows\93I\82É\83t\83@\83C\83\8b\83p\83X\82Ì\91å\95\8e\9a\8f¬\95\8e\9a\82Ì\88á\82¢\82Í\96³\8e\8b\82³\82ê\82é\82Ì\82Å\81A
+       // \83R\83R\82Å\82Ì\94»\92è\82Å\82à\91å\95\8e\9a\8f¬\95\8e\9a\82Ì\88á\82¢\82Í\96³\8e\8b\82·\82é\81B
        FUseSkin :=
                UseCSS and
-               (Pos( GetSkinDir, CSSFileName ) > 0) and
-               FileExists( GetSkinHeaderFileName );
+               (Pos( AnsiLowerCase(GetSkinDir), AnsiLowerCase(FSkinFiles.FileName) ) > 0) and
+               FileExists( FSkinFiles.GetSkinHeaderFileName );
 
 end;
-
+(*************************************************************************
+ *samba\90Ý\92è\83t\83@\83C\83\8b\96¼\8eæ\93¾
+ *************************************************************************)
 function TSetting.GetSambaFileName: string;
 begin
        Result := GetAppDir + SAMBATIME_FILE_NAME;
@@ -2085,6 +2319,311 @@ begin
        Result := GetConfigDir + SPAMFILTER_FILE_NAME;
 end;
 
-end.
+function TSetting.GetLanguageFileName: string;
+begin
+    Result := GetConfigDir + LANGUAGE_FILE_NAME;
+end;
+procedure TSetting.WriteLogFolder(AVal : String);
+begin
+       FLogFolder := AVal;
+       FLogFolderP := IncludeTrailingPathDelimiter(LogFolder);
+end;
+function TSetting.GetMainKeyFileName: String;
+begin
+       Result := GetConfigDir + KEY_SETTING_FILE_NAME;
+end;
+function TSetting.GetEditorKeyFileName: String;
+begin
+       Result := GetConfigDir + EKEY_SETTING_FILE_NAME;
+end;
+function TSetting.GetInputAssistFileName : String;
+begin
+       Result := GetConfigDir + INPUTASSIST_FILE_NAME;
+end;
+function TSetting.GetReplaceFileName: String;
+begin
+    Result := GetConfigDir + REPLACE_FILE_NAME;
+end;
+function TSetting.GetExtprevieFileName: String;
+begin
+    Result := GetConfigDir + EXT_PREVIEW_FILE_NAME;
+end;
+procedure TSetting.SetMoveHistorySize(AVal : Integer);
+begin
+    if (AVal > 0) then begin
+        FMoveHistorySize := AVal;
+    end;
+end;
+{
+\brief \83v\83\8d\83L\83V\90Ý\92è\93Ç\82Ý\8d\9e\82Ý
+\param  memIni  ini\83t\83@\83C\83\8b
+}
+procedure TSetting.ReadProxySettings(memIni: TMemIniFile);
+const
+    READ_SECTION = 'ReadProxy';
+    WRITE_SECTION= 'WriteProxy';
+    PROXY_KEY = 'Proxy';
+    ADDRE_KEY = 'Address';
+    PORT_KEY = 'Port';
+    UID_KEY  = 'UserID';
+    PASS_KEY = 'Password';
+begin
+    if (memIni <> nil) then begin
+               FReadProxy := memIni.ReadBool(READ_SECTION, PROXY_KEY, false);
+               FReadProxyAddress := memIni.ReadString(READ_SECTION, ADDRE_KEY, '');
+               FReadProxyPort := memIni.ReadInteger(READ_SECTION, PORT_KEY, 0);
+               FReadProxyUserID := memIni.ReadString(READ_SECTION, UID_KEY, '');
+               FReadProxyPassword := memIni.ReadString(READ_SECTION, PASS_KEY, '');
+
+               FWriteProxy := memIni.ReadBool(WRITE_SECTION, PROXY_KEY, false);
+               FWriteProxyAddress := memIni.ReadString(WRITE_SECTION, ADDRE_KEY, '');
+               FWriteProxyPort := memIni.ReadInteger(WRITE_SECTION, PORT_KEY, 0);
+               FWriteProxyUserID := memIni.ReadString(WRITE_SECTION, UID_KEY, '');
+               FWriteProxyPassword := memIni.ReadString(WRITE_SECTION, PASS_KEY, '');
+    end;
+end;
+{
+\brief  \8ae\8eí\83E\83B\83\93\83h\83E\90Ý\92è\93Ç\82Ý\8d\9e\82Ý
+\param  menIni  ini\83t\83@\83C\83\8b
+}
+procedure TSetting.ReadWindowSettings(memIni: TMemIniFile);
+const
+    WINDOW_SECTION = 'Window';
+begin
+    if (memIni <> nil) then begin
+               FBrowserFontName := memIni.ReadString(WINDOW_SECTION, 'BrowserFontName', '');
+               FBrowserFontSize := memIni.ReadInteger(WINDOW_SECTION, 'BrowserFontSize', 0);
+               FBrowserFontBold := memIni.ReadInteger(WINDOW_SECTION, 'BrowserFontBold', 0);
+               FBrowserFontItalic := memIni.ReadInteger(WINDOW_SECTION, 'BrowserFontItalic', 0);
+               FBrowserFontColor := memIni.ReadInteger(WINDOW_SECTION, 'BrowserFontColor', -1);
+               FBrowserBackColor := memIni.ReadInteger(WINDOW_SECTION, 'BrowserBackColor', -1);
+
+               FCabinetFontName := memIni.ReadString(WINDOW_SECTION, 'CabinetFontName', DEFAULT_FONT_NAME);
+               FCabinetFontSize := memIni.ReadInteger(WINDOW_SECTION, 'CabinetFontSize', DEFAULT_FONT_SIZE);
+               FCabinetFontBold := memIni.ReadBool(WINDOW_SECTION, 'CabinetFontBold', False);
+               FCabinetFontItalic := memIni.ReadBool(WINDOW_SECTION, 'CabinetFontItalic', False);
+               FCabinetFontColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'CabinetFontColor', DEFAULT_FONT_COLOR));
+               FCabinetBackColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'CabinetBackColor', DEFAULT_WINDOW_COLOR));
+
+               FListFontName := memIni.ReadString(WINDOW_SECTION, 'ListFontName', DEFAULT_FONT_NAME);
+               FListFontSize := memIni.ReadInteger(WINDOW_SECTION, 'ListFontSize', DEFAULT_FONT_SIZE);
+               FListFontBold := memIni.ReadBool(WINDOW_SECTION, 'ListFontBold', False);
+               FListFontItalic := memIni.ReadBool(WINDOW_SECTION, 'ListFontItalic', False);
+               FListFontColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'ListFontColor', DEFAULT_FONT_COLOR));
+               FListBackColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'ListBackColor', DEFAULT_WINDOW_COLOR));
+               FUseOddColorOddResNum := memIni.ReadBool(WINDOW_SECTION,'UseOddColor', False);
+               FOddColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'OddColor', DEFAULT_WINDOW_COLOR));
+               FUnFocusedBold := memIni.ReadBool(WINDOW_SECTION,'UnFocusedBold', False);
+
+               FEditorFontName := memIni.ReadString(WINDOW_SECTION, 'EditorFontName', DEFAULT_FONT_NAME);
+               FEditorFontSize := memIni.ReadInteger(WINDOW_SECTION, 'EditorFontSize', DEFAULT_FONT_SIZE);
+               FEditorFontBold := memIni.ReadBool(WINDOW_SECTION, 'EditorFontBold', False);
+               FEditorFontItalic := memIni.ReadBool(WINDOW_SECTION, 'EditorFontItalic', False);
+               FEditorFontColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'EditorFontColor', DEFAULT_FONT_COLOR));
+               FEditorBackColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'EditorBackColor', DEFAULT_WINDOW_COLOR));
+
+               FBrowserTabFontName := memIni.ReadString(WINDOW_SECTION, 'BrowserTabFontName', DEFAULT_TAB_FONT_NAME);
+               FBrowserTabFontSize := memIni.ReadInteger(WINDOW_SECTION, 'BrowserTabFontSize', DEFAULT_TAB_FONT_SIZE);
+               FBrowserTabFontBold := memIni.ReadBool(WINDOW_SECTION, 'BrowserTabFontBold', False);
+               FBrowserTabFontItalic := memIni.ReadBool(WINDOW_SECTION, 'BrowserTabFontItalic', False);
+
+               FHintFontName := memIni.ReadString(WINDOW_SECTION, 'HintFontName', Screen.HintFont.Name);
+               FHintFontSize := memIni.ReadInteger(WINDOW_SECTION, 'HintFontSize', Screen.HintFont.Size);
+               //FHintFontBold := memIni.ReadBool(WINDOW_SECTION, 'HintFontBold', False);
+               //FHintFontItalic := memIni.ReadBool(WINDOW_SECTION, 'HintFontItalic', False);
+               FHintFontColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'HintFontColor', DEFAULT_FONT_COLOR));
+               FHintBackColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'HintBackColor', 'clInfoBk'));
+    end;
+end;
+{
+\brief  \93ü\97Í\97\9a\97ð\93Ç\82Ý\8d\9e\82Ý\81i\8c\9f\8dõ\81{\83\81\81[\83\8b\97\93\81{\96¼\91O\81j
+\param  memIni  ini\83t\83@\83C\83\8b
+}
+procedure TSetting.ReadInputHisotrys(memIni: TMemIniFile);
+const
+    SECTIONS : array[0..2] of string = ('Name', 'Mail', 'SelectText');
+var
+       wkList : TStringList;
+    wkStr : string;
+    i, j : Integer;
+    listArray : array[0..2] of TStringList;
+begin
+    if (memIni <> nil) then begin
+        listArray[0] := FNameList;
+        listArray[1] := FMailList;
+        listArray[2] := FSelectTextList;
+        wkList := TStringList.Create;
+        try
+            for i := 0 to High(listArray) do begin
+                memIni.ReadSection(SECTIONS[i], wkList);
+                for j := 0 to wkList.Count -1 do begin
+                    wkStr := memIni.ReadString(SECTIONS[i], wkList[j], '');
+                    if (wkStr <> '') and
+                        (listArray[i].IndexOf(wkStr) = -1) then begin
+                        listArray[i].Add(wkStr);
+                    end;
+                end;
+            end;
+        finally
+            wkList.Free;
+        end;
+    end;
+end;
+{
+\breif  \83\8a\83X\83g\83J\83\89\83\80\95\9d\93Ç\82Ý\8d\9e\82Ý
+\param  memIni  ini\83t\83@\83C\83\8b
+}
+procedure TSetting.ReadListColumnWidth(memIni: TMemIniFile);
+const
+    SECTIONS : array[0..2] of string =
+        ('BBSColumnWidth', 'CategoryColumnWidth', 'BoardColumnWidth');
+       DEFAULT_BBS_WIDTH: array[0..0] of Integer = (140);
+       DEFAULT_CATEGORY_WIDTH: array[0..2] of Integer = (150, 80, 130);
+       DEFAULT_BOARD_WIDTH: array[0..10] of Integer = (350, 60, 60, 60, 60, 60, 80, 130, 130, 130, 60);
+       MAX_WIDTH: Integer = 2000;
+var
+       wkList : TStringList;
+    i : Integer;
+begin
+    if (memIni <> nil) then begin
+               // \83\8a\83X\83g\83J\83\89\83\80\95\9d
+               wkList := TStringList.Create;
+               try
+                       memIni.ReadSection(SECTIONS[0], wkList);
+                       if Length(FBBSColumnWidth) <> wkList.Count then begin
+                               memIni.EraseSection(SECTIONS[0]);
+                       end;
+                       for i := 0 to High(FBBSColumnWidth) do begin
+                               BBSColumnWidth[i] := memIni.ReadInteger(SECTIONS[0],
+                     'ID' + IntToStr(i), DEFAULT_BBS_WIDTH[i]);
+                               if BBSColumnWidth[i] > MAX_WIDTH then
+                                       BBSColumnWidth[i] := DEFAULT_BBS_WIDTH[i];
+                       end;
+                       memIni.ReadSection(SECTIONS[1], wkList);
+                       if Length(FCategoryColumnWidth) <> wkList.Count then begin
+                               memIni.EraseSection(SECTIONS[1]);
+                       end;
+                       for i := 0 to High(FCategoryColumnWidth) do begin
+                               CategoryColumnWidth[i] := memIni.ReadInteger(SECTIONS[1],
+                     'ID' + IntToStr(i), DEFAULT_CATEGORY_WIDTH[i]);
+                               if CategoryColumnWidth[i] > MAX_WIDTH then
+                                       CategoryColumnWidth[i] := DEFAULT_CATEGORY_WIDTH[i];
+                       end;
+                       memIni.ReadSection(SECTIONS[2], wkList);
+                       if Length(FBoardColumnWidth) <> wkList.Count then begin
+                               memIni.EraseSection(SECTIONS[2]);
+                       end;
+                       for i := 0 to High(FBoardColumnWidth) do begin
+                               BoardColumnWidth[i] := memIni.ReadInteger(SECTIONS[2],
+                     'ID' + IntToStr(i), DEFAULT_BOARD_WIDTH[i]);
+                               if BoardColumnWidth[i] > MAX_WIDTH then
+                                       BoardColumnWidth[i] := DEFAULT_BOARD_WIDTH[i];
+                       end;
+               finally
+                       wkList.Free;
+               end;
+    end;
+end;
+//! \83J\83e\83S\83\8a\83\8a\83X\83g\83J\83\89\83\80\8f\87\8f\98\93Ç\82Ý\8d\9e\82Ý
+procedure TSetting.ReadOrdColumn(memIni: TMemIniFile);
+var
+       wkList : TStringList;
+    wkStr : string;
+    i, id, code : Integer;
+begin
+    if (memIni <> nil) then begin
+               wkList := TStringList.Create;
+               try
+                       memIni.ReadSection( 'BBSColumnOrder', wkList );
+                       for i := 0 to wkList.Count - 1 do begin
+                               wkStr := memIni.ReadString( 'BBSColumnOrder', 'ID' + IntToStr( i ), '' );
+                               Val( wkStr, id, code );
+                               if code = 0 then
+                                       FBBSColumnOrder.Add( TGikoBBSColumnID( id ) );
+                       end;
+                       if FBBSColumnOrder.Count = 0 then begin
+                               // \90Ý\92è\82ª\96³\82¢\82Ì\82Å\8dì\90¬
+                               for i := 0 to Integer( High( TGikoBBSColumnID ) ) do
+                                       FBBSColumnOrder.Add( TGikoBBSColumnID( i ) );
+                       end;
+
+                       memIni.ReadSection( 'CategoryColumnOrder', wkList );
+                       for i := 0 to wkList.Count - 1 do begin
+                               wkStr := memIni.ReadString( 'CategoryColumnOrder', 'ID' + IntToStr( i ), '' );
+                               Val( wkStr, id, code );
+                               if code = 0 then
+                                       FCategoryColumnOrder.Add( TGikoCategoryColumnID( id ) );
+                       end;
+                       if FCategoryColumnOrder.Count = 0 then begin
+                               // \90Ý\92è\82ª\96³\82¢\82Ì\82Å\8dì\90¬
+                               for i := 0 to Integer( High( TGikoCategoryColumnID ) ) do
+                                       FCategoryColumnOrder.Add( TGikoCategoryColumnID( i ) );
+                       end;
+
+                       memIni.ReadSection( 'BoardColumnOrder', wkList );
+                       for i := 0 to wkList.Count - 1 do begin
+                               wkStr := memIni.ReadString( 'BoardColumnOrder', 'ID' + IntToStr( i ), '' );
+                               Val( wkStr, id, code );
+                               if code = 0 then
+                                       FBoardColumnOrder.Add( TGikoBoardColumnID( id ) );
+                       end;
+                       if FBoardColumnOrder.Count = 0 then begin
+                               // \90Ý\92è\82ª\96³\82¢\82Ì\82Å\8dì\90¬
+                               for i := 0 to Integer( High( TGikoBoardColumnID ) ) do begin
+                                       // \90¨\82¢\82Ì\83J\83\89\83\80\82Í\83f\83t\83H\83\8b\83g\82Å\94ñ\95\\8e¦\82É\82·\82é
+                                       if ( i <> Ord(gbcVigor) ) then begin
+                                               FBoardColumnOrder.Add( TGikoBoardColumnID( i ) );
+                                       end;
+                               end;
+                       end;
+               finally
+                       wkList.Free;
+               end;
+    end;
+end;
+
+function TSetting.GetCSSFileName: string;
+begin
+    Result := FSkinFiles.FileName;
+end;
+function TSetting.GetBoukenCookie(AHostName: String): String;
+var
+    i : Integer;
+begin
+    for i := 0 to FBoukenCookieList.Count - 1 do begin
+        if ( AnsiPos(FBoukenCookieList.Names[i], AHostName) > 0 ) then begin
+            Result := FBoukenCookieList.Values[FBoukenCookieList.Names[i]];
+            Break;
+        end;
+    end;
+end;
+procedure TSetting.SetBoukenCookie(ACookieValue, AHostName: String);
+var
+    i : Integer;
+begin
+    for i := 0 to FBoukenCookieList.Count - 1 do begin
+        if ( FBoukenCookieList.Names[i] = AHostName ) then begin
+            FBoukenCookieList[i] := AHostName + '=' + ACookieValue;
+            Break;
+        end;
+    end;
+    if ( i = FBoukenCookieList.Count ) then begin
+        FBoukenCookieList.Add(AHostName + '=' + ACookieValue);
+    end;
+end;
+procedure TSetting.GetBouken(AHostName: String; var Domain:String; var Cookie:String);
+var
+    i : Integer;
+begin
+    Cookie := '';
+    for i := 0 to FBoukenCookieList.Count - 1 do begin
+        if ( AnsiPos(FBoukenCookieList.Names[i], AHostName) > 0 ) then begin
+            Domain := FBoukenCookieList.Names[i];
+            Cookie := FBoukenCookieList.Values[FBoukenCookieList.Names[i]];
+            Break;
+        end;
+    end;
+end;
 
+end.