トップページ⇒tech
982コメント291KB

【Delphi】 Indyコンポーネント 【C++Builder】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
The Indy Project
http://www.indyproject.org/

     ./\        /\
     /:::::::ヽ____/::::::::ヽ、
    / ::. _  .:::::::::::::  _::::ヽ_
  / / °ヽ_ヽv /:/ °ヽ::::::ヽ
 / /.( ̄( ̄__丶 ..( ̄(\  ::::|     ぐぐってもわかんないよ〜
. | .:::::::: )  )/ / tーーー|ヽ)  ) .::::: ::|
. | .::::...(  (..||.    | (  (    ::|     だれかたすけて〜
. | :::.  )  )| |⊂ニヽ .| ! )  )   ::::|
 | :  (  ( | |  |:::T::::.| (  (    ::|
 \:  )  )ト--^^^^^┤ )  )   丿
  / (  (        (  .(   \
/  .、.)  )       /  \  _ \

INDY TIPS
http://monazilla.org/document/indytips.html

DelWiki - Indy
http://onigiri.s3.xrea.com:8080/delphi/index.php?Indy

Indy 日本語ヘルプ
http://www.borland.co.jp/delphi/del7docup.html
0116デフォルトの名無しさんNGNG
BCBがVCL対応だけのためにバージョンアプしてくれれば良いと思う。
Delと同時で2年に1回で良いから。
0117デフォルトの名無しさんNGNG
>>115
ttp://inagi.himitsukichi.com/~aozora/cgi-bin/pukiwiki/pukiwiki.php?Indy9%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

上見て、まず9.0.15を入れてみてみ。
0118デフォルトの名無しさんNGNG
indy9.0.18、Memcheckであれすると1個メモリリークが報告されるのだけれども…
面倒だからソースは追ってないが。
uses に IdHTTPを追加したときに確認。
0119デフォルトの名無しさんNGNG
D2005にはIndy10が入ってるのね、、、

ということで>>118特攻してみれば?w
0120デフォルトの名無しさんNGNG
IdHTTPオブジェクトでPOSTを使いたいとおもっています。
その際、HTTPヘッダに、Requestプロパティにない新しい項目を追加したいのですが、
ヘルプにはそれらしいものが見あたりません。
誰かおながいします
0121デフォルトの名無しさんNGNG
http://www.monazilla.org/document/indytips.html
0122120NGNG
これですね
クッキーを添えて送信する
FIdHttp.Request.ExtraHeaders.Add('Cookie:NAME=HOGEHOGE'); // こんなかんじ
FIdHttp.Post(Url, Source, Res);

ありがとうございました
0123デフォルトの名無しさんNGNG
とおもったらエラーがでます。
DelphiでなくBuilderつかってます。

IdHTTP1->Request->ExtraHeaders->Add("Cookie: NAME=mint; MAIL=sage;");

[C++ エラー] Unit1.cpp(24): E2316 'ExtraHeaders' は 'TIdHTTPRequest' のメンバーではない
0124デフォルトの名無しさんNGNG
>>123
Indy9でも入れれ。
0125デフォルトの名無しさんNGNG
Indy9はインストールしているはずなんですが。。。
ちょっとしらべてみます。
古いIndyはアンインストールしなければいけないんでしたっけ?
0126デフォルトの名無しさんNGNG
>>125
・・・・・・・
0127デフォルトの名無しさんNGNG
沈黙しないででなんかしゃべってください
おながいします
0128デフォルトの名無しさんNGNG
ExtraHeadersの型って何?
たぶんExtraHeaders->Strings->Add()とかだと思うけど
0129デフォルトの名無しさんNGNG
っと、その前か
0130デフォルトの名無しさんNGNG
>>123
Indy9から若干プロパティまわりが変更されてるからヘルプ見た方がいいよ。

IdHTTP1.Request にセットするのは TIdHTTPRequest

TIdHTTPRequestの SetHeadersメソッドで、TIdHeaderListを格納
TIdHeaderListはTStringListからの継承
0131130NGNG
とりあえずこんな感じかな・・・
var
exHeaders: TIdHeaderList;
begin
exHeaders := TIdHeaderList.Create;
exHeaders.Add('hogehoge');
IdHTTP1.Request.CustomHeaders := exHeaders;
IdHTTP1.Request.SetHeaders;
(
)
0132123NGNG
参考になりました
ありがとうございます!
0133デフォルトの名無しさんNGNG
INDY9で
TidHTTPと
TIdHTTPServer
で
IEなどのブラウザからのGETリクエストをTIdHTTPServerで受信して
そのURLをTIdHTTPで取って来て
そのデータにサーバ側でちょっとデータを付け足してIEに送り返すみたいな
ようは2CHの禁断の壷みたいなHTTPプロシキサーバをつくっているのですが
TIdHTTPServerは大きなデータを送り返すとIEでは”サーバが見つかりません”
になってしまうようなので
TIdHTTPServerで大きなデータを送り返す場合は、プロパティの設定などが必要なのですか?
知ってる人教えて!おねがいします。
0134133NGNG
ContentTextプロパティ
じゃなくて
ContentStreamプロパティ
をつかえば送れそうです。
0135デフォルトの名無しさんNGNG
IContent-Encoding がgzipで返されたデータをデコード処理してくれるメソッドってないんでしょうか?
自分でzlibをincludeして、デコードするしかないんですか?
0136デフォルトの名無しさんNGNG
上は
×IContent-Encoding
○Content-Encoding
です
0137デフォルトの名無しさんNGNG
だれかおながいします
0138デフォルトの名無しさんNGNG
2chブラウザとかでも別にzlib使ってるよ。
0139デフォルトの名無しさんNGNG
あーやっぱり自前で処理するしかないんですか。
わかりました。
0140デフォルトの名無しさんNGNG
リッチテキストコンポーネントはありますが、
HTMLかSGMLを編集できるコンポは無いでつか?
0141デフォルトの名無しさんNGNG
>>140
SynEditとかは?
0142デフォルトの名無しさんNGNG
WYSIWYGでだったらDHTMLのOCXをラップしたコンポがあったかな?
UIWebBrowserと同じ作者さんが作っていたような気が。
0143デフォルトの名無しさんNGNG
TDHtmlEdit
つーか、スレ違いじゃない?
0144デフォルトの名無しさんNGNG
そういえばそうだな
0145デフォルトの名無しさんNGNG
Indy SSL Buddyの使い方教えてヨロ
0146デフォルトの名無しさんNGNG
便利なんだけどなー。
日本人用じゃないからなのか、
日本語のメールだと例外が出ることがしばしば…。

などと保守。
0147デフォルトの名無しさんNGNG
>>146
原因調べてここで晒せ

と突っ込みつつ保守。
0148デフォルトの名無しさんNGNG
TIdMessage.LoadFromStreamについて教えてください。

procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TMemoryStream;
begin

Stream := TMemoryStream.Create;
IdMessage1.LoadFromFile(正しいフォーマットのファイル);
IdMessage1.SaveToFile(ちゃんとロードできたか?);

IdMessage1.SaveToStream(Stream);

IdMessage1.LoadFromStream(Stream);
IdMessage1.SaveToFile(ストリームからのロード);

Stream.Free;
end;

上記のコードで、「ちゃんとロードできたか?」のファイルはちゃんと出力されるのですが、
「ストリームからのロード」ファイルはDateヘッダと本文が空のメッセージが出力されます。
なぜでしょうか? いろいろいじくり回して一番簡単なテストコードを組んでみたつもりですが、
これから先に進めません。
環境はDelphi7+Indy9.0.18です。Delphi2005Trialでも試してみましたが同じようでした。
0149148NGNG
>>148
スーパアフォでした。
Stream.Position := 0;
が必要。ここで発見→http://www.web-one.org/new-5557661-4926.html
TStream使うの初めてなんだ許して

0150デフォルトの名無しさんNGNG
>>147
出来るもんなら、やっちゃるワイ。
それこそ外人にメールで報告しちゃるワイ。
ペラペラとな!
出来ねーっつーのw

と、返しで保守。
0151デフォルトの名無しさんNGNG
>>150
それができるようになれば
ネ申と崇められるわ君のスキルは数倍上がるわそりゃあもう大騒ぎさ
ということでめげずに地道に追いかけろと他人事のように保守
0152デフォルトの名無しさんNGNG
ttp://pc5.2ch.net/test/read.cgi/tech/1093654251/

この画面のデモってどこから落とすの??
0153デフォルトの名無しさんNGNG
>>151
君もなー。
お互いなー。

ってことで保守。

>>152
おっしゃってる内容がよく分かりません。
0154デフォルトの名無しさんNGNG
>>153
これですた…
ttp://www.indyproject.org/teams/Demo/demolisting80.html
0155デフォルトの名無しさんNGNG
ttp://www.indyproject.org/Indy/download/Borland.iwp
0156デフォルトの名無しさんNGNG
>>155デモは別画面でおとせってことっすね
thx!
0157コロスケ05/01/20 01:43:22
保守ナリよ〜 キテレツ〜
0158デフォルトの名無しさん05/01/31 14:45:47
初心者スレのマルチポストになってしまいますが・・・

>Indy使ったときに、
>インターネットに接続していないと、
>ConnectionErrorとかダイアログが出てきますが、
>あのメッセージを自分で変更できないのですか?
>また、表示させない設定にはできないのでしょうか?
>ご存知の方、よろしくお願いします。
0159デフォルトの名無しさん05/01/31 15:43:13
例外でくくればいいんでないの
0160デフォルトの名無しさん05/01/31 16:14:24
例外・・・?
とは何でしょうか?
0161デフォルトの名無しさん05/01/31 16:19:22
try〜except
0162デフォルトの名無しさん05/01/31 20:40:01
D6personalでindy10に突貫したら
Automatic Installなんて便利なものがあったからいれたら

[致命的エラー] Unit1.pas(7): ユニット IdBaseComponent は異なるバージョン System.RTLVersion によりコンパイルされています
で使えなかった。

Service Pack 2
RTL Update 3 Delphi 6

両方当ててるんだけどな
0163デフォルトの名無しさん05/01/31 20:52:26
>>161
追加質問よろしいでしょうか?
try・・・でそのあとの命令文を試みて、
途中でエラー(例外?)が怒ったらexceptを、
起こらなかったらそれを無視して
exceptを通さず、そのまま次の行に行く。

try
begin
...
end;
except
begin
...
end;
ってな風に入れればよいのですか?
0164デフォルトの名無しさん05/01/31 22:10:35
すこしヘルプ読んでブレーク掛けながら試してみろよ
テスト的に故意に例外作るなら零除算とかだけど、Abortって例外生成もあるからな。
0165デフォルトの名無しさん05/02/01 08:23:37
>>162
以前のバージョンのIndyのランタイムモジュールが残ってたりしない?
Windows\system32フォルダにあるのも削除して入れてみては?
0166デフォルトの名無しさん05/02/01 09:02:17
>>164
try
except
end;で解決。ありがとうございます。
0167デフォルトの名無しさん05/02/02 14:52:17
例外なんて初心者話題はやめて、Indy SSL Buddyについて語ろうじゃないかage
0168デフォルトの名無しさん05/02/10 00:35:19
超初心者で申し訳ないが、Indy10の
TIdSimpleServer使って、ソケットをListenしたままの状態で、Windowsを終了させようとすると、
OSからのアプリ強制終了シグナル(?)に反応せず、そのまま居残り続け、
「このアプリは応答しません。」が出てしまう。

どうすりゃよかっぺか・・・・・・・ TThread使って、Listenの時だけスレッド上で回しておくべきか・・・・
0169デフォルトの名無しさん05/02/23 10:03:10
IndyのHTTPサーバーを使ってアプリを作りまくろうと思ってますが、
アプリ毎にポート変えても、1台のPCでHTTPサーバー複数起動するとマズイでつか?
017016905/02/23 10:07:56
HTTPサーバーが処理せず、他のサーバーに応答処理させる、みたいな事出来ましたっけか?
0171デフォルトの名無しさん05/02/23 12:00:44
>>168
APの終了処理が不適切なのでわ?
>>169
別に
>>170
できるっしょ
017216905/02/23 13:12:53
できるんですか、了解。
でも、良くわかんないのが、プロパティがDefaultPortになっていますね。
Port番号が実行時に変わるんかよ、そんなの把握できないよ、みたいな。
0173デフォルトの名無しさん05/02/24 07:30:45
Indy10は一体いつ出るの?
0174デフォルトの名無しさん05/02/24 08:14:55
>>173
もう出てますが何か?
>>172
D7のヘルプにIndyの日本語版ヘルプが入ってるから
なぜ「Default」なのか読んでみれ
D6perだったらD7のヘルプアップデートをゴニョゴニョせい
0175デフォルトの名無しさん05/02/24 08:44:50
C++Builderへのインストール方法を教えてください
017616905/02/24 09:59:51
何でも知ってまつね>>174

ヘルプみると、「Hypertext Transfer Protocol 仕様に基づいて,サーバーのリスニングスレッドのデフォルトポート番号」とありますね。
だから、仕様の名称そのまま取って、Default Portってことなんかなぁ。

色んな種類のサーバーアプリを作ってみようかと思うんですが、
業務毎にポート変えるってのはどうなんでしょ。
TCP/IP的には利用内容毎にポートを変えるということですが、
HTTPはポート80で固定して、参照アドレスでアプリ切り替えようかなぁ。
0177デフォルトの名無しさん05/02/24 16:05:14
>>176
おまいが知らなさ杉の気もするけど・・・。
0178デフォルトの名無しさん05/02/24 16:31:40
サーバーは固定、クライアントは自由、IP+ポートで十分識別可能
0179デフォルトの名無しさん05/02/24 17:09:48
>>175
ググれ!と言いたいけど、まとまった情報があまりないし、FAQになりつつあるな・・・
BCBスレ辺りにテンプレにしておいた方がいいかも。一応、まとめたから添削よろしく。

まず、Indy10は今のところBCBをサポートしていない。あと、BCB6とIndy9が前提。

1.一度、BCBをアンインストールしてから、再インストール。
そのときに、完全インストールではなく、Indyは除外してインストールすること。もちろん、Update4を当てるのも忘れずに。
(BCBのインストーラーを起動してIndyだけ削除してもいいけど、トラブルの可能性あり。再インストール推奨。)
2.アーカイブを適当なフォルダで展開。
3.Indy_9_00_xx_srcの下にあるFullc6.batを実行
4.展開したフォルダにC6というフォルダが出来るので、これをフォルダごと$(BCB)\lib\にコピー。コピーしたら、フォルダ名をC6でなく、Indy9とする。
5.BCBを起動する。[ファイル]−[すべて閉じる]を選択して、プロジェクトが何も開かれていない状態にする。
6.IDEの[コンポーネント]−[パッケージのインストール]を選択。「追加」をクリックして、$(BCB)\lib\Indy9\dclIndy60.bplを選択。
7.IDEの[ツール]−[環境オプション]から[ライブラリ]タブを選択。
8.ライブラリパスに$(BCB)\lib\Indy9\を追加。

内容は↓を参考にした。
ttp://deuxdeux.hp.infoseek.co.jp/gikobuild.html

あと、漏れの環境だと[プロジェクト]−[オプション]−[ディレクトリ/条件]の
インクルードパスにも$(BCB)\lib\Indy9\を追加しないとリンカエラーが起きる。
それも、Includeの優先度を$(BCB)\include\vclより高くし無いと駄目。
0180デフォルトの名無しさん05/02/24 17:36:47
>>176
手段と目的が入れ替わっているような気がする
Delphi+Indyでやらなあかんもんなのかしばらく自問自答しれ
0181デフォルトの名無しさん05/02/24 18:43:52
>>180
やらなあかん。
0182デフォルトの名無しさん05/02/25 08:09:36
>>181
じゃあ止めないw
>>176の件はhttpだというのならブラウザでアクセスするんだろうから
Clientのことを考えればポートを変えるのは得策でない
よって最終行の方法を推奨する
Bindingsプロパティの「...」押せばどうやればいいかわかるっしょ
0183デフォルトの名無しさん05/02/28 19:01:04
>>182
いや、実はhttpでありながらブラウザじゃないんだ。
Winと機器の通信みたいな。
HTTPだとどこでもライブラリ有りだし、ルータ越えしやすいし。
となると、ポートはやっぱ80しかダメか。
0184デフォルトの名無しさん05/03/01 08:25:25
>>183
ルータ越えしやすいってそれは違うだろという突っ込みはともかく
普通のhttp通信に紛れ込ませたいのであれば80しかないだろうな
0185デフォルトの名無しさん05/03/01 09:56:06
IndyのHTTPサーバーで作ったアプリが、
IPv6対応してるかどうか聞かれたら、
何と答えれば良いのでしょうか?
0186デフォルトの名無しさん05/03/01 10:01:43
してません
0187デフォルトの名無しさん05/03/01 10:03:17
Q「今後の対応はどうなりまつか?」
0188デフォルトの名無しさん05/03/03 11:17:11
POP3でサーバに残す設定で、一度読み込んだメッセージを再度読み込まないようにするにはどうしたらよいのでしょうか?
0189デフォルトの名無しさん05/03/03 15:06:34
>>188
MessageID憶えておけば?
0190デフォルトの名無しさん05/03/03 15:52:21
>>188
UIDLをつかう
0191デフォルトの名無しさん05/03/04 11:07:44
IndyのHTTPサーバーで、クライアントにBASIC 認証ダイアログを出させるには、どうしたら良いでつか?
0192デフォルトの名無しさん05/03/04 19:39:59
403を返せ
0193デフォルトの名無しさん05/03/04 23:18:02
401じゃなかった?
0194デフォルトの名無しさん05/03/08 08:57:11
サンプル無いんでつか?

その後認証ダイアログに入れられたユーザ、パスワードの取り方も知りたいし...
0195デフォルトの名無しさん05/03/09 07:48:52
>>194
サンプルは知らないけど、新月っていうP2PBBSのDelphi版で
IndyのTIdTCPServerを使ってBasic認証を使ってた。
この辺りを参考にしたらガリガリとならかけそう。スマートなやり方誰かキボンヌ
ttp://www.studyinghttp.net/auth
ttp://www.studyinghttp.net/rfc_ja/rfc2617.ja
ttp://www.ietf.org/rfc/rfc2617.txt

「WWW-Authenticate: Basic realm="hogehoge"」を含む
HTTP/1.0 401 Authorization Required を返すと
ブラウザがダイアログ出してパスワードとかが入れられて
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
とかでリクエストがもう一回来るから、Base64をデコードしたら userid:password ←コロンで区切ってある
が入っているらしい。

でいいかしら。
0196デフォルトの名無しさん05/03/09 15:42:01
>>194
uses に IdContext を手動で追加 (何故か自動では追加されないらしい)

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
 if (ARequestInfo.AuthExists = True) and
   (ARequestInfo.AuthUsername = 'username') and
   (ArequestInfo.AuthPassword = 'password') then
 begin
  // Auth OK
  // AResponseInfo.ResponseNo := 200;
 end else
 begin
  // Auth NG
  // AResponseInfo.ResponseNo := 401;
  AResponseInfo.AuthRealm := 'input username and password'
 end;
end;

Indy10 しか使ったことないので、Indy9 ではどうなのか分かんないけど。
019719405/03/10 09:53:04
サンクスでつ>>195 >>196

これで出来そうです。
0198デフォルトの名無しさん05/03/10 15:44:08
>>196
ありがとう。
こんなプロパティあるのね。Indy9でもありました。
0199デフォルトの名無しさん05/03/12 05:09:02
Indyでsshを使ったプログラムは作れますか?
たとえば、sshでログインしてsftpでファイルの転送などはできるのでしょうか?
0200デフォルトの名無しさん05/03/12 14:45:34
>>199
ちょっと調べてみたら、Indy10 には IdSSH.pas という期待出来そうな名前のファイルが。
でも、中身は「作るとすればこんな感じかなぁ」という、要するに何も無い状態…。
つーことで今の所は自分で対応させる以外の方法はなさそうだね。
0201デフォルトの名無しさん05/03/13 21:39:50
>>53 の方法でSSL試してみたら、
繋がることは繋がるけど、すげぇ時間がかかるんだけど……
なんででしょうか?
なんかkeyかなんかの設定しないとダメなの?
ぐぐってもわかんないよ〜
020220105/03/13 21:45:26
ちなみに、WinXP Pro + Delphi7 Pro + Indy9(最新版)です。
環境かかなくてすいません。
0203デフォルトの名無しさん05/03/14 10:13:16
>>201
DNS 絡みの問題じゃないのかな。名前解決がうまくいってないとか。
どのくらいの時間がかかるのか具体的な秒数が分かればなんとなく原因も分かりそう。
020420105/03/15 06:20:50
特定のサイトで遅くなるみたいなんで、DNSがらみっぽいですね。
40秒ぐらいかかります。
0205デフォルトの名無しさん05/03/16 10:24:14
IdHL7.pas って何で塚?

もしかして、電子カルテのHL7プロトコル?
0206デフォルトの名無しさん05/03/16 22:10:27
>>205
Indyのヘルプより・・・

> TIdHL7 クラスは,HL7 Minimal Lower Layer Protocol を実装したものです。

0207デフォルトの名無しさん05/03/20 18:15:03
IdIPWatchを使うと、「グローバルIP」は所得できるんでしょうか?
またそうじゃないとしたら手段はあるのでしょうか?

他のソフトで所得しているのを見ると、不思議で不思議でしょうがないです。
ご存知の方、よろしくおねがいします。
0208デフォルトの名無しさん05/03/21 01:58:12
>>207
そのパソコンがGIPを持っていれば取得できる
0209デフォルトの名無しさん05/03/21 02:08:26
ここ半年、いつも取得と所得を間違えてるヤツがいるけど同一人物なんだろうか?
0210デフォルトの名無しさん2005/03/24(木) 20:48:12
最近知ったんですが、ICSというIndyに似たフリーのコンポ集があったんですね
http://www.overbyte.be/frame_index.html
このコンポの評判ってどうでしょうか?
0211デフォルトの名無しさん2005/03/24(木) 21:06:12
>>210
かちゅ〜しゃはそれらしい。
0212デフォルトの名無しさん2005/03/24(木) 23:44:54
(´-`)。o ○ (javascriptオフで見に行ったらな〜んにも表示されないページって、
正直どーなんだろう…)
0213デフォルトの名無しさん2005/03/28(月) 09:15:55
indy10をbcbにインストールすることはできますか?
0214デフォルトの名無しさん2005/03/31(木) 19:45:48
>>213
コンパイルとインストールは出来たけど、BCBはサポートされていないからなのか
実行時にエラーが出る。
それとも、やり方が間違ってるのかなあ?
0215デフォルトの名無しさん皇紀2665/04/01(金) 00:14:47
それはエラーによるんじゃないの?
「無理!」って出てるんなら、無理なんだろうしw
■ このスレッドは過去ログ倉庫に格納されています