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

Ответить
 • Просмотры: 1
Аватара пользователя
vetal_dnepr

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

Сообщение vetal_dnepr »

Добрый день! Может кто сталкивался с такой проблемой - необходимо перевисти введенную строку (строка около 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



МОЖЕТ КТО ЗНАЕТ КАК С ЭТИМ МОЖНО БОРОТЬСЯ И В ЧЕМ ПРИЧИНА???

Всем откликнувшимся - большое спасибо!!!!
Аватара пользователя
Drongo

Re: C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR

Сообщение Drongo »

vetal_dnepr, Не совсем по теме, но если не будет трудно, оформляй текст тегом

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

. Выделяешь код, и жмёшь кнопочку над полем ввода. Вот эту [img]http://i029.radikal.ru/0804/39/282bf40e9a18.jpg[/img]
Аватара пользователя
Drongo

Re: C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR

Сообщение Drongo »

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);
}
//---------------------------------------------------------------------------
Аватара пользователя
pva

Re: C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR

Сообщение pva »

Код:

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

AnsiString str("mailto:test@mail.ru?subject=TEMA&body=");
str += Edit5->Text;
ShellExecute(0, 0, str.c_str(), 0, 0,SW_SHOWNORMAL);

память обрабатывается на стороне вызывающего, засоров не должно быть
Аватара пользователя
vetal_dnepr

Re: C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR

Сообщение vetal_dnepr »

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



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

Re: C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR

Сообщение vetal_dnepr »

pva, Еще раз спасибо!!! Все отлично работает!!! Изображение
Ответить

Вернуться в «Программирование и базы данных»