INCLUDE "Const.oph" INCLUDE "System.oxh" INCLUDE "Date.oxh" INCLUDE "Dbase.oxh" INCLUDE "UniOpx.oxh" APP UserDict,&100047E4 ICON "UserDicticon.mbm" ENDA PROC Main: Global ToolId%,ScrWidth%,ScrHeight%,MainId%,BusyWid% Global DBPath$(255), sysevt&(16), ScrTop&, CurrRec&, ItemOnScr% Global SepLineX%,NewBtn%,NewBtnM%,EditBtn%,EditBtnM%,FindBtn%,FindBtnM%,DelBtn%,DelBtnM% Global yomi$(40), Kanji$(5,40), SrhText$(255),RunOnRevo%,Changed%,ArrowBmp% Global ScrlY%,ScrlLen%,UsingUF2% Local l&,i%,j%,MenuPos% UsingUF2%=0 if gHeight <240 : RunOnRevo%=-1 : endif if exist("C:\system\UniFEP\UniFEPROM.ldd") : UsingUF2%=-1 : endif if exist("D:\system\UniFEP\UniFEPROM.ldd") : UsingUF2%=-1 : endif MenuPos%=0 ScrTop&=1 CurrRec&=1 ItemOnScr%=(gHeight-30)/18-1 Changed%=0 Init: jBusy:("処理中...") DBPath$=CMD$(1) While (right$(DBPath$,1)<>"\") DBPath$=Left$(DBPath$,len(DBPath$)-1) endwh SepLineX%=gWidth/2 NewBtn%=gLoadBit(DBPath$+"UserDict.mbm",0,0) NewBtnM%=gLoadBit(DBPath$+"UserDict.mbm",0,1) EditBtn%=gLoadBit(DBPath$+"UserDict.mbm",0,2) EditBtnM%=gLoadBit(DBPath$+"UserDict.mbm",0,3) FindBtn%=gLoadBit(DBPath$+"UserDict.mbm",0,4) FindBtnM%=gLoadBit(DBPath$+"UserDict.mbm",0,5) DelBtn%=gLoadBit(DBPath$+"UserDict.mbm",0,6) DelBtnM%=gLoadBit(DBPath$+"UserDict.mbm",0,7) ArrowBmp%=gLoadBit(DBPath$+"UserDict.mbm",0,8) MakeValidDatabase: OpenDatabase: DrawToolbar: DrawFace: DrawDataScreen: jBusyOff: While 1 getevent32 sysevt&() if (sysevt&(1)=&1036) or (sysevt&(1)=10000) mInit mCard "ファイル","ユーザ辞書リスト更新",-%u,"テキストファイル読み込み",%I,"テキストファイル書き出し",-%X,"閉じる",%e mCard "編集","登録",%n,"編集[Enter]",%E,"複製",%d,"削除[Del]",-8,"検索",%f,"次を検索",%j mCard "情報","バージョン情報",%h i%=Menu(MenuPos%) gUpdate if (i%<>0) if (i%>=64) and (i%<=90) sysevt&(1)=i%-64 sysevt&(4)=6 elseif (i%>90) sysevt&(1)=i%-96 sysevt&(4)=4 else sysevt&(1)=i% sysevt&(4)=0 endif endif endif if ((sysevt&(1)=13) and ((sysevt&(4) and 7)=0)) or ((sysevt&(1)=5) and (sysevt&(4) and 2)) if (CurrRec&<=Count) EditEntry: endif elseif (sysevt&(1)=21) ReadInUserDict:(-1) Position CurrRec& if (CurrRec&=ScrTop&+ItemOnScr%) : ScrTop&=CurrRec& : endif DrawDataScreen: elseif (sysevt&(1)=4) and ((sysevt&(4) and 6)=0) Position CurrRec& Yomi$=a.Yomi$ Kanji$(1)=a.Kanji1$ Kanji$(2)=a.Kanji2$ Kanji$(3)=a.Kanji3$ Kanji$(4)=a.Kanji4$ Kanji$(5)=a.Kanji5$ Insert a.yomi$=yomi$ a.kanji1$=kanji$(1) a.kanji2$=kanji$(2) a.kanji3$=kanji$(3) a.kanji4$=kanji$(4) a.kanji5$=kanji$(5) put First CurrRec&=FindField(Yomi$,1,1,17) if (CurrRec&=ScrTop&+ItemOnScr%) : ScrTop&=CurrRec& : endif DrawDataScreen: elseif (sysevt&(1)=9) and (sysevt&(4) and 2) ImportText: elseif (sysevt&(1)=24) and (sysevt&(4) and 2) ExportText: elseif (sysevt&(1)=8) and (sysevt&(4) and 4) AboutBox: elseif ((sysevt&(1)=8) and ((sysevt&(4) and 7) =0)) if (CurrRec&<=Count) and (Count >0) DeleteEntry: endif elseif (sysevt&(1)=14) and ((sysevt&(4) and 2) =0) NewEntry: elseif (sysevt&(1)=6) and ((sysevt&(4) and 2) =0) FindFirst: elseif (sysevt&(1)=10) and ((sysevt&(4) and 2) =0) FindNext: elseif ((sysevt&(1)=5) and ((sysevt&(4) and 2)=0)) or ((sysevt&(1)=&404) and (GetCmd$="X")) break elseif (sysevt&(1)=&1009) if (CurrRec&>1) i%=(CurrRec&-ScrTop&)*18+29 gAt 1,i% : gInvert gWidth-22,18 CurrRec&=CurrRec&-1 if (CurrRec&=ScrTop&+ItemOnScr%) ScrTop&=ScrTop&+1 DrawDataScreen: else i%=(CurrRec&-ScrTop&)*18+29 gAt 1,i% : gInvert gWidth-22,18 endif Position CurrRec& endif elseif (sysevt&(1)=&408) if (sysevt&(3)=MainId%) and (sysevt&(4)=0) if (sysevt&(7) <=30) and (sysevt&(6)>=SepLineX%-4) and (sysevt&(6)<=SepLineX%+4) DoMoveLine: elseif (sysevt&(7) >30) and (sysevt&(6)<=gWidth-20) j%=(sysevt&(7)-30)/18 if ((ScrTop&+j%)<=Count) and (j%<=ItemOnScr%) i%=(CurrRec&-ScrTop&)*18+29 gAt 1,i% : gInvert gWidth-22,18 CurrRec&=ScrTop&+j% i%=(CurrRec&-ScrTop&)*18+29 gAt 1,i% : gInvert gWidth-22,18 Position CurrRec& endif elseif (sysevt&(7) >30) and (sysevt&(6)>gWidth-20) and (Count >ItemOnScr%) if (Sysevt&(7) >= gHeight-48) if (Sysevt&(7) < gHeight-24) ScrTop&=ScrTop&-1 if (CurrRec&>ScrTop&+ItemOnScr%-1) CurrRec&=CurrRec&-1 endif if (CurrRec&<1) : CurrRec&=1 : endif if (ScrTop&<1) : ScrTop&=1 : endif DrawDataScreen: else ScrTop&=ScrTop&+1 if (CurrRec&Count) : CurrRec&=Count : endif if (ScrTop&>Count) : ScrTop&=Count : endif DrawDataScreen: endif elseif (sysevt&(7)ScrlY%+ScrlLen%-1) CurrRec&=CurrRec&+ItemOnScr% ScrTop&=ScrTop&+ItemOnScr% if (CurrRec&>Count) : CurrRec&=Count : endif if (ScrTop&>Count) : ScrTop&=Count : endif DrawDataScreen: endif endif elseif (sysevt&(3)=ToolId%) and (sysevt&(4)=1) if (sysevt&(7)<25) DisplayTaskList: elseif ((sysevt&(7)<61) and not RunOnRevo%) or ((sysevt&(7)<58) and RunOnRevo%) gUse ToolId% gAt 1,25 if Not RunOnRevo% gButton "登録",2,70,36,1,newBtn%,newBtnM% else gButton "登録",2,58,33,1 endif gUse MainID% NewEntry: gUse ToolId% gAt 1,25 if (not RunOnRevo%) gButton "登録",2,70,36,0,newBtn%,newBtnM% else gButton "登録",2,58,33,0 endif gUse MainId% elseif ((sysevt&(7)<97) and not RunOnRevo%) or ((Sysevt&(7)<91) and RunOnRevo%) gUse Toolid% if (RunOnRevo%) gAt 1,58 : gButton "編集",2,58,33,1 else gAt 1,61 : gButton "編集",2,70,36,1,EditBtn%,EditBtnM% endif gUse MainId% if (CurrRec&<=Count) EditEntry: endif gUse Toolid% if (RunOnRevo%) gAt 1,58 : gButton "編集",2,58,33,0 else gAt 1,61 : gButton "編集",2,70,36,0,EditBtn%,EditBtnM% endif gUse MainId% elseif ((sysevt&(7)<133) and not RunOnRevo%) or ((sysevt&(7)<124) and RunOnRevo%) gUse ToolId% if RunOnRevo% gAt 1,91 : gButton "削除",2,58,33,1 else gAt 1,97 : gButton "検索",2,70,36,1,FindBtn%,FindBtnM% endif gUse MainId% if RunOnRevo% if (CurrRec&<=Count) and (Count >0) DeleteEntry: endif else FindFirst: endif gUse ToolId% if RunOnRevo% gAt 1,91 : gButton "削除",2,58,33,0 else gAt 1,97 : gButton "検索",2,70,36,0,FindBtn%,FindBtnM% endif gUse MainId% elseif (sysevt&(7)<169) and Not RunOnRevo% gUse ToolId% gAt 1,133 : gButton "削除",2,70,36,1,DelBtn%,DelBtnM% gUse MainId% if (CurrRec&<=Count) and (Count >0) DeleteEntry: endif gUse ToolId% gAt 1,133 : gButton "削除",2,70,36,0,DelBtn%,DelBtnM% gUse MainId% else l&=LCCLOCKFORMAT&: if l&=0 : l&=1 : else : l&=0 : endif LCSETCLOCKFORMAT:(l&) endif endif endif endwh if Changed% : SaveTheUserDic: : endif Use A Close gClose ToolId% gclose MainId% OnErr ExitSave:: if Changed% and (UsingUF2%) : l&=RunApp&:("UniFEP","","",2) : endif ExitSave:: Delete DBPath$+"UserDict.db" OnErr Off ENDP Proc jBusy:(str$) local oid%,w%,h% oid%=gIdentity BusyWid%=gCreate(0,0,gWidth,gHeight,0,2) gFont KFontTBGothicSmall& w%=gTWidth(str$) h%=18 gSetWin ScrWidth%-w%-10,ScrHeight%-h%-10,w%+10,h%+10 gXBorder 2,$94 gAt 5,gHeight-7 : gPrint str$ gAt 5,gHeight-5 : Cursor BusyWid%,h%,w%,h% gVisible on gUse oid% endp Proc jBusyOff: Cursor Off gClose BusyWid% endp Proc Init: local i% gVisible Off ScrWidth%=gWidth ScrHeight%=gHeight if UOSupported&: UOEnableUtf8: rem これがUnicode表示にする関数でした。 else gIPRINT "Unicode not supported" get stop endif if (RunOnRevo%) MainId%=gCreate(0,0,gWidth-60,gHeight,1,2) else MainId%=gCreate(0,0,gWidth-72,gHeight,1,2) endif gFont KFontTBGothicNormal& gUse 1 if (RunOnRevo%) ToolID%=gcreate(gwidth-60,0,60,gHeight,1,2) else ToolId%=gCreate(gWidth-72,0,72,gHeight,1,2) endif gFont KFontTBGothicNormal& gUse MainId% endp Proc DrawToolBar: local oid%,x% oid%=gIdentity gUse ToolId% gAt 0,0 : gBox gWidth,gHeight gFont KFontTBGothicTiny& x%=(gWidth-2-gTWidth("単語登録"))/2+1 gAt x%,18 : gPrint "単語登録" gAt 1,24 : gLineto gWidth-1,24 gFont KFontTBGothicSmall& gStyle 1 if (Not RunOnRevo%) gAt 1,25 : gButton "登録",2,70,36,0,newBtn%,newBtnM% gAt 1,61 : gButton "編集",2,70,36,0,EditBtn%,EditBtnM% gAt 1,97 : gButton "検索",2,70,36,0,FindBtn%,FindBtnM% gAt 1,133 : gButton "削除",2,70,36,0,DelBtn%,DelBtnM% gAt 5,175 : gClock On,6 else gAt 1,25 : gButton "登録",2,58,33,0 gAt 1,58 : gButton "編集",2,58,33,0 gAt 1,91 : gButton "削除",2,58,33,0 gAt 1,124 : gClock On,12 endif gUse oid% Endp Proc DrawFace: Local x% gUse MainId% gColor 192,192,192 gAt 0,0 : gFill gWidth,25,0 gColor 128,128,128 gAt 0,0 : gBox gWidth,gHeight gSetPenWidth 2 gAt SepLineX%-1,0 : gLineto SepLineX%-1,gHeight gColor 0,0,0 gAt SepLineX%-1,1 : gLineto SepLineX%-1,24 gAt 1,24 : gLineTo gWidth-1,24 gSetPenWidth 1 gFont KFontEikSym15& gAt SepLineX%-13,22 : gPrint chr$(35) gAt SepLineX%,22 : gPrint chr$(34) gFont KFontTBGothicSmall& : gStyle 1 x%=(SepLineX%-2-gTWidth("読み"))/2+1 gAt x%,22 : gPrint "読み" x%=(((gWidth-2)-SepLineX%)-2-gTWidth("単語"))/2+1+ SepLineX% gAt x%,22 : gPrint "単語" gStyle 0 gFont KFontTBGothicNormal& endP Proc MakeValidDatabase: if Exist(DBPath$+"UserDict.db") if (DBGetFieldCount&:(DBPath$+"UserDict.db","UserTbl") <=6) Delete DBPath$+"UserDict.db" endif endif endP Proc OpenDatabase: Local tKey&, NeedMerge% NeedMerge%=0 if Not Exist(DBPath$+"UserDict.db") Create chr$(34)+DBPath$+"UserDict.db"+Chr$(34)+" FIELDS Yomi, Kanji1, Kanji2, Kanji3, Kanji4, Kanji5, Kanji6, Kanji7, Kanji8, Kanji9, Kanji10, Kanji11, Kanji12, Kanji13, Kanji14, Kanji15 TO UserTbl",a,Yomi$,Kanji1$,Kanji2$,Kanji3$,Kanji4$,Kanji5$,Kanji6$, Kanji7$, Kanji8$, Kanji9$, Kanji10$, Kanji11$, Kanji12$, Kanji13$, Kanji14$, Kanji15$ Close tKey&=DbNewKey&: DbAddFieldTrunc:(tKey&,"Yomi",1,30) DbMakeUnique:(tKey&) DbCreateIndex:("Prim",tKey&,DBPath$+"UserDict.db","UserTbl") DbDeleteKey:(tKey&) NeedMerge%=-1 endif Open chr$(34)+DBPath$+"UserDict.db"+Chr$(34)+" SELECT Yomi, Kanji1, Kanji2, Kanji3, Kanji4, Kanji5, Kanji6, Kanji7, Kanji8, Kanji9, Kanji10, Kanji11, Kanji12, Kanji13, Kanji14, Kanji15 FROM UserTbl ORDER BY Yomi",a,Yomi$,Kanji1$,Kanji2$,Kanji3$,Kanji4$,Kanji5$,Kanji6$, Kanji7$, Kanji8$, Kanji9$, Kanji10$, Kanji11$, Kanji12$, Kanji13$, Kanji14$, Kanji15$ Use A if (NeedMerge%) ReadInUserDict:(0) endif return endp Proc DrawDataScreen: local i%,j%,l&,oid% local temp$(255) oid%=gIdentity gUse MainId% gAt 1,26 : gFill gWidth-2,gHeight-31,1 gColor 128,128,128 gSetPenWidth 2 gAt SepLineX%-1,26 : gLineto SepLineX%-1,gHeight gSetPenWidth 1 gColor 0,0,0 if (Count = 0) : return : endif Position ScrTop& i%=45 while (not eof) and (i% < gHeight-1) gAt 2,i% : gPrintB a.yomi$,SepLineX%-4 if a.Kanji2$<>"" temp$="1."+a.Kanji1$+" 2."+a.Kanji2$ if (a.Kanji3$<>"") temp$=temp$+" 3."+a.Kanji3$ if (a.Kanji4$<>"") temp$=temp$+" 4."+a.Kanji4$ if (a.Kanji5$<>"") temp$=temp$+" 5."+a.Kanji5$ endif endif endif else Temp$="1."+a.Kanji1$ endif gAt SepLineX%+3,i% : gPrintB temp$,gWidth-SepLIneX%-23 Next i%=i%+18 endwh if (Count >ItemOnScr%) i%=(gHeight-75) * (ScrTop&-1) /Count j%=(gHeight-75) * ItemOnScr% /Count if (i%+j%>(gHeight-75)) i%=gHeight-75-j% endif else i%=0 j%=(gHeight-75) endif ScrlY%=27+i% ScrlLen%=j% gAt gWidth-20,27 : gbox 20,gHeight-29 gFont KFontEikSym15& gStyle 0 if (Count >ItemOnScr%) gAt gWidth-20,gHeight-48 : gButton chr$(44),2,20,24,0 gAt gWidth-20,gHeight-24 : gButton chr$(45),2,20,24,0 else gAt gWidth-20,gHeight-48 : gButton chr$(44),2,20,24,2 gAt gWidth-20,gHeight-24 : gButton chr$(45),2,20,24,2 endif gFont KFontTBGothicNormal& gColor 192,192,192 gAt gWidth-19,27+i% : gFill 18,j%,0 gColor 0,0,0 gAt gWidth-19,27+i% : gXBorder 2,$22,18,j% gAt gWidth-18,27+i%+j%/2 : gXBorder 2,$2a,14,4 i%=(CurrRec&-ScrTop&)*18+29 gAt 1,i% : gInvert gWidth-22,18 Position CurrRec& gUse oid% endP Proc DoMoveLine: local startPos&, evt&(16),X% StartPos&=sysevt&(6) X%=SepLineX% While 1 gAt X%-7,0 : gCopy ArrowBmp%,0,0,15,gHeight,2 GetEvent32 evt&() gAt X%-7,0 : gCopy ArrowBmp%,0,0,15,gHeight,2 if (evt&(1)<>&408) X%=SepLineX% break elseif (evt&(3)<>MainId%) X%=SepLineX% break elseif (evt&(4)=6) X%=X%+(evt&(6)-StartPos&) StartPos&=evt&(6) elseif (evt&(4)=1) X%=X%+(evt&(6)-StartPos&) break endif endwh if (SepLineX%<>X%) and (X%>64) and (X%Kanji$(i%)) edchanged%=-1 else i%=i%+1 endif endwh if (oYomi$ <> yomi$) or (edchanged%) if FindField(yomi$,1,1,17) Modify else Insert a.kanji1$="" a.kanji2$="" a.kanji3$="" a.kanji4$="" a.kanji5$="" endif a.yomi$=yomi$ i%=1 while (i%<=5) if (Kanji$(i%)<>"") if (Kanji$(i%)<>a.Kanji1$) and (Kanji$(i%)<>a.Kanji2$) and (Kanji$(i%)<>a.Kanji3$) and (Kanji$(i%)<>a.Kanji4$) and (Kanji$(i%)<>a.Kanji5$) if (a.Kanji1$="") a.Kanji1$=Kanji$(i%) elseif (a.Kanji2$="") a.Kanji2$=Kanji$(i%) elseif (a.Kanji3$="") a.Kanji3$=Kanji$(i%) elseif (a.Kanji4$="") a.Kanji4$=Kanji$(i%) elseif (a.Kanji5$="") a.Kanji5$=Kanji$(i%) endif endif endif i%=i%+1 endwh i%=1 while (i%<5) if (oKanji$(i%)<>"") and (Kanji$(i%)="") if (a.Kanji1$=oKanji$(i%)) a.Kanji1$=a.Kanji2$ a.Kanji2$=a.Kanji3$ a.Kanji3$=a.Kanji4$ a.Kanji4$=a.Kanji5$ elseif (a.Kanji2$=oKanji$(i%)) a.Kanji2$=a.Kanji3$ a.Kanji3$=a.Kanji4$ a.Kanji4$=a.Kanji5$ elseif (a.Kanji3$=oKanji$(i%)) a.Kanji3$=a.Kanji4$ a.Kanji4$=a.Kanji5$ elseif (a.Kanji4$=oKanji$(i%)) a.Kanji4$=a.Kanji5$ endif a.Kanji5$="" endif i%=i%+1 endwh put if (oYomi$<>Yomi$) First CurrRec&=FindField(Yomi$,1,1,17) if (CurrRec&=ScrTop&+ItemOnScr%) : ScrTop&=CurrRec& : endif endif DrawDataScreen: if (oYomi$<>Yomi$) or (EdChanged%) : Changed%=-1 : endif endif endif endP Proc EditDialog1:(InsertRec%) local oYomi$(255),EdChanged% local oKanji$(5,40),i%,wid%,oid% local evt&(16),fldid%,slen&,Clip$(255) Local dbUpdate%,CsrPos%,Tmp$(255) Local oldRecNo& oldRecNo&=CurrRec& oid%=gIdentity if (Not InsertRec%) oYomi$=a.yomi$ oKanji$(1)=a.Kanji1$ oKanji$(2)=a.Kanji2$ oKanji$(3)=a.Kanji3$ oKanji$(4)=a.Kanji4$ oKanji$(5)=a.Kanji5$ yomi$=a.yomi$ else oYomi$="" Yomi$="" i%=1 while (i%<=5) oKanji$(i%)="" i%=i%+1 endwh endif i%=1 while (i%<=5) Kanji$(i%)=okanji$(i%) i%=i%+1 endwh wid%=gCreate((ScrWidth%-480)/2,(ScrHeight%-160)/2,480,160,0,1) gColor 160,160,160 gFill gWidth,28,0 gColor 128,128,128 gAt 0,28 : gLineTo gWidth,28 gAt 0,50 : gLineTo gWidth,50 gColor 0,0,0 gAt 0,0 : gXBorder 2,$94 gFont KFontTBGothicNormal& gStyle 1 if InsertRec% gAt 4,26 : gPrint "単語の登録" else gAt 4,26 : gPrint "編集" endif gFont KFontTBGothicSmall& gAt gWidth-60,3 : gButton "登録",2,48,24,0 gAt gWidth-160,3 : gButton "キャンセル",2,98,24,0 gStyle 0 gAt 3,47 : gPrint "†読み" gAt 3,71 : gPrint "†単語 #1" gColor 160,160,160 gAt 80,29 : gBox gWidth-90,18 gAt 80,53 : gBox gWidth-90,18 gColor 0,0,0 i%=2 while (i%<=5) gAt 3,91+(i%-2)*20 : gPrint "†" gAt 3+gTWidth("†単語 "),91+(i%-2)*20 : gPrint "#"+chr$(48+i%) gColor 160,160,160 gAt 80,73+(i%-2)*20 : gBox gWidth-90,18 gColor 0,0,0 i%=i%+1 endwh gAt 81,45 : gPrintClip(Yomi$,gWidth-92) i%=1 while (i%<=5) gAt 81,69+(i%-1)*20 : gPrintClip(Kanji$(i%),gWidth-92) i%=i%+1 endwh if (InsertRec%) fldid%=0 else fldId%=1 endif CsrPos%=Len(Yomi$) gVisible On dbUpdate%=0 while 1 if (FldId%=0) gAt 81+gTWidth(Left$(Yomi$,CsrPos%)),45 else gAt 81+gTWidth(left$(Kanji$(FldId%),CsrPos%)),69+(fldId%-1)*20 endif Cursor Wid%,16,2,16,0 GetEvent32 evt&() Cursor Off if (evt&(1)=&408) and (evt&(4)=1) and (Evt&(3)=Wid%) if (Evt&(6)>=gWidth-60) and (Evt&(6)<=gWidth-12) and (Evt&(7)>=3) and (Evt&(7)<=27) gStyle 1 gAt gWidth-60,3 : gButton "登録",2,48,24,1 gStyle 0 if (Len(Yomi$)=0) Beep 1,400 gStyle 1 gAt gWidth-60,3 : gButton "登録",2,48,24,0 gStyle 0 else dbUpdate%=-1 break endif elseif (Evt&(6)>=gWidth-160) and (Evt&(6)<=gWidth-62) and (Evt&(7)>=3) and (Evt&(7)<=27) gStyle 1 gAt gWidth-160,3 : gButton "キャンセル",2,98,24,1 gStyle 0 break elseif (Evt&(7)>28) and (Evt&(7)<=151) if (Fldid%=0) and (oYomi$<>Yomi$) and (Len(Yomi$)) First if (FindField(Yomi$,1,1,17)) Kanji$(1)=a.Kanji1$ Kanji$(2)=a.Kanji2$ Kanji$(3)=a.Kanji3$ Kanji$(4)=a.Kanji4$ Kanji$(5)=a.Kanji5$ i%=1 while (i%<=5) gColor 0,0,0 gAt 80,53+(i%-1)*20 : gFill gWidth-90,18,1 gColor 160,160,160 gAt 80,53+(i%-1)*20 : gBox gWidth-90,18 gColor 0,0,0 gAt 81,69+(i%-1)*20 : gPrintClip(Kanji$(i%),gWidth-92) i%=i%+1 endwh CurrRec&=Pos endif endif if (Evt&(7)>=28) and (Evt&(7)<=48) and (Len(Yomi$)=0) FldId%=0 CsrPos%=len(Yomi$) elseif (evt&(7)>=52) if (Len(Yomi$)=0) Beep 1,400 else i%=(evt&(7)-52)/20+1 if (i%>0) and (i%<=5) FldId%=i% CsrPos%=len(Kanji$(i%)) endif endif endif endif elseif (Evt&(1)=13) and (Evt&(4)=0) if (Len(Yomi$)=0) Beep 1,400 else dbUpdate%=-1 break endif elseif (Evt&(1)=27) and (Evt&(4)=0) break elseif (Evt&(1)=8) and (Evt&(4)=0) if (CsrPos%>0) if (FldId%=0) i%=CsrPos% if (i%=Len(Yomi$)) Clip$="" Tmp$=Yomi$ else Clip$=right$(Yomi$,len(Yomi$)-i%) Tmp$=left$(Yomi$,i%) endif while ((Asc(right$(Tmp$,1)) and &E0)=&80) Tmp$=left$(Tmp$,len(Tmp$)-1) endwh if (Len(Tmp$)=1) Tmp$="" else Tmp$=left$(Tmp$,len(Tmp$)-1) endif Yomi$=Tmp$+Clip$ CsrPos%=len(Tmp$) gColor 0,0,0 gAt 80,29 : gFill gWidth-90,18,1 gColor 160,160,160 gAt 80,29 : gBox gWidth-90,18 gColor 0,0,0 gAt 81,45 : gPrintClip(Yomi$,gWidth-92) else i%=CsrPos% if (i%=Len(Kanji$(FldId%))) Clip$="" Tmp$=Kanji$(FldId%) else Clip$=right$(Kanji$(FldId%),len(Kanji$(FldId%))-i%) Tmp$=left$(Kanji$(FldId%),i%) endif while ((Asc(right$(Tmp$,1)) and &E0)=&80) Tmp$=left$(Tmp$,len(Tmp$)-1) endwh if (Len(Tmp$)=1) Tmp$="" else Tmp$=left$(Tmp$,len(Tmp$)-1) endif Kanji$(FldId%)=Tmp$+Clip$ CsrPos%=len(Tmp$) gColor 0,0,0 gAt 80,53+(FldId%-1)*20 : gFill gWidth-90,18,1 gColor 160,160,160 gAt 80,53+(FldId%-1)*20 : gBox gWidth-90,18 gColor 0,0,0 gAt 81,69+(FldId%-1)*20 : gPrintClip(Kanji$(FldId%),gWidth-92) endif endif elseif (Evt&(1)=8) and ((Evt&(4) and 6)=2) if (FldId%=0) and (CsrPos%=1) CsrPos%=CsrPos%-1 if (fldId%=0) and (CsrPos%>1) if ((Asc(Mid$(Yomi$,CsrPos%,1)) and &e0) =&80) while ((Asc(Mid$(Yomi$,CsrPos%,1)) and &e0) =&80) CsrPos%=CsrPos%-1 endwh CsrPos%=CsrPos%-1 endif elseif (CsrPos%>1) if ((Asc(Mid$(Kanji$(FldId%),CsrPos%,1)) and &e0) =&80) while ((Asc(Mid$(Kanji$(FldId%),CsrPos%,1)) and &e0) =&80) CsrPos%=CsrPos%-1 endwh CsrPos%=CsrPos%-1 endif endif endif elseif (Evt&(1)=&1008) if (fldId%=0) if (CsrPos%Yomi$) and (Len(Yomi$)) First if (FindField(Yomi$,1,1,17)) Kanji$(1)=a.Kanji1$ Kanji$(2)=a.Kanji2$ Kanji$(3)=a.Kanji3$ Kanji$(4)=a.Kanji4$ Kanji$(5)=a.Kanji5$ i%=1 while (i%<=5) gColor 0,0,0 gAt 80,53+(i%-1)*20 : gFill gWidth-90,18,1 gColor 160,160,160 gAt 80,53+(i%-1)*20 : gBox gWidth-90,18 gColor 0,0,0 gAt 81,69+(i%-1)*20 : gPrintClip(Kanji$(i%),gWidth-92) i%=i%+1 endwh CurrRec&=Pos endif endif if (fldid%>0) fldId%=fldId%-1 if (Len(Yomi$)=0) beep 1,400 FldId%=0 elseif (FldId%=0) FldId%=1 endif if (fldId%=0) CsrPos%=Len(Yomi$) else CsrPos%=Len(Kanji$(fldid%)) endif endif elseif (Evt&(1)=&100A) if (Fldid%=0) and (oYomi$<>Yomi$) and (Len(Yomi$)) First if (FindField(Yomi$,1,1,17)) Kanji$(1)=a.Kanji1$ Kanji$(2)=a.Kanji2$ Kanji$(3)=a.Kanji3$ Kanji$(4)=a.Kanji4$ Kanji$(5)=a.Kanji5$ i%=1 while (i%<=5) gColor 0,0,0 gAt 80,53+(i%-1)*20 : gFill gWidth-90,18,1 gColor 160,160,160 gAt 80,53+(i%-1)*20 : gBox gWidth-90,18 gColor 0,0,0 gAt 81,69+(i%-1)*20 : gPrintClip(Kanji$(i%),gWidth-92) i%=i%+1 endwh CurrRec&=Pos endif endif if (fldid%<5) fldId%=fldId%+1 if (Len(Yomi$)=0) Beep 1,400 FldId%=0 endif if (fldId%=0) CsrPos%=Len(Yomi$) else CsrPos%=Len(Kanji$(fldid%)) endif endif elseif (Evt&(1)=&16) and ((Evt&(4) and 6)=4) slen& = UOCopyFromClip&:(addr(Clip$)+1, 255, 0) pokeb Addr(Clip$),slen& if (FldId%=0) if IsHira%:(Clip$) if (CsrPos%=0) Yomi$=Clip$+Yomi$ elseif (CsrPos%=Len(Yomi$)) Yomi$=Yomi$+Clip$ else Yomi$=left$(Yomi$,CsrPos%)+Clip$+right$(Yomi$,len(Yomi$)-CsrPos%) endif CsrPos%=CsrPos%+Len(Clip$) gColor 0,0,0 gAt 80,29 : gFill gWidth-90,18,1 gColor 160,160,160 gAt 80,29 : gBox gWidth-90,18 gColor 0,0,0 gAt 81,45 : gPrintClip(Yomi$,gWidth-92) else dInit "Invalid Input" dButtons "OK",(13 or KDButtonNoLabel%) dialog endif else if (CsrPos%=0) Kanji$(FldId%)=Clip$+Kanji$(FldId%) elseif (CsrPos%=Len(Kanji$(FldId%))) Kanji$(FldId%)=Kanji$(FldId%)+Clip$ else Kanji$(FldId%)=left$(Kanji$(FldId%),CsrPos%)+Clip$+right$(Kanji$(FldId%),len(Kanji$(FldId%))-CsrPos%) endif CsrPos%=CsrPos%+Len(Clip$) gColor 0,0,0 gAt 80,53+(FldId%-1)*20 : gFill gWidth-90,18,1 gColor 160,160,160 gAt 80,53+(FldId%-1)*20 : gBox gWidth-90,18 gColor 0,0,0 gAt 81,69+(FldId%-1)*20 : gPrintClip(Kanji$(FldId%),gWidth-92) endif endif endwh gClose wid% gUse oid% if dbUpdate% edchanged%=0 i%=1 while (i%<=5) and (not edchanged%) if (oKanji$(i%)<>Kanji$(i%)) edchanged%=-1 else i%=i%+1 endif endwh if (a.yomi$ <> yomi$) or (edchanged%) if FindField(yomi$,1,1,17) Modify else Insert endif a.yomi$=yomi$ a.kanji1$="" a.kanji2$="" a.kanji3$="" a.kanji4$="" a.kanji5$="" i%=1 while (i%<=5) if (Kanji$(i%)<>"") if (a.Kanji1$="") a.Kanji1$=Kanji$(i%) elseif (a.Kanji2$="") a.Kanji2$=Kanji$(i%) elseif (a.Kanji3$="") a.Kanji3$=Kanji$(i%) elseif (a.Kanji4$="") a.Kanji4$=Kanji$(i%) elseif (a.Kanji5$="") a.Kanji5$=Kanji$(i%) endif endif i%=i%+1 endwh put if (oYomi$<>Yomi$) First CurrRec&=FindField(Yomi$,1,1,17) if (CurrRec&=ScrTop&+ItemOnScr%) : ScrTop&=CurrRec& : endif endif DrawDataScreen: if (oYomi$<>Yomi$) or (EdChanged%) : Changed%=-1 : endif endif else CurrRec&=OldRecNo& endif Endp Proc FindFirst: local l& dInit "検索" if (RunOnRevo%) dEdit SrhText$,"検索する文字列",24 else dEdit SrhText$,"検索する文字列",30 endif dButtons "検索",(13 or KDButtonNoLabel%),"キャンセル",-(27 or KDButtonNoLabel%) if Dialog first l&=FindField("*"+SrhText$+"*",1,6,17) if (l&<>0) CurrRec&=l& if (CurrRec&=ScrTop&+ItemOnScr%) : ScrTop&=CurrRec& : endif DrawDataScreen: else Position CurrRec& dInit "検索" dText "",chr$(34)+SrhText$+chr$(34)+" が見つかりません" dButtons "OK",(13 or KDButtonNoLabel%) Dialog endif endif endp Proc DeleteEntry: dInit "削除" dText "","選択した単語を完全に削除しますか?" dButtons "いいえ [N]",-(%n or KDButtonPlainKey% or KDButtonNoLabel%),"はい [Y]",(%y or KDButtonPlainKey% or KDButtonNoLabel%) if Dialog Erase if (CurrRec&>Count) : CurrRec& = Count : Endif if (CurrRec&=ScrTop&+ItemOnScr%) : ScrTop&=CurrRec& : endif DrawDataScreen: Changed%=-1 endif endP Proc FindNext: local l& l&=FindField("*"+SrhText$+"*",1,6,17) if (l&<>0) CurrRec&=l& if (CurrRec&=ScrTop&+ItemOnScr%) : ScrTop&=CurrRec& : endif DrawDataScreen: else Position CurrRec& dInit "検索" dText "",chr$(34)+SrhText$+chr$(34)+" が見つかりません" dButtons "OK",(13 or KDButtonNoLabel%) Dialog endif endp Proc AboutBox: dInit "バージョン情報" dText "","単語登録 1.0" dText "","(C) Enfour, Inc. 2000 All rights reserved." dText "","",$800 dText "電子メール","enfour@enfour.co.jp" dText "URL","http://www.enfour.co.jp" dButtons "OK",(13 or KDButtonNoLabel%) Dialog Endp Proc SaveTheUserDic: Local ThreadID&,PID& Local DicFileName$(255) local Tempstr$(255) Local ret%,Fh% Local oKanji$(15,40),xKanji$(40),i%,maxK%,j% jBusy:("処理中...") pid&=0 OnErr NotActive:: ThreadID&=GetThreadIDFromAPPUID&:(&10000e12,pid&) if (UsingUF2%) EndTask&:(ThreadID&,0) Pause 100 else SendKeyEventToApp&:(ThreadID&,0,asc("k"),0,KModifierFunc&,1) endif NotActive:: OnErr Off if Exist("C:\System\UniFep") DicFileName$="C:\System\UniFep\User.Dic" elseif Exist("D:\System\UniFep") DicFileName$="D:\System\UniFep\User.Dic" else Stop endif if Count =0 Trap Delete DicFileName$ else ret%=ioopen(fh%,DicFileName$,$102) if (ret%=0) first while not eof oKanji$(1)=a.Kanji1$ oKanji$(2)=a.Kanji2$ oKanji$(3)=a.Kanji3$ oKanji$(4)=a.Kanji4$ oKanji$(5)=a.Kanji5$ oKanji$(6)=a.Kanji6$ oKanji$(7)=a.Kanji7$ oKanji$(8)=a.Kanji8$ oKanji$(9)=a.Kanji9$ oKanji$(10)=a.Kanji10$ oKanji$(11)=a.Kanji11$ oKanji$(12)=a.Kanji12$ oKanji$(13)=a.Kanji13$ oKanji$(14)=a.Kanji14$ oKanji$(15)=a.Kanji15$ MaxK%=15 while (MaxK%>1) and (oKanji$(MaxK%)="") MaxK%=MaxK%-1 endwh i%=maxK% while (i%>1) if (oKanji$(i%)1) if (oKanji$(j%)1) TempStr$=TempStr$+"," endif TempStr$=tempstr$+oKanji$(i%) i%=i%+1 endwh tempstr$=tempstr$+Chr$(10) ret%=iowrite(fh%,addr(Tempstr$)+1,len(TempStr$)) next endwh ioclose(fh%) endif endif pid&=0 OnErr NotActive1:: if (UsingUF2%) ThreadID&=GetThreadIDFromAPPUID&:(&10000e12,pid&) SendKeyEventToApp&:(ThreadID&,0,asc("k"),0,KModifierFunc&,1) endif NotActive1:: OnErr Off jBusyOff: EndP Proc ImportText: Local fname$(255),encList$(255),enc%,i%,l& local ret%,fh%,InputLn$(255),yo$(255),Ka$(255),EncStr$(255),sLen% i%=1 encList$="UTF8" fname$="" while (i% 0) ret%=ioread(fh%,addr(inputLn$)+1,255) if (ret%>0) pokeb addr(inputLn$),ret% if Left$(inputLn$,1)=chr$(34) inputln$=right$(inputln$,len(inputln$)-1) i%=loc(inputln$,chr$(34)) if (i%<>0) Yo$=left$(inputLn$,i%-1) inputLn$=right$(inputLn$,len(InputLn$)-i%) i%=loc(inputLn$,chr$(34)) if (i%<>0) inputln$=right$(inputln$,len(inputln$)-i%) i%=loc(inputln$,chr$(34)) if (i%<>0) Ka$=left$(inputLn$,i%-1) else dInit "テキストファイル読み込み" dText "","未知なフォーマットです。" dButtons "OK",(13 or KDButtonNoLabel%) dialog jBusyOff: return endif else dInit "テキストファイル読み込み" dText "","未知なフォーマットです。" dButtons "OK",(13 or KDButtonNoLabel%) dialog jBusyOff: return endif else dInit "テキストファイル読み込み" dText "","未知なフォーマットです。" dButtons "OK",(13 or KDButtonNoLabel%) dialog jBusyOff: return endif else Yo$="" while ((left$(inputLn$,1)<>" ") or (left$(InputLn$,1)<>Chr$(9))) Yo$=Yo$+left$(inputLn$,1) if (len(inputLn$)=1) dInit "テキストファイル読み込み" dText "","未知なフォーマットです。" dButtons "OK",(13 or KDButtonNoLabel%) dialog jBusyOff: return else inputLn$=right$(InputLn$,len(InputLn$)-1) endif endwh inputLn$=right$(InputLn$,len(InputLn$)-1) Ka$=inputLn$ endif sLen%=UODecode&:(addr(Yo$)+1,len(Yo$),addr(EncStr$)+1,255,enc%) pokeb addr(EncStr$),sLen% first l&= FindField(encstr$,1,1,17) if (l&<>0) Position l& Modify sLen%=UODecode&:(addr(Ka$)+1,len(Ka$),addr(EncStr$)+1,255,enc%) pokeb addr(EncStr$),sLen% if (a.Kanji1$="") a.Kanji1$=EncStr$ elseif (a.Kanji2$="") a.Kanji2$=EncStr$ elseif (a.Kanji3$="") a.Kanji3$=EncStr$ elseif (a.Kanji4$="") a.Kanji4$=EncStr$ elseif (a.Kanji5$="") a.Kanji5$=EncStr$ elseif (a.Kanji6$="") a.Kanji6$=EncStr$ elseif (a.Kanji7$="") a.Kanji7$=EncStr$ elseif (a.Kanji8$="") a.Kanji8$=EncStr$ elseif (a.Kanji9$="") a.Kanji9$=EncStr$ elseif (a.Kanji10$="") a.Kanji10$=EncStr$ elseif (a.Kanji11$="") a.Kanji11$=EncStr$ elseif (a.Kanji12$="") a.Kanji12$=EncStr$ elseif (a.Kanji13$="") a.Kanji13$=EncStr$ elseif (a.Kanji14$="") a.Kanji14$=EncStr$ elseif (a.Kanji15$="") a.Kanji15$=EncStr$ endif Put else Insert a.Yomi$=encStr$ sLen%=UODecode&:(addr(Ka$)+1,len(Ka$),addr(EncStr$)+1,255,enc%) pokeb addr(EncStr$),sLen% a.Kanji1$=encStr$ put endif Changed%=-1 endif endwh ret%=ioclose(fh%) else dInit "テキストファイル読み込み" dText "","フォイルを開けませんでした。" dButtons "OK", 13 or KDButtonNoLabel% Dialog endif jBusyOff: Position currRec& DrawDataScreen: endif EndP Proc ExportText: Local fname$(255),encList$(255),enc%,i%,lf% Local OutputLn$(255),encStr$(255),sLen%,tStr$(255),EncYomi$(255) Local fh%,ret%,SJISIdx%,Fmt% i%=1 encList$="UTF8" fname$="" while (i% "") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji2$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji3$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji3$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji4$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji4$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji5$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji5$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji6$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji6$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji7$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji7$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji8$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji8$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji9$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji9$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji10$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji10$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji11$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji11$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji12$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji12$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji13$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji13$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji14$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji14$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif if (a.Kanji15$<>"") OutputLn$=chr$(34)+encYomi$+chr$(34)+"," ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) tStr$=a.kanji15$ sLen%=UOEncode&:(addr(tstr$)+1,len(tstr$),addr(encstr$)+1,255,enc%) pokeb addr(encstr$),slen% OutputLn$=chr$(34)+encstr$+chr$(34) if (lf%=1) : outputLn$=outputln$+chr$(10) elseif (lf%=2) : outputln$=outputln$+chr$(13)+chr$(10) else : outputln$=outputln$+chr$(13) endif ret%=iowrite(fh%,addr(outputln$)+1,len(outputln$)) endif next EndWh ret%=ioclose(fh%) else dInit "テキストファイル書き出し" dText "","フォイルは作れませんでした。" dButtons "OK", 13 or KDButtonNoLabel% Dialog endif jBusyOff: Position currRec& endif endp Proc ReadInUserDict:(MsgOn%) Local DicFileName$(255),ret%,fh%,i%,fndOK% Local inputln$(255),sYomi$(255),sKanji$(255) Local ThreadID&,PID&,l&,temp$(255),j% if (MsgOn%) jBusy:("処理中...") endif if Exist("C:\System\UniFep") DicFileName$="C:\System\UniFep\User.Dic" elseif Exist("D:\System\UniFep") DicFileName$="D:\System\UniFep\User.Dic" else if (MsgOn%) dInit "ユーザ辞書リスト更新" dText "","ファイルを開けませんでした。" dButtons "OK", 13 or KDButtonNoLabel% Dialog jBusyOff: endif return endif if Not Exist(DicFileName$) if (MsgOn%) dInit "ユーザ辞書リサスト更新" dText "","ファイルを開けませんでした。" dButtons "OK", 13 or KDButtonNoLabel% Dialog jBusyOff: endif return endif pid&=0 OnErr NotActive1:: if (UsingUF2%) ThreadID&=GetThreadIDFromAPPUID&:(&10000e12,pid&) EndTask&:(ThreadID&,0) Pause 100 else ThreadID&=GetThreadIDFromAPPUID&:(&10000e12,pid&) SendKeyEventToApp&:(ThreadID&,0,asc("k"),0,KModifierFunc&,1) endif NotActive1:: OnErr Off ret%=ioopen(fh%,DicFileName$,$420) if (ret%<0) if (MsgOn%) dInit "ユーザ辞書リスト更新" dText "","ファイルを開けませんでした。" dButtons "OK", 13 or KDButtonNoLabel% Dialog jBusyOff: endif goto ExitReadDic:: else ret%=1 While (ret%>0) ret%=ioread(fh%,addr(inputLn$)+1,255) if (ret%>0) pokeb addr(inputLn$),ret% i%=loc(inputLn$," ") if (i%<=0) if (MsgOn%) dInit "ユーザ辞書リスト更新" dText "","未知なフォーマットです。" dButtons "OK",(13 or KDButtonNoLabel%) dialog jBusyOff: endif ret%=ioclose(fh%) goto ExitReadDic:: else sYomi$=left$(inputln$,i%-1) inputln$=right$(inputln$,len(inputln$)-i%) sKanji$=inputln$ first if findfield(syomi$,1,1,17) Modify while (sKanji$<>"") j%=loc(sKanji$,",") if (j%=0) Temp$=sKanji$ sKanji$="" else Temp$=left$(sKanji$,j%-1) sKanji$=right$(sKanji$,len(sKanji$)-j%) endif if (a.Kanji1$="") a.kanji1$=temp$ elseif (a.Kanji2$="") a.kanji2$=temp$ elseif (a.Kanji3$="") a.kanji3$=temp$ elseif (a.Kanji4$="") a.kanji4$=temp$ elseif (a.Kanji5$="") a.kanji5$=temp$ elseif (a.Kanji6$="") a.kanji6$=temp$ elseif (a.Kanji7$="") a.kanji7$=temp$ elseif (a.Kanji8$="") a.kanji8$=temp$ elseif (a.Kanji9$="") a.kanji9$=temp$ elseif (a.Kanji10$="") a.kanji10$=temp$ elseif (a.Kanji11$="") a.kanji11$=temp$ elseif (a.Kanji12$="") a.kanji12$=temp$ elseif (a.Kanji13$="") a.kanji13$=temp$ elseif (a.Kanji14$="") a.kanji14$=temp$ elseif (a.Kanji15$="") a.kanji15$=temp$ endif endwh put Changed%=-1 else Insert a.yomi$=syomi$ while (sKanji$<>"") j%=loc(sKanji$,",") if (j%=0) Temp$=sKanji$ sKanji$="" else Temp$=left$(sKanji$,j%-1) sKanji$=right$(sKanji$,len(sKanji$)-j%) endif if (a.Kanji1$="") a.kanji1$=temp$ elseif (a.Kanji2$="") a.kanji2$=temp$ elseif (a.Kanji3$="") a.kanji3$=temp$ elseif (a.Kanji4$="") a.kanji4$=temp$ elseif (a.Kanji5$="") a.kanji5$=temp$ elseif (a.Kanji6$="") a.kanji6$=temp$ elseif (a.Kanji7$="") a.kanji7$=temp$ elseif (a.Kanji8$="") a.kanji8$=temp$ elseif (a.Kanji9$="") a.kanji9$=temp$ elseif (a.Kanji10$="") a.kanji10$=temp$ elseif (a.Kanji11$="") a.kanji11$=temp$ elseif (a.Kanji12$="") a.kanji12$=temp$ elseif (a.Kanji13$="") a.kanji13$=temp$ elseif (a.Kanji14$="") a.kanji14$=temp$ elseif (a.Kanji15$="") a.kanji15$=temp$ endif endwh put Changed%=-1 endif endif endif endwh ret%=ioclose(fh%) endif OnErr ExitReadDic:: if (UsingUF2%) l&=RunApp&:("UniFEP","","",2) else pid&=0 ThreadID&=GetThreadIDFromAPPUID&:(&10000e12,pid&) SendKeyEventToApp&:(ThreadID&,0,asc("j"),0,KModifierFunc&,1) endif ExitReadDic:: OnErr Off if (MsgOn%) jBusyOff: endif endP Proc IsHira%:(t$) local i% local isH% isH%=-1 i%=1 while (i%