- добавлено чтение имен и списков.
06.11.2016 21:25:17
Выкладываю доработанную версию класса. Изменения:
- добавлено чтение имен и списков. |
07.11.2016 08:05:16
Вообще молодцы, даже в выходные исправляете.
По кодировкам Юникода конечно много где можно прочитать - но если думаешь, что перекодировать 33 буквы русского алфавита достаточно (32 последовательно и Ё отдельно), то это не так. Некоторые умудряются Ё и Й кодировать соответственно как (Е и точечки отдельно) и (И и крышечка отдельно). В своей программе синхронизации файлов... (знаю, таких программ миллион, но наши пользователи их в ступор вгоняют - полный путь к файлу может превышать 260 символов, например, был 254 символа, в том числе 150 символов название самого файла, потом создали папку на верхнем уровне "архивы 2015" и перенесли папку с файлом туда - в итоге Word такой документ через раз открывает, а остальные программы не могут даже скопировать, у "любимого" Экселя наоборот - выяснилось ограничение в 212 символов в какой-то побочной технологии и файл замечательно копируется, но не открывается, Эксель говорит "не найден") Так вот в программе наткнулся на файл с таким Й, видимо сохранили из интернета страничку с таким И+крышечка символом - программа на этом месте крепко зависла. Так что с чужим Юникодом глаз да глаз.
С EXE-программами конечно сложнее - win-1251 как переходная к utf-8 сохраняется, но между win-1251 и utf-8 пока перекодирую только кириллицу и некоторые специальные символы. Если моя программа при этом работает с win-1251, то прочие символы просто не использую и игнорирую. Если же другие символы используются - то вся работа программы в utf-8.
|
07.11.2016 12:35:33
Отправлено спустя 21 минуты 52 секунды:
|
07.11.2016 15:04:41
|
07.11.2016 15:25:04
|
07.11.2016 15:59:48
|
07.11.2016 16:34:58
|
08.11.2016 05:36:47
Отправлено спустя 14 минуты 37 секунды:
|
08.11.2016 12:17:21
Хотя и Википедия тут подошла бы. Достаточно часто обновляется.
|
08.11.2016 12:58:57
|
08.11.2016 13:15:46
Выкладываю последнюю доработку класса. Изменения:
- добавлено чтение тем. (влияет на отображение цветов в Libre) |
08.11.2016 14:00:52
( |
08.11.2016 15:04:10
P.S. Позабавлю господ ещё немного на тему кодировок. Я довольно долго сидел в среде FoxPro/DOS (FPD). Слава богу, WinXP выполняла 16-битные приложения прекрасно. Но когда на горизонте замаячила Win7 (на самом деле, задолго до этого) я решил перекинуться с FPD на VFP. Долго думал, как это сделать:
- (а) малой кровью; - (б) не уходя из FPD насовсем; - (в) поддерживая единую версию своих программ для обеих сред. И решение такое я нашёл. Не вдаваясь глубоко в детали, поступил я так. Во-первых, разработал свой собственный вариант Win-кодировки (назовём его Box-1251), включающий все русские буквы на позициях 1251, а также всю табличную псевдографику из 866, как-то раскиданную по позициям от #80 до #BF. Установил взаимно-однозначное соответствие 866 <-> Box-1251 и написал функции перекодировки. Во-вторых, собственноручно разработал семейство растровых шрифтов разных размеров для правильного отображения символов этой кодировки на экране. (Это заняло всего пару дней). В результате, всякие экранные формы DOS-овского стиля после перекодировки стали прекрасно отображаться в среде VFP. Кроме того, конечно, пришлось вставить кое-где в программах проверку среды (переменные _dos/_windows) - и реагировать по-разному в зависимости от того, где программа выполняется (но таких мест оказалось совсем немного). В результате я добился следующего. Все программы писал в среде FPD, но автоматически получал из них сразу две рабочие версии: для DOS (в виде *.app) и для Windows (в виде *.exe). Процесс получения Windows-версий всех prg-файлов я полностью автоматизировал (а там не только простая перекодировка 866 -> 1251, кстати). От этой схемы я ушёл совсем недавно, так как у многих клиентов стоит до сих пор WinXP, и некоторых приходилось перетягивать на Win-версию программ чуть ли не за уши. Теперь программирую только на VFP. Но по внешнему виду программы до сих пор сильно напоминают старые DOS-приложения. Но клиенты не жалуются. Им ведь функционал важен, а не внешний вид. И на закуску - прилагаю файл со шрифтами. Можете установить, открыть в Блокноте табличку с символами от #00 до #FF, выбрать шрифт Alcor Box 1251 - и глянуть результат. Там пять размеров (pitches). |
09.11.2016 06:39:25
У меня такой задачи не стояло - рисование псевдографическими символами прошло стороной. Я бы наверно сделал по-другому, так как у меня другой язык и другая IDE - унифицировал параметры функции, выводящей элемент управления (скажем, поле ввода) шрифтом для DOS (на Паскале есть стандартный Unit) и стандартным элементом управления в Windows (по образцу досовского Unit). Далее подставил разные циферки при формировании окон (на Паскале есть управляющие комментарии для компилятора - то есть сама программа вообще может не проверять в какой среде работает, можно из одного текста сделать несколько версий в зависимости, какие условия передать при сборке, и распространять разные версии для разных сред). Конечно "малой кровью" не назовешь (кроме внешнего вида, стандартные элементы Windows по другой логике работают), но и выглядеть будет по-разному из одного исходника.
|
09.11.2016 10:33:01
Ну, и вот - картинки. Текст меню там у меня немного устарел. Под "корректировкой" в большинстве случаев нужно понимать "ОДН", но бухгалтеры понимают всё правильно. Привожу три скрина с разным размером шрифта, который влияет и на размер экрана (окна). Ширина - всегда 80 символов, но количество строк (размер окна по вертикали) можно менять в процессе работы (как и размер шрифта) динамически. (Используются клавиши Alt+стрелки.) |
10.11.2016 05:50:00
|
10.11.2016 11:01:49
|
11.11.2016 06:49:36
|
11.11.2016 09:33:59
|
11.11.2016 12:23:02
|
14.11.2016 07:24:53
|
14.11.2016 14:08:37
а вот чтение пригодилось бы - ГИС когда обрабатывает XLSX, то в качестве результата пишет идентификаторы всякие |
14.11.2016 16:28:14
|
14.11.2016 23:28:05
|
15.11.2016 07:58:38
Кроме того, на самом деле, если мы уже имеем веб-интерфейс, получающий данные для размещения из базы данных УО, то нам и XLSX не очень нужен. Во-первых, (не предусмотрено, но реализуемо) можно хитрым скриптом авторизоваться в ЛК и напрямую заполнить значения форм ручного ввода, сохранить, повторить. Работать конечно будет не очень хорошо, но есть и плюсы - при обычном открытии отображается весь ЛК, но скрипт может вырезать из него только форму отправки и она будет работать намного быстрее. Конечно, все равно придется ставить задержку, чтобы было похоже на человека и не порезало защитой - например, отправка новой формы через 5 секунд. Плюс контроль не вышло ли сообщения что технические работы или страница не найдена. Плюс контроль чтобы не забить данные дважды, но и ничего не пропустить. Во-вторых, (предусмотрено разработчиками) до SOAP рукой подать. Правда, с ЭП там будет "вешалка". С другой стороны, прелесть PHP в том, что веб-интерфейс на самом деле не нужен - можно запустить PHP файл в консоли, а "параметры запроса" страницы передать в командной строке. Вот тут запись в XLSX бы пригодилась. И раз уж возможны целых 3 подхода из PHP, задумался, не перейти ли на PHP для этого проекта. А для ЭП можно написать расширение PHP (на самом деле, оно уже есть от КриптоПро, но не в открытом доступе, а закрытый доступ для разработчиков серверов стоит довольно дорого). |
15.11.2016 13:54:13
|
15.11.2016 17:10:21
|
16.11.2016 05:23:48
|
23.11.2016 10:25:23
Добрый день, страдальцы по ГИС ЖКХ. Опишу свою ситуацию. Работаю в Водоканале, работаю на Делфе. Задача как и у всех, грузить данные в эту систему. Получить доступ к веб-сервисам пока не можем, беда с авторизацией, этим занимается админ. Предложил загружать файлы шаблонами. XLSX не получается сохранять из программы, но можно сохранять в XLS и система их кушает и обрабатывает. Загрузил 999 записей в систему при помощи шаблона Договора ресурсоснабжения. Одна беда, не все листы обрабатываются, выдаёт ошибки, то это не так, то неправильные данные, то не выбран тип. Шаблон грузил два раза, теперь у меня в системе 3 одинаковых абонентских номера, почему то у них не стоит обработка на раннее занесённые данные. Придётся в ручную удалять.
Решил что данные все выгружу через шаблоны. А потому уже буду разбираться с веб-сервисами. Если интересны заполненный шаблон вышлю файл на почту. |
23.11.2016 12:33:58
Правильный выбор.
|
|||||||
Сейчас на форуме:
1 пользователь
1 пользователь
сейчас на форуме
|
Цитата |
---|
AlcorVol пишет: Oh, yes! Правда, VFP к этому как-то не очень приспособлена. Проблем будет куча. И кстати, имена листов уже кто-то там в 1251 перекодирует. Я бы предпочёл в 1251 работать. Для ГИС ЖКХ - точно будет достаточно того, что есть. Особенно, если Рубль добавить. |
Цитата |
---|
Basil пишет: И если в исходном файле в строке есть символ #A4, при записи он преобразуется в символ рубля, хотя это не требовалось. |
Цитата |
---|
AlcorVol пишет: Если бы дела обстояли именно таким образом, то на одном ПК (и тем более, в одном и том же документе) нельзя было бы указывать денежные поля с разными валютами. Странновато и примитивно как-то... Не верится просто. |
Цитата |
---|
WinMerge |
Цитата |
---|
two_oceans пишет: Вообще молодцы, даже в выходные исправляете. |
Цитата |
---|
two_oceans пишет: Если честно, то от однобайтных кодировок лучше отказываться где только можно. |
Цитата |
---|
two_oceans пишет: Некоторые умудряются Ё и Й кодировать соответственно как (Е и точечки отдельно) и (И и крышечка отдельно). |
Цитата |
---|
two_oceans пишет: Вопрос: #A4 на основании чего выбран? это официальный код для рубля? |
Цитата |
---|
two_oceans пишет: ... смущает замена символа валюты на символ рубля. |
Цитата |
---|
two_oceans пишет: Смутно помню, когда только добавили символ рубля, его поместили на одно из "свободных мест" (ранее не занятых) в официальной win-1251. |
Цитата |
---|
two_oceans пишет: WinMerge Спасибо, попробую. |
Цитата |
---|
Basil пишет: в качестве конца строк используются только CR/LF. |
Цитата |
---|
AlcorVol пишет: Однако, в Настройках > Сравнение > Основные есть опция "Игнорировать разницу в возвратах каретки (Win/Unix/Mac)" |
Цитата |
---|
AlcorVol пишет: Ну, если не нравится ¤, |
Цитата |
---|
AlcorVol пишет: Насколько мне известно, в 1251 только одна пустая позиция - #98. И она ничем не занята до сих пор. |
Цитата |
---|
AlcorVol пишет: И как раз такие-то последовательности неплохо было бы "нормализовать" - особенно, при работе со всякими Гос.ИС. |
Цитата |
---|
Basil пишет: XML, состоящие из одной длинной строки, приходится предварительно расставлять CRLF |
Цитата |
---|
two_oceans пишет: Вот где смотришь официальную страницу? |
Цитата |
---|
two_oceans пишет: Странно, похоже #98 вообще пропускает и показывает символ торговой марки со следующей позиции. |
Цитата |
---|
two_oceans пишет: Собственно, в других программах сравнения не лучше. В ряде случаев расстановки CRLF нужно избегать, например к "нашим баранам" SOAP, это сломает каноникализацию (****, еле выговоришь) и проверку ЭП, там допустимы только LF |
Цитата |
---|
AlcorVol пишет: Хотя и Википедия тут подошла бы. Достаточно часто обновляется. |
Цитата |
---|
two_oceans пишет: Я бы вообще выкинул из 1251 символы вроде #CYRILLIC SMALL LETTER LJE, которые в русском не встречаются. |
Цитата |
---|
AlcorVol пишет: Win-1251 - не русская, а кириллическая кодировка. Учитывает одновременно русский, украинский, белорусский, болгарский, сербский и македонский алфавиты. |
Цитата |
---|
AlcorVol пишет: И решение такое я нашёл. |
Цитата |
---|
AlcorVol пишет: Во-вторых, собственноручно разработал семейство растровых шрифтов разных размеров для правильного отображения символов этой кодировки на экране. |
Цитата |
---|
two_oceans пишет: Изящное решение, но с трудом представляю внешний вид. |
Цитата |
---|
То есть в программе виндовское окно с серым(белым) фоном... |
Цитата |
---|
... а в нем еще текстом нарисована рамка и прочие элементы управления - поля ввода, списки, а сам текст моноширинным шрифтом? |
Цитата |
---|
Это конечно вариант, но как-то странно должно смотреться среди оформления Windows |
Цитата |
---|
В первую очередь вопрос по быстродействию отрисовки. |
Цитата |
---|
Во вторую, как оно выглядит на Win 7 с новейшими мониторами и включенным масштабированием. |
Цитата |
---|
Очень давно есть проблема с отображением кириллицы на синем экране смерти Windows XP. |
Цитата |
---|
AlcorVol пишет: ДОС-овское приложение - это не обязательно чёрно-белый экран консольного вида. |
Цитата |
---|
AlcorVol пишет: Какие проблемы - с растровыми-то шрифтами? |
Цитата |
---|
AlcorVol пишет: 1280х1024 в Win 10 |
Цитата |
---|
AlcorVol пишет: Ну, и вот - картинки. |
Цитата |
---|
AlcorVol пишет: Думаю, что такое ретро скоро снова на пике моды будет. |
Цитата |
---|
two_oceans пишет: Тут Windows шрифт использует и рисует? |
Цитата |
---|
Просто не ожидал, что в Windows цвета тоже перенесешь. |
Цитата |
---|
полагаю, проблем нет, если шрифт рисует Windows и ширина(высота) окна тоже определяется системной функцией (в смысле, сколько данные 80 символов займут пикселей на экране) |
Цитата |
---|
"Выберите действие клавишами" - кажется, клавиши в шрифте не прорисовалось. |
Цитата |
---|
Хорошо бы, но пока все какие-то "инновации" и "украшательства"- то плитками замостят, рабочий стол уберут, то автообновят на следующую версию ночью. Интерфейс все больше ориентирован на детей - крупные и яркие значки, автонастройка практически всего. |
Цитата |
---|
AlcorVol пишет: VFP использует этот шрифт, отрисовывая окна |
Цитата |
---|
AlcorVol пишет: Этот размер вычисляет VFP |
Цитата |
---|
AlcorVol пишет: Не очень-то эти стрелки и нужны. |
Цитата |
---|
AlcorVol пишет: Обновился до 10-ки в последний день бесплатного обновления, как это и принято на Руси. |
Цитата |
---|
AlcorVol пишет: Но рабочий стол вернули ещё в 8-ке. |
Цитата |
---|
AlcorVol пишет: Больших неприятностей при переходе c 7-ки Pro на 10-ку Pro пока не заметил. |
Цитата |
---|
AlcorVol пишет: Юзера всё больше за дебила считают. |
Цитата |
---|
two_oceans пишет: то плитками замостят |
Цитата |
---|
AlcorVol пишет: Но, действительно, слегка бесит, что по ночам комп может проснуться без спросу для обновления. |
Цитата |
---|
two_oceans пишет: Например, может оказаться, что на мониторе 1600x900 со включенным масштабированием на 150% входит скажем символов 60 вместо 80. |
Цитата |
---|
практически убили интерфейс поиска |
Цитата |
---|
эмулятор икспи |
Цитата |
---|
two_oceans пишет: В общем, тема не о том, надо завязывывать с оффтопиком. |
Цитата |
---|
AlcorVol пишет: шрифт поменьше станет. А вместе с ним - и окошко. |
Цитата |
---|
AlcorVol пишет: Если просто файлы/папки/текст - то лучше в FAR'е искать. |
Цитата |
---|
AlcorVol пишет: C него же на Hyper-V загружаться? |
Цитата |
---|
serg_p пишет: вот нашёл на просторах |
Цитата |
---|
two_oceans пишет: Спасибо, глянул беглым взглядом, это реализация записи на PHP, без чтения, сильно упрощенная и не соответствует шаблонам. |
Цитата |
---|
two_oceans пишет: Ага, но снова не факт что все войдет, так как размер окна тоже пересчитается. |
Цитата |
---|
two_oceans пишет: как искать в Far и в частности по тексту файлов я пока не разбирался. |
Цитата |
---|
Дамир пишет: дыкть, просто шаблоны распоковать и писать 'как там'... не? |
Цитата |
---|
AlcorVol пишет: Константин, ты не совсем понял. У меня ширина окна программы - 80 символов, как в ДОСе. (Хотя высота в строках может быть и переменной.) Если задать шрифт поменьше - то и окошко приложения станет поменьше. Я сам прошу тут VFP окошко перерисовать соответствующим шрифтом => соответствующего размера. |
Цитата |
---|
AlcorVol пишет: Клавиша Alt-F7 |
Цитата | ||
---|---|---|
AlcorVol пишет:
|
Цитата |
---|
two_oceans пишет: Пусть программа просто умножила, игнорируя масштабирование, известный размер шрифта на 80 и окно занимает эти 720 пикселей в ширину. |
Цитата |
---|
two_oceans пишет: Хотя про кодировки остается небольшое сомнение (UTF-8, например, в которой веб-страницы или поиск в Word) |
Цитата |
---|
AlcorVol пишет: Искать в UTF-8 не получится. Хотя FAR и умеет работать с файлами в UTF-16 |
Цитата |
---|
two_oceans пишет: закрытый доступ для разработчиков серверов стоит довольно дорого |
Цитата |
---|
AlcorVol пишет: Умножает тут, кстати, не моя программа, а сама VFP |
Цитата |
---|
AlcorVol пишет: с гарантией - если Byte Order Mark в начале влепишь |
Цитата |
---|
Basil пишет: Far3 умеет работать с файлами в UTF-8. |
Цитата |
---|
serg_p пишет: но можно сохранять в XLS и система их кушает и обрабатывает. Загрузил 999 записей в систему при помощи шаблона Договора ресурсоснабжения. Одна беда, не все листы обрабатываются, выдаёт ошибки, то это не так, то неправильные данные, то не выбран тип. |
Цитата |
---|
serg_p пишет: 999 записей |
Цитата |
---|
serg_p пишет: грузил два раза, теперь у меня в системе 3 одинаковых абонентских номера |
Подпишись на рассылку новостей ЖКХ, а также наших статей!
Спасибо, вы успешно подписались на рассылку!