macro_file Learning /*------------------------------------------------ Для подготовки словарных файлов - MyQDic.s - рабочий словарь. English.s - Изготовление HTML - JS из DIC. SubRip.s - Изготовление субтитров. Здесь: _ExitDoLesson - выход из циклов _SetDoLesson - после нажатия кнопки, «обновления» . WLISTXT - изготовление списка слов. DelAlikeStr - удаление из файла, одинаковых строк. DelAlikeStrBlock - удаление из отмеченного блока, одинаковых строк. TranslationList - перевод списка слов. TranslationWordE - перевод по словам. DicEditResurs - Просмотр и редактирование строк Словаря. PhraseDrill - изготовление хтмл из текста, для тренировки фраз. ConversionDicHTM - преобразование файла Dic --> Htm DoLesson - делать учебные хтмл-файлы из текста на Англ. Языке. DoNewFileDic - *.Dic-файл новый делать из файла, что в окне. DoNewDicHtm - dic - htm изготовление НОВОГО файла-шпаргалки. DoStrokaDic - Подготавливает фразу для Ввоода в DIC-Словарик GoodnessDic - Проверка и анализ качества DICфайла. KnownWords - если вернет =1 - то это известное слово, MemoryDic - Дописывает слова в уже имеющийся Словарик для памяти. MixLineDic - перемешивается строки RusAnConvert - перестановка частей строк в словаре, SaveFile2Tel - Сберечь\Записать файл(ы) на телефон. SetGparamDic - Установка глоб. переменных Словаря. TestDic - проверка работы словаря. *------------------------------------------------*/ #include Mew.Sh #include MeSys.Sh #include Win32.sh #include WinExec.sh // WinExec.s = COPY #include Mewlib32.sh #include Dialog.sh #include StdDlgs.sh #include Text.sh #include myProto.sh #include WlTags.sh #include DoHtml.sh prototype Learning { void SaveFile2Tel ( str sFile); void DelAlikeStr (); void DelAlikeStrBlock(); void MixLineDic( int Tmix); void TranslationList (); void GoodnessDic(); void ConversionDicHTM ( str Fdic, str Fhtm ); void MemoryDic (str tstrA, tstrR ); void DicEditResurs ( str FileDic ); void RusAnConvert(); void DoNewDicHtm ( str FnameDic, int iRus ); void MixLineDic(); void DoNewFileDic ( str FnameTxt ); } global { int g_DlgDoLesson ; // - int g_FileDicExist; // файл словаря уже есть. } macro PhraseDrill /******************************************************************** • PhraseDrill - изготовление хтмл из текста, для тренировки фраз. Спец. текст - исходным файлом для изготовления фраз, для тренировки произношения из такого файла, . где есть такие Четыре строки-блоки: ™ - метка начала блока Текст по-русски, что надо тренеровать. Англ.текст - не дословный перевод ( показ по требованию. ) l0001 - имя мр3 файла - образец звучания. и обязательные пустые строки между блоками. 04/03/15 14:52 - решил добавить, если ™ - то три строки, а если љ - две строки, т.е русский перевод и звуковой файл, так наиболее часто получается, по смыслу догаться можно. 05/03/15 15:58 - так я ж могу и SRT-делать просто... *©kvm******************************************** 26/02/15 15:53 ***/ { int tRefresh = Refresh; Refresh=false; tof; if ( !FIND_TEXT( '{™}||{љ}' , 0 , _regExp|_OldExp)) { rm('MEERROR^MessageBox /B=1/T= Ошибка! /M= Этот файл не подготовлен для преобразования.'); goto Fin_PhraseDrill; } tof; if ( FIND_TEXT( "'" , 0 , 0)) { rm('MEERROR^MessageBox /B=1/T= Ошибка! /M= Недопустимый знак.'); goto Fin_PhraseDrill; } int SRTfiles = 1, // Разрешение на изготовление SRT-файлов. NB = 0, // номер найденого блока. Wsrt, Whtm, Wtxt = Window_Id; str PFname = Get_Path ( File_Name ), FTName = Truncate_Path ( File_Name ), FName = Truncate_Extension ( File_Name )+'.htm'; if (Switch_File (FName)) delete_window; str FirstMus='', // первый звуковой файл в этой сборке фраз. tstr, TRstr, TRs, TAn, TZsrt, TZv; // делаю новые окна, для нового файла - switch_window ( window_count ); create_window; Wsrt = Window_Id; switch_window ( window_count ); create_window; Whtm = Window_Id; file_name = Fname; RM('MESYS^EXTSETUP /FTO=1'); // по умолчанию. // ставлю метки-якоря для ориентации при заполнении // файла записями. put_line(' // -- Fincommtxt1');// верхняя, для Povtor: Switch_Win_Id(Wtxt); if ( FIND_TEXT( '{™}||{љ}' , 0 , _regExp|_OldExp) ) { if ( cur_char =='™' ) call set™; else call setљ; // Тут возможность и для изготовлнгия SRT файлов есть. if ( SRTfiles ) { Switch_Win_Id(Wsrt); tof; put_line('1'); down; put_line('00:00:00,010 --> 00:00:03,000'); down; put_line(TRstr); down; put_line(' '); down; file_name = PFname + TZsrt + '.srt'; save_file; make_message(' ==> Работаю...'+ str(NB)); } goto Povtor; } // если пустой, то прекратить работу. // ? как ? а пока уйду на верх - tof; // иначе далее Switch_Win_Id(Whtm); // Заполнение верха - tof; cr; up; text ( ''); cr; text ( ''); cr; text ( ''); cr; text ( 'Фразы для запоминания.('+FTName+')'); cr; text ( ''); cr; text ( '' ); cr; text ( '' ); cr; text ( '' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( ' (  X  )' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( ' ' ); cr; text ( ' ' ); cr; text ( ' ' ); cr; text ( ' ' ); cr; text ( '' ); cr; text ( ' ' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( ' Home

' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( ' Play

' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '

Фразы из '+FTName+'.

' ); cr; text ( '
' ); cr; text ( '' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '
' ); cr; // заполнение конца eof; cr; Goto_Col ( 1 ); text ( '
' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( ' Home

' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '
' ); cr; text ( '' ); cr; text ( '' ); cr; text ( '' ); cr; // save_file; delete_window; Switch_Win_Id(Wsrt); delete_window; Switch_Win_Id(Wtxt); // Показать результат - // HHpusk (FName); rm ('MESYS^LDFILES /CW=1 /FN='+FName); FIND_TEXT( 'audio controls' , 0 , 0); goto Fin_PhraseDrill; set™: ++NB; down; tstr = Get_Line; TRs = Remove_Space(tstr); down; TRstr = TRs; TRs = Sentence ( TRs ); // делю на предложения. tstr = Get_Line; TAn = Remove_Space(tstr); down; TAn = Sentence ( TAn); tstr = Get_Line; TZv = Remove_Space(tstr); if ( TZv=='' ) { TZv='NoSound'; } TZsrt = TZv; TZv=TZv + '.mp3'; // Запомнить первый звуковой файл. if ( FirstMus =='' ) { FirstMus = TZv;} // делаю новые блоки... Switch_Win_Id(Whtm); eof; cr; text ( '('); cr; text ( str(NB) ); cr; text ( ')' ); cr; // если последние знаки != > , if ( '/> ' != copy ( TRs, svl(TRs)-2, 3)) { text ( TRs +'
'); } else { text ( TRs +' ');} cr; text ( '
'); cr; text ( '
' ); cr; text ( '
'); cr; text ( '
'); cr; cr; cr; tof; FIND_TEXT( 'Fincommtxt1' , 0 , 0); Goto_Col ( 1 ); cr; up; text ( 'commtxt1['+str(NB-1)+'] = '''+TAn+''';' ); ret; setљ: down; tstr = Get_Line; TRs = Remove_Space(tstr); down; TRstr = TRs; tstr = Get_Line; TZv = Remove_Space(tstr); if ( TZv=='' ) { TZv='NoSound'; } TZsrt = TZv; TZv=TZv + '.mp3'; // Запомнить первый звуковой файл. if ( FirstMus =='' ) { FirstMus = TZv;} // Строка может быть длинной, большой - в ней нужно заменить знаки , // .?!
- что бы удобнее было. ( и это вышло на три часа работы!) TRs = Sentence ( TRs ); // если последние знаки != > , // делаю новые блоки... Switch_Win_Id(Whtm); eof; cr; if ( '/> ' != copy ( TRs, svl(TRs)-2, 3)) { text ( TRs +'
'); } else { text ( TRs +' ');} cr; text ( '
'); cr; text ( '
' ); cr; text ( '
'); cr; text ( '
'); cr; cr; cr; ret; Fin_PhraseDrill: Refresh = tRefresh; make_message(' => сделано в '+ time); } // конец текста macro: PhraseDrill void SaveFile2Tel ( str sFile = Parse_Str( "/F=", mparm_str )) /******************************************************************** • SaveFile2Tel - Записать файл(ы) на телефон. в корне любого диска у меня должен быть файл indexdsk.htm - и где находится на нем карта диска. Подключившись определяет сколько свободного места есть. sFile - Работать по этому списку - его удобнее дополнять и исправлять. Начало копирования - найти картинку из виндоус как.... прыгает мячик.. Поставить на экран картинку - *.gif - c:\Me\Help\bitmaps\magnitofon.gif Нужно более мощное(power) макро синхронизации файлов. это делаю в macro:fastnote - надо организовать совместную работу этих макро. словарь телефона - d:\ZTE\smartkeyboardpro\userdic.csv *©kvm******************************************** 17/06/14 22:13 ***/ { // Подключен ли телефон? Это определяю по наличию // g:\English\MemDic.htm - его показать и можно заменять. // Если файл сушествует , то продожу работу по пере-записываю. ChTel: if ( File_Exists( 'g:\English\MemDic.htm' )) { rm('MEERROR^MessageBox /B=1/T= Stop! хорошо ! /M= Телефон подключен. '); Goto copy1; } rm('VERIFY /BL=/T= Подключай телефон! Включил?/S=1'); if(!Return_Int) { // сооющить - файлы НЕ скопированы !!! - return_str = 'No save';// не записано. Goto Fin_SaveFile2Tel; } // Делаю в StdDlgs.s - delaywin(1000) delaywin(2000); // см. File:"C:\Me\Src\StdDlgs.s"; Line:821 // Проверяю, еще раз... Goto ChTel; copy1: // Копирование одного файла str FNameTMP = 'C:\Me\Temp_Me\info.tmp'; // в этом файле будет описание. str TTcmd = 'cmd /c copy '; // команда str TF1 ='d:\ZTE\English\MemDic.htm'; // какой и откуда str TF2 ='g:\English\MemDic.htm'; // на телефоне str CmdLine =TTcmd+TF1+' '+TF2+'>'+FNameTMP; // откуда и куда int ErPg = ExecProg ( CmdLine, "", "", "", _EP_FLAGS_MINIMIZED ); RETURN_STR = FNameTMP; rm ('MESYS^LDFILES /NRL=1/CW=2/PRE=1/DE=1'); Goto Fin_SaveFile2Tel; // Работать по списку sFile - его удобнее дополнять и исправлять // там просто указывать O=I= откуда и куда копировать. // sFile='c:\Me\Config\TelCopy.DB'; // Me if ( sFile=='' ) { sFile= 'D:\English\File2Tel.DB';} // Откуда, куда копировать. // строки тагоко вида = /C= на комп /T= на тел. // новое окно str tcopy; int Wnew, Wrab = Window_Id; switch_window ( window_count ); create_window; Load_File( sFile ); Window_Attr= _wa_SystemHidden; Wnew = Window_Id; // читать строки и копировать файлы... // "копировать папки" см.File:"C:\Me\Src\ArhRAR.s"; Line:257; // Чтобы обновить файлы в каталоге \Reports файлами из каталога \Rawdata, // измененными после 29 декабря 1993 года, введите: // xcopy \rawdata \reports /d:29-12-1993 // mk:@MSITStore:D:\kHelp\WinXP\BatFile.chm::/x/xcopy.htm do { tcopy = Get_Line; // только как комаду - файл ... cmd // тут незнаю пока.. down; } while ( !at_eof ); // конец работы delete_window; Switch_Win_Id(Wrab); // сооющить - файлы скопированы - return_str = 'Ok';// записано нормально. Fin_SaveFile2Tel: } // ====== конец текста macro:"SaveFile2Tel"; macro _ExitDoLesson trans2 /******************************************************************** • _ExitDoLesson - выход из циклов *©kvm******************************************** 16/08/14 13:15 ***/ { rm('MEERROR^MessageBox /B=1/T= Stop! _ExitDoLesson/M= g_DlgDoLesson='+str(g_DlgDoLesson)); // menu_delete( g_DlgDoLesson); g_DlgDoLesson = 0; // тут был id Dlg // и показать --- } // конец текста macro: _ExitDoLesson macro _SetDoLesson trans2 /******************************************************************** • _SetDoLesson - после нажатия кнопки, «обновления» . отображается вначале. И после нажатия обновить. *©kvm******************************************** 16/08/14 13:15 ***/ { rm('MEERROR^MessageBox /B=1/T= Stop! _SetDoLesson/M= '); // DlgSetStr( Dlg, Tip_Text_ctrl, Tip ); // DlgUpdateCtrl( Dlg, Tip_Text_ctrl, 0 ); // DlgEnableCtrl( Dlg, MoreHelp_ctrl, g_TipMoreHelpCtx != '' ); // DlgUpdateCtrl( Dlg, MoreHelp_ctrl, 0 ); } // конец текста macro: _SetDoLesson macro DelAlikeStr /******************************************************************** • DelAlikeStr - удаление из файла, что в окне, одинаковых строк. В файле, что в этом окне. Оставляю только одну из многих найденых. Удаляются безуславно одинаковые строки. Нет сортировки. если есть блок, то см. DelAlikeStrBlock - работа в блоке. 08/09/14 17:30 *©kvm******************************************** 23/06/14 22:56 ***/ { int tRefresh = Refresh; Refresh=false; int tReg_Exp_Stat = Reg_Exp_Stat; Reg_Exp_Stat = false; str tstr; int N=3; // Нужно три прохода делать. Push_Undo; eof; int Nsf = c_line; // число строк в этом файле. tof; int mstop=0, Dlg = OutputDlgCreate( "Удаляю одинаковые строки, из "+str(Nsf), "Start", "BT_SR_101", 40, 1, _od_Cancel ); Rep: call CheckAbort; if ( mstop ) { Goto_Mark; goto Fin_DelAlikeStr; } Mark_Pos; tstr = Get_Line; if ( tstr=='') { del_line; goto Nx;} eol; // удаляет часть строки... While ( Search_FWD (tstr, 0 ) ){ if ( tstr == Get_Line ) { Replace ( '' ); } else { down; Goto_Col ( 1 ); } } Nx: Goto_Mark; down; OutputDlgMessage( dlg, "Работаю на строке "+str(C_line)); // идет процесс if ( !At_eof ) { Goto Rep;} tof; while ( !At_eof){ // Удаляю пустые строки ... Nx0: tstr = Remove_Space( Get_Line ); if ( At_eof ) break; if ( tstr=='') { del_line; goto Nx0; } down; } // Для нижней строки отдельно - проб if ( Remove_Space( Get_Line )==''){ del_line;} if ( N ) {--N; tof; Goto Rep;}// повторяю ещё раз. goto Fin_DelAlikeStr; CheckAbort: if ( !OutputDlgCheck( Dlg ) ) { mstop = 1; } ret; Fin_DelAlikeStr: tof; Reg_Exp_Stat = tReg_Exp_Stat; Refresh = tRefresh; Redraw; pop_undo; // В конце макро OutputDlgKill(dlg); } // ====== конец текста macro: "DelAlikeStr"; void StopDupWord(int D = Parse_Int( "/D=", mparm_str )) /******************************************************************** • StopDupWord - просматривает DIC-словарь и останавливается на дублирующем. Начинает от поз. курсора. Если /D=1 - то дубл-строки будут просто добавлены к соединены с верхней( ) Если /D=2 - будут просто удаляться. ( одинаковые слова - при составлении словарика ) *©kvm******************************************** 22/03/16 11:08 ***/ { if ( CheckExtension( 'dic' )) return (); int k, tRefresh = Refresh; Refresh=false; str tstr1='',tstr2='',tstr3=''; push_undo; //------------------------------------------------------------------------------- Working; // теперь работаем...======================= Loop: if ( at_eof ) goto Fin_StopDupWord; tstr2 = tstr1; tstr1= Get_Line; k = xpos( '|7', tstr1, 1 ); if ( !k ) { make_message(' => Эта строка не правильная!'); // MessageBox( 0, " Эта строка не правильная! ", "Stop: ",mb_IconHand); goto Fin_StopDupWord; } tstr1= copy (tstr1, 1, k-1 ); if ( tstr1==tstr2) { if ( D==1) { //Дописывать к перво-найденому. tstr1 = Get_Line; tstr3 = copy (tstr1, k+1, svl(tstr1)-1); up; eol; text (' '+tstr3); down; del_line; if ( c_line>2 ) { up; up; } else { up; } Goto_Col ( 1 ); goto Con; } if ( D==2) { //Просто удалять повторное del_line; up; goto Con; } make_message(' => Эта строка повтор!'); // MessageBox( 0, " Эта строка повтор! ", "Stop: ",mb_IconHand); goto Fin_StopDupWord; } // MessageBox( 0, "tstr1="+tstr1+ "\n\rtstr2="+tstr2, "Stop: ",mb_IconHand); Con: down; goto Loop; Fin_StopDupWord: rm ('CenterLn'); pop_undo; // В конце макро Refresh = tRefresh; } // конец функции "StopDupWord"; void DelAlikeStrBlock() /******************************************************************** • DelAlikeStrBlock - удаление из отмеченного блока, одинаковых строк. В файле, что в этом окне. Оставляю только одну из многих найденых. Удаляются безуславно одинаковые строки. Нет сортировки. *©kvm******************************************** 11/10/15 18:58 ***/ { if ( !block_stat ) { goto Fin_DelAlikeStrBlock; } block_stat = 1; int tRefresh = Refresh; Refresh=false; int tPersistent_Blocks = Persistent_Blocks; Persistent_Blocks= true; push_undo; int Wnew, Wrab = Window_Id; switch_window ( window_count ); create_window; Wnew = Window_Id; rm ('CutPlus /M=1'); // macro: "CutPlus /M=1"; Switch_Win_Id ( Wnew ); rm('PastePlus /WS=1'); // macro: "PastePlus /WS=1"; goto fff; DelAlikeStr; // Запускаю для него удаления одинаковых строк. rm ('SelectALL'); // все отметить. rm ('CutPlus'); // Копирую результат и вставляю на прежнее место. Switch_Win_Id ( Wrab ); rm('PastePlus'); Switch_Win_Id ( Wnew ); delete_window; Switch_Win_Id ( Wrab ); fff: pop_undo; // В конце макро Persistent_Blocks = tPersistent_Blocks; Refresh = tRefresh; Fin_DelAlikeStrBlock: } // конец функции "DelAlikeStrBlock"; void MixLineDic( int Tmix) /******************************************************************** • MixLineDic - перемешивается строки Tmix = 0 =1 сорт по алфав. =2 - случайно =3 по индексу *©kvm******************************************** 14/08/14 22:39 ***/ { if ( !Tmix ) return(); // Запоминаю первую строку файла. tof; str FirstLine = Get_Line; del_line; // eof; int NLine = C_Line; // число линий Fin: tof; cr; put_line ( FirstLine ); } // ====== конец текста macro: "MixLineDic"; void InterpreterList () /******************************************************************** • InterpreterList - Перевод списка слов. Нужно проще - чем старое - TranslationList () *©kvm******************************************** 06/11/18 12:41 ***/ { if ( CheckExtension( 'dic' )) goto Fin_InterpreterList; //------------------------------------------------------------------------------- Working; // теперь работаем...======================= push_undo; int tRefresh = Refresh; Refresh=false; str tstr[256]; tof; do { Goto_Col ( 1 ); tstr = Get_Line; if (( svl(tstr)< 20 )&&(tstr !='')) { // делать без остановак. rm ('NQDIC /N=1 /S='+tstr); // // rm ('NQDIC /N='+ str(g_NoDStop) +'/S='+tstr); // // make_message('Делаю перевод --> '+ str(C_Line)); // получаю новое слово, слова if (( Return_Str=='' )||( !Return_Int )) { Return_Str =' --???-- ';} // пишу новую/заменяю строку. put_line ( tstr+''+ Return_Str); } down; make_message(' => '+ str( C_Line )); } while ( !at_eof ); make_message(' '); Refresh = tRefresh; pop_undo; Fin_InterpreterList: } // конец функции "InterpreterList"; void TranslationList () /******************************************************************** • TranslationList - перевод списка слов. В этом окне - файл, английских строк - для которых нужно сделать перевод -толкование. Имеется возможность, Брать из из разных словарей и исправлять, коментировать... Выдает перевод объяснение слова - из словаря - Translation (tstr); - только на конкретное слово, Если =='' - То запуск ввода словаря. // macro: " MyQDIC ^ NQDIC /S=" - слово поиска - Возвращает перевод в Return_Str Пример на C:\Me\DIC\Lesson00.dic Макро - DelAlikeStr - удаление одинаковых строк. *©kvm******************************************** 23/06/14 09:28 ***/ { push_undo; int tRefresh = Refresh; Refresh=false; int NoDStop=0, // =1 - останавливаться при незнакомом слове. KeyEsc= false; str tstr; tof; //------------------------------------------------------------------------------- Working; // теперь работаем...======================= Rep: first_word; if (( Search_FWD ('€', 1 ))||( Search_FWD ('', 1 ))||( Search_FWD (' ', 1 ))) { Goto Rep1; } // Эта строка уже переведена. // Это, ести дополняю уже существующий словарь, // т.е. файл был уже. tstr = Get_Line; // делать без остановак. rm ('NQDIC /N=1 /S='+tstr); // // rm ('NQDIC /N='+ str(g_NoDStop) +'/S='+tstr); // // make_message('Делаю перевод --> '+ str(C_Line)); // получаю новое слово, слова if ( Return_Str=='' ) { Return_Str =' --???-- ';} if ( !Return_Int ) { Return_Str =' --???-- ';} // пишу строку в словаре. // put_line ( '†FFFFF‡'+tstr+'€'+ Return_Str+'‰'); down; Rep1: call CheckKey; // выход из этого макро if ( KeyEsc ) { goto Fin; } if ( !At_eof ) { Goto Rep;} // на следующую строку переход. tof; cr; up; put_line ( '****DIC'); save_file; // сохраняю. goto Fin; CheckKey: Check_Key; IF (( Key1 == 27 ) && ( Key2 == 1 )) KeyEsc = true; ret; Fin: Refresh = tRefresh; pop_undo; } // ====== конец текста macro: "TranslationList"; void GoodnessDic() /******************************************************************** • GoodnessDic - Проверка и анализ качества DICфайла. на формальную правильность строк и синтаксические ошибки. Return_Int=0; =0 нет ошибок. Иначе, номер строки. В Return_Str - строка типа DICфайла. 23/10/15 19:46 - написал EnglishErr - см.File:"C:\Me\Src\English.s"; Line:18; *©kvm******************************************** 11/10/15 18:42 ***/ { int tRefresh = Refresh; Refresh=false; Return_Int=1; Return_Str='Плохой'; tof; if ( Find_Text( '>>>', 0 , 0)) { rm ('English^EnglishErr'); if ( Return_Int ) { // } } Fin_GoodnessDic: Refresh = tRefresh; } // конец функции "GoodnessDic"; void ConversionDicHTM ( str Fdic, str Fhtm ) /******************************************************************** • ConversionDicHTM - преобразование файла Dic --> Htm Каждый раз изготовлять новый, это проще, чем к старому дописывать, можно пересортировать уже по новому, с новыми условиями. И возможно делать 2 варианта en <-> rus , и не только для слов, но и для фраз тоже. 11/10/15 18:15 - давняя задумка, но уже есть разные наработки - macro: "SubRip^SubRip"; См: GoodnessDic - Проверка и анализ качества DICфайла. SubRipDoSRT(); // § изготавливаю файл SRT из DIC Тут меню выбора макро для изготовления. т.к. из одного DIC можно получить различные HTM файлы: 1. руско - англ - звук 2. англ - звук - руско 3. звук - повторяется через 4 сек. и др. варианты... *©kvm******************************************** 06/09/14 21:46 ***/ { int tRefresh = Refresh; Refresh=false; Fin_Conver: // Switch_Win_Id ( Wrab ); // не забывай вернуться. Refresh = tRefresh; } // конец функции "ConversionDicHTM"; void MemoryDic (str tstrA, tstrR ) /******************************************************************** • MemoryDic - Дописывает слова в уже имеющийся Словарик для памяти. tstrA - tstrR str tstrA = 'alert to the opportunity', tstrR = 'ожидающий удобного случая', Пополнение. Заносит слова в уже имеющийся - файл словаря. уст. в Global_Str( '#FileMemoryDic' ); Что б удобнее было повторять, на компе или телефоне. 06/09/14 21:37 - исправляю, слова заносятся в файл - d:\ZTE\English\MemDic.dic проверяются, если было повторное , то просто увеличивается коэф. "незнания" - до FFFFF - Ведется "журнал" - d:\ZTE\English\Journal.txt ConversionDicHTML - преобразует файл записывает 14/10/14 15:29 - что б дописывался слово в файл словаря, для этого файла. а если нет такого, то вопрос: Сделать словарик для этого файла? 31/01/15 14:25 - это решаю по другому - делить на отдельные словарики - и - macro:MemDic *©kvm******************************************** 24/04/14 10:28 ***/ { int tRefresh = Refresh; Refresh=false; int WRab = Window_Id, // запомним, где сейчас, что б вернуться. Wmd; // новое будет окно str Fdic = Truncate_Extension ( Global_Str( '~NQDICfileTemp')) +'.dic'; // if ( not (File_Exists ( Fdic ))) { // если нет такого, то вопрос: rm ("USERIN^VERIFY /BL=Нет файла!/T= Надо: "+Fdic+" \n Сделать такой словарик для этого файла?/S=1"); if(!Return_Int) { // нет. писать в общий Fdic = Global_Str( '#MemoryDicFile' ); if ( Fdic=='' ) { Fdic= 'd:\ZTE\English\MemDic.dic';} goto Rab00; } // делаю новое окно, файл. switch_window ( window_count ); create_window; file_name=Fdic; put_line ( '****DIC - строка для проверки. Тут номер, и др.' ); down; } Rab00: // ConversionDicHTML - записывает - открываю окно со словарем. if(!Switch_File ( Fdic )){//Если окна с таким файлом нет. switch_window ( window_count ); create_window; Load_File( Fdic); // если ошибка - какой файл делать? if ( Error_Level ) { RM('MEERROR'); rm('MEERROR^MessageBox /B=1/T= Stop! /M= Нет файла словаря.'); Goto Fin; } } Wmd = Window_Id; // уже в новом окне нахожусь, пока запомню! // Найти верхнюю строку и записать следущее - tof; // Find_Text( '****DIC' , 0 , 0); eol; cr; Goto_Col ( 1 ); text( '†FFFFF‡'); text (tstrA + '€'); text (tstrR + '‰'); Save_File; if ( Global_Int( 'MemoryDicHtm' )) { // установлена, то преобразую файл. ConversionDicHTM ( Fdic, truncate_Extension ( Fdic ) +'.htm' ); } // Подключи телефон и перенеси этот файл. if ( Global_Int( 'MemoryTelefon' )) { // установлена, то копирую нужные SaveFile2Tel('D:\English\File2Tel.txt'); // Это список файлов. } Fin: Switch_Win_Id ( Wrab ); // не забывай вернуться. Refresh = tRefresh; make_message(' Записано в словарь => '+ Fdic ); } // ====== конец текста macro: "MemoryDic"; void DicEditResurs ( str FileDic ) /******************************************************************** • DicEditResurs - Просмотр и редактирование строк Словаря. 1. файл словаря FileDic= 'C:\\Me\\DIC\\Lesson03.dic'; - 1)индекс - 5 знаков - пока не знаю, что там буду писать, но потом придумаю. - а другие, это уже как есть. 2)английское и 3)перевод 4)сылка на доп. файл с примером-звуком. Два текстовых поля - ввода - вывода. *©kvm******************************************** 03/05/14 13:40 ***/ { if ( FileDic=='' ) { rm('MEERROR^MessageBox /B=1/T= Stop! DicEditResurs:/M= Нет файла словаря!'); goto Fin_DicEditResurs0; } int Wrab = Window_Id, Wfdic, tRefresh = Refresh; Refresh= false; int Dlg, ExDlg, WstDicA, WstDicR; // Вкладка и Окна временных строк. if(!Switch_File ( FileDic )){ switch_window ( window_count ); create_window; Load_File(FileDic); } Wfdic = Window_Id; // окно файла словаря. // Делаю ещё, два дополнительных, временных окна. switch_window ( window_count ); create_window; WstDicA = Window_Id; switch_window ( window_count ); create_window; WstDicR = Window_Id; str stDicN = 'FFFFF', // 5-знаков - Начальный индекс. stDicA[3200] = 'from english to russia', // stDicR[3200] = 'с английского на русский', // stDicP = '‰'; // знак конца строки. int StNew=0; // метка, что это новая строка str tstr = ''; // Читать строки из словаря - // - строка в словаре состоит из четырех полей, частей - // Формат строк словаря, *.DIC - // '†FFFFF'+'‡'+stDicA+'€'+stDicR+'‰'; do { tstr = Get_Line; if ( '†' != copy (tstr, 1, 1)) { goto con; } stDicN = copy (tstr, 2, 5); stDicA = copy (tstr, 8, XPos( '€', tstr, 1 )-8); stDicR = copy (tstr, 1 + XPos( '€', tstr, 1 ), XPos( '‰', tstr, 1 )-XPos( '€', tstr, 1 )); call Disp; // на под программу отображения con: down; } while ( !at_eof ); // Если слово найдено, то помещаю его сюда - // Если слова нет, то делаю новую строку вверу файла. // самые свежие сверху лежат и индекс изменятся будет. goto Fin_DicEditResurs0; Disp: // под программа отображения - Switch_Win_Id(WstDicA); put_line ( stDicA ); Switch_Win_Id(WstDicR); put_line ( stDicR ); DlgCreate ( Dlg ); DlgAddCtrl( Dlg, DLG_Static," Редактирование строки словаря ", 1, 1, 120, 1, 1020, 0, "" ); DlgAddCtrl( Dlg, dlg_Text, "", 2, 2, 80, 3, 1001, dlgf_GetTextFromWin | dlgf_es_MultiLine | dlgf_es_WantReturn, "/ML=3200/WID=" + Str( WstDicA )); DlgAddCtrl( Dlg, dlg_Text, "", 2, 5, 80, 3, 1002, dlgf_GetTextFromWin | dlgf_es_MultiLine | dlgf_es_WantReturn, "/ML=3200/WID=" + Str( WstDicR )); // Кнопки выбора ===== DlgAddCtrl( dlg, DLG_PushButton, "Set", 5, 10, DLG_StanBtnWidth,0,101,0, "/R=1" ); DlgAddCtrl( dlg, DLG_PushButton, "Exit", 20, DLG_PosOffset, DLG_StanBtnWidth,0,100,0, "/R=0" ); DlgAddCtrl( dlg, DLG_PushButton, "Help", 35, DLG_PosOffset, DLG_StanBtnWidth,0,102,0, "/R=2" ); ExDlg = DlgExecute( Dlg, 100," Редактирую строку - ", "HelDIC", "", 0 ); if ( !ExDlg ) { ret; } // принимаю условия - // Получаю новые строки из окон. DlgKill( dlg ); Switch_Win_Id ( WstDicR ); tof; rm ('SelectALL'); rm('StrBigLine'); stDicR = Get_Line; // Один блок и Сделать одну строку - Text.s Switch_Win_Id ( WstDicA ); tof; rm ('SelectALL'); rm('StrBigLine'); stDicA = Get_Line; Switch_Win_Id ( Wfdic ); if ( StNew ) { // Вставка новой строки в словарный файл, вверху. tof; eol; cr; Goto_Col ( 1 ); put_line ('†FFFFF'+'‡'+stDicA+'€'+stDicR+'‰'); } else { // замена старой строки put_line ('†FFFFF'+'‡'+stDicA+'€'+stDicR+'‰'); } ret; Fin_DicEditResurs: // удаляю окна, больше не нужны - // Switch_Win_Id ( Wfdic ); // // save_file; // delete_window; Switch_Win_Id ( WstDicR ); // delete_window; Switch_Win_Id ( WstDicR); // delete_window; Switch_Win_Id ( Wrab ); // на рабочее; Fin_DicEditResurs0: Refresh = tRefresh; } // ====== конец текста macro: "DicEditResurs"; int KnownWords( str WordX ) /******************************************************************** • KnownWords - если вернет =1 - то это известное слово, для меня по крайней мере. 06/11/18 16:12 - продолжаю, что забыл. *©kvm******************************************** 09/11/14 16:39 ***/ { int tRefresh = Refresh; Refresh=false; int tint_KnownWords = 0; int Wrab = Window_Id, Wdic = SWFILE ( "C:\\Me\\DIC\\KnownW.dic"); // т.е. те, что находятся в c:\ME\DIC\Iknowit.dic tof; if ( FIND_TEXT( WordX, 0 , 0)) { tint_KnownWords = 1; } Fin_KnownWords: Switch_Win_Id(Wrab); Refresh = tRefresh; return ( tint_KnownWords ); } // конец функции "KnownWords"; str TranslationWordE( str WordE , int Type ) /******************************************************************** • TranslationWordE - перевод, . Возвращается только одного англ. слова однозначный. первое похожее - Type - =1 пропускать короткие, и знакомые слова. *©kvm******************************************** 09/11/14 12:17 ***/ { if ( Type == 1 ) { // здесь анализ слова - // приведение к словарному виду - if ( svl(WordE) <=3 ) { return (''); } // широко известное слово , для меня по крайней мере if ( KnownWords(WordE) ) { return (''); } // Знаю это слово. } int tRefresh = Refresh; Refresh=false; str tstr, WordR='-?-'; // русское слово, перевод. int NS=0, Poz1=0; int Wrab = Window_Id, Wdic = SWFILE ( "C:\\Me\\DIC\\WORD.dic"); rep: // искать только 3 раза, попытки - if ( NS > 0 ) { WordE = copy ( WordE, 1, (svl(WordE)-1)); } call Search; if ( WordR != '-?-' ) { goto Fin_TranslationWordE; } NS=NS + 1; if ( NS < 4 ) { goto rep; } goto Fin_TranslationWordE; Search: tof; if ( FIND_TEXT( '%'+ WordE + '', 0 ,_regExp|_OldExp)) { tstr = Get_Line; Poz1 = XPos('', tstr, 1); // позиция знака разделителя. tstr = str_del ( tstr, 1, Poz1); // удаляю англ. слово. Poz1 = XPos(';', tstr, 1); // после знака < ; > первый WordR = copy ( tstr, 1, Poz1-1); // только одно слово Poz1 = XPos(' ', tstr, 1); // if ( Poz1 ) { WordR = copy ( WordR, 1, Poz1-1); ret; } ret; } WordR = '-?-'; ret; Fin_TranslationWordE: Switch_Win_Id(Wrab); Refresh = tRefresh; return ( WordR ); } // конец функции "TranslationWord"; macro TestDic /******************************************************************** • TestDic - проверка работы словаря. *©kvm******************************************** 09/11/14 12:52 ***/ { str tstr, tReturn_Str = Return_Str; // ввод текста Return_Str = 'fast'; loop: rm('USERIN^QUERYBOX /T= Это слово /P=40 букв /W=40/ML=40'); if ( !Return_Int) goto Fin_TestDic; tstr = TranslationWordE ( Return_Str, 1 ); // пропускать.. rm('MEERROR^MessageBox /B=1/T= Перевод /M= '+Return_Str+' -- '+tstr); rm('USERIN^VERIFY /BL=/T=Continue?/S=1'); if(!Return_Int) Goto Fin_TestDic; goto loop; Fin_TestDic: Return_Str = tReturn_Str; } // конец текста macro: TestDic void RusAnConvert() /******************************************************************** • RusAnConvert - перестановка частей строк в словаре, делает так †FFFFF‡trial€отладка; испытание; опытный;‰ †FFFFF‡отладка; испытание; опытный€trial;‰ *©kvm******************************************** 31/10/14 20:48 ***/ { push_undo; str tstr, stDicN, stDicA, stDicR; int P€,P‰; // позиция знаков в строке. tof; do { tstr = Get_Line; if ( '†' != copy (tstr, 1, 1)) { goto con; } P€ = XPos( '€', tstr, 1); P‰ = XPos( '‰', tstr, 1); stDicN = copy (tstr, 2, 5); stDicA = copy (tstr, 8, P€-8); stDicR = copy (tstr,P€+1,P‰-P€-1); // заменяю строку на новую ... put_line ( '†'+stDicN+'‡'+stDicR+'€'+stDicA+'‰'); con: down; } while ( !At_eof ); Fin_RusAnConvert: pop_undo; // В конце макро } // конец функции "RusAnConvert"; void DoNewDicHtm ( str FnameDic, int iRus ) /******************************************************************** • DoNewDicHtm - dic - htm изготовление НОВОГО файла-шпаргалки. (в этом окне). На входе - файл .DIC - Слова - начально в - d:\ZTE\English\MemDic.dic Файл переименовывается из .dic в .htm Если установлено перемешать, то перемешивается строки void MixLineDic() см. также здесь макро - DicEditResurs В этом окне ,должен находится файл - Содержащий такие строки - Все строки передаются , как есть. Только в конце строки добавляется тег
Если есть строка начинается со знака 1. Формат файла словаря - - строка в словаре состоит из четырех полей, частей - - 1)индекс - 5 знаков - FFFFF - пока не знаю, что там буду писать, но потом придумаю. - а другие, это уже как есть. 2)английское и 3)перевод - в конце 4) имя звука.(если есть.) Эталон строки файла-словаря: знаки-разделители - 134 † 135 ‡ 136 € 137 ‰ †FFFFF‡BR€явный перенос строки.‰ 24/06/14 18:19 *©kvm******************************************** 03/05/14 23:21 ***/ { // Есть Уже проверенный и готовый файл строк - d:\ZTE\English\MemDic.dic // вот этот - macro:"DoNewDicHtm /F=d:\English\THE_HITCH-HIKER\hh.dic" int MErr = false, tRefresh = Refresh; Refresh=false; str dfn='-e', MesErr='Все нормально.'; if ( FnameDic =='' ) { MErr = true; MesErr = ' Ошибка! Не указан Файл '; Goto Fin_DoNewDicHtm; } switch_window ( window_count ); create_window; Load_File (FnameDic); // загрузить if (Error_Level){ rm('MEERROR'); } // и проверить на ошибку. File_Name = FnameDic; RM('MESYS^SetWindowNames'); Make_Window_Visible(1); // проверяю, то ли зегрузил - if ( caps ( Get_Extension ( file_name )) !='DIC' ) { MErr = true; MesErr = ' Ошибка! Файл не DIC '; delete_window; Goto Fin_DoNewDicHtm; } tof; if ( '****DIC' != copy( Get_Line, 1, 7 )) { // Читаю первые знаки файла MErr = true; MesErr = 'Файл DIC неисправен, поврежден.|13'+ '1-я строка Отсутствует. ****DIC'; delete_window; Goto Fin_DoNewDicHtm; } if ( !g_FileDicExist ) { MErr = true; MesErr = ' Ниизяя !!! Дописывать в файл DIC. '; delete_window; Goto Fin_DoNewDicHtm; } // новый файл делать int tInsert_Mode = Insert_Mode; Insert_Mode = True; del_line; // удаляю первую строку. if ( iRus ) { // делать руско-англ. словарик... // нужно переставить части строк RusAnConvert; dfn='-r'; } // Перемешать строки? преобазовываю строки - просто сортировка // по 4-й или 5 букве // Пересортировать и т.п. ??? Это потом сюда вставлю... // // новое имя - это уже другой файл! file_name = Truncate_Extension ( file_name ) + dfn + '.htm'; rm('MeSys^ExtSetup / FTO=1'); // Делаю из строк - см. образец - d:\ZTE\English\MemDic.htm str Tags1 ="

"; str Tags2 ="
"; str Tags3 ="


"; // // делаю замены в файле int tReg_Exp_Stat = Reg_Exp_Stat; Reg_Exp_Stat = false; tof; while (Search_Fwd(';',0)) {Replace('
');} tof; while (Search_Fwd('†FFFFF‡',0)) {Replace(Tags1);} tof; while (Search_Fwd('€',0)) {Replace(Tags2);} tof; while (Search_Fwd('‰',0)) {Replace(Tags3);} Reg_Exp_Stat = tReg_Exp_Stat; // Пишу верхнюю часть tof; Goto_Col ( 1 ); text('');cr; text('');cr; text('');cr; text('Слова-повторения.');cr; text('');cr; text('');cr; text('');cr; text('');cr; text('');cr; text('');cr; text(' ');cr; text(' ');cr; text('');cr; text(' ');cr; text('
');cr; text(' Home

');cr; text('
');cr; text('
');cr; text('');cr; text('');cr; // и нижнюю части файла. eof;cr;Goto_Col ( 1 ); text('');cr; text('
');cr; text('
');cr; text( 'Home

');cr; text('
');cr; text('');cr; text('');cr; Insert_Mode = tInsert_Mode; // готово, записываю в нужное место - save_file; Fin_DoNewDicHtm: if ( MErr ) { rm('MEERROR^MessageBox /B=1/T= Stop! Ошибка... /M= '+MesErr); } tof; Refresh = tRefresh; Redraw; // Тут можно и покахзать сразу полученный файл } // ====== конец текста macro: "DoNewDicHtm"; str DoStrokaDic ( str tstrA, tstrR ) /******************************************************************** • DoStrokaDic - Подготавливает фразу для Ввоода в DIC-Словарик для памяти. Заносить слова в спец. файл - Чтоб удобнее было повторять, на компе или телефоне. А потом из этого DIC-файла - делать учебные хтмл- файлы. При помощи макро - DoLesson На входе, полученное от macro: "MyQDIC ^ NQDIC"; при нажатии - там кн. выбрана - "if(DlgEx == 14){" см.File:"C:\Me\Src\MyQDIC.s"; Line:506; было просто - MemoryDic (st21,st22); str tstrA= 'tttyyy', tstrR='приири'; Возвращает пусто, если отказ. *©kvm******************************************** 25/04/14 16:48 ***/ { // Формат строк словаря, *.DIC - // str DicStroka[4000] = '†FFFFF'+'‡'+tstrA+'€'+tstrR+'‰'; str DicStroka[4000] = ''; int Dlg, DlgEx; DlgCreate(Dlg); DlgAddCtrl(Dlg, dlg_Text, tstrA, 2, 2, 80, 1, 1001, 0, "" ); DlgAddCtrl(Dlg, dlg_Text, tstrR, 2, 4, 80, 1, 1002, 0, "" ); DlgEx = DlgExecute( Dlg, 1001, "Толкование правильное? ", "HH","", 0 ); if ( DlgEx ) { DicStroka = '†FFFFF'+'‡'+DlgGetStr( Dlg, 1001 )+'€'+DlgGetStr( Dlg, 1002 )+'‰'; } DlgKill( dlg ); return ( DicStroka ); } // ====== конец текста macro: "DoStrokaDic"; macro SetGparamDic /******************************************************************** • SetGparamDic - Установка глоб. переменных Словаря. 1. файл - в Словарика для памяти. 2. Задание на изготовление HTML-файла, словарика. Формат строк словаря, *.DIC - '†FFFFF'+'‡'+stDicA+'€'+stDicR+'‰'; - 1)индекс - 5 знаков - пока не знаю, что там буду писать, но потом придумаю. - а другие, это уже как есть. 2)английское и 3)перевод 4)сылка на доп. файл с примером-звуком. 05/07/15 15:25 - Переименовываю в Обслуживание словарей (DIC) И многое изменяю, добавляю сортировку словаря по-страничную. из см.File:"C:\Me\Src\Text.s"; Line:3604; *©kvm******************************************** 26/04/14 17:54 ***/ { int treturn_int = return_int; str FileMD = Global_Str( '#FileMemoryDic' ); if ( FileMD=='' ) { if ( GetExtension() == 2 ){ FileMD= file_name; // т.е в окне уже есть словарь. rm ('MeUtil1^ReLoad'); // перегружу его... // } else FileMD= 'd:\ZTE\English\MemDic.dic'; } int mu1, mu2, mu3, mu4, mu5; // метки условий режима. int Dlg, ExDlg, mu1; RepDlg: // Меню выбора дополнений - DlgCreate ( Dlg ); DlgAddCtrl( Dlg, DLG_Static," Работаю с Файлом: ", 2, 1, 60, 1, 1002, 0, "" ); DlgAddCtrl( dlg,dlg_Text,FileMD, 2, 2, 60, 1, 1004, 0, "/ML=240"); DlgAddCtrl( dlg, DLG_Checkbox, " Выполнить сортировку.", 2, 3, 0, 0, 1006, 0, "" ); DlgSetInt( Dlg, 1006, 0 ); // =1Установить * в начале. DlgAddCtrl( dlg, DLG_Checkbox, " Изготовить dic.HTM и запиcать на телефон.", 2, 7, 0, 0, 1008, 0, "" ); DlgSetInt( Dlg, 1008, 0 ); // =1 Установить * в начале. DlgAddCtrl( dlg, DLG_Checkbox, " Изготовить файлы.SRT для папки с MP3-файлами.", 2, 8, 0, 0, 1009, 0, "" ); DlgSetInt( Dlg, 1009, 0 ); // =1 Установить * в начале. DlgAddCtrl( dlg, DLG_Static, "это запускать только для папки с НОВЫМИ mp3-файлами!", 1, 9, 0, 2, 0, 0, "" ); // Кнопки выбора ===== DlgAddCtrl( dlg, DLG_PushButton, "Run ", 2, 15 , 10 ,0,101,0, "/R=1" ); DlgAddCtrl( dlg, DLG_PushButton, "Exit", 14, 15 , 10 ,0,100,0, "/R=0" ); DlgAddCtrl( dlg, DLG_PushButton, "Help", 60, 15, 10 ,0,102,0, "/R=2" ); ExDlg = DlgExecute( Dlg, 100," Обслуживание словаря. ", "HelGDIC", "", 0 ); FileMD = DlgGetStr( Dlg, 1004 ); if ( FileMD=='' ) { FileMD = 'd:\ZTE\English\MemDic.htm'; Goto RepDlg; } // принимаю условия - mu1 = DlgGetInt( Dlg, 1006 ); // сортировка словаря. mu2 = DlgGetInt( Dlg, 1008 ); mu3 = DlgGetInt( Dlg, 1009 ); DlgKill( dlg ); if ( !ExDlg ) { Goto Fin_SetGparamDic; } if ( mu1 ){ // Встать на окно словаря если не было то Загрузить его rm ('MESYS^LDFILES /CW=1 /FN='+FileMD); tof; rm ("USERIN^VERIFY /BL=/T= Выполнять сортировку? /S=1"); if ( !Return_Int ) Goto Fin_SetGparamDic; CollatingPage ('†'); // ZPage = '†'; goto Fin_SetGparamDic; } /* Запуск готовых словарей отключаю, 05/07/15 16:21 if (( dic )&&(!Global_Int('~Dictionary_Run'))) { // Проверяю, были ли ранее запущен СОКРАТ-словарь? // Если нет, то запускаю их запускаю словари... // str DictionaryRun = GetShortName ('C:\Program Files\Socrat\spv.exe'); ExecProg (DictionaryRun , "", "", "", _EP_FLAGS_DONTWAIT | _EP_FLAGS_NORMAL | _EP_FLAGS_EXEAUTO | _EP_FLAGS_EXEMASK ); // hh d:\kHelp\e-r_dic.chm DictionaryRun = 'hh d:\kHelp\e-r_dic.chm'; ExecProg ( DictionaryRun, "", "", "", _EP_FLAGS_DONTWAIT | _EP_FLAGS_NORMAL | _EP_FLAGS_EXEAUTO | _EP_FLAGS_EXEMASK ); // Если словари нет - сообщить... Set_Global_Int( '~Dictionary_Run', true); // для других сообщаю... что запущен. // hh d:\kHelp\e-r_dic.chm } */ if (mu2) { // Если такого файла нет, то нужно изготовить новый, на // основе файла заготовки из - d:\ZTE\English\MemDic.htm if ( 1==File_Exists( FileMD )) { Set_Global_Str( '#FileMemoryDic', FileMD ); Goto Fin_SetGparamDic; } if ( not (1==File_Exists( FileMD ))) { // копирование и переименование файла. return_int = 0; Return_Str = 'copy c:\Me\DIC\zMemDic.htm '+FileMD; rm ('EXEC /CMD=1'); // см. файл Winexec.s if ( return_int ){ beep; rm ('MEERROR^MessageBox /B=1/M= Ошибка ДОС /T= '+str(return_int)); } // Не понял как, но работает. Set_Global_Str( '#FileMemoryDic', FileMD ); } } if (mu3) { // Запускать только для папки с новыми mp3 файлами! rm ('SubRip^SubtitlesFiles'); // запуск изменений Set_Global_Int( 'MakeDirMP3html',1); } Fin_SetGparamDic: return_int = treturn_int; } // ====== конец текста macro: "SetGparamDic"; void DoVictorina( str FnameTxt ) /******************************************************************** • DoVictorina - Делать «Викторину» - для тренировки запоминания англ. слов из заранее подготовленного набора-словарика *©kvm******************************************** 30/04/19 15:33 ***/ { // заготовка см.File:"C:\ME\HTML\ZagDic01.htm"; // в ней нужно только заменить - // имя и дату // имя файла // И потом скопировать нужное - // это всё собрать в отдельном и даже потом в хроме показать. // DIC файл Должен быть уже подготовлен и проверен Список англ. слов - // macro:"Learning^WLISTXT /D=1"; //А здесь окончательная сборка // Преобразовать в файл .JS - и соединить с .HTML // macro:"Learning^ConvertDIC2JS /S=1"; Fin_DoVictorina: make_message(' => DoVictorina'); } // конец функции "DoVictorina"; void DoNewFileDic ( str FnameTxt ) /******************************************************************** • DoNewFileDic - *.Dic-файл новый делать из файла, что в окне. в отдельный файл - !!! ТОЛЬКО ДЛЯ АНГЛИЙСКОГО ТЕКСТА !!! На выходе: gs = = Wdic ; // Нормально работал, есть новый файл. = 0; // Отказ, не создан или остался старый файл Формат строк словаря, *.DIC - '†FFFFF'+'‡'+stDicA+'€'+stDicR+'‰'; На примере - d:\English\Christie_Christmas\ct1.txt сделать - d:\English\Christie_Christmas\ct1.dic и потом - d:\English\Christie_Christmas\ct1.htm *©kvm******************************************** 21/06/14 18:37 ***/ { // § -- перегружаю и переименовываю. // и на новое окно, т.е загрузить файл еще раз, переписать снова. Error_Level= 0; switch_window ( window_count ); create_window; Load_File(FnameTxt); if ( Error_Level != 0 ) { RM('MEERROR'); goto Fin; } file_name = Truncate_Extension ( FnameTxt )+'.dic'; RM('MESYS^SetWindowNames'); RM ('MESYS^EXTSETUP /FTO=1'); Make_Window_Visible ( 1 ); int Xmenu=0, tRefresh = Refresh; Refresh=false; str FnameDIC = file_name; // rm('MessageBox /B=1/T= Жди! Делаю DIC из файла: /M= FnameTxt=' + FnameTxt); // goto Fin; /* if ( CheckFileDic( FnameDIC ) ) { // проверяю, есть ли ранее, на диске? rm('USERIN^XMENU /L=Уже есть. Выбирай :/#=3/X=1/Y=1/B=1/T=1/M='+ 'Дописываь сверху ()'+ 'Дописывать по алфавиту()'+ 'Удалить и сделать новый()'); Switch (Return_Int){ case 1: {Xmenu=1; Goto WR; } case 2: {Xmenu=2; Goto WR; } case 3: {Xmenu=3; Goto WR; } // Del_File ( FnameDic ); } } // На диске такого файла не найдено Return_Str = file_name; rm('USERIN^QUERYBOX /T= На диске такого файла не найдено/P= FnameDic: /W=80/ML=240'); if ( !Return_Int) return ( ); // Закончить работу, нмчего не выбрано, иои ошибка. file_name = Return_Str; // можно другое имя внести. */ //------------------------------------------------------------------------------- WR: Working; // теперь работаем...======================= // Меняю весь текст на маленькие буквы rm ('MyUtils^MarkALL'); // Block^SelectAll rm ('Text^ChngCase /U=0/T=2/R=0'); // text.s - только для лат.букв. int tReg_Exp_Stat = Reg_Exp_Stat; Reg_Exp_Stat = True; int tIgnore_Case = Ignore_Case; Ignore_Case = True; str tstr [max_Line_Length]; // Заменяю все знаки препенания и цифры, и русские буквы пробелами. // Тут можно применить - // см. File:"C:\Me\Src\MyQDIC.s"; Line:1004; про "ToolsDic1 // - обслуживание файла словаря". tof; while (Search_Fwd('[@x00-@x40]',0)) {Replace(' ');} tof; while (Search_Fwd('[@x5B-@x60]',0)) {Replace(' ');} tof; while (Search_Fwd('[@x7B-@xFE]',0)) {Replace(' ');} Reg_Exp_Stat = false; tof; // Удаляю лишние пробелы и пустые строки call DelSP; tof; // Удаляю слишком короткие слова Do { str_block_begin; tstr = Get_Word (' '); block_end; // Если слово короткое, то удалить его. if ( length(tstr)<5 ) { delete_block; block_off;} else { block_off; } if ( at_eol ) { down; first_word; } else { Right; } } While ( !At_Eof ); tof; // Повторно Удаляю лишние пробелы и пустые строки call DelSP; tof; // Делаю столбик слов, While ( !At_Eof ) { Word_Right; if ( at_eol ) { down; first_word; } else { cr; } } tof; // Повторно Удаляю лишние пробелы и пустые строки call DelSP; // Goto FinOk; // записать на диск и снова загрузить. save_file; Erase_Window; // Это что бы конец файла окна перенести. load_file (FnameDIC); // >> EOF << - // если пустой файл получился - т.е. одни русские слова были. eof; if ( c_line == 1 ) { Return_Int = 0; // отказ Goto FinOk; } // не делать. tof; // Найти и Удалить одинаковые строки. ======================= DelAlikeStr ; Return_Int = 0; // Нормально работал tof; // Делаю словарь-файл =========================== // Работает макро - перевод слов - TranslationList // rm('MEERROR^MessageBox /B=1/T= Stop! /M= TranslationList'); TranslationList(); Return_Int = 1; // Нормально работал FinOk: Ignore_Case = tIgnore_Case; Reg_Exp_Stat = tReg_Exp_Stat; // Switch_Win_Id ( WRab ); Refresh = tRefresh; save_file; // § записан результат. Goto Fin; // ===================== DelSP: // Удаляю короткие словечки, лишние пробелы и пустые строки Do { tstr = Get_Line; if ((tstr =='')||(tstr ==' ')) { Del_Line; up; } else { tstr = Remove_Space( tstr); if ( length(tstr) < 4 ) { Del_Line; up; } else { put_line ( tstr); } } down; } While ( !At_Eof ); Redraw; ret; Fin: } // ====== конец текста macro: "DoNewFileDic"; macro ConvertDIC2JS /******************************************************************** • ConvertDIC2JS - преобразовать файл *.DIC в массив *.JS для применения в скрипте - см.File:"d:\English\Словари\LernDic7.htm"; Line:1; «Тренировка запоминания слов». 12/04/19 13:21 - удаление длинных значений перевода. замена знаков *©kvm******************************************** 09/04/19 10:41 ***/ { // проверяю первую строчку - str tstr [max_Line_Length]; tof; // должно быть... int MBQ = ('*±' == copy ( Get_Line,1,2)); if ( (GetExtension != 2) || !MBQ ){ MessageBox( 0, " !!! Только DIC файл, \nчто изготовил\n macro WLISTXT ", "Stop: ",mb_IconHand); goto Fin_ConvertDIC2JS; } tstr = " \n"+ " Этот файл будет преобразован \n"+ " в массив данных, для JS-скрипта.\n"+ " \n "+ " При /S=1 будет записан в папку - \n"+ " d:\\English\\Словари\\ "+ " \n\n\n Продолжем ? "; MBQ = MessageBox( 0, tstr, " ", mb_IconInformation|mb_YesNo); If ( MBQ != 6 ) { goto Fin_ConvertDIC2JS; } str RFName = file_name; // Имя начального файла int trefresh = refresh ; refresh = false; int tInsert_Mode = Insert_Mode; Insert_Mode = True; push_undo; // переименовать файл в новый - JS File_Name = Truncate_Extension(File_Name) + '.js'; eof; cr; // дописываю внизу пустые - tof; do { // сократить \ удалить часть строки после 2-го знака <;> 12/04/19 15:55 Goto_Col ( 1 ); for ( int k = 1; k <= 2; ++k){ Right; Search_FWD (';',1); } rm("DelEol"); down; } while ( !at_eof ); // Заменить - для удобства отображения - 10/04/19 20:32 tof; while (Search_Fwd(';',0)) {Replace('
');} // удаляю строки комента и пустые, и дописываю - tof; do { Rep: if ( at_eof ) { Break; } tstr = Get_Line; if ( tstr == '' ) { del_line; goto Rep; } if ( copy (tstr ,1,1) == '*' ) { del_line; goto Rep; } put_line ( "LDic[№N] = '" + tstr + "';" ); down; } while ( !at_eof ); // Заменяю знаки «
';» в конце строк, на «';» tof; while (Search_Fwd("
';",0)) Replace("';"); // для всего файла. // заменить №N на очередной номер int NN = 0; tof; while (Search_Fwd('№N', 0 )){ Replace(str(NN)); ++NN;} tof; // cr; up; Goto_Col ( 1 ); text( '// Список '+ str( NN ) +'-ти слов из File:"' + RFName +'";' ); cr; text( '// составлен: '+ Date + ' ' + Time); cr; text( '// -----------------------------------'); cr; text( 'var NSlov = ' + str ( NN ) + ';'); cr; text( 'var LDic = new Array();' ); cr; tof; pop_undo; Insert_Mode = tInsert_Mode; refresh = trefresh ; RM('MESYS^EXTSETUP /FTO=1'); // применять раскраску. rm('MeUtil1^ReLoad'); if ( Parse_Int( "/S=", MParm_Str ) ) { file_name = "d:\\English\\Словари\\"+Truncate_Path ( File_Name ); save_file; } Fin_ConvertDIC2JS: } // конец текста macro: ConvertDIC2JS macro WLISTXT /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * • WLISTXT - Изготовление списка слов из входного файла. * Универсальный. * * 30/04/19 10:03 - добавляю меню с «птицами» выбора. * 10/04/19 16:24 - добавил удаление тегов и прочего... * /N=1 - удалить неперевод. слова. * 06/11/18 15:47 - /T=1 - делать перевод слов. * 25/10/18 08:50 - словари удобнее собирать в отдельной папке * типа d:\English\Словари\ - нужен меню выбора. * 20/10/18 16:30 - /D=1 - удалять знакомые слова, из списка- * словарь известных мне слов: * см.File:"C:\ME\DIC\Iknowit.dic"; Line:1; * * 12/10/18 10:36 - серьёзная переделка, с учетом новых требований. * см. ранее деланные, для спец. работ: * DoNewFileDic - .Dic-файл новый делать из файла, что в окне. * QTest01 - составления списка слов из блока\файла. * synonym.s - удаление одинаковых * TextUtl.s * * ==================== * 04/01/04 22:17 * 08/04/00 17:50 * 06/02/00 19:20 -дополнения. * 15.06.2008 10:32 - переделка * * * * * * * * * * * * * * * * * * * * * * * * * 09/10/97 06:58 * */ { if ( (GetExtension > 9)&&(GetExtension != 20)){ MessageBox( 0, " Только текстовые файлы !!! ", "Stop: ",mb_IconHand); goto Fin; } str tstr [max_Line_Length]; tstr = "Будет составлен список английских слов."; int DelKW = Parse_Int( "/D=", MParm_Str ); // = 1 - удалять знакомые слова. int Tran = Parse_Int( "/T=", MParm_Str ); // = 1 - делать перевод. int NoTran = Parse_Int( "/N=", MParm_Str ); // = 1 - удалить неперевод. // словари удобнее собирать в отдельной папке // типа d:\English\Словари\ - нужен меню выбора. int Mdlg, MdlgExe; DlgCreate ( Mdlg ); DlgSetPos( Mdlg, 150, 150); DlgAddCtrl( Mdlg, DLG_Static, " Запуск с параметрами "+MParm_Str, 1,1,60,1,1000, 0, "" ); DlgAddCtrl( Mdlg, dlg_CheckBox," /D=1 - удаляться знакомые слова.", 8,3,60, 0,1001,0, "" ); DlgAddCtrl( Mdlg, dlg_CheckBox," /T=1 - выполнить перевод.", 8,4,60, 0,1002,0, "" ); DlgAddCtrl( Mdlg, dlg_CheckBox," /N=1 - удалить слова, которых нет в словаре. ", 8,5,60, 0,1003,0, "" ); DlgSetInt ( Mdlg, 1001, DelKW ); DlgSetInt ( Mdlg, 1002, Tran ); DlgSetInt ( Mdlg, 1003, NoTran ); DlgAddCtrl( Mdlg, dlg_PushButton, "Продолжаем?", 3, 7, 20, 0, 101, 0, "/R=1"); DlgAddCtrl( Mdlg, dlg_PushButton, "Закончить", 24, 7, 20, 0, 102, 0, "/R=0"); DlgAddCtrl( Mdlg, DLG_PushButton, "Справка", 54, 7, 15, 0, 103,0,"/R=2" ); MdlgExe = DlgExecute( Mdlg, 102, tstr, "HelpСлова" ,"", 0 ); DelKW = DlgGetInt( Mdlg, 1001 ); Tran = DlgGetInt( Mdlg, 1002 ); NoTran = DlgGetInt( Mdlg, 1003 ); DlgKill( Mdlg ); if ( !MdlgExe ) { goto Fin; } // Определение локальных переменных str RFName = file_name; // Имя начального файла // повторно загружаю в новое окно -- 01/05/19 08:59 rm ('MESYS^LDFILES /CW=1 /NC=1 /FN='+ RFName); int Nstr = 0, Zn = 0, // =1 - это слово мне знакомо. Wrab, // В этом окне работаем Wnew; // В этом окне новый текст, слова собираю. // Запретить запись восстановления и обновления. int trefresh = refresh ; refresh = false; push_undo; /* Начало работы: */ Working; // переименовать файл в новый - dic File_Name = Truncate_Extension(File_Name) + '.dic'; // словари удобнее собирать в отдельной папке // - нужен меню выбора. // File_Name = "D:\\English\\Словари\\" + Truncate_Path ( File_Name ); // Пока оставлять в той же папке, что и из которого делаю. RM('MESYS^EXTSETUP /FTO=1'); // применять раскраску. Wrab = Window_Id; // Номер текущего окна запомнить tof; // Меняю весь текст на маленькие буквы rm ('MyUtils^MarkALL'); // Block^SelectAll rm ('Text^ChngCase /U=0/T=2/R=0'); // text.s - только для лат.букв. int tReg_Exp_Stat = Reg_Exp_Stat; Reg_Exp_Stat = True; int tIgnore_Case = Ignore_Case; Ignore_Case = True; // Удаляю все хтмл-теги tof; while (Search_FWD ( '', 0 )) Replace ( '' ); // Заменяю все знаки препенания и цифры, и русские буквы пробелами. tof; while (Search_Fwd('[@x00-@x40]',0)) {Replace(' ');} tof; while (Search_Fwd('[@x5B-@x60]',0)) {Replace(' ');} tof; while (Search_Fwd('[@x7B-@xFE]',0)) {Replace(' ');} Reg_Exp_Stat = false; // Удаляю лишние пробелы и пустые строки и слишком короткие слова call DelSP; tof; // Делаю столбик слов, While ( !At_Eof ) { Word_Right; if ( at_eol ) { down; first_word; } else { cr; } } // Повторно Удаляю лишние пробелы и пустые строки call DelSP; // Удаляю одинаковые слова - и Удалить одинаковые строки. tof; DelAlikeStr ; Return_Int = 0; // Нормально работал // удалить знакомые\известные мне слова - // они из файла - что ранее был - "C:\Me\DIC\KnownW.dic" // т.е. те, что находятся в c:\ME\DIC\Iknowit.dic if ( DelKW ) { tof; do { tstr = Get_Line; if ( KnownWords( tstr ) ) { // - слово известно - del_line; up; up; } down; } while ( !at_eof ); } // делаю перевод слов - if ( Tran ) { InterpreterList(); } // удалить непереведённые слова - они обычно, не важные... // 10/04/19 19:41 if ( NoTran ) { tof; while (Search_FWD ( '???', 0 )){ del_line; up; Goto_Col ( 1 ); } } // ConvertDIC2JS - для скрипта преобразовать // пишу для памяти сверху - eof; Nstr = C_Line; // число слов в списке. TOF; CR; up; Goto_Col ( 1 ); Insert_Mode = TRUE; // вкл.режим вставки Text( '*± Список '+ str(Nstr) +'-ти слов из File:"' + RFName +'"' );CR; Text( '* составлен: '+ Date + ' ' + Time);CR; Text( '* -----------------------------------------------------------');CR; goto FinOK; // ===================== DelSP: // п\п Удаляю короткие словечки, лишние пробелы и пустые строки tof; Do { tstr = Get_Line; if ((tstr =='')||(tstr ==' ')) { Del_Line; up; } else { tstr = Remove_Space( tstr); if ( length(tstr) < 4 ) { Del_Line; up; } else { put_line ( tstr); } } down; } While ( !At_Eof ); Redraw; ret; FinOK: Pop_Undo; tof; Reg_Exp_Stat = tReg_Exp_Stat; Refresh = tRefresh; Fin: }/* Конец текста макро WLISTXT ******** */ macro DoLesson /******************************************************************** • DoLesson - делать учебные хтмл-файлы из текста на Англ. Языке. Меню - выбора файлов - выбираю .txt делаю из него .dic а затем из файла .dic сделать .htm Открыть папку - выбрать файл , если их там несколько - показать список для выбора - Это спец окно есть такое - там курсор перемщаеться по строкам. Как пример, беру из "Session Manager" - SessMgr.s - macro:SessMgr Формат строк словаря, *.DIC - '†FFFFF'+'‡'+stDicA+'€'+stDicR+'‰'; - 1)индекс - 5 знаков - пока не знаю, что там буду писать, но потом придумаю. - а другие, это уже как есть. 2)английское и 3)перевод 4)сылка на доп. файл с примером-звуком. На примере - d:\English\Christie_Christmas\ct.txt На примере - d:\English\Christie_Christmas\ct1.txt сделать - d:\English\Christie_Christmas\ct1.dic и потом - d:\English\Christie_Christmas\ct1.htm Добавляю сюда и изготовление субтитров - macro:SubRip - 15/09/14 09:30 15/08/14 11:55 *©kvm******************************************** 03/05/14 19:19 ***/ { int tRefresh = Refresh; Refresh=false; Start: str FileTXT = file_name; // входной файл - .txt str FExten = caps( Get_Extension ( FileTXT )); if (( FExten != 'TXT' )&&( FExten != 'DIC' )) { rm ("USERIN^VERIFY /BL=Нужно выбрать файл «TXT» или «DIC» /T= Работаю только с английским текстом ! \n Будешь выбирать? /S=1"); // S= номер кнопки if(!Return_Int) Goto Fin_DoLesson; } int Mtxt=0, Mdic=0; // метки вх.файла str FileDIC='', FileHTM ; // выходные файлы - .html if ( FExten == 'TXT' ) { Mtxt=1; goto doLes01;} if ( FExten == 'DIC' ) { Mdic = 1; FileDIC=file_name; goto doLes01; } // Выбирай файл - // RETURN_STR = "d:\\English\\*.TXT"; rm('MEUTIL1^File_Prompt /FTO=1 /FTC=1 /T= В окне не тот файл. Нужно выбирать'); if ( !Return_Int ) Goto Fin_DoLesson; // Отказ нажат был. FileTXT = RETURN_STR; rm ('MESYS^LDFILES /CW=2/PRE=1/DE=1'); RM ('MESYS^EXTSETUP /FTO=1'); if (Error_Level){rm('MEERROR'); goto Fin_DoLesson;}// и проверить на ошибку. goto Start; // возвращаюсь, ухожу на начало, на новом окне. //------------------------------ doLes01: int Dlg, DlgEx, AnRus, RusAn, Ndic, Nhtm, Mix, HHs, Tel, Sub, // ключи запуска dlg_FileDIC=0; FileDIC = Truncate_Extension (FileTXT)+'.dic'; if ( File_Exists( FileDIC )==1 ) { // Set_Global_Str( 'Dic_FnameExists',FileDIC); Set_Global_Int( 'Dic_AddWriting',1); g_FileDicExist = 1; // уже есть. } // выбрать файл? - DlgCreate(Dlg); // квадрат шириной 200 на 10 строк. g_DlgDoLesson = Dlg; // запоминаю если, = 0 то это DlgAddCtrl( Dlg, DLG_Static,"для файла: ",2, 1,81, 1,1000, 0, "" ); DlgAddCtrl( Dlg, DLG_Static, FileTXT, 20, 1, 81, 1,1001, 0, "" ); if ( g_FileDicExist ) { DlgAddCtrl( Dlg, DLG_Static, " уже есть ", 2, 2, 81, 1, 1002, 0, "" ); DlgAddCtrl( Dlg, dlg_Text, FileDIC , 16, 2, 50, 1, 1003, 0, "/ML=250" ); } // dlg_Text DlgAddCtrl( Dlg, DLG_Checkbox," Cделать новый «DIC» -файл. ", 3, 4, 0, 0, 1004, dlg_FileDIC, "" ); // DlgAddCtrl( Dlg, DLG_Checkbox," Дополнить и редактировать имеющийся. ", 3, 5, 0, 0, 1005, not(dlg_FileDIC), "" ); DlgSetInt( Dlg, 1005, g_FileDicExist ); // DlgAddCtrl( Dlg, DLG_Checkbox," Из «DIC» сделать «HTM» -файл. ", 3, 6, 0, 0, 1008, 0, "" ); DlgAddCtrl( dlg, DLG_Checkbox," Перемешать строки. ", 10, 7, 0, 0, 1009, 0, "" ); DlgSetInt( Dlg, 1009, 0 ); // =1 Установить * в начале. DlgAddCtrl( dlg, Dlg_RadioButton," Англо - русский. ", 10, 8, 0, 0, 1010, 0, "" ); DlgSetInt( Dlg, 1010, 1 ); DlgAddCtrl( dlg, Dlg_RadioButton," Русско - английский. ", 10, 9, 0, 0, 1011, 0, "" ); DlgSetInt( Dlg, 1011, 0 ); DlgAddCtrl( Dlg, DLG_Checkbox," Показать результат в браузере. ", 3, 12, 0, 0, 1020, 0, "" ); DlgAddCtrl( Dlg, DLG_Checkbox," Перенести файлы на телефон. ", 3, 13, 0, 0, 1021, 0, "" ); DlgAddCtrl( Dlg, DLG_Checkbox," Изготовить «SRC» -файл, субтитры. ", 3, 14, 0, 0, 1022, 0, "" ); DlgAddCtrl( Dlg, DLG_Static,"================================================================",1, 19,81, 1,1200, 0, "" ); DlgAddCtrl( Dlg, dlg_PushButton, "Выход", 2, 20, 20, 1, 100, 0,"/R=0"); DlgAddCtrl( Dlg, dlg_PushButton, "Работать", 24, 20, 20, 1, 110, 0,"/R=10"); DlgAddCtrl( Dlg, dlg_PushButton, "Обновить", 46, 20, 20, 1, 111, 0,"/M=_SetDoLesson /R=11"); DlgEx = DlgExecute( Dlg, 100, " Изготовение учебного словарика", "HHd", "", 0 ); Ndic = DlgGetInt( Dlg, 1004 ); // Делать новый файл DIC-словаря. g_FileDicExist = DlgGetInt( Dlg, 1005 ); // Дополнить\проверить имеющийся DIC-словарь. Nhtm = DlgGetInt( Dlg, 1008 ); // делать HTML словарь Mix = DlgGetInt( Dlg, 1009 ); // перемешиваить слова AnRus = DlgGetInt( Dlg, 1010 ); // англ - русс RusAn = DlgGetInt( Dlg, 1011 ); // русс - англо , HHs = DlgGetInt( Dlg, 1020 ); // показать в браузере Tel = DlgGetInt( Dlg, 1021 ); // перенести в телефон ... Sub = DlgGetInt( Dlg, 1022 ); // делаю файл CRT - субтитры DlgKill( dlg ); // это можно отключать... опыты нужны. - Dialog.s Dialog.sh if ( !DlgEx ) { goto Fin_DoLesson; } if ( Ndic ) { // делаю из TXT --- DIC DoNewFileDic (FileTXT); // Изготовленый файл записан на диск. } if ( g_FileDicExist ) { // Редактировать --- DIC rm('MEERROR^MessageBox /B=1/T= Stop! /M= Редактировать --- DIC'); DicEditResurs ( FileDic ); } if ( Mix ) { // перемешиваить слова в DIC - Будет новое окно. // Работать в окне DIC - которое потом нужно удалить, // временное. // rm('MEERROR^MessageBox /B=1/T= Stop! Mix /M= FileDIC='+FileDIC); // RETURN_STR = FileDIC; // rm ('MESYS^LDFILES /CW=2/PRE=1/DE=1'); // MixLineDic( 0 ); // =0 - тип перемешивания слов. } if ( Nhtm ) { // делаю HTML словарь... // rm('MEERROR^MessageBox /B=1/T= Stop! Mix /M= FileDIC='+FileDIC); // AnRus RusAn DoNewDicHtm ( FileDIC, RusAn); // } if ( Sub ) { // делаю файл CRT - субтитры rm ('SubRip^SubRip'); // goto Fin_DoLesson; } if ( HHs ) { // показать файл в брауйзере. FileHTM = Truncate_Extension (FileDIC) + '.htm' ; rm('MEERROR^MessageBox /B=1/T= Stop! BRAUSER /M= FileHTM=' + FileHTM ); // HHstart ( FileHTM , 0 ); } if ( Tel ) { // перенести файлы на телефон.. rm('MEERROR^MessageBox /B=1/T= Stop! TELEFON /M= Перенести файлы на телефон'); str sFile = 'c:\Me\Config\TelCopy.DB'; SaveFile2Tel (sFile); // } Fin_DoLesson: Refresh = tRefresh; } // ====== конец текста macro: "DoLesson";