C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

стр.: (2) < 1 [2] >
Indy 10, Новая версия и не хочет работать:)
_NIK_
Отправлено: 26.02.2006, 00:36


Дежурный стрелочник

Группа: Участник
Сообщений: 55



QUOTE (-=\SeaWolF/=- @ 25/02/2006, 01:36)
QUOTE (_NIK_ @ 24/02/2006, 23:16)
Может я ошибаюсь, но для таких кодировок Indy добавила спец. кодер — то ли UUCoder, то ли XXCoder, я не помню

IdCoder
IdCoder3To4
IdCoderHeader
IdCoderMIME
IdCoderUUE
IdCoderXXE

Дык ради вот этого и ставится 10 инди...
По солюшенам в 9-м она криво реализвана и багов много с русским...

Ясна, но в 10-м больше компонентов чем в 8-м и поэтому я тож его хотел установить

Ну что все установил и разобрался, можно закрывать топик???
-=\SeaWolF/=-
Отправлено: 26.02.2006, 05:16


Ученик-кочегар

Группа: Участник
Сообщений: 24



Нет не пошло sad.gif
ЗЫ всетаки странная вещь... это инди...
Вообщем беря пакаджи(dpk) для 6-го сразу вылазает куча ошибок
Беря для 7-го дельфи — все компилируетсятся без проблемм...
и ошибок с WinSocks вроде небыло...
(кстати у 6 и 7-го отличаются именно установные пакеты те dcl*)
Однако пограмма написанная на 8-м инди вылетает с ошибкой...
СКачал хелп по инди 9 вроде они олинаковые по сути... буду разбираться с кодом... что не так sad.gif
Хз закрывать или нет...
может еще кто чем поделится в этом топике... ибо как я уже нрыл есть куча специфических багов... у тех кто юзает Инди 10...


_NIK_
Отправлено: 26.02.2006, 23:36


Дежурный стрелочник

Группа: Участник
Сообщений: 55



2-=\SeaWolF/=-
Ладна, пусть смотрят.
А ты не плохую мысль дал на счет 70-ки, я смотрел в require там ничего левого нет и подумал, что она тоже подойдет, ну раз у тебя подошла значит в следующий раз попробую. Удачи!
-=\SeaWolF/=-
Отправлено: 27.02.2006, 11:46


Ученик-кочегар

Группа: Участник
Сообщений: 24



Вот я и нашел солюшел своих траблов...smile.gif
Кому интересно
Читаем тут
Вообщем кто не шарит по англицки... поясню....
Indy 10 посторен на совмести только с 9 версией
В idSMTP Аутентификация ушла в отдельный компонент я так понял для того это сделали чтобы связать его с Аутентификацие по SSL
Те теперь Аутентификация это отдельная песнь... smile.gif
Переделаны "IOHandlers" и т.п. вообщем кто не работал с 9-м Инди придется изучать с нуля 10-ку smile.gif Думаю это все....
Касательно сборки Пакаджа для 6 Билдера рекомендую иcпользоовать за образец
*70.dpk — те для Delphi 7(Отличаются только Установочные модули от тех которые для Delphi 6)
А для 5 билдера использовать те что для 6 Дельфи
(Вычитал на конференциях в Гугл групс... линк прямой не дам, не помню... а искать лень,я на трафике сижу из свего карману плачу — вообщем сами найдете если что... сказал где искать smile.gif )
Впринципе оно и логично хотябы по датам выхода и составам компонентов:
Дельфи 6 и Билдер 5
Дельфи 7 и Билдер 6
Так что... думаю само все разрешилось...
И еще я так понял что модуль WinSocks затачивался под SuperCore
те под Fibers
И думаю, что лучше всего его тоже до кучи откомпилировать smile.gif

Подумал и решил добавить для приличия smile.gif
ОС Windows Server 2003 EE x86 SP1 Eng
C++ Builder 6 Enterprise
Indy Source 10.0.52 :^)

Отредактировано -=\SeaWolF/=- — 27/02/2006, 12:05
_NIK_
Отправлено: 28.02.2006, 23:24


Дежурный стрелочник

Группа: Участник
Сообщений: 55



Ну дык в хелп-то не качал для 10-го — там это должно быть описано!
Treumer
Отправлено: 29.09.2006, 09:47


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (_NIK_ @ 20.02.2006, 22:47)
Но при установке некоторых dclIndy*.bpk билдер орал, что модуль такой-то (у меня System) уже включен в таком-то-таком-то *.bpi(кот. находятся в секции Require данного пакета). Этот трабл я исправлял путем установки галки "Run-time and Design time" в опциях проекта и устанавливалось/компилировалось без проблем.
Главное!:
1. Indy*.bpk компилить с опцией "Run-time only".
2. dclIndy*.bpk компилить с опцией "Design-time only".
3. Indy*.bpl устанавливать НЕНАДО!
4. Ничего не перепутать при создании пакетов *.bpk.

Удачи!

Вот и у меня при установки Protocols ругается, что Idresourcestrings уже содержится в Core...

К сожалению, не пойму, как можно "исправить данный трабл" путем "установки галки "Run-time and Design time", если

Главное!:
1. Indy*.bpk компилить с опцией "Run-time only".
2. dclIndy*.bpk компилить с опцией "Design-time only".


Как же победить то, а ?
Doga
Отправлено: 29.09.2006, 18:10


Мастер участка

Группа: Участник
Сообщений: 575



Не по теме конечно, но всё таки...

Мне тут сегодня порекомендовали другой копонент — Synapse
Говорят, работает горздо надёжнее чем Indy.

http://www.ararat.cz/synapse/

Отредактировано Doga — 29.09.2006, 18:10
Treumer
Отправлено: 30.09.2006, 19:23


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (Treumer @ 29.09.2006, 09:47)
QUOTE (_NIK_ @ 20.02.2006, 22:47)
Но при установке некоторых dclIndy*.bpk билдер орал, что модуль такой-то (у меня System) уже включен в таком-то-таком-то *.bpi(кот. находятся в секции Require данного пакета). Этот трабл я исправлял путем установки галки "Run-time and Design time" в опциях проекта и устанавливалось/компилировалось без проблем.
Главное!:
1. Indy*.bpk компилить с опцией "Run-time only".
2. dclIndy*.bpk компилить с опцией "Design-time only".
3. Indy*.bpl устанавливать НЕНАДО!
4. Ничего не перепутать при создании пакетов *.bpk.

Удачи!

Вот и у меня при установки Protocols ругается, что Idresourcestrings уже содержится в Core...

К сожалению, не пойму, как можно "исправить данный трабл" путем "установки галки "Run-time and Design time", если

Главное!:
1. Indy*.bpk компилить с опцией "Run-time only".
2. dclIndy*.bpk компилить с опцией "Design-time only".


Как же победить то, а ?

Секрет оказался прост:

В каждый пакет в раздел Required нужно обязательно включать уже скомпилированные .bpi файлы.
Т.е. в IndyCore — IndySystem.bpi, dclIndyCore — IndyCore.bpi и IndySystem.bpi,
в IndyProtocols — dclIndyCore.bpi, IndyCore.bpi и IndySystem.bpi, а в dclIndyProtocols- IndyProtocols.bpi, dclIndyCore.bpi, IndyCore.bpi и IndySystem.bpi.

Надеюсь, эти грабли обойдут вас теперь стороной smile.gif
Лена
Отправлено: 04.10.2006, 09:18


Мастер участка

Группа: Участник
Сообщений: 501



Информация о Indy: http://www.indyproject.org/KB/
Doga
Отправлено: 06.10.2006, 19:29


Мастер участка

Группа: Участник
Сообщений: 575



Всем привет!

Разбирался сегодня с файлом IdWinSock2.hpp (IdWinSock2.pas), т.к. прикомпиляции проэкта в нем возникала куча ошибок типа "[C++ Error] IdWinSock2.hpp(800): E2303 Type name expected".

Выяснилось, что при установке (компиляции) библиотеки Indy 10 в BCB, как обычно, некоректно создаются *.Н фалы с описниями типов и функций. Найдено альтернативное решение (вместо коментирования строк с ошибками) этой проблемы для модуля IdWinSock2.

В фале IdWinSock2.hpp, после строки №368
CODE
typedef TWSANetworkEvents *LPWSANetworkEvents;


перед строкой
CODE
typedef TWSAProtocol_InfoW *LPWSAProtocol_InfoW;


необходимо вставить нижеследующий фрагмент кода:
CODE

#define wsaprotocol_len 255

#define max_protocol_chain 7

#pragma pack(push, 1)
struct TWSAProtocolChain
{
int ChainLen; // the length of the chain,
// length = 0 means layered protocol,
// length = 1 means base protocol,
// length > 1 means protocol chain
int ChainEntries[max_protocol_chain]; // a list of dwCatalogEntryIds
};
#pragma pack(pop)

#pragma pack(push, 1)
struct TWSAProtocol_InfoA
{
int dwServiceFlags1;
int dwServiceFlags2;
int dwServiceFlags3;
int dwServiceFlags4;
int dwProviderFlags;
TGUID ProviderId;
int dwCatalogEntryId;
TWSAProtocolChain ProtocolChain;
int iVersion;
int iAddressFamily;
int iMaxSockAddr;
int iMinSockAddr;
int iSocketType;
int iProtocol;
int iProtocolMaxOffset;
int iNetworkByteOrder;
int iSecurityScheme;
int dwMessageSize;
int dwProviderReserved;
char szProtocol[wsaprotocol_len];
};
#pragma pack(pop)

#pragma pack(push, 1)
struct TWSAProtocol_InfoW
{
int dwServiceFlags1;
int dwServiceFlags2;
int dwServiceFlags3;
int dwServiceFlags4;
int dwProviderFlags;
TGUID ProviderId;
int dwCatalogEntryId;
TWSAProtocolChain ProtocolChain;
int iVersion;
int iAddressFamily;
int iMaxSockAddr;
int iMinSockAddr;
int iSocketType;
int iProtocol;
int iProtocolMaxOffset;
int iNetworkByteOrder;
int iSecurityScheme;
int dwMessageSize;
int dwProviderReserved;
wchar_t szProtocol[wsaprotocol_len];
};
#pragma pack(pop)

typedef TWSAProtocol_InfoA * PWSAProtocol_InfoA;
typedef TWSAProtocol_InfoA * LPWSAProtocol_InfoA;

typedef TWSAProtocol_InfoW * PWSAProtocol_InfoW;


Это позволяет избежать ошибок в IdWinSock2 при компиляции какого либо проэкта с участием этого модуля (по крайней мере у меня cool.gif ).



Удачи! smile.gif



P.S. Подозреваю, что такое безобразие может твориться и в некоторых других *.H-файлах библиотеки Indy 10. ohmy.gif

Отредактировано Doga — 07.10.2006, 14:48
Doga
Отправлено: 09.10.2006, 15:56


Мастер участка

Группа: Участник
Сообщений: 575



А вот вопрос:
как узнать IP-адреса клиентов, которые подключились к серверу TIdTCPServer (локальная сеть)?
Doga
Отправлено: 11.10.2006, 00:55


Мастер участка

Группа: Участник
Сообщений: 575



Ладно, с этим разобрался:
CODE

void __fastcall TServerForm::IdTCPServer1Connect(TIdContext *AContext)
{
 ...
 AnsiString IPStr = AContext->Binding()->PeerIP;
 ...
}


А вот как по этому IP адресу узнать имя клиента (Local Host)?
Ну, что нибудь вроде этого: 192.168.0.33 -> Rva

И ещё. Когда клиент отключается от сервера, тут порядок — сервер в курсе. А когда сервер отключает какого либо клиента ( Disconnect() ), то клиент этот об сём факте в полных непонятках. Так и должно быть иль я что то не так делаю? Есть для этого какие либо штатные индейские средства, или надо клиенту команду какую нибудь послать, что б он сам, распознав оную, от сервера отключился?

wink.gif
стр.: (2) < 1 [2] >
Вернуться в Вопросы программирования в C++Builder