Работает в Windows Mobile 2003 SE, 5, 6. Для ранних версий требуется установка .NET Compact Framework.
Скомпилирована в Pocket C#
Для размещения программы, файлов настроек и данных, надо создать путь "[\Имя накопителя]\Program Files\[Text]DTEC\", например :
"\Program Files\TextDTEC\"
или
"\SD-MMC card\Program Files\DTEC\"
Если такой путь не существует, то файлы настроек и данных записываются в "\Windows\".
Если путь найден и там есть файл TextDTEC.exe, в "\Windows\Start Menu\Programs\" или "\Windows\Главное меню\Программы\" создается ярлык TextDTEC.lnk
Загрузка файлов
Стартовый экран содержит 3 текстовых поля и список. Верхнее поле для адреса файла, загружаемого по протоколу HTTP, второе - для обозначения содержимого (имени, названия ссылки) и текущего состояния, третье для имени, под которым сохраняется файл.
Внизу виден 1 из 2 списков: адресов или имён, которые заполняются командой Ком -> Ссылки из текста. В открывшемся списке надо выбрать текст, содержащий строки, начинающиеся с "http://". Продолжение строки после пробела считается именем. Если имя заканчивается последовательностью #, то они заменяются правыми цифрами даты в формате ггггммдд. Например, "имя#####" 5-го января 2010 г. заменяется на "имя00105".
При выборе пункта в списке его адрес и имя помещаются в поля. Если вкл. "Проверять историю" то, если адрес есть в логе загрузки текущей папки, цвет адреса красный, если есть в истории - зелёный. Если файл с таким именем существует, добавляется число. Начальный индекс (0) и разделитель (-) могут быть переопределены файлом интерфейса *.lng.
Если расширение адреса одно из "jpg, gif, png, zip, cab, exe, txt, pdf, doc, xls", то оно добавляется к имени, если "php, asp, aspx, mspx, pl, xml" или содержит "htm" или имя файла в адресе отсутствует - то ".htm". После начала загрузки проверяется тип содержимого и в случае отсутствия расширения или несоответствия типу файл сохраняется с расширением из адреса или параметра "Content-Type" заголовка.
Если вкл. "Вспоминать настройки сайта", то при переключении адресов проверяется совпадение начала адреса (без http:// и www.) со всеми именами настроек преобразования HTML и открывается наиболее подходящая, а при отсутствии совпадений - общая (из ini).
Если нужны разные настройки для адресов, отличающихся дополнениями (abc/ и abc/123), то обе должны иметь одно имя ("abc/"). Первая в списке применяется для "abc/", а последняя - для "abc/123".
Команда меню первого уровня "Загрузить" загружает выбранный файл, запоминает его кодировку (charset из "Content-Type" в заголовке). После команды "Закрыть лог" или "Выход" в файл "Загрузка.txt" в папке для загрузки добавляются строки в формате "адрес :с имя_файла", где :с - кодировка (:k, :u, :w или :?). В случае перенаправления записывается и другой адрес с пометкой "Redirect to".
Команды меню "Файл" :
Открыть (авто), Открыть UTF, Открыть Win-1251 - открывают диалог выбора файла : вверху поле для имени файла с путём, внизу список папок и файлов в этой папке по маске в правом поле, отсортированных по имени или времени (кнопка И | В) в прямом или обратном порядке (кнопка ^ | V). Цвет строки состояния : жёлтый для папок, голубой для файлов меньше 2 мегабайт, красный - больше. Команда меню "Открыть" открывает файл (путь), имя которого введено в текстовое поле, если он существует, иначе - выбранный пункт списка.
Открыть часть - (большого файла ANSI, Win-1251) - перед вызовом этой команды в верхнее поле (для адреса) надо ввести индекс первого байта - знака, во второе - количество байт. UTF не поддерживается.
Необходимость в этой команде вызвана отказом .NET CF или использованной реализации C# обрабатывать строки больше ~2.5 мегабайт (исключение OutOfMemoryException), даже если в памяти достаточно места для нескольких текстов по 2 мегабайта.
Найти адреса - создает текст со строками "адрес[ имя ссылки]\tимя файла" (\t - знак табуляции).
Каждый адрес из лога в текущей папке загрузки ищется во всех файлах *.htm этой папки как отдельная строка (перед адресом должен быть знак новой строки, после - тоже или "<" или " "). Если найден, то в текст добавляется строка "адрес[ имя ссылки]\tимя файла содержащего адрес". Если нет - строка из лога (если файл существует, то после адреса - "\t" вместо " ").
В одном файле может быть любое число адресов из лога и соответствующее им содержание.
Избранное в текст - формирует текст из строк в формате "адрес имя" используя файлы *.url из указанной папки. Для выбора надо нажать "Сохранить".
Закрыть лог - добавляет строки в формате "адрес :с имя_файла" и кодировке utf-8 в файл "Загрузка.txt" в папке для загрузки. Можно дать другое имя файлу правкой файла интерфейса *.lng. Назначение имени (сообщения) определяется позицией строки в контейнере.
Добавить в историю - открывает диалог выбора текста со строками "адрес[ :с] имя_файла" или "адрес[ имя ссылки]\tимя файла содержащего адрес" (имена ссылки и файла, содержащего строку - адрес, разделены знаком табуляции, такой текст создаётся командой "Найти адреса").
После команды "Применить" загружает в память (массив строк) "Файл истории ссылок" (если он существует, имя надо ввести в диалоге "Настройки"), добавляет в него строки из текста, сортируя по числовым значениям знаков адреса в нижнем регистре (ToLower, String.CompareOrdinal) в формате :
"адрес[ имя ссылки]{\t[путь]имя файла[ ггггммдд]}"
Формат : адрес - без "http://";
[] - добавление содержимого зависит от настроек, синие скобки служат для обозначения необязательных частей и в строках отсутствуют;
{} - содержимое фигурных скобок повторяется для каждого имени файла, добавляемого к одному адресу;
\t - знак табуляции;
путь - текст из поля "Папка для загрузки" (может быть произвольным, если Закрыть диалог "Настройки", а не Применить) - добавляется перед именем файла, если вкл. "+Путь";
ггггммдд - текущая дата - добавляется, если вкл. "+Дата".
Сохранить историю - сохраняет массив строк в "Файл истории ссылок" в выбранной кодировке - windows-1251 или utf-8. Если поле имени файла пусто, то создаётся текст "История".
Открыть источник - файл *.htm с именем, совпадающим с названием выделенной ссылки из списка, при отсутствии совпадения - последний загруженный файл с выбранного адреса.
Кодировка определяется по логу (:k, :u, :w), а в случае отсутствия в заголовке (:?) - по <meta http-equiv="Content-Type" charset=*> в файле.
Если вкл. "Метить и определять utf-8" и в начале файла - "п»ї", то считается utf-8 (charset игнорируется).
Ручная установка (HTML -> Настройки 1 : windows-1251, utf-8, koi-8) приоритетна, поскольку кодировка не всегда соответствует указанной.
По умолчанию, если ниоткуда не получена - utf-8.
Преобразовать
- открывает файл, как предыдущая команда, создает текст, отфильтрованный в соответствии с настройками HTML 1, 2 и список ссылок.
Сохраняется весь видимый текст и основные теги : A, BR, P, HR, B, I, U, CENTER, UL, OL, LI, H1 - H6, PRE, DL, DD, DT, BLOCKQUOTE, BODY, HTML, [TABLE, TR, TD, TH, IMG, FONT, DIV].
WM IE не поддерживает параметр id, поэтому он заменяется на <A NAME=[id]>.
Команды меню "HTML" :
Настройки 1 :
Картинки - сохранять ссылки на графику <img src=...>, добавить их в текст "Адреса картинок". Повторения проверяются для последних 512
Только существ. - сохранять <img src="имя сохранённого файла">, если абсолютный адрес из src есть в логе загрузки текущей папки или в истории
Только jpeg - если расширение .jpg
Посередине - заключать <img > в контейнер <center>
SRC -> текст - помещать значения SRC (без пути) в видимый текст
ALT -> текст - помещать значения ALT в видимый текст
Цвет шрифта - сохранять <FONT COLOR=*>
Только контраст. - если значения 2 компонентов из RGB различаются больше, чем 127
2 <BR> - ограничивать последовательности <BR><BR> двумя или одним
DIV -> BR преобразовать теги <DIV> и </DIV> в <BR>
&...; > знак - заменять & на &, " на " и т. п.
Без 1 - заменить одиночные на пробелы
Без - заменить и последовательность на пробел, не заменять "<TD></TD>" на "<TD> </TD>"
windows-1251, utf-8, koi-8 - явное указание кодировки
Такой же ALT - не сохранять повторяющиеся ссылки без текста, если ALT тоже совпадает или отсутствует
Другой ALT - не сохранять повторяющиеся ссылки без текста
Такой же текст - не сохранять повторяющиеся ссылки без текста, если текст тоже совпадает
Другой текст - не сохранять повторяющиеся ссылки
Оставить текст - сохранить текст ссылки, удалить только <A ...>, </A>
A HREF=http://... - перевод адресов в из относительной в абсолютную форму
A NAME - сохранять <A NAME=... [HREF=...]>, все адреса - абсолютные, независимо от предыдущей установки
Все # - сохранять все указатели, в т. ч. в ссылках на другие страницы
Список ссылок - добавить в текст "Адреса ссылок". Повторения проверяются для последних 1024. Если вкл. "Новый сайт - сброс ссылок", то при преобразовании страницы с другого сайта массив проверки стирается
HTML текст - создать преобразованный текст
После загрузки - преобразовать сразу после загрузки. Если включён, а "HTML текст" и "Список ссылок" сняты, то открывается источник (и производятся замены, для *.rss и т. п.)
Общая замена - применить первую в списке замену (вместо добавления в "HTML 2")
Option в ссылки - если "SELECT OPTION" применяется для выбора адреса или добавления параметра из одного списка (+ из {<input type=hidden ...>}), в преобразованный текст добавляются ссылки из <option >. Java не поддерживается
Title - сохранять заголовок страницы, помещать значения title= (всплывающие подсказки) из ссылок в видимый текст
PRE BOLD - добавлять <B>, для улучшения читаемости шрифта Courier (если в контейнере <PRE> нет <B>)
PRE BOLD ALL - независимо от присутствия <B>
HTML -> Настройки 2 :
Таблицы - сохранять таблицы с последующими условиями:
Внутренние - только последние из вложенных, все содержащие их таблицы не сохраняются
Только макс. - только одна таблица с наибольшим количеством ячеек
Границы - параметр border=1. IE и Pocket IE по разному интерпретируют отсутствие "border": IE показывает границы, а Pocket IE - нет
Посередине - добавлять параметр align="center"
min <TD> - сохранять таблицы с количеством ячеек большим или равным указанному
min <TR> - то же с количеством рядов
cellpadding - расстояние между рамками ячеек
cellspacing - расстояние между рамками ячеек и содержимым
Цвет нечётн. - цвет фона нечётных рядов в формате #RRGGBB (шестнадцатеричные числа)
Цвет чётных - аналогично
Начало до - если не пусто, искать в источнике указанный текст и, если найден - считать его началом преобразуемого текста
Конец до - если не пусто и найдено начало, искать в источнике указанный текст и если найден - считать его концом
Начало после, Конец после - аналогично после преобразования. Тот же результат достигается после более долгого процесса и нет возможности использовать комментарии <!-- >, но проще сделать и меньше ошибок потери частей контейнеров
Кнопка "+" добавляет последовательность замен, выполняемых после преобразования, в список, а "-" удаляет выделенную.
Команды меню "Ком" :
Заголовки - отправляет запрос по методу "HEAD" и показывает размер файла, тип содержания, время последнего изменения. Для просмотра всех параметров надо прокрутить текст. После команды "Закрыть лог" создается текст "Заголовки".
Предупреждение !
Вместо заголовка сервер может прислать весь файл, а .NET принимает его. Если соединение внутреннее (смартфон, коммуникатор), и нет возможности контроля трафика, как при использовании внешнего модема в телефоне, то об этом остаётся догадываться по убыванию баланса.
Загрузить всё - запуск последовательной загрузки файлов, начиная с выделенного до конца списка. Остановить процесс можно пунктом меню СТОП (переименуемый Загрузить), когда имя файла зеленое. В ходе загрузки файла - красное.
Настройки :
Верхний текст - "Папка для загрузки :" можно редактировать или выбрать папку в диалоге после нажатия кнопки, нажать "Сохр.". Чтобы изменение пути вступило в силу, необходимо нажать "Применить".
Загружать после - в указанное время начать последовательную загрузку
Не загружать файл больше - узнавать размер файла и, если параметр "Content-Length" есть в заголовке и его значение больше указанного, то не загружать файл
Ограничить загрузку, KB - если общий размер файлов последовательной загрузки больше указанного, то выключить
Кнопка "Файл истории ссылок :" - в диалоге надо выбрать файл истории (текст с отсортированными адресами), нажать "Открыть", "Применить".
Для создания нового файла (командой Сохранить историю) надо ввести имя с путём.
UTF-8 - установить, если история в этой кодировке. Если вкл. "Метить и определять utf-8", то значение определяется по наличию "п»ї" в начале выбранного файла после команды "Применить".
Language - выбрать файл *.lng с текстовыми обозначениями элементов интерфейса и сообщениями.
Проверять историю - при выборе ссылки в списке
Вспоминать настройки сайта
Новый сайт - сброс ссылок
Метить и определять utf-8 - относится к открываемым и загруженным файлам, словарю, истории
Сохранять настройки при выходе - Если изменились после запуска программы, то записываются в файл TextDTEC.ini. Также запоминаются имена всех текстов, начинающиеся с "\" (сохранённых файлов) и при следующем запуске они восстанавливаются.
+Путь
+Дата
Вспомнить - если адрес есть в истории, то эта строка помещается во второй текст
Ссылки из текста
Новый текст - создать пустой текст
Перейти к тексту - открыть диалог выбора
Команда меню Загрузить - загрузка начинается после нажатия на этот пункт меню.
Редактирование
Поддерживается до 32 текстов. Можно "Добавить" или "Переместить" текст в конец того текста, который был выбран командой "Настройки" -> "Текст для добавления" или после первой команды перемещения.
Размер текста в многострочном поле ограничен 30000 знаков, если больше - отображается часть: Начало и Длина в диалоге Найти ("P"). Для ускорения правки можно ограничить длину меньшим значением в диалоге "Настройки редактора": "Длина текста". Вначале 8000.
Диалог "Найти" - поиск и замены, шрифт, позиция:
5 текстовых полей :
1 - текст, который надо найти;
2 - если не пустое, то ищется текст, который начинается с текста 1 и заканчивается текстом 2;
3, 4 - используются, если текст 2 не пустой, находится текст, который содержит текст 3 и не содержит текст 4;
5 - текст, на который заменяется найденный;
3 флажка :
"A=a" - поиск без учёта регистра, большие и маленькие буквы считаются одинаковыми;
"Целое слово" - найденный текст не соседствует с буквой или цифрой;
"Удалять весь контейнер - </>" - если текст 1 начинается с "<", текст 2 = ">", текст 5 пустой, то после замены найденного текста (например <A ...> - ненужные ссылки, содержащие заданный текст), ищется закрывающий тег (</A>) и тоже удаляется.
До 31 набора значений этих 5 текстовых полей и 3 флажков могут храниться и переключаться кнопками "<" и ">". Могут использоваться по отдельности (Заменить всё * 1) и последовательно от 0 до номера, предшествующего установленному (Заменить всё * все).
Весь набор можно скопировать в буфер текста, вставить, сохранить под указанным именем (в файл RepDTEC.dat), открыть, добавить (в диалоге HTML -> Настройки 2) для обработки текста сразу после преобразования.
Эти наборы (в меню Замены) определяются номером в списке, а не именем.
Команда меню "Сохранить как" вызывает диалог, в котором сохраняется последний открытый набор под его номером и именем, указанным в верхнем текстовом поле.
Команда "Сохранить как новый" вызывает диалог, в котором сохраняется последний открытый или созданный набор под именем, указанным в верхнем текстовом поле, которое добавляется в конец списка.
Первый в списке набор замен может применяться для обработки текста сразу после преобразования установкой "Общая замена". Не требуется добавлять его в список в диалоге HTML -> Настройки 2.
Для каждого текста можно задать свой размер шрифта и сделать его полужирным установкой флажка Шрифт.
Для перехода "К строке" надо ввести её номер и нажать кнопку.
Начало и Длина - части текста, которая помещена в текстовое поле.
Кнопка "Строки в текст" производит однократный поиск в каждой отдельной строке и все строки, в которых найден заданный текст, помещаются в новый текст. Если текст 2 пуст, для проверки условий 3 и 4 используется часть строки от первого найденного текста 1 до конца строки.
"Отчёт" - сообщать о количестве сделанных замен, об ошибках вычислений.
Заменять пунктом меню "R" - если включено краткое меню, нажатие на "R" заменяет выделенный текст на текст 5.
"Сброс условий поиска и замены" - изменение текста 1 делает тексты 2, 3, 4 пустыми, текст 5 = текст 1.
Диалог "Настройки редактора":
Дополн. клавиши - 16 знаков на кнопках выше клавиатуры.
Шрифт - размер шрифта.
Перевод - размер шрифта нижнего текста (Перевод / адрес).
Длина текста - длина части большого текста при открытии, переходах, поиске.
Перевод + - к словарной статье добавляется указанное число знаков сверху и снизу (до коррекции).
Кнопка "Словарь" - в диалоге надо выбрать файл словаря (текст с отсортированными строками, например, словарь Мюллера или QDdictionary), нажать "Открыть", "Применить".
UTF-8 - установить, если словарь в этой кодировке. Если вкл. "Метить и определять utf-8", то значение определяется по наличию "п»ї" в начале выбранного файла после команды "Применить".
Точность вычисления - число десятичных знаков результата. Вычисления производятся с точностью double ~15 знаков.
Коррект. словарь, историю, источник - Удалять >, _ из словаря Мюллера, добавлять новые строки между статьями и значениями. В истории - добавлять http://. В источнике - заменять Lf на CrLf .
Диалог "Настройки таблиц знаков":
Текст может содержать от 1 до 14 строк до 16 знаков, которые формируют таблицу - массив кнопок. Переключение 10 текстов - таблиц кнопками "<" и ">".
Когда включён пункт меню "Таблица знаков", пункт меню "Клавиатура" ("К") заменяется на "Таблица знаков >" (">"), которым можно переключать таблицы, у которых установлен флажок "Включить".
Если кнопки "<, >, ^, =" расположены в крайней колонке, то они действуют как команды переключения таблиц, Shift, Вычислить.
Использование большого числа кнопок замедляет работу графического интерфейса. Создание кнопок происходит после первого обращения.
Команды меню "Комм" :
Проверить - парность указанных знаков, сосчитать, сколько раз встречается указанный текст. Если имя текста начинается с "T - ", то проверяется парность тегов : A, B, I, U, CENTER, UL, OL, H1, H2, H3, H4, TABLE, TR, TD, TH, FONT, PRE, DIV, DL, DD, DT, BLOCKQUOTE, BODY, HTML.
Знак и строка ? - в позиции курсора, знаки считаются с 0, строки с 1.
История буфера - открывает список последних текстов в буфере. Выбранный копируется в буфер.
К части - находит все последовательности знаков новой строки и открывает список первых строк. Нажатие приводит к переходу к выбранной строке.
К началу, К концу - переход к началу | концу текста.
Перевод / адрес - если курсор установлен в "http" адреса, производится поиск в истории - алфавитном списке адресов, иначе - поиск в словаре слова, в котором стоит курсор или его выделенной части.
Вычислить / http
- если строка, в которой стоит курсор начинается с "http", то этот адрес добавляется в список загрузки (кроме повторов), иначе вычисляется результат математического выражения в этой строке и вставляется в текст после этой строки.
Меню заменяется на Вычислить или В загрузку , Загружать
Поддерживаются десятичные числа (в т. ч. экспоненциальная форма); операторы +, -, *, /, %(остаток деления), |, & (бинарные или, и); скобки; функции (.NET CF System.Math.) Abs, Acos, Asin, Atan, Atan2, Sin, Cos, Tan, Exp, Ceiling, Floor, Log, Log10, Pow, Round, Sqrt; до 32 переменных.
Переменной нельзя дать имя константы E или Pi, но можно дать имя функции. Команда List выводит список переменных. Имена переменных чувствительны к регистру, имена функций и констант - нет.
В арифметических выражениях десятичным знаком может быть точка (.) или запятая (,), в списке аргументов функции - только точка.
Если в выражении есть ошибка и включён "Отчёт", то вместо результата выводится сообщение.
( >< ) - непарность скобок.
Примеры :
строка для вычисления :
2+2*2
вывод результата :
2 + 2 * 2 = 6
(2 + 2) * 2 = 8
-2 + 2 * 2 = 2
5.5+5,5
5.5 + 5.5 = 11
a = Log10(1E2)
b = Sqrt(64)
c = Pow(a, b)
c
256
Sqrt(c) = 16
Sqrt(Pow(Log10(1E2), Sqrt(64)))
Sqrt(Pow(Log10(100), Sqrt(64))) = 16
list
a = 2
b = 8
c = 256
Команды краткого меню редактора :
Hd - переход к загрузке;
T - вызов диалога перехода к тексту;
B, E, N - выделенный текст помещается в текст 1, 2, 5 диалога поиска;
Z, X, C, V - отменить, вырезать, копировать, вставить;
R - заменяет выделенный текст, если разрешено, затем поиск;
F - поиск;
1 - переход к началу текста;
P - вызов диалога поиска и замены, позиции;
^ - меню второго уровня;
K - меняет размер текстового поля для чтения или редактирования с экранной клавиатуры.
Примечания - редко проявляющиеся ошибки (.NET, Pocket C# ?) :
При первом запуске (в WM 6.1) игнорировался десятичный знак, т. е. 5.5 = 55. После перезапуска или перезагрузки эта ошибка пропала. После длительного использования (около месяца) перестаёт работать меню - теряются несохранённые данные. Пропало текстовое поле (Object disposed) из-за чего работа программы аварийно завершилась.
Дополнительная информация, новые версии - textdtec.narod.ru
Вопросы, предложения до 4 килобайт - textdtec@yandex.ru