Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2011, 22:53   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию Компонент с функционалом SSL+INDY. (Разрушительный сбой)

Всем доброго. Подруга задала задачку, которая меня заинтересовала.
Необходимо сделать СОМ сервер (Ну или ActiveX библиотеку), который бы используя SSL посылал запрос по HTTP.
Решил с малого. создал ActiveX Library, в которой ActiveX Server.
Так же в проект добавил Data Module с TIdSSLIOHandlerSocketOpenSSL и TIdHTTP. Компонеты никак не настраивал.
В самом Active X прописал метод
Код:
procedure TTIdSSLD2010.GetURL(const URL: WideString; out Content: WideString);
begin
   Content:=DataModule1.IdHTTP1.Get(URL);
end;
Который буду вызывать в проекте.
Проект скомпилировал, зарегистрировал, отправил в палитру инструментов Делфи.
В результате после того как на обычную форму другого проекта кинул этот компонент, получил возможность написать
Код:
procedure TForm1.FormCreate(Sender: TObject);
var s:WideString;
begin
 TIdSSLD20101.GetURL('https://www.microsoft.com/en/us/default.aspx',s);
 Caption:=s;
end;
Но нарвался на ошибку (См. Скрин)

Вопрос: Это INDY косячит или всетки я еще чего-то не учел, ибо если поставить
Код:
procedure TTIdSSLD2010.GetURL(const URL: WideString; out Content: WideString);
begin
  Content:='А так работает';
   //Content:=DataModule1.IdHTTP1.Get(URL);
end;
То сбоя нет.

Delphi 2010 (его стандартная INDY).

Что делают в таких случаях? (Я не очень понял честно говоря что именно засбоило)

P.S. Задача именно написать компонент - библиотеку для использования в 1С.
Изображения
Тип файла: jpg Сбой.JPG (13.9 Кб, 62 просмотров)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.01.2011, 05:05   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

хз кто там косячит, но я сначала бы отладил код "DataModule1.IdHTTP1.Get(URL);
" в обычном проекте, а потом уже засовывал бы его в ActiveX.

> Разрушительный сбой

Хорошо хоть не Былинный отказ )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 07.01.2011, 05:19   #3
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Код:
procedure TTIdSSLD2010.GetURL(const URL: WideString; out Content: WideString);
begin
   Content:=DataModule1.IdHTTP1.Get(URL);
end;
TTIdSSLD2010.GetURL описанны 2 входящие переменные URL и Content

Код:
DataModule1.IdHTTP1.Get(URL); вызывается только одна URL

Код:
procedure TForm1.FormCreate(Sender: TObject);
var s:WideString;
begin
 TIdSSLD20101.GetURL('https://www.microsoft.com/en/us/default.aspx',s);
 Caption:=s;
end;
аналогично 2 переменные 1я это "'https://www.microsoft.com/en/us/default.aspx'" 2я это "s".
Код:
procedure TTIdSSLD2010.GetURL(const URL: WideString; out Content: WideString);
begin
  Content:='А так работает';
   //Content:=DataModule1.IdHTTP1.Get(URL);
end;
тут вообще непонятно функция вызывается со 2м параметром.
ошибка либо либо в вызове функции (чет разные параметры, нули хотябы подставить) либо ковырять индюков.

Последний раз редактировалось Stilet; 07.01.2011 в 13:08.
wm_leviathan вне форума Ответить с цитированием
Старый 07.01.2011, 13:12   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
описанны 2 входящие переменные
Одна. Входящая только URL.
Цитата:
вызывается только одна URL
Ну правильно. А зачем мне вторую туда пихать?
Цитата:
аналогично 2 переменные 1я это "'https://www.microsoft.com/en/us/default.aspx'" 2я это "s".
Чет я не понял куда ты клонишь? Поясни пожалуйста свою мысль.
Цитата:
в обычном проекте, а потом уже засовывал бы его в ActiveX.
Обижаешь. В обычном работает, чего б я тогда спрашивал.
Цитата:
либо ковырять индюков.
Неблагодарное это дело...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.01.2011, 13:33   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Обижаешь. В обычном работает, чего б я тогда спрашивал.
Ну, это было не очевидно )

Тогда так. Открываем проект с OCX, компилируем его с отладочными системными модуля. Ему хостом назначем другой проект, который с формой. Ставим точку прерывания на "Content:=DataModule1.IdHTTP1.Get(U RL);", жмём Ф9. Ф8. Надеемся, что покажет виновника торжества.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 07.01.2011, 14:44   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Ну, это было не очевидно )
Верно подмечено. Надо было указать
Цитата:
Тогда так.
Разрушительный сбой именно на DataModule1.IdHTTP1.Get(URL);
Даже после того как SSL отключил... Неужели индейка не умеет работать в СОМ серверах?
Кстати, я вот не помню Соинициализация автоматически в таких проектах прописывается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.01.2011, 15:51   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Разрушительный сбой именно на DataModule1.IdHTTP1.Get(URL);

Хотелось надеятся, что компиляция с отладочными модулями позволит зайти внутрь и подёргать инди за свойства.

> Соинициализация

Кстати, даже если автоматом, стоит проверить, какой там аппартмент указан.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 07.01.2011 в 15:54.
veniside вне форума Ответить с цитированием
Старый 07.01.2011, 17:02   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
какой там аппартмент указан.
Честно говоря я даже не обратил на него внимание... По умолчанке оставил. Кажись в instancing стоял Multiple instance, а в ThreadingModel Apartment
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема со скачиванием писем с почтового сервиса gmail.comgmail, indy компоненты, ssl протокол. dlauser Работа с сетью в Delphi 0 29.11.2010 08:52
компонент TICQClient и Indy Chelovek1 Общие вопросы Delphi 5 10.11.2010 18:21
Компонент на подобии indy sergeyrulit Общие вопросы Delphi 4 04.11.2010 08:26
Как отправить на E-Mail текст используя компонент Indy!!!??? $T@LKER Помощь студентам 6 16.05.2010 13:34
Сбой обновления основного вайла, патч отменен. Сбой CRC основного файла. Naruto63 Помощь студентам 2 21.10.2009 20:28