Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Indy9 IdMessage


Автор: 3315720 12.5.2009, 12:50
Всем привет.
Растолкуйте, в чём может быть проблема? Было приложение, всё работало. Решил обновить инди компоненты. Были поставляемые с bcb6, установил инди9. После этого майл клиент перестал проявлять какую-либо сетевую активность. ошибок компилятор не выдаёт. Причём тот же код переписанный в другом месте, работает исправно. А вот IdMessage стал вообще неадекватен. поля From, Sender, Recepients. Равны NULL, и следовательно любое обращение к ним, есть конец света. скачал и хелп и демы (правда они на дельфи) но ничего особенного не обнаружил. попробовал создать их оператором new, но тогда delete бесится...
пока писал, подумал может 'make' или 'build all' поможет.
У кого есть соображения?

Решение такое. Переустановить Indy. smile 

Автор: Alca 12.5.2009, 14:25
Ты хотя бы код показал для начала.

Добавлено через 50 секунд
10-ю версию индейцев пробывал?

Автор: 3315720 12.5.2009, 15:06
Цитата(Alca @ 12.5.2009,  14:25)
Ты хотя бы код показал для начала.

Добавлено @ 14:26
10-ю версию индейцев пробывал?

10-ю не пробовал. она ещё в разработке, говорят глючная.

а что код..?
классический.
msg = new IdMessage(this);
msg->From->Name = ''отправитель''; // ошибка From не существует NULL

Автор: Alca 12.5.2009, 15:34
Цитата

ошибка From не существует NULL

Это в отладчике?

Добавлено через 10 минут и 20 секунд
Сделай отдельно тестовый проект и проверь свой код на нем.

Автор: Dmi3ev 12.5.2009, 19:38
3315720, все с тобой ясно
Цитата

а что код..?
классический.
msg = new IdMessage(this);
msg->From->Name = ''отправитель''; 

ты себя к классикам относишь? кроме тебя я ни у кого не видел такого кода...
надо примерно так:
Код

TIdMessage *msg = new TIdMessage(Form1);
msg->From->Text="[email protected]";

найди десять отличий))) (вместо Form1 можно и this писать, это не суть важно)
+ спорю, что о подключении 
Код

#include <IdMessage.hpp>
#include <IdMessageClient.hpp>

даже не подумал  smile 

Автор: 3315720 12.5.2009, 20:20
Цитата(Dmi3ev @ 12.5.2009,  19:38)
3315720, все с тобой ясно
Цитата

а что код..?
классический.
msg = new IdMessage(this);
msg->From->Name = ''отправитель''; 

ты себя к классикам относишь? кроме тебя я ни у кого не видел такого кода...
надо примерно так:
Код

TIdMessage *msg = new TIdMessage(Form1);
msg->From->Text="[email protected]";

найди десять отличий))) (вместо Form1 можно и this писать, это не суть важно)
+ спорю, что о подключении 
Код

#include <IdMessage.hpp>
#include <IdMessageClient.hpp>

даже не подумал  smile

Умник, что тебе ясно!?
Я просил не умничать,  а помоч. Я вообще предполагал что определение это как само собой разумеющееся. 
Код

TIdMessage *msg;
  написано в другом месте.
Код

msg->From->Text="[email protected]"; Пишется как - msg->From->Text='Балабол <[email protected]>';

Кто такой Form1 компонент не знает вообще, т.к. его модуль не включает в себя модуль формы. А вот Form1 уже знает msg; Поэтому this? или даже NULL можно.
Ну и ты проспорил - подключать нужно
Код

#include <IdBaseComponent.hpp>
#include <IdMessage.hpp>


Alca: Ошибка при работе, Компилятор говорит, все ОК давай запускать.
Тестовый проект дает те же результаты.
Компонент вроде без проблем поставился, поэтому думаю он должен быть рабочим.

Автор: Alca 12.5.2009, 20:31
Выложи тестовый проект.

Автор: Dmi3ev 12.5.2009, 20:52
Цитата

msg = new IdMessage(this);

это строчка у тебя была написана неверно (вот я и написал, что на классику это не тянет)...
Цитата

Умник, что тебе ясно!?
Я просил не умничать,  а помоч.

да не умничаю, просто вот этот код:
Код

TIdMessage *msg=new TIdMessage(this);
msg->From->Name="Name";
ShowMessage(msg->From->Name);

у меня работает, как часы, а инди 9... 
Так что... Косяк какой-то у тебя...
Цитата

#include <IdBaseComponent.hpp>
#include <IdMessage.hpp>

это да, не то я немного зацепил...  smile 
 smile 
иногда мне так хочется, чтобы кто-нибудь из этих крутышей посидел рядом и так же круто поговорил... (в последний раз  smile )

Автор: 3315720 12.5.2009, 20:59
Вот ошибка.
"Access violation at adress 0042F1E8 in module 'Project1.exe'. Write of adress 00000012."
Выскакивает в момент когда выполняется строка 
Код

IdMessage1->Sender->Name = "Jon";

Здесь sender (как впрочем и From и Recipients) почему-то равен NULL, в то время как в предыдущих версиях все создается сразу...

Добавлено через 6 минут и 13 секунд
Цитата(Dmi3ev @ 12.5.2009,  20:52)
вот этот код:
Код

TIdMessage *msg=new TIdMessage(this);
msg->From->Name="Name";
ShowMessage(msg->From->Name);

у меня работает, как часы, а инди 9... 
Так что... Косяк какой-то у тебя...

Вот я и спрашиваю что за ... У меня этот код ничем не лучше моего работает.
Может переустановить Indy?

Автор: Dmi3ev 12.5.2009, 21:13
Цитата

Может переустановить Indy? 

попробуй, у меня 9, и у меня работает... Так что явно, что-то тут нечисто...

Автор: 3315720 12.5.2009, 22:49
Помогло. Сразу ошибки посыпались, типа названия некоторые изменились. И Winsocs2.h начал конфликтовать с Winsocs.h. Поправил, вроде заработало.
Думаю на этом все.

Автор: Alca 12.5.2009, 22:52
Лучше билдер ставить без индейцев, а потом уже 9-ую версию накатывать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)