ИНДИ 10.1.5 - Который SSL dlls работает с Delphi 2006?

Когда у Вас есть последовательность операторов, которые повторяются с незначительными изменениями, может быть легче видеть сходства и различия, если они сгруппированы в строки так, чтобы различия выровнялись вертикально.

я утверждал бы, что следующее намного более читаемо, чем это было бы, если бы я разделил его по нескольким строкам:

switch(Type) {
case External_BL:   mpstrd["X"] = ptDig1.x - RadialClrX;    mpstrd["Y"] = ptDig1.y - RadialClrY;    break;
case External_BR:   mpstrd["X"] = ptDig1.x + RadialClrX;    mpstrd["Y"] = ptDig1.y - RadialClrY;    break;
case External_TR:   mpstrd["X"] = ptDig1.x + RadialClrX;    mpstrd["Y"] = ptDig1.y + RadialClrY;    break;
case External_TL:   mpstrd["X"] = ptDig1.x - RadialClrX;    mpstrd["Y"] = ptDig1.y + RadialClrY;    break;
case Internal_BL:   mpstrd["X"] = ptDig1.x + RadialClrX;    mpstrd["Y"] = ptDig1.y + RadialClrY;    break;
case Internal_BR:   mpstrd["X"] = ptDig1.x - RadialClrX;    mpstrd["Y"] = ptDig1.y + RadialClrY;    break;
case Internal_TR:   mpstrd["X"] = ptDig1.x - RadialClrX;    mpstrd["Y"] = ptDig1.y - RadialClrY;    break;
case Internal_TL:   mpstrd["X"] = ptDig1.x + RadialClrX;    mpstrd["Y"] = ptDig1.y - RadialClrY;    break;
}

Обновление: В комментарии было предложено, чтобы это было более сжатым способом сделать вышеупомянутое:

switch(Type) {
  case External_BL: dxDir = - 1; dyDir = - 1; break;
  case External_BR: dxDir = + 1; dyDir = - 1; break;
  case External_TR: dxDir = + 1; dyDir = + 1; break;
  case External_TL: dxDir = - 1; dyDir = + 1; break;
  case Internal_BL: dxDir = + 1; dyDir = + 1; break;
  case Internal_BR: dxDir = - 1; dyDir = + 1; break;
  case Internal_TR: dxDir = - 1; dyDir = - 1; break;
  case Internal_TL: dxDir = + 1; dyDir = - 1; break;
}
mpstrd["X"] = pt1.x + dxDir * RadialClrX;
mpstrd["Y"] = pt1.y + dyDir * RadialClrY; 

, хотя это теперь помещается в 80 столбцов, я думаю, что моя точка все еще стоит, и я просто выбрал плохой пример. Это действительно все еще демонстрирует, что размещение нескольких операторов на строке может улучшить удобочитаемость.

16
задан Warren P 30 May 2012 в 14:47
поделиться

3 ответа

У меня была та же проблема даже после обновления до INDY 10.2.3, и я перепробовал все различные версии файлов "libeay32.dll" и "ssleay32.dll", которые смог найти... Как и Мэтт, я всегда получал одну из двух ошибок: "Could not load SSL library" или "Error connecting with SSL" с чем-то вроде "error:00000006:lib(0):func(0):EVP lib" ...

Я был очень рад, когда изменил TidSSLioHandlerSocketOpenSSL.SSLOptions.Method на sslvSSLv23 и все заработало.

Немного больше исследований, и я быстро понял, что если я получал ошибку "Could not load SSL library", то я использовал неправильную версию DLL файлов, и если я получал "Error connecting with SSL" с чем-то вроде "error:00000006:lib(0):func(0):EVP lib", то я использовал неправильное значение SSLOptions.Method.

Другая информация: Я использую Delphi 2006, INDY 10.2.3 и работаю на WinXP Pro

Это причинило мне столько боли, я надеюсь, что этот пост сэкономит кому-нибудь время.

18
ответ дан 30 November 2019 в 21:19
поделиться

Вы можете прибегнуть к некоторым методам проб и ошибок, загрузив с сайта Fulgan .

Вы можете подумать об обновлении своей копии Indy и использовании самой последней DLL OpenSSL.

3
ответ дан 30 November 2019 в 21:19
поделиться

Насколько мне известно, более свежие версии Indy работают со стандартными двоичными файлами OpenSSL. Загрузите отсюда . Некоторое время назад мы создали клиентское приложение Delphi FTP, используя Indy с SSL-соединениями, и я уверен, что мы только что отправили текущие библиотеки DLL OpenSSL.

Изменить: только что проверили каталог приложения, и мы использовали библиотеки DLL OpenSSL 0.9.8.2 (3 -Авг-06). (Это старое приложение)

Редактировать 2: Я только что скопировал более свежие библиотеки DLL 0.9.8k, и они тоже работают нормально.

2
ответ дан 30 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: