Два модуоя, две кодировки SysUtils, FileUtil

Модератор: Модераторы

Ответить
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Два модуоя, две кодировки SysUtils, FileUtil

Сообщение Sharfik »

Постоянно натыкаюсь на то, что функции требуются из обоих модулей SysUtils, FileUtil. Вариант обрабатывать все в UTF8 не проходит, потому что есть функции которые в SysUtils живут. Типа проверки и вставки слешей в конец пути. Есть какой нибудь еще модуль заменяющий SysUtils или самому лучше переписать его процедуры под UTF8?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Sharfik в чем проблема? Если в том, что названия функций совпадают, то просто используйте имя модуля в имени функции/переменной.

Код: Выделить всё

Position := Types.Point(MainForm.Left, MainForm.Top + MainForm.MainEditor.Top +
      MainForm.MainEditor.Height);
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Нет, насчет названия понятно.
Ну во первых, перемешивать все в одну кучу - потом разгребать долго.
Во вторых, большинство функция преобразования путей работают с Length(), Copy().
Если речь идет о одном символе, то возможно и без проблем найти какой то символ. Но функции альтернативные типа UTF8Length() сделаны не спроста же, длина у строк в разной кодировке разная.

Может заморачиваюсь, но глаза режет и попросту лень потом искать проблему, если ее сам создам из-за кодировок..
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Sharfik, думаю, в большинстве случаев, это лишние заморочки. Тем более, что потихонечку идет миграция осей на UTF8.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Sharfik писал(а):Во вторых, большинство функция преобразования путей работают с Length(), Copy().
Если речь идет о одном символе, то возможно и без проблем найти какой то символ. Но функции альтернативные типа UTF8Length() сделаны не спроста же, длина у строк в разной кодировке разная.

Безусловно длинна разная. Суть в том что, так работает половина Lazarus. Часть нужно обрабатывать с помощью Length(), Copy(), другую с UTF8Length(). Переписывать SysUtils - это пустое, проще использовать SysToUTF8 и обратно, там где это необходимо.
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

а зачем искать отдельный символ? символы /?._-*#+ и проч. можно искать и в UTF-8 так как они один байт.
Я считаю, надо делать всё на UTF-8 сразу

Добавлено спустя 2 минуты 17 секунд:
есть модуль lazUtf8 вроде бы. Он поможет
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

hinst писал(а):Я считаю, надо делать всё на UTF-8 сразу

Ну попробуйте это сделать на UTF8 в SynEdit => SelStart и SelEnd...
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Ответить