喫茶XRAYトップページ


[11010] HTTPSサイトからのダウンロード返信 削除
2017/4/3 (月) 07:44:39 Mr.XRAY
以下の記事を修正しました.
ダウンロードすべき DLL のバージョンが 64 ビット版になっていました.
おそらく 64 ビットの EXE でテストしたので間違えたのかも.
説明通りに DLL をダウンロードした方,ゴメンナさい.

[07_HTTPS サーバへのアクセス]
http://mrxray.on.coocan.jp/Delphi/plSamples/772_Indy_HTTPGet.htm#07

以下の書き込みがあったので気づいたのですが,
Delphi 6 ですから 32 ビットの EXEであることは間違いないでしょう.

[TIdHTTPの使用]
http://www.freeml.com/delphi-users/4649/latest


[11017] Re:HTTPSサイトからのダウンロード返信 削除
2017/4/3 (月) 20:21:11 Mr.XRAY
> Delphi 6 ですから 32 ビットの EXEであることは間違いないでしょう.

調べたのですが,残念ながら Delphi 6 では無理のようです.
Delphi 6 で使用可能な Indy は Ansi 版としての最終バージョン 10.2.3
なのですが,10.2.3 で使用可能な DLL がダウンロードできなくなっています.

[772] [07] の記事を書いた時は,Indy 9 でも使用可能な DLL がダウンロード
できたハズだったのですが...

また,今現在の調査では,Indy 10.2.3 もダウンロードできないようです.


[11018] Re2:HTTPSサイトからのダウンロード返信 削除
2017/4/3 (月) 21:23:12 Mr.XRAY
> なのですが,10.2.3 で使用可能な DLL がダウンロードできなくなっています.

本日現在入手可能な DLL は Indy 10.5.5 以上用のようです.
ちなみに Delphi 10.1 Berlin Starter の Indy は 10.6.2 です.



[11021] Re3:HTTPSサイトからのダウンロード返信 削除
2017/4/4 (火) 08:43:54 Mr.XRAY
> また,今現在の調査では,Indy 10.2.3 もダウンロードできないようです.

以下が 10.2.3 がダウンロードできた SVN です.
(ユーザアカウントは Indy-Public-RO パスワードは空白)
すくなとも 2015年03月02日には 10.2.3 が入手できました.

https://svn.atozed.com:444/svn/Indy10/

昨日現在,tags にあるバージョンは下図のようになっています.


[11022] Re4:HTTPSサイトからのダウンロード返信 削除
2017/4/4 (火) 09:09:37 Mr.XRAY
>[TIdHTTPの使用]
>http://www.freeml.com/delphi-users/4649/latest


DEKO さんが, Internet Archive からダウンロードのことをレスしています.
[772] の記事に追加するかどうかは考え中です.
私も Internet Archive をみたのですが,Tiburon の文字が入っていたので...
個人的には Delphi 6 とかの方には諦めて頂くのいいのかな,と (^^;


[11025] Re5:HTTPSサイトからのダウンロード返信 削除
2017/4/4 (火) 09:49:22 Mr.XRAY
> [772] の記事に追加するかどうかは考え中です.

以下の [備考] に追加しておきました.
なんか,サイトの記事中に Internet Archive へのリンクが増えてしまったなぁ(笑)

[07_HTTPS サーバへのアクセス]
http://mrxray.on.coocan.jp/Delphi/plSamples/772_Indy_HTTPGet.htm#07

[11026] Delphi 6/7は不滅?返信 削除
2017/4/4 (火) 10:15:31 Mr.XRAY
> 以下の [備考] に追加しておきました.

何年か前に Delphi 6 の場合とかという文章をかなり削除しました.
しかし,アクセス解析で見ると,
Delphi 6, Delphi 7, インストールというのがかなりあるんです.
もちろん,PC-9801 にはかないませんが.
Delphi 5 インストールというのも,数は少ないですがあります.

なくなりませんね.Delphi 6, Delpi 7. 不滅 ?


[11030] Re6:HTTPSサイトからのダウンロード返信 削除
2017/4/4 (火) 13:24:15 Mr.XRAY
> [07_HTTPS サーバへのアクセス]
> http://mrxray.on.coocan.jp/Delphi/plSamples/772_Indy_HTTPGet.htm#07


[備考] の文章を書き換えました.
『Delphi 2007 以前では使用でき...』
と書いていましたが,使用できないと決め打ちにすると語弊があるので.
どうにでも,あるいは読んだ方が自由に解釈可能な文章にしてみました.


[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
特急でやっているものですから,いつもですが.
そして,誤字脱字ですからね.ハハハッ.


[11035] Re5:HTTPSサイトからのダウンロード返信 削除
2017/4/5 (水) 18:04:02 taka
▼ Mr.XRAYさん
> >[TIdHTTPの使用]
> >http://www.freeml.com/delphi-users/4649/latest
>
> DEKO さんが, Internet Archive からダウンロードのことをレスしています.
> [772] の記事に追加するかどうかは考え中です.
> 私も Internet Archive をみたのですが,Tiburon の文字が入っていたので...
> 個人的には Delphi 6 とかの方には諦めて頂くのいいのかな,と (^^;


772_Indy_HTTPGet

Indy 10.6.2 + Delphi6 personalで
少し変更すると 772_Indy_HTTPGet\04_HTTPGetFileもコンパイル通りましたよ。
https://indy.fulgan.com/indy10.changelog.txt
もhttps取得できました。

{$ifdef VER140}
{$else}
  uses HTTPApp;
{$endif}

{$ifdef VER140}
function UnixPathToDosPath(const Path: string): string;
begin
  Result := StringReplace(Path, '/', '\', [rfReplaceAll]);
end;
{$endif}


[11037] Re6:HTTPSサイトからのダウンロード返信 削除
2017/4/5 (水) 18:27:33 Mr.XRAY
▼ takaさ〜ん,なんと言うことを (笑)

> Indy 10.6.2 + Delphi6 personalで
> 少し変更すると 772_Indy_HTTPGet\04_HTTPGetFileもコンパイル通りましたよ。
> https://indy.fulgan.com/indy10.changelog.txt
> もhttps取得できました。


そういうことだったんですか !!
参った !!
しかし,まあ,なんという.
どうしようかな ?  記事に追加しよかな ?
結局,このサイトの記事って,皆さんのおかげて生きているのね.
ウッゥッゥッ.

これ,あれなんですよね.Ansi と Unicode ではコードポイント(文字コード)
が違うんですよね.それをね.なるほどね.


[11039] Re7:HTTPSサイトからのダウンロード返信 削除
2017/4/5 (水) 19:41:18 Mr.XRAY
▼ takaさん
 
あれですね.私も古い Delphi では諦めて頂くという先入観がありましたね.
最新の Indy のインストールに関しても.
svn を見たら Delphi 4 からあります.
以下にも説明があります.

http://www.indyproject.org/Sockets/Docs/Indy10Installation.en.aspx
 
記事についてはこれから考えます.


[11040] Re7:HTTPSサイトからのダウンロード返信 削除
2017/4/5 (水) 23:03:55 taka
▼ Mr.XRAYさん
> ▼ takaさ〜ん,なんと言うことを (笑)
>
> > Indy 10.6.2 + Delphi6 personalで
> > 少し変更すると 772_Indy_HTTPGet\04_HTTPGetFileもコンパイル通りましたよ。
> > https://indy.fulgan.com/indy10.changelog.txt
> > もhttps取得できました。
>
> そういうことだったんですか !!
> 参った !!
> しかし,まあ,なんという.
> どうしようかな ?  記事に追加しよかな ?
> 結局,このサイトの記事って,皆さんのおかげて生きているのね.
> ウッゥッゥッ.
>
> これ,あれなんですよね.Ansi と Unicode ではコードポイント(文字コード)
> が違うんですよね.それをね.なるほどね.


Ansi版で

自動変換を利用する場合は、
IdGlobal.GIdDefaultTextEncoding := encOSDefault; // 範囲外の文字は破壊される
IdGlobal.GIdDefaultTextEncoding := encASCII;     // 範囲外の文字は破壊される
IdGlobal.GIdDefaultTextEncoding := encUTF8;
のどれかを1回 どこかで代入する (デフォルトは、encASCII)
または
IdHTTP1.Getの第二引数で文字コードを指定する

自動変換させたくない場合は、(画像などのバイナリ、未整形で取得したい場合)
IdHTTP1.Getの第二引数でstreamを渡す
 これをさらに文字列に入れたい場合は、setlengthで調整した後にStream.Readで読み込む

Indyころころ仕様を変更しますね。困ったもんだ。

変更点
10.6.2                 , 10.5.8
IdTextEncodingType     , IdAnsiEncodingType
GIdDefaultTextEncoding , GIdDefaultAnsiEncoding



[11041] Re7:HTTPSサイトからのダウンロード返信 削除
2017/4/6 (木) 12:14:49 taka
Indyで円滑にアクセスするためには、
最低限として User-Agent を変更する必要があります。

● User-Agent
普及型のブラウザじゃないやつは、人間じゃねーということで一部のサイトではじかれます。
// ユーザー エージェント文字列の変更
// https://msdn.microsoft.com/library/hh869301(v=vs.85).aspx
// Indyのデフォルト: Mozilla/3.0 (compatible; Indy Library)

const UserAgent_IE11 = 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'; // IE11
一括で設定したい場合
  グローバル変数
  // IdHTTPHeaderInfo.pas: IdHTTPHeaderInfo.GIdDefaultUserAgent
  GIdDefaultUserAgent := UserAgent_IE11; // IE11

個別に代入したい場合
  IdHTTP1.Request.UserAgent := UserAgent_IE11; // IE11

Indyで はじかれるサイト: github


[11043] Re8:HTTPSサイトからのダウンロード返信 削除
2017/4/6 (木) 14:05:52 Mr.XRAY
▼ takaさん

> Indyで はじかれるサイト: github

あらまっ !
よし !! 記事書くぞ ! 気合いだ !
taka さん,申し訳ないのですが,この一連の内容も利用させて頂きます.
少し前もいろいろ頂きましたが (^^;


[11044] Re9:HTTPSサイトからのダウンロード返信 削除
2017/4/6 (木) 18:14:05 taka
▼ Mr.XRAYさん
> ▼ takaさん
>
> > Indyで はじかれるサイト: github
>
> あらまっ !
> よし !! 記事書くぞ ! 気合いだ !
> taka さん,申し訳ないのですが,この一連の内容も利用させて頂きます.

どうぞ どうぞ


Indyのsvnに Delphi Tokyo がないので
バージョンを確認すると
 C:\Program Files\Embarcadero\Studio\19.0\source\Indy10\System\IdVers.inc
 Indy 10.6.2.5366 とあるので
 svn: trunk rev 5366 が使われているということかな?

Delphi6で インストールできたIndyのリビジョン
  svn revision 5358 : "tags/Indy 10.6.2 - Berlin RTM"
  svn revision 5366 : trunk : たぶん Delphi Tokyo ?
  svn revision 5412 : trunk : 本日 2017/04/06の最新(不安定)版

※ trunk は、不安定版なのでコンパイルできないことがあります

コンパイル Fulld6.bat or Fulld_6.bat
〇 tags/Indy 10.5.5 - RS2010 RTM
× tags/Indy 10.5.7 - XE RTM
〇 tags/Indy 10.5.8 - XE2 RTM
× tags/Indy 10.6.0 - XE4 RTM
〇 tags/Indy 10.6.0 - XE5 RTM
〇 tags/Indy 10.6.0 - XE6 RTM
× tags/Indy 10.6.0 - XE7 RTM
〇 tags/Indy 10.6.2 - XE8 RTM
〇 tags/Indy 10.6.2 - Seattle RTM
〇 tags/Indy 10.6.2 - Seattle Upd1
〇 tags/Indy 10.6.2 - Berlin RTM

これにて、Delphi6のIndyインストール確認を終了します。


[11045] Re10:HTTPSサイトからのダウンロード返信 削除
2017/4/6 (木) 19:15:33 Mr.XRAY
▼ takaさん.どうもです.

> これにて、Delphi6のIndyインストール確認を終了します。

お疲れ様でした.そしてありがとうございました.
当方は,記事の構成をほぼ,頭の中で確定しました.
これから,実際に Delphi 6 にインストールしてスナップショットを作る予定です.

記事内に,本スレッドへのリンクを貼って,参考にして頂く形式にしようと
思っています.


[11049] Re10:HTTPSサイトからのダウンロード返信 削除
2017/4/7 (金) 18:45:43 taka
svnから入手したIndyのバージョン番号を
10.6.2.0ではなく
10.6.2.リビジョン番号 にしたい場合は、

svnでチェックアウトしたフォルダで
StoreRevNum.batを呼び出すと書き換わるようです。
★呼ぶ前に、バグがあるので StoreRevNum.batを開いてSET IndyLib=のパスを書き換えてください。
★tortoisesvnのコマンドSubWCRevが呼ばれるのでtortoisesvnにパスが通っている必要があります

汎用版
SET IndyLib="C:\Development\Projects\Indy\Indy 10\Source\Lib"

SET IndyLib=%~dp0
SET IndyLib="%IndyLib:~0,-1%"


INCM/CMT
Cyclamen v3.82