ううーー、何週間かぶりに書きます。
サーバ引っ越しまして、せっかくなんでテーマもリニューアルしてから更新しようと思ってましたが、そのテーマのアイディアがとんと浮かばず、放置しておりました。

さて、はたと思いついて、久々にDelphi触ってました。やっぱいいですよね、静的言語。最近すっかりWebアプリ絡みの案件ばっかりと付き合わされてる身としては、コンパイラとかデバッガのメッセージがやけに親切に感じまして。

[エラー] Unit1.pas(xx): 宣言 が必要な場所に 'xxx' があります
[致命的エラー] Project1.dpr(xx): 'Unit1.pas' ユニットはコンパイルできませんでした

とか、軽くツンデレな人格が伺えてしまうのも、気のせいではありますまい。

Turbo DelphiでIndy使って指定のSSLサイトをGetするだけの簡単なお仕事です、状態だったんですけど、

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdHTTP, IdSSLOpenSSL, StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Memo1: TMemo;
    Button1: TButton;
    StatusBar1: TStatusBar;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;
  HTTP: TIdHTTP;
  SSL: TIdSSLIOHandlerSocketOpenSSL;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  SSL.SSLOptions.Method := sslvTLSv1;
  HTTP.ReadTimeout := 1000;
  HTTP.ConnectTimeout := 1000;
  HTTP.IOHandler := SSL;
  Memo1.Text := HTTP.Get('https://example.jp/test.php');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HTTP := TIdHTTP.Create();
  SSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  HTTP.Free;
  SSL.Free;
end;

end.

何度やってもデバッガちゃんに「Could not load SSL library」と怒られます。Indyは海外製のコンポーネントなんで、デバッガの中の人も金髪のお嬢さんなんでしょうな、なんとなく。
とりあえずssleay32.dllとlibeay32.dllを、http://indy.fulgan.com/SSL/にある最新のバージョンに入れ替えてみることに。が、NG。あらかじめDelphi5で似たようなの作ってたんで、そのときのバージョンに差し替えてみても、やっぱりだめ。これって本当にバージョンの問題か?
うーん、困った。と、よくよくhttp://indy.fulgan.com/SSL/のページを見てみると、「Archive」とかあるので、試しに覗いてみると、結構古いバージョンのもありまして、更新日時から推測するにTurbo Delphi発表当時に使われていたあろうブツ(indy_OpenSSL096m.zip)を仕入れ、インストール。
はい、動きました!

デバッガちゃんに叱られるの快感になりかけてまして。危ない危ない。