Recent

Author Topic: Кирилические имена функций  (Read 2052 times)

Mr. George

  • New Member
  • *
  • Posts: 18
Кирилические имена функций
« on: September 15, 2021, 08:08:09 pm »
Добрый вечер!

Имеется 1с, подключаюсь к ней через ком объект.
Внутри 1с методы написаны на кирилице.

В делфи можно писать нечто такое:

Code: Pascal  [Select][+][-]
  1. Connection:=CreateOleObject('V83.ComConnector');
  2. c:=Connection.Connect('File="E:\test"; usr=""; pwd=""');
  3. version:=c.ОбщийМодуль.ПолучитьВерсию();
  4. ShowMessage(version);
  5.  

В лазарусе ругается на русские символы при компиляции.
А именно на c.ОбщийМодуль - "О" не корректный символ.

Есть какое-то решение?
Или это болячка из-за отсутствия полноценной поддержки юникода?

tetrastes

  • Full Member
  • ***
  • Posts: 128
Re: Кирилические имена функций
« Reply #1 on: September 15, 2021, 10:26:57 pm »
А что, UTF8 - не полноценная поддержка Юникода?
Только причем здесь поддержка Юникода?

Естественно, что не латинские буквы в коде не поддерживаются:
https://www.freepascal.org/docs-html/current/ref/refse1.html#x9-80001.1
как, впрочем, и в других широко используемых языках программирования.

Что касается поддержки кириллицы в коде Делфи, если это действительно так, то это ее извращение (пардон, расширение), до которого FPC еще не дорос. Я с Делфи лет 20 дел не имел, и насколько я помню, тогда такого не было. Интересно, а китайские иероглифы в коде Делфи тоже допускает? Ну или хотя бы иврит с арабским...
« Last Edit: September 15, 2021, 10:28:55 pm by tetrastes »

Mr. George

  • New Member
  • *
  • Posts: 18
Re: Кирилические имена функций
« Reply #2 on: September 15, 2021, 10:56:50 pm »
В lazarus нет полноценной поддержки юникода в отличии от делфи, это касается RTL в частности.
Какие-то функции продублированы с припиской UTF8, другие не имеют таких аналогов.
В делфи все строки по дефолту utf16, это касается и кода и всех компонент и RTL.
Очень удобно, кстати. Где-то читал, что лазарус тоже к этому идет, но пока далеко.

Quote
Естественно, что не латинские буквы в коде не поддерживаются
Понятно.

Quote
Что касается поддержки кириллицы в коде Делфи, если это действительно так, то это ее извращение (пардон, расширение)
Это сквозное повсеместное внедрение юникода c делфи 2009.
Начиная от модулей, заканчивая отладчиком.
Иероглифы тоже входят в юникод, так что да, работает.
Извращение будет писать на FPC код для работы через ком с 1с (для СНГ реальный кейс).
Наверно, что то такое получилось бы: https://forum.mista.ru/topic.php?id=821381

Спасибо за ответ.
Пришлось сделать на делфи, быстро и просто, благо, есть возможность.
И библиотеки типов делфи лучше считывает, авто генерируемый модуль более правильный.
« Last Edit: September 15, 2021, 11:01:20 pm by Mr. George »

tetrastes

  • Full Member
  • ***
  • Posts: 128
Re: Кирилические имена функций
« Reply #3 on: September 15, 2021, 11:42:36 pm »
Quote
В lazarus нет полноценной поддержки юникода в отличии от делфи, это касается RTL в частности.
RTL относится к FPC, а не к Лазарусу. И вполне может работать с utf16.
Проблема не в RTL, а в том, что FPC не поддерживает нелатинские буквы (может лучше сказать не ASCII символы) в коде.

Quote
В делфи все строки по дефолту utf16, это касается и кода и всех компонент и RTL.
Очень удобно, кстати.
Ну да, особенно для Линуха, МАКоси и прочих юниксов.

Quote
Иероглифы тоже входят в юникод, так что да, работает.
Подозреваю, что только в винде, и если исходник в utf16 (а то может и в UCS2 только).

Quote
Извращение будет писать на FPC код для работы через ком с 1с
Не спорю, ибо тут все извращение - ком как таковой и 1с с ее кириллическими функциями  ;)

ASerge

  • Hero Member
  • *****
  • Posts: 1869

skalogryz

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2712
    • havefunsoft.com
Re: Кирилические имена функций
« Reply #5 on: September 20, 2021, 10:00:21 pm »
Извращение будет писать на FPC код для работы через ком с 1с (для СНГ реальный кейс).
Наверно, что то такое получилось бы: https://forum.mista.ru/topic.php?id=821381
и да и нет.
Похоже, что на C# приходится тоже вызывать методы явно

потенциально dll-ку можно импортировать и один раз получить описание методов.
(один фиг вызов метода происходит по Id)
Да, они не будут на русском языке, ну потому что FPC не позвляет использовать ничего кроме латиницы для имён идентификаторов.
но может и код стал бы выглядеть более одинаковым.

Mr. George

  • New Member
  • *
  • Posts: 18
Re: Кирилические имена функций
« Reply #6 on: September 20, 2021, 10:43:48 pm »
Если нет цели держать весь код на FPC,
для столь специфичной задачи, как подключение к 1с, по потихоньку подыхающей технологии, куда уместнее использовать самое простое решение, если оно работает.
В данном случае, скачать бесплатную делфи community edition (если нет лицензии) и сделать решение в лоб, с русскими буквами, код максимально короткий, простой и читаемый.
К тому же, импортированная библиотека типов выглядит более правильно.
C# не показатель, от вида конструкций этого языка и структуры проекта иногда хочется плеваться.
« Last Edit: September 20, 2021, 10:45:33 pm by Mr. George »

 

TinyPortal © 2005-2018