![]() |
|
![]() ![]() ![]() |
|
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
Приветствую, уважаемые комрады
![]() Ситуация в следующем. Мне необходимо в давно поддерживаемый проект добавить функции приема и отправки E-mail(что уже реализовано). Полученные и отпроавленные сообщения пишутся в базу, куда тема и тело сообщения должны писаться в utf-8. При отправке проблем нет. А вот при приеме начинается самое интересное... Классы Indy не производят автоматичекой перекодировки текста в UTF-8, в неюникодных весиях IDE, коей является BCB6. Перерыв весь гугл и доки по Indy, я так не нашел способа, как можно преобразовать уже полученное сообщение в UTF-8. Кодировка сообщение, после их получения, известна через свойство TIdMessage::CharSet. Копал в сторону TIdCoder и TIdDecoder, но что-то безрезультатно... Может плохо искал? Помогите, плиз. Если средствами Инди это сделать нельзя, подскажите, пожалуйста, нормальную либу перекодирования текста для билдера. ЗЫ обновить билдер нет никакой возможности. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
borisbn, Спасибо, но, как я понял, возможности подружить ее с билдером нет. А городить костыли через ShellExecute не хотелось бы...
Есть ли альтернативы? Ведь, полной функциональности, которая есть в iconv, и не надо. Достаточно, чтобы либа могла переводить в UTF-8 текст в кодировках, используемых для рпередачи мыла в восточной европе - cp1250-1259, КОИ8... ЗЫ С носталгией вспоминаю QTextCodec... |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
Лови (в аттаче). Делаешь
подключаешь полученную lib в проект, кидаешь dll-ку к твоему exe-шнику. Там же я положил мою обёрточку. В общем, там всё д.б. понятно Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
borisbn, Спасибо! Буду пробовать
|
|||
|
||||
ilyuha |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
borisbn, Вроде, все сделал верно, но что-то не конвертит... По порядку:
После implib.exe iconv.lib iconv.dll линкер ругался, что не может найти функции. Это я решил, выполнив: impdef.exe iconv.def iconv.dll Далее, отредактировал iconv.def(имена функций там имели вид lib*, вместо _lib). И сделал: implib.exe iconv.lib iconv.def implib выдал:
Это меня напрягло, да. Но прога собралась и функция iconv вызывается. Далее, я немного приспособил код borisbn под свои нужды:
iconv всегда возвращает -1. errno == 0. converter валиден. Используется этот код так:
Есть у кого какие-нибудь мысли? Хелп ![]() |
||||||
|
|||||||
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
Людиии, подкиньте хоть какую-нить идею
![]() Есть ли альтернатива iconv? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
ilyuha, последнее, чем могу помочь - это подкинуть iconv.lib (в аттаче) для билдера, который я сделал, и с которым у меня линкуется и работает (!!) твой код без единого изменения.
Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
borisbn, Не работает :( Должно что-то отличаться, если у тебя работает, а у меня нет. Какая у тебя версия билдера?
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
У меня 5-й.
хммм... Ну, лови весь проект. Я не уверен, но м.б. он даже в твоём билдере откроется. Если заработает - ищи отличия в настройках проекта. Убедись, что у тебя в настройках проекта тип вызова по-умолчанию стоит __cdecl. Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
borisbn, Спасибо большое. Все было куда тривиальнее. Сделал размер буфера == length * 4 и все заработало
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |