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 ( ' Home
' ); cr;
text ( ' ' ); cr;
text ( ' ' ); cr;
text ( ' Play
' ); cr;
text ( ' ' ); 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 ( ' ' ); cr;
text ( ' Home
' ); cr;
text ( ' ' ); cr;
text ( ' ' ); 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(' Home
');cr;
text(' | ');cr;
text(' ');cr;
text(' ');cr;
text('');cr;
text('');cr;
// и нижнюю части файла.
eof;cr;Goto_Col ( 1 );
text('');cr;
text(' ');cr;
text(' | ');cr;
text(' ');cr;
text( 'Home
');cr;
text(' | ');cr;
text('
');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";