名前 題名 ▼ takaさん > ▼ Mr.XRAYさん > > > [07_HTTPS サーバへのアクセス] > > > http://mrxray.on.coocan.jp/Delphi/plSamples/772_Indy_HTTPGet.htm#07 > > > > [備考] の文章を書き換えました. > > 『Delphi 2007 以前では使用でき...』 > > と書いていましたが,使用できないと決め打ちにすると語弊があるので. > > どうにでも,あるいは読んだ方が自由に解釈可能な文章にしてみました. > > Indy最新版(10.6.2)は、古いDelphiでも動きます。 > > ・IndyのバグでIndy最新版を古いDelphiでコンパイルできない期間がしばらくありました > 2015年末くらいからは、コンパイルできています > ・ライブラリのパスが間違っている > ・コンポーネントパレットが古いバージョンになっている > ・Indyの仕様が途中でが変わったので、 > それにあわせて使用しているIndy関数の引数を変更してないため > アプリのコンパイラエラーになっている > ・IndyのバージョンとopensslのDllのバージョンの選択が間違っている > ・ windowsフォルダやPATH変数に古いopensslのDllが混ざっている > ・ アプリのフォルダに違うバージョンのopensslのDllが混ざっている > のいずれかの理由で 古いDelphiで最新版のIndyが動かないと騒いでいるだけではないでしょうか > > ●Indy 10.2.3 > ローカールにクローン同期しているリポジトリで > branches,tagsの履歴を見ましたが10.2.3の痕跡はないようです。 > 古いIndyは、trunk にひたすらコミットされていく習性があったので trunkから拾ってはどうでしょうか > > trunk/Lib/System/IdVers.incの履歴によると > 2444で10.2.3になり > 4394で10.2.3から10.5.6に代わっています。 > svn checkout https://svn.atozed.com:444/svn/Indy10/trunk indy10.2.3 -r 4393 > とすると > 最後の10.2.3を取得できます > 取得したバージョンから最終コミットを表示すると最後のリビジョンがわかります。 > svn log -l 1 > とすると > r3962 2009-12-25 15:21:33 +0900 (2009年12月25日 (金)) > になりますので10.2.3の最終リビジョンは、3962になります。 > (3963-4393は、trunk以外のほかのフォルダにコミットされているので 同じものが返ってきます。) > > 10.2.3 の範囲 : リビジョン: 2444 - 3962 > svn checkout https://svn.atozed.com:444/svn/Indy10/trunk indy10.2.3 -r 3962 > > > ●Indy最新版を古いDelphiで使う方法 > > HDDを探すと捨てたと思っていたDelphi6 personalのインストーラーが残っていたので > Delphi6をWin10にインストールしてみました。 > > delphi6でも"Indy 10.6.2 - Berlin RTM" を使えるようです > > 持っていない場合はダウンロードします。 > svn checkout "https://svn.atozed.com:444/svn/Indy10/tags/Indy 10.6.2 - Berlin RTM" indy10 > > (1) 管理モードで コマンドを開く > (2) Indyのフォルダに移動して、コンパイルする > cd indy10\Lib > set path="C:\Program Files\Borland\Delphi6\Bin";%path% > @rem Delphi6用にIndyをコンパイルします > Fulld_6.bat > > (3) Delphi6を起動し、コンポーネントを登録する > 自動で登録されていないようなので > コンポーネント パッケージのインストール [追加] > さっきのindy10\D6フォルダへ移動する > CTRL押しながら > dclIndyCore60.bpl > dclIndyProtocols60.bpl > を選択して 開く をクリック > > OKで閉じる > > ブラウザ検索パス > 必要に応じてソースコードフォルダを追加してください。(指定しなくても動きます。) > > > 以上で設定は終わりです > > テスト indy https > > Delphi6 - 新規 > パレットから TIdHTTP, TIdSSLIOHandlerSocketOpenSSL,TButtonを貼り付けたあと > 以下のコードを貼り付けます。 > ※ getversion()関数は DelphiのVersionをわかりやすくするため簡易で作りました。 > > uses IdGlobal; > > function getversion() : String; > var s : String; > i : Integer; > begin > Result := 'VER' + IntToStr(Trunc(System.CompilerVersion*10)); > with TIdHTTP.Create(nil) do > try > try > s := Get('http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Compiler_Versions'); > except > Exit; > end; > i := Pos(Result, s); > if (i>0) then > begin > // VERxxx</p></td><td><p>名前</p> > s := Copy(s, i + Length(Result), Length(s)); > i := Pos('<p>', s); > if (i>0) then > begin > s := Copy(s, i + 3, Length(s)); > i := Pos('</p>', s); > if (i>0) then > begin > Result := Trim(Copy(s, 1, i-1)) + ' : ' + Result; > end; > end; > end; > finally > Free; > end; > end; > > procedure TForm1.Button1Click(Sender: TObject); > var url, s : string; > begin > url := 'https://www.google.co.jp/'; > IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; > s := Format('CompilerVersion %s',[getversion()]) + sLineBreak > + Format('Indy gsIdVersion %s',[gsIdVersion]) + sLineBreak > + Format('IdHTTP1.Get(''%s'')', [url]) + sLineBreak; > try > s := s + Copy(IdHTTP1.Get(url), 1, 21) + '...'; > except on E: Exception do > s := s + E.Message; > end; > ShowMessage(s); > end; > > 実行結果 > CompilerVersion Delphi 6 / C++Builder 6 : VER140 > Indy gsIdVersion 10.6.2.0 > IdHTTP1.Get('https://www.google.co.jp/') > <!doctype html><html ... GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link