FILE:RECORDS и кодировка UTF

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

FILE:RECORDS и кодировка UTF

Сообщение gopstop2007 »

Код для копирования двух идентичных файлов(таблиц) из SQLite (pFm3_) в Memory (pFm_) , их много более 50-и

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

    sourceRec &= pFm3_.File{PROP:Record}
    targetRec &= pFm_.File{PROP:Record}
    LOOP F = 1 TO 999
           IF WHO(targetRec,F) = '' THEN BREAK END
           Fields.AddPair(WHAT(targetRec,F),WHAT(sourceRec,F))
    END
    
    SET(pFm3_.File)
    Loop while pFm3_.Next() = Level:Benign     
           CLEAR(targetRec)
           Fields.AssignRightToLeft()
           ADD(pFM_.File);  IF ERRORCODE() THEN Message('Ошибка загрузки '& pFM_.GetName() &'!','Ошибка') END    
    END
Если возможность содержимое FILE:RECORDS преобразовать в нужную кодировку на "лету"?

Спасибо за внимание
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8016
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 94 раза

FILE:RECORDS и кодировка UTF

Сообщение Игорь Столяров »

gopstop2007 писал(а): 12 Ноябрь 2024, 11:59 содержимое FILE:RECORDS преобразовать в нужную кодировку
Содержимое RECORD Вы можете преобразовать только по полям:
Т.е. что-то вроде (если я правильно понимаю Ваш скрытый код):

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

    Fields.AddPair(WHAT(targetRec,F),ConvertAnsiToUTF(WHAT(sourceRec,F)))
Делаете ещё один "нативный" имитатор SQL запросов для TPS ? ;)
Make Clarion Great Again ! 😎
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

FILE:RECORDS и кодировка UTF

Сообщение gopstop2007 »

Игорь Столяров писал(а): 12 Ноябрь 2024, 12:52
gopstop2007 писал(а): 12 Ноябрь 2024, 11:59 содержимое FILE:RECORDS преобразовать в нужную кодировку
Содержимое RECORD Вы можете преобразовать только по полям:
Т.е. что-то вроде (если я правильно понимаю Ваш скрытый код):

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

    Fields.AddPair(WHAT(targetRec,F),ConvertAnsiToUTF(WHAT(sourceRec,F)))
На прототипы ругается, Fields.AddPair - присваивание полей без из значений
Игорь Столяров писал(а): 12 Ноябрь 2024, 12:52
Делаете ещё один "нативный" имитатор SQL запросов для TPS ? ;)
Решил перенести все из tps в sqlite.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8016
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 94 раза

FILE:RECORDS и кодировка UTF

Сообщение Игорь Столяров »

gopstop2007 писал(а): 12 Ноябрь 2024, 13:14 присваивание полей без из значений
Там указатели в Fields.AddPair() ... сделайте через промежуточную переменную.

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

  StringTmp = ConvertAnsiToUTF(WHAT(sourceRec,F))
  Fields.AddPair(WHAT(targetRec,F),StringTmp)
Не знааю, что включает в себя "всё", но учитывайте, что SQLite не поддерживает многозадачность и совместное использование ...
Make Clarion Great Again ! 😎
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

FILE:RECORDS и кодировка UTF

Сообщение gopstop2007 »

Игорь Столяров писал(а): 12 Ноябрь 2024, 13:33
gopstop2007 писал(а): 12 Ноябрь 2024, 13:14 присваивание полей без из значений
Там указатели в Fields.AddPair() ... сделайте через промежуточную переменную.
Fields.AddPair(), это создание структуры виртуальных пар полей, сами значения присваиваются через Fields.AssignRightToLeft()
Игорь Столяров писал(а): 12 Ноябрь 2024, 13:33

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

  StringTmp = ConvertAnsiToUTF(WHAT(sourceRec,F))
  Fields.AddPair(WHAT(targetRec,F),StringTmp)
Не знаю, что включает в себя "всё", но учитывайте, что SQLite не поддерживает многозадачность и совместное использование ...
В моем случае, это важно, если БД будет использоваться в терминальном режиме.
Поэтому когда терминальный режим, схема MYSQL -> MemoryFile
когда обычный, MYSQL -> Sqlite (раньше был TPS) -> MemoryFile
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить