[delphi-users:3256] Indy最新版

573 views
Skip to first unread message

のべ

unread,
Jun 25, 2013, 4:17:12 AM6/25/13
to delphi...@freeml.com
渡辺です。

Indyの最新版をDelphi2010,XE2にインストールしたいのです。

SVNを使って最新版をダウンロードしたのですが、
色々試してみてもなかなかうまく行かないのです。

DEKOさんのページを拝見して
http://ht-deko.minim.ne.jp/tech033.html#tech062

Core
Protocols
System

の3つのフォルダーの中身をSourceフォルダーにコピーするとのことですが、

どれを使えば良いのでしょうか?
branches\DelphiNextGenでしょうか?
なにか安定していない感じですが。

tags\Indy 10.5.5 - RS2010 RTM でしょうか?
tags\Indy 10.5.8 - XE2 RTM でしょうか?
RTMが分からないのです。tagsも分からないですが。

trunk\Lib
でしょうか?

ごちゃごちゃやっちゃって、頭が混乱しているのですが、
コンパイルにたどり着いてもコンパイルエラーが出るのです。

例えば、

[DCC エラー] IdStackWindows.pas(287): E2137 メソッド 'GetSocketOption' が基本クラスで見つかりません

procedure GetSocketOption(ASocket: TIdStackSocketHandle; ALevel: TIdSocketOptionLevel;
AOptName: TIdSocketOption; var AOptVal; var AOptLen: Integer); override;

実際にはあるのですが、引数の定義が悪いようで、
最後の2つの引数を
var AOptVal; var AOptLen: Integer
ではなく
var AOptVal:integer; var AOptLen: Integer
とするとコンパイルは通ります。

[BRCC32 エラー] IndySystem160.vrc(60): file not found: IndySystem160_Icon.ico
とか。これは
MAINICON ICON "IndySystem160_Icon.ico"

MAINICON ICON "IndySystem_Icon.ico"
とすることでコンパイルは通ります。

今どのバージョンを使うべきで、そのファイルはSVNで捕ってきたときに
どれが正しいのかご存じの方いらしたら教えて下さい。

よろしくお願いします。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbgh9
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Jun 25, 2013, 5:33:42 AM6/25/13
to delphi...@freeml.com
渡辺です。

 続きです。



IndySystem160.dpkの
プロジェクトオプションで、
DCP出力ディレクトリと
パッケージ出力ディレクトリと
ユニット出力ディレクトリを設定した後でコンパイルしました。
これはエラー無く終了するのですが、

次の
IndyCore160.dpkのコンパイル時に
「F2051 ユニット IdGlobal は異なるバージョンの IdResourceStrings.RSCharIndexOutOfBounds によりコンパイルされています」
というエラーメッセージが出ます。

IdGlobalはIndySystem160に含まれており、
IdGlobal.dcuは今使ったコンパイラでコンパイルしたばかりです。

IdResourceStrings.dcuもできたばかりです。
IdResourceStrings.pasには

interface
resourcestring
 //中略
RSCharIndexOutOfBounds = 'Character index out of bounds (%d)';

という記述があります。

このエラーメッセージの意味はどういうものか
ご存じの方いらっしゃいませんか?




MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
いつでもどこでもメールチェック!freemlのスマートフォンアプリ
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbhtt
------------------------------------------------------[freeml byGMO]--

じゃぺ

unread,
Jun 25, 2013, 6:03:53 AM6/25/13
to delphi...@freeml.com
かわかみです

(2013/06/25 18:33), のべ wrote:
> 次の
> IndyCore160.dpkのコンパイル時に
> 「F2051 ユニット IdGlobal は異なるバージョンの IdResourceStrings.RSCharIndexOutOfBounds によりコンパイルされています」
> というエラーメッセージが出ます。

こちらだけ。

多分ですが、
DCP出力ディレクトリ
パッケージ出力ディレクトリ
ユニット出力ディレクトリ
の一覧を表示して、
IndyCore の順番を上か下に(多分上)変更すれば
エラーメッセージは消えると思います。
コンパイル時に一覧の上から順に(優先的に?)参照
されているようで、順番によって参照が正しくされないっぽいです。

参考になるでしょうか。




MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbhJv
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Jun 25, 2013, 4:33:14 PM6/25/13
to delphi...@freeml.com
かわかみさん、ありがとうございます。

プロジェクトオプションの
DCP出力ディレクトリ
パッケージ出力ディレクトリ
ユニット出力ディレクトリ
については

DCP出力ディレクトリ $(BDS)\lib\Indy10
パッケージ出力ディレクトリ $(BDS)\bin
ユニット出力ディレクトリ $(BDS)\lib\Indy10
だけを指定しており、継承もしていません。

ですので、順番も変えられなさそうです。

何か他にお気づきの点があったら教えて下さい。
ありがとうございました。



MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メールだけでみんなを招待できる便利機能♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbnfU
------------------------------------------------------[freeml byGMO]--

じゃぺ

unread,
Jun 25, 2013, 9:52:18 PM6/25/13
to delphi...@freeml.com
のべさん

DCP出力ディレクトリ
パッケージ出力ディレクトリ
ユニット出力ディレクトリ
という情報につられて、デタラメなアドバイスをしてしまったかもしれません。

ライブラリパス
ブラウザ検索パス
デバッグ用DCUパス
の順番はどうでしょうか?

私はIndy9とIndy10を使い分けていて、
Indy9が優先になっている時にIndy10のコードを
コンパイルしようとすると似たようなエラー
メッセージが出ていますので。

かわかみ



MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbrdJ
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Jun 26, 2013, 2:53:01 AM6/26/13
to delphi...@freeml.com
かわかみさん、ありがとうございます。

少し進んだと言いましょうか、全然進んでいないと言いましょうか。

DelphiXE2については、元に戻しちゃいました。
Delphi2010についてです。
dclIndyCore140.dpkについては上手くインストール出来ました。

dclIndyProtocols140.dpkをインストールしようとすると失敗します。
2つのエラーメッセージが順番にでます。

プロシージャエントリポイント
@Idglobal@ReadStringFromStream$qqrp15Classes@TStreamip18Sysutils@TEncodingが
ダイナミックリンクライブラリIndySystem140.bplから見つかりませんでした。

IndySystem140.bplは作ったばかりのものしかないとおもいます。
デフォルトの

パッケージ c:\Program files\embarcadero\rad studio\7.0\bin\dclDataSnapServerr140.bplを
読み込めません。指定されたプロシージャが見つかりません。

と出てしまいます。
DEKOさんのページでは旧Indyのバックアップ漏れを疑おう!とのことなので、
$(BDS)\bin
C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Bpl
等を見てみたのですが、なさそうなのです。

dclDataSnapServer140.bplがおかしい感じなんですが、
新しいIndyだとこのdclDataSnapServe140.bplにもっと機能を要求しているのでしょうか。

難しいです。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
いつでもどこでもメールチェック!freemlのスマートフォンアプリ
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbvlx
------------------------------------------------------[freeml byGMO]--

DEKO

unread,
Jun 26, 2013, 4:27:59 AM6/26/13
to delphi...@freeml.com
こんにちは。
現在、FTP にある Indy10_5014.zip (10.6.0.5014) は Delphi 2010 に正しくインストールできるようです。
(当方でもインストールして確認しました)

[インストール後のスクリーンショット (10.6.0.5014)]
http://ht-deko.minim.ne.jp/delphiforum/wp-content/uploads/20130626_indy10.png

バックアップとコピーが正しく行われていれば、以下の順番でインストールできます。

[実行時パッケージ (ビルド)]
IndySystem -> IndyCore -> IndyProtocols

[設計時パッケージ (インストール)]
dclIndyCore -> dclIndyProtocols

プロシージャエントリポイント云々の件は大抵がバックアップ (退避) 漏れです。
検索パスの中に元々の Indy (の残骸) が含まれており、そちらを参照してしまった場合に発生します。

Delphi 2010 のフォルダ内を "*indy*.*" で検索してみて何か出てこないかもう一度確認してみてください。
または、バックアップしたフォルダが検索パスに含まれていないかを確認してみてください。

次に考えられるのは出力先の指定ミスですが、パッケージ名が同じなので、
元々の Indy を正しくバックアップ (退避)していれば通常は発生しません。
(上書きされるハズですから)

--
by DEKO
-----------------------------
http://ht-deko.minim.ne.jp/
de...@ht-deko.minim.ne.jp
-----------------------------


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbwBq
------------------------------------------------------[freeml byGMO]--

DEKO

unread,
Jun 26, 2013, 4:34:00 AM6/26/13
to delphi...@freeml.com
誤: (上書きされるハズですから)
正: (バックアップしていなくても上書きされるハズですから)

--
by DEKO
-----------------------------
http://ht-deko.minim.ne.jp/
de...@ht-deko.minim.ne.jp
-----------------------------


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メールだけでみんなを招待できる便利機能♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbwGm
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Jun 26, 2013, 5:50:15 AM6/26/13
to delphi...@freeml.com
DEKOさん、ありがとうございます。

まだなかなか同じエラーに苦しんでいますが、
同じバージョンをインストール可能という情報があるだけでとても気が楽になりました。

10.6シリーズが使いたかったので、是非、これをインストールしようと思います。
まだ出来ていませんが、とりあえず、お礼まで。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbxTw
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Jun 26, 2013, 8:59:10 PM6/26/13
to delphi...@freeml.com
渡辺です。

書き忘れていました。
環境はWindowsXP 32bit
Delphi2010 Enterpriceです。

delphiの修正をしてまた同じ作業を行ったのですが、

@Idglobal@ReadStringFromStream$qqrp15Classes@TStreamip18Sysutils@TEncodingが
ダイナミックリンクライブラリIndySystem140.bpl
が相変わらず出てます。

IndySystem140.bplはPC全体を検索し、Document and Settingsにも入っていたので、適当な名前に変更してみましたが、変わりありませんでした。

IndySystem140.bplのエラーメッセージの後、

パッケージ c:\Program files\embarcadero\rad studio\7.0\bin\
dclDataSnapServerr140.bplを
読み込めません。指定されたプロシージャが見つかりません。

というエラーが出るのですが、
dclDataSnapServerr140.bpl
はIndyが作らないbplではないでしょうか?

でも、DEKOさんもEnterpriceでしょうか?

時間を見て再インストールしてみようかと思います。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
いつでもどこでもメールチェック!freemlのスマートフォンアプリ
http://ad.freeml.com/cgi-bin/sa.cgi?id=kb53S
------------------------------------------------------[freeml byGMO]--

DEKO

unread,
Jun 26, 2013, 9:47:52 PM6/26/13
to delphi...@freeml.com
こんにちは。

> でも、DEKOさんもEnterpriceでしょうか?

当方の Delphi 2010 は Professional です。

> dclDataSnapServerr140.bpl
> はIndyが作らないbplではないでしょうか?

作っていませんが、dclDataSnapServerr140.bpl が
Indy のパッケージに依存しているのかもしれませんね。

# Pro には dclDataSnapServerr140.bpl は
# 付属していませんので確認はできていません。

パッケージの依存関係は、$(BDS)\bin にある *.bpl を
XN Resource Editor で開き、RC Data > PACKAGEINFO を覗いてみると判ります。
ここに Indy のパッケージが含まれているのなら、Indy のパッケージが
正しく作れていないので、依存しているパッケージでもエラーが出るという事です。

[XN Resource Editor]
http://ht-deko.minim.ne.jp/tech053.html#XNRESOURCEEDITOR

--
by DEKO
-----------------------------
http://ht-deko.minim.ne.jp/
de...@ht-deko.minim.ne.jp
-----------------------------


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=kb6m1
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Jun 26, 2013, 10:12:41 PM6/26/13
to delphi...@freeml.com
DEKOさん、何度もありがとうございます。

早速使ってみました。

dclDataSnapServer140.bplの
RC Data->PACKAGEINFOを見ると、
必要なパッケージとして、
IndySystem140.bpl,
IndyCore140.bpl
IndyProtocols140.bpl
等上げられています。

また、Indyのホームページをよく見たら、
http://www.indyproject.org/Sockets/Docs/indy10Installation.de.aspx

3) In D/CB/RAD 2009-XE, Embarcadero's DataSnap framework is compiled against the Indy 10 packages that ship with the IDE. Installing a new version of Indy will render DataSnap unusable, as it will not be able to load the Indy packages anymore, and DataSnap cannot be recompiled by end users. If you need to use DataSnap, then you will need to maintain the original Indy 10 packages for use in DataSnap projects. You can use a separate installation of Indy 10 for non-DataSnap projects. This
was addressed by Embarcadero in D/CB/RAD XE2 so Indy 10 upgrades and DataSnap can co-exist.

IDE用に最適化されたIndy10が入っているので、Indy10を修正しないとだめだし、
でも、DataSnapを使っていないプロジェクト用に分けてインストールするんだよ、
のような感じに読めます。
ただ、can co-existとはありますが、
どうすればco-existできるのかはよく分かりません。

http://stackoverflow.com/questions/6497201/is-it-possible-to-recompile-the-datasnap-packages-in-delphi-xe-with-a-new-differ
にも議論があるのを見つけました。

もう少し色々探ってみます。

どうもありがとうございました。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メールだけでみんなを招待できる便利機能♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=kb67y
------------------------------------------------------[freeml byGMO]--

DEKO

unread,
Jun 26, 2013, 10:43:30 PM6/26/13
to delphi...@freeml.com
ここで言っている事は、

・Indy 10 のオリジナルはそのまま残す。
・別の場所に最新版 Indy 10 のパッケージをインストールする。
・DataSnap を使う場合にはオリジナルの環境を使う。
・Indy 10 最新版を使いたい場合は改変版の環境を使う。

という事でしょう (多分)。

Delphi には -r というオプションがあります。
例えば -rTEST として起動すると、別のレジストリが作られますので、
同じコンポーネントパッケージの違うバージョンを入れる事ができます。

Delphi を -rNEWINDY とかで起動し、
[コンポーネント | パッケージのインストール] で既存の Indy を削除します。
そして "Indy10 を別の場所にインストール" します。
DataSnap 関連のパッケージは事前に外しておきます。

[Delphi を普通に起動]
・オリジナルの Indy 10 が使われる。
・Datasnap 利用可能。

[Delphi を -rNEWINDY 付で起動]
・最新版 Indy 10 が使われる。
・Datasnap は利用できない。

こういった使い分けをしろと言っているようですね。

See Also:

[Delphi 起動時に渡せるスイッチは?]
http://ht-deko.minim.ne.jp/tech041.html#tech080

[Delphi Launcher]
http://ht-deko.minim.ne.jp/tech053.html#DLAUNCH
(ゴメンナサイ、XE までしかマトモに動作しません)

--
by DEKO
-----------------------------
http://ht-deko.minim.ne.jp/
de...@ht-deko.minim.ne.jp
-----------------------------


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=kb6WT
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Jun 26, 2013, 11:06:10 PM6/26/13
to delphi...@freeml.com
DEKOさん、ありがとうございます!

なるほどー。そういうことですか。

ちょっとまだ試せないので、少し時間が空きますが、
やってみます。

本当にありがとうございます!


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
いつでもどこでもメールチェック!freemlのスマートフォンアプリ
http://ad.freeml.com/cgi-bin/sa.cgi?id=kb7rf
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Jun 27, 2013, 7:31:04 PM6/27/13
to delphi...@freeml.com

じゃぺさん、DEKOさんありがとうございました。

だいたい、完成です。

Delphi2010EntにIndy10.6をインストールできました。
DataSnapとの共存はできませんが、
普段DataSnapは使わないので、問題有りません。
(なら、Proでいいのでしょうけど。)

ただ、プログラムを作成するときにtIDHttpを最初に使おうとすると、
ダイナミックリンクライブラリIndySystem140.bpl~
というエラーメッセージが出てしまいます。
(ツール->オプションでは作成したbplを最初に検索するように設定してあるのですけど。)

ですが、CoreDesignTimeに含まれるコンポーネントを最初に貼り付けた後だと
(例えば、tIdTCPClientなど)
tIDHttpを使ってもエラーが出ずに、使えます。
バージョン表示も正しく10.6.0.501?(最後は読めない。)
と出てきます。
一旦うまくいくと、tIDTCPClientは削除してもエラーが起きず、
Delphiを終了するまではtidHttp等使えます。
(ツール->オプションで指定したパス以外にも何か見ているのでしょうか?)


もしかしてどなたかの参考になるかも知れないので、
手順を書いておきます。

まず、-rNEWINDYで起動するショートカットを作成し、
(せっかくなので、そのままの名前をお借りしました。)
Delphi2010Entを起動。

コンポーネント->パッケージのインストール
で、DataSnap関連のパッケージを全部外しました。
Indyのパッケージも外しました。

適当なフォルダーを作成し、
Indy10_5014.zipを解凍したフォルダの中の
Lib\Core
Lib\System
Lib\Protocolsの中身をそこに入れます。

以下のプロジェクトをビルドします。
ただし、プロジェクト->オプションで
DCP出力ディレクトリ、
パッケージの出力ディレクトリ、
ユニット出力ディレクトリ、
を最初に作った適当なフォルダーに設定します。
(面倒なので階層を作らなかった。)

IndySystem140.bpl
IndyCore140.bpl
IndyProtocols140.bpl

以下の2つはrequiresの中身を一旦削除しました。
(こうしないといつものdcpなどを探してしまいエラーが出ます。)
protocolsの方はdclIndyCore140.dcpが必要なので作りたてのそれをしていします。


dclIndyCore140.bpl
dclIndyProtocols140.bpl
それぞれビルド->インストール
でインストールはできました。

何か、100点じゃないんですが、とりあえずはこれでもいいかなと。

じゃぺさん、DEKOさん助かりました。ありがとうございました。



MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=kbJPB
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages