Когда у Вас есть последовательность операторов, которые повторяются с незначительными изменениями, может быть легче видеть сходства и различия, если они сгруппированы в строки так, чтобы различия выровнялись вертикально.
я утверждал бы, что следующее намного более читаемо, чем это было бы, если бы я разделил его по нескольким строкам:
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 столбцов, я думаю, что моя точка все еще стоит, и я просто выбрал плохой пример. Это действительно все еще демонстрирует, что размещение нескольких операторов на строке может улучшить удобочитаемость.
У меня была та же проблема даже после обновления до 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
Это причинило мне столько боли, я надеюсь, что этот пост сэкономит кому-нибудь время.
Вы можете прибегнуть к некоторым методам проб и ошибок, загрузив с сайта Fulgan .
Вы можете подумать об обновлении своей копии Indy и использовании самой последней DLL OpenSSL.
Насколько мне известно, более свежие версии Indy работают со стандартными двоичными файлами OpenSSL. Загрузите отсюда . Некоторое время назад мы создали клиентское приложение Delphi FTP, используя Indy с SSL-соединениями, и я уверен, что мы только что отправили текущие библиотеки DLL OpenSSL.
Изменить: только что проверили каталог приложения, и мы использовали библиотеки DLL OpenSSL 0.9.8.2 (3 -Авг-06). (Это старое приложение)
Редактировать 2: Я только что скопировал более свежие библиотеки DLL 0.9.8k, и они тоже работают нормально.