Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR

Ответить
Настройки темы
C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день! Может кто сталкивался с такой проблемой - необходимо перевисти введенную строку (строка около 50 символов) из AnsiString в CHAR для отправки по почте - есть 2 варианта:

1й вариант
char Q[] = "mailto:test@mail.ru?subject=TEMA&body=";
sprintf(Q,"mailto:test@mail.ru?subject=TEMA&body=%s",Edit5->Text);
ShellExecute(0,NULL,Q,NULL,NULL,SW_SHOWNORMAL);

2й вариант
AnsiString S1 = Edit->Text;
char* ch1= S1.c_str();
char S[]= "mailto:test@mail.ru?subject=TEMA&body=";
strcat(S,ch1);
ShellExecute(0,NULL,S,NULL,NULL,SW_SHOWNORMAL);

И в обоих вариантах - все номально - программа компилится, почта открывается, данные в письмо заносятся, а потом билдер начинает ругаться, программа вылетает
В Call Stack пишет:
7c90378b ntdll.RtlConvertUlongToLargeDispatcher +0x46
7c90eafa ntdll.KiUserExceptionDispatcher +0xe

МОЖЕТ КТО ЗНАЕТ КАК С ЭТИМ МОЖНО БОРОТЬСЯ И В ЧЕМ ПРИЧИНА???
Всем откликнувшимся - большое спасибо!!!!

Отправлено: 00:23, 21-04-2008

 

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


vetal_dnepr, Не совсем по теме, но если не будет трудно, оформляй текст тегом [code]. Выделяешь код, и жмёшь кнопочку над полем ввода. Вот эту

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 13:57, 21-04-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


vetal_dnepr, Вот, тут попробовал, вроде всё нормально, запускается для почты Outlook Express 6. Компилится нормально Borland C++ Builder 6. Но когда в Edit2 ввожу текст:
Код: Выделить весь код
(Edit2) Текст сообщения отправляется в почтовую программу.
Тоесть добавляю вначале строку (Edit2), то компилится нормально, а когда жму кнопку Отправить с текстом вылетает в ошибку, и открывает дебаггер, но тем не менее почтовую программу запускает и все строки, что введены заносит в тело. Может вперемешку с англ нельзя писать русскими? Не знаю. Проэкт, который я делал по вашему коду, прилагаю, и то что у меня получилось. Может кто из более опытных подскажет больше... Но откомпиленная программа уже работает хорошо без ошибок.
Код: Выделить весь код
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        AnsiString S1 = Edit1->Text;
        char* ch1= S1.c_str();
        char S[]= "mailto:test@mail.ru?subject=TEMA&body=";
        strcat(S,ch1);
        ShellExecute(0,NULL,S,NULL,NULL,SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        AnsiString S1 = Edit2->Text;
        char* ch1= S1.c_str();
        char S[]= "mailto:test@mail.ru?subject=TEMA&body=";
        strcat(S,ch1);
        ShellExecute(0,NULL,S,NULL,NULL,SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Последний раз редактировалось Drongo, 25-04-2008 в 14:17.


Отправлено: 14:17, 21-04-2008 | #3

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
AnsiString str("mailto:test@mail.ru?subject=TEMA&body=");
str += Edit5->Text;
ShellExecute(0, 0, str.c_str(), 0, 0,SW_SHOWNORMAL);
память обрабатывается на стороне вызывающего, засоров не должно быть
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:45, 21-04-2008 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


pva, спасибо большое!!! пока проверить возможности нет, но уверен все будет работать!!!

Drongo, Обязательно учту! (я про выдерение кода)!!!

Отправлено: 16:29, 22-04-2008 | #5


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


pva, Еще раз спасибо!!! Все отлично работает!!!

Отправлено: 11:05, 23-04-2008 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - [решено] int в AnsiString crashtuak Программирование и базы данных 7 30-03-2009 02:11
TEdit и тип AnsiString Sir Z Программирование и базы данных 6 15-02-2006 12:34
Проблемы с перекодировкой данных из MYSQL Di_Mon Вебмастеру 15 20-12-2005 23:51
Как конвертировать AnsiSrtring в Char в C++Builder Galosh Программирование и базы данных 2 21-06-2003 02:25
Как перевсти char в int? Sage Программирование и базы данных 4 27-03-2003 09:44




 
Переход