喫茶XRAYトップページ

[スレッド全体
]

[11036] Re7:HTTPSサイトからのダウンロード返信 削除
2017/4/5 (水) 18:04:54 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 ...


[11048] Re8:HTTPSサイトからのダウンロード返信 削除
2017/4/7 (金) 18:27:31 taka
▼ takaさん
> (2) Indyのフォルダに移動して、コンパイルする
> cd indy10\Lib
> set path="C:\Program Files\Borland\Delphi6\Bin";%path%
> @rem Delphi6用にIndyをコンパイルします
> Fulld_6.bat


full_d6.bat内でコンパイラのパスを検索して自動設定するようになっていますので
full_d6.batの前の
set path=C:\Program Files\Borland\Delphi6\Bin;%path%
は不要でした。

full_d6.batは、*.bplをシステムにコピーするようになっているようです。
full_d6.bat
・システムフォルダの.bplを差し替える場合
 管理者モードのコマンドプロンプト
・システムフォルダに*60.bplをコピーさせたくない場合
 通常コマンドプロンプト または エクスプローラーからそのままクリック


[11050] Re9:HTTPSサイトからのダウンロード返信 削除
2017/4/7 (金) 19:03:03 Mr.XRAY
▼ takaさん

> full_d6.batの前の
> set path=C:\Program Files\Borland\Delphi6\Bin;%path%
> は不要でした。


えっ ?! おかしいな.
パスの設定なして実行したら,インストールできなかったので,
taka さんのそのままやってみたんですが,操作間違えたかな ?
確認してみます.

> full_d6.batは、*.bplをシステムにコピーするようになっているようです。

個人的にはこれでいいと思っているので,記事の文章はそのままか,
そのことを追加したいと思います.

>  通常コマンドプロンプト または エクスプローラーからそのままクリック

Windows Vista 以降に対応したバージョンの場合,管理者権限でなくても
いいと思うのですが,Delphi 等の旧いバージョンはちょっと問題がある気がします.

Windows Vista 以降に対応したバージョンの Delphi は,
Program Files や システム関係のフォルダ内に,更新可能なファイルが
置かれないようになっています.
そのため,Delphi の IDE を管理者権限で起動しなくても動作します.
(当サイトの記事では管理者権限で起動することを前提に書いていますが)


[11051] Re10:HTTPSサイトからのダウンロード返信 削除
2017/4/7 (金) 19:36:16 Mr.XRAY
> taka さんのそのままやってみたんですが,操作間違えたかな ?
> 確認してみます.


やってみました.
ホント,パスの設定不要ですね.
Windows 8.1 は無傷の Delphi 6 があるのでインストールしてみました.
ハハハッ.なんだったんだろう ?



[11052] Re10:HTTPSサイトからのダウンロード返信 削除
2017/4/7 (金) 20:14:41 taka
▼ Mr.XRAYさん
> ▼ takaさん
>
> > full_d6.batの前の
> > set path=C:\Program Files\Borland\Delphi6\Bin;%path%
> > は不要でした。
>
> えっ ?! おかしいな.
> パスの設定なして実行したら,インストールできなかったので,
> taka さんのそのままやってみたんですが,操作間違えたかな ?
> 確認してみます.


同じフォルダにあるComputil.exeが呼ばれます
もしかしたら
コンパイルされていないのかもしれないです。

うちのパッチに
Lib\pre_make.batというのが追加されていました
"C:\Program Files\Borland\BDS\3.0\Bin\dcc32"  Computil.dpr
"C:\Program Files\Borland\BDS\3.0\Bin\dcc32"  lspFix.dpr
とかいう内容なので

dcc32  Computil.dpr
dcc32  lspFix.dpr
で事前準備がいるのかもしれないです


[11053] Re11:HTTPSサイトからのダウンロード返信 削除
2017/4/7 (金) 20:17:22 taka
解決しましたね
よかったです


[11055] Re12:HTTPSサイトからのダウンロード返信 削除
2017/4/7 (金) 22:10:06 Mr.XRAY
▼ takaさん
> 解決しましたね
> よかったです


大変お騒がせいたしました.m(_ _)m
特急でやっているものですから,いつもですが.
そして,誤字脱字ですからね.ハハハッ.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82