Страница 1 из 1

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

СообщениеДобавлено: 18.08.2015 16:06:12
Sharfik
Постоянно натыкаюсь на то, что функции требуются из обоих модулей SysUtils, FileUtil. Вариант обрабатывать все в UTF8 не проходит, потому что есть функции которые в SysUtils живут. Типа проверки и вставки слешей в конец пути. Есть какой нибудь еще модуль заменяющий SysUtils или самому лучше переписать его процедуры под UTF8?

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

СообщениеДобавлено: 18.08.2015 16:12:44
Лекс Айрин
Sharfik в чем проблема? Если в том, что названия функций совпадают, то просто используйте имя модуля в имени функции/переменной.

Код: Выделить всё
Position := Types.Point(MainForm.Left, MainForm.Top + MainForm.MainEditor.Top +
      MainForm.MainEditor.Height);

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

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

Может заморачиваюсь, но глаза режет и попросту лень потом искать проблему, если ее сам создам из-за кодировок..

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

СообщениеДобавлено: 18.08.2015 17:07:17
Лекс Айрин
Sharfik, думаю, в большинстве случаев, это лишние заморочки. Тем более, что потихонечку идет миграция осей на UTF8.

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

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

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

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

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

Добавлено спустя 2 минуты 17 секунд:
есть модуль lazUtf8 вроде бы. Он поможет

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

СообщениеДобавлено: 31.08.2015 23:55:22
vitaly_l
hinst писал(а):Я считаю, надо делать всё на UTF-8 сразу

Ну попробуйте это сделать на UTF8 в SynEdit => SelStart и SelEnd...

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

СообщениеДобавлено: 31.08.2015 23:56:08
Ism