|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|
Перекодировать текст из Delphi5 в Delphi1016.08.2018, 15:51. Показов 3505. Ответов 19
Метки delphi 10 seattle (Все метки)
Добрый день
Существует проблема проект написанный на delphi5 должен использовать dll, реализованную на delphi10. в dll из проекта передаётся некоторое количество переменных типа string, необходимых для работы dll Проблема заключается в том, что стандартные методы перекодировки не помогают(например, сохранение в поток с tencoding.coding) Подскажите варианты решения. Ибо на данный момент - это полный тупик.
0
|
|
| 16.08.2018, 15:51 | |
|
Ответы с готовыми решениями:
19
Перекодировать текст в UTF-8 Код на delphi10 работает не так, как в delphi 7 |
|
Модератор
|
|||
| 16.08.2018, 16:01 | |||
Сообщение было отмечено E_Punk как решение
РешениеE_Punk, вот этот здоровенный комментарий при создании DLL - он вообще для кого написан?
не должна ни получать в качестве параметров ни отдавать как результат функции тип String. Ну или делать то, что там, в комментарии написано...
1
|
|||
|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|
| 16.08.2018, 16:18 [ТС] | |
|
Я всё-всё понимаю , НО система(проект в d5) уже реализована таким образом, и мне не могут передать ничего другого, кроме string,
кроме того в этой системе успешный опыт использования других dll написанных на d5 - и конкретно под мою ничего меняться не будет если варианты перекодирования отсутствуют, то видимо придётся переписать на d5 или d7
0
|
|
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
|
|
| 16.08.2018, 16:42 | |
|
А dll переписать можно?
0
|
|
|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|
| 16.08.2018, 18:58 [ТС] | |
|
мою - без проблем.
Добавлено через 19 минут просто не очень, конечно, хотелось переписывать в d5/7... свою dll я делала на подобие тех, что написаны на d5 и до сообщения уважаемого d1973 пребывала в уверенности, что дело в несоответствии кодировок (пыталась widestring-->unicode по всякому) - бессмысленно, безуспешно, беспощадно =(
0
|
|
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
|
||
| 17.08.2018, 01:02 | ||
|
0
|
||
|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|
| 17.08.2018, 08:54 [ТС] | |
|
Проверяла, там в однобайтовая кодировка, просто привести к ansistring ничего не дало.
Добавлено через 4 минуты Проблема не в программе на д5, она вполне себе отличненько мне все передаёт,проблема внутри моей длл, не читается то что прога передала, (но до шага вернуть ещё не дошли,но если все останется на д10,то возвращать буду Анси) Похоже реально все дело в парадигме длл, то есть максимум что в неё можно отправить это шорт или чар... Добавлено через 18 минут Моей длл на д10 позрез надо хотя бы два параметра обработать, переданные в виде стрингов из д5. при подключении длл к аттач то процесс,выяснилось что передаваемое д5 - полнейшие кракозябры, я мудрила и потоками, и просто переводами, и из доса пыталась перекодировать, но ничего. Все что удалось выяснить передаваемое - однобайтавая кодировка Добавлено через 19 минут Просто переопределить как Анси не получится, класс,определённый с такими полями(стрингами, используется в 10 длл, но написанных га д5
0
|
|
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
|
||
| 18.08.2018, 01:17 | ||
|
0
|
||
|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|
| 18.08.2018, 11:40 [ТС] | |
|
Ну,что имеется в виду
Входным переменным сделать ansitoutf8, ? Не помогает Добавлено через 12 минут В длл создаётся класс с определёнными полями,этот класс используется в 10е других длл(но написанных на 5), потом в длл даётся описание методов этого класса(частности распарсивание xml) где и нужно делать сравнение со стрингами,но они отображаются в виде "?". Объясните, пожалуйста ,тогда конкретнее что Вы имеете в виду? Потому что,вчера передела на д5, и теперь вылезла обратная ситуация я не могу из юникодa xml вернуть результат в нормальной кодировке,это опять иероглифы(как вариант: xml переходить в Анси или вайдстринг до того как парсить его) Помогите, скажите хоть что-нибудь. Не исключено,что я чего-то не знаю/не понимаю, ибо абсурдность ситуации на лицо. Добавлено через 3 минуты Ну, или сделать потомка класса,где ПОЛНОСТЬЮ ПЕРЕОПРЕДЕЛИТЬ все поля и методы?. Добавлено через 5 секунд Ну, или сделать потомка класса,где ПОЛНОСТЬЮ ПЕРЕОПРЕДЕЛИТЬ все поля и методы?.
0
|
|
|
|
||
| 18.08.2018, 16:52 | ||
|
Для того чтобы решить проблему нужна ясность происходящего.. а именно, пакет входных данных и пакет выходных данных, а не каша из слов пытающихся объяснить что-то про Д5 и Д10... использовать надо эквивалетные типы данных это во первых для начала.. да и слово "кодировка" меня тут смушает почему-то..
0
|
||
|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|
| 19.08.2018, 10:28 [ТС] | |
|
Если не использовать слово кодировка- в чем тогда проблема?
Мне передают string,до вызова функций из моей dll в д5 - это нормальная читабельная строка ,после захода в dll эта же строка становится вопросами(если я ей делаю ansitoutf8),иероглифами,если вообще ничего не делаю. Из попыток решить проблему: Пытались подключить sharemem ,и насколько я знаю ,мне пытались передать shortstring(на счёт этого я не уверена - проект на д5 ,я в глаза не видела. ).-это то ,что делалось со стороны проекта, я со своей стороны уперлась в то, что простейшие способы не помогают,сохранение в memorystream c encoding - то же не помогло. Кроме того что мне передают переменную в однобайтовом представлении,я ничего не могу понять. Скажите ,тогда в чем проблема. Добавлено через 18 минут Проблема как минимум в том ,что стринг в Дельфи 5 это не Та стринг,что в Дельфи 10,потому что в Дельфи 10 стринг=юникодстринг.
0
|
|
|
|
|||||||||||
| 19.08.2018, 14:00 | |||||||||||
|
ну вот тупой пример
dll Пишу на XE10.2.3
гружу тоже самое в старой дельфи, 2006, где String еще не юникоднутая уже проблема выскочила... далее меняем тип в DLL на AnsiString
а вот как теперь обстоит дело в 2006 дальше поиграться с типами и увидеть, в чем же именно проблема там...
1
|
|||||||||||
|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|
| 20.08.2018, 09:18 [ТС] | |
Сообщение было отмечено northener как решение
Решение
Спасибо всем
Мой последний шанс угас с конкретным примером. Я видимо ужасно изъясняюсь, но как-бы я пыталась сказать что в моей длл реализуются методы, объявление которых реализовано string'ами и используется в живом проекте в живых д5 длльках... Тк результат длл - фактически материальный, то программист, который заведует этим проектом не очень хочет там что-то менять. Еще раз спасибо.
0
|
|
|
|
|||
| 20.08.2018, 15:45 | |||
|
ну так и сделай сразу нормульную архитектуру библиотеки, где выкинутся все стринги! Или я не понимаю написанного)))) Не по теме: ну.. 14 лет житьбы за границей, возможно дают о себе знать =-O объясни по пунктам: - что дано - что искомо не в предложениях
0
|
|||
|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|||||||
| 20.08.2018, 16:37 [ТС] | |||||||
|
под дельфи 10 я как-бы понимала версию рад студии сеатл(метка в названии темы), конечно, если быть точным, то это Version 23.0.22248.5795
Добавлено через 17 минут значит дано
Моей задачей было написать очередную длл со своей реализацией методов(в этом конкретном случае нужно было распарсить xml), с учетом того, что проект на д5 умеет брать только стринглист определенного формата(с этим походу тоже возникают траблы), при чем настояли, чтоб в радстудии все было. локально я unit Class - переделала, и оно заработало(вместо string пообъявляла shortstring - как D1973 советовал) сейчас - походу единственное решение для этого КОНКРЕТНОГО случая придется делать свой особый Class и в д5 программисту допиливать кусок... Добавлено через 6 минут я уж пыталась в д5 все переделать,(удачно оказалось - даже парсер доступен в нем), но xml на юникоде выдает свои кракозябры, а функция utf8toansi(которой по ФАКТУ не оказалось в д5, но которая УДАЧНО была в модуле парсера) - не сработала.... Добавлено через 5 минут хотелось бы конечно, такое решение, которое бы позволяло использовать unit Class, в том виде в каком он существует сейчас и в д5, чтоб не доделывать... но видимо - увы. (мне кажется реально все дело в парадигме длл
0
|
|||||||
|
|
|||
| 21.08.2018, 21:17 | |||
|
я еще раз прочитал тему, думал может что прояснится спустя пару дней.. но вот снова наткнулся на сие писание
Переделывайте архитектуру пока не поздно)) я тут один проект пишу уже 4 года.. ну так.. между делом, и мне самому не ясна была суть того, что я в итоге хочу получить) в итоге я раз 30 уже начинал проект с нуля писать))) делает конечно мало удовольствия, но зато с каждым разом обрастает новым функционалом и подтачивается все четче к расширяемости) а у вас там какой-то парсинг XML)) и вы боитесь переделать программу, чтобы уж сразу было хорошо. Ну ваше дело)
0
|
|||
|
0 / 0 / 1
Регистрация: 16.08.2018
Сообщений: 9
|
|
| 22.08.2018, 09:20 [ТС] | |
|
Да,уже приняли ответственное решение все в shortstring переделать и char. Уже хорошо.
Будем улучшать, тем более руководство за попытки перетащить огромездный проект во что-то более свежее ,чем дельфи5. Спасибо большое,учту замечания) PS в основном проблема была в том,что я с другого проекта,где я чуть больше понимаю,чем здесь и я далеко не главный программист в обоих Этих проектах.
0
|
|
| 22.08.2018, 09:20 | |
|
Помогаю со студенческими работами здесь
20
Перекодировать из 16-бит в обычный текст Перекодировать текст с UTF-8 в ASCII Как перекодировать Subject в нормальный текст? А можно ли в VB текст из KOI8R перекодировать "на лету"? IE: текст из base64 в 1251 как перекодировать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|