トップページ⇒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
0052デフォルトの名無しさんNGNG
初めてindy9入れてみた。
デモをコンパイルして動かしてみた。
ヘッダは表示されるのに、本文は表示されなかった。
昨日、ずっといじってたが、成果は出なかった。

日記はチラシの裏側(中略)な!
0053デフォルトの名無しさんNGNG
>>51
Indy9 しか使ったこと無いから他は知らんけど。

http://www.indyproject.org/ssl.html

ここから辿って OpenSSL DLLs for Indy をゲッツ。
とりあえず DLL は exe と同じフォルダに入れておく。

TIdHTTP と TIdSSLIOHandlerSocket をフォームに貼り付けるなりして使えるようにして
TIdHTTP の IOHandler プロパティに IdSSLIOHandlerSocket1 とかをセット。
あとは URL に https から始まる文字列をセットするだけ。
TIdHTTP 以外で使う場合は良く分からん。
005452NGNG
ふーむ。
どうやら他の人はちゃんとメールが受け取れるようだな。
不思議不思議。
OSで違うもんなのだろうか?
「デモ動かしたけど、本文だけ受信しない」って人が現れるのを待つとするか…。
0055デフォルトの名無しさんNGNG
>>54
ぱっと見ただけだけど、ヘッダだけ表示するように作ってある気がする。
本文も表示するように変更すれはいいんじゃないかと。
日本語ならSJISに変換しないとまともに読めないかもしれないけどね。
005652NGNG
>>55
レスどもどもです。
うーん。そーなのかなぁ?
一応、ツールボタンの3番目が受信かと思っていたのだが…。
今、見直してみたら「retrieve」って書いてあるなぁ…。
retrieveって、「検索」?
でも、一応「メモ」貼ってあるし…。ソレに本文出すようになってる
ようにしか見えないなぁ…。
はてはて。
005755NGNG
>>56
初めにメールのリストを取得して、その後メール本文を受信する仕様だったのね…。
やっぱ、ぱっと見ただけじゃ駄目だな。申し訳ない。

ってことで調べてみたんだけど、どうやら本文しかないメールの場合
Pred(Msg.MessageParts.Count) が -1 を返しているのが原因みたい。
試しに本文書いて添付ファイルを付けたメールを受信させてみると
うまくいったです。

なので、Pred(Msg.MessageParts.Count) が -1 の時は本文のみ、
そうじゃないときは添付ファイルあり、みたいな処理に変えないと駄目っぽい。
多分途中で仕様を変更したけど、サンプルはそのまま変更してないんでしょうね。
まぁ妥当な仕様変更だと思うけど。
005852NGNG
>>57
おお?レスどもどもどもです。
インストールした日に色々いじくってて、その辺が「違う感」があったんですが…。
添付ファイルですか…。
「ソレが変な値返してて、スルーされてんなー」とは思ってましたが。
うーん。

検索しても、「MailClientのデモが変だ」ってのがひっかからない(?)のは
あまりメールに関していじってる人が少ないのかな?
結局、「本文だけ」の場合はどーしたらいいのか、分からないままですが(^^;。
005952NGNG
おろろ。添付ファイル付きを自分のメルアドに送ってみたけど、
一覧に出ない…。
試しにもう一つ、添付ファイル無しを送ったらソレは出てきた…。
うーん。ワケが分からん。

TIdText(Msg.MessageParts.Items[intIndex]).Body
↑
コレも怪しいんだよなぁ。

「//body text」って注釈入れてんのに。不思議不思議。
006052NGNG
連続スマソ。

自分で「ひっかからない」と書いたけど、検索方法を変えたら
そこそこあった。

んで、
分岐(コレはスルーされるから)の前に
TIdText(Msg.MessageParts.Items[intIndex]).Body ではなくて、
↓
memo1.Text:=msg.Body.Text;
ってやったら本文取れましたよ!

うーむ。
英語じゃなくて、ドイツ語の掲示板だったからよく分からんかったが、
ありがとう!ドイツ人!w

でも、こんなんでいいのだろうか…。とりあえず、もう寝ます。
006152NGNG
ありゃ、また連続か…。

一応「本文」も取れるようになったんで「自分用・柔軟なスパム削除ツール」は
出来ました。

が!相変わらず添付メールは一覧されない…。
不思議不思議。

って、一応完成したから調べてないんだけどw
006252NGNG
すんまへん。ほんま、すんまへん。
何のことはない。自分んとこのプロバイダで添付ファイル付きメールをサーバーから
削除する設定にしてました…。
ほんま、すんまへん(^^;
ほな。
0063デフォルトの名無しさんNGNG
Indy10はいつですのですか?
0064デフォルトの名無しさんNGNG
>>63
とりあえず日本語を勉強すれ
0065デフォルトの名無しさんNGNG
最後の「ですの?」は余計だったな。
0066デフォルトの名無しさんNGNG
Indy10はいつですにょ?
0067本田NGNG
>>63
http://www.indyproject.org/download/Borland.html
0068デフォルトの名無しさんNGNG
マジかよ!超サンクス>>53
そんなに簡単なのかよ。迷ってたけど使おう!

TIdHTTPServer側はまだ分からんけど。
ライセンスも難かしかった筈だけど英文読むか。
006968NGNG
http://www.indyproject.org/teams/Demo/demolisting80.html

デモ見つけますた。

Components usedが
・TidHTTPServer
・TidServerInterceptOpenSSL
になってるので試してみまつ。
0070デフォルトの名無しさんNGNG
保守
0071デフォルトの名無しさんNGNG

9.00.17が出てるね

0072デフォルトの名無しさんNGNG
9が出たせいか、Indy OpenSSL DLL's for Indy ページ消えた!
0073デフォルトの名無しさんNGNG
>>72
ほい。まだ試して無いのでレポートきぼー。

SSLBuggy
http://www.indyproject.org/SSL.iwp
0074デフォルトの名無しさんNGNG
>No Inherent License
>Indy allows you to do SSL by providing the code,
> but we do not provide a license to use SSL.
> If you use SSL, it is up to you to make sure that you are legally permitted to use it
> in the country you are in and for your application.

ライセンス難しそう。
国によって使えないと。
それ以外は自由なのか?
0075デフォルトの名無しさんNGNG
C++Builderへのインストール方法とかが書いてあるページって無いの?
0076デフォルトの名無しさんNGNG
GETしたらeucってやつだから文字化けしちゃうよ〜
変換するにはどうしたらイイのぉ?
アセンブラだと一発なの?
0077デフォルトの名無しさんNGNG
釣り?
0078デフォルトの名無しさんNGNG
>>76
NKF32.dllでなおせばいいやん
0079デフォルトの名無しさんNGNG
IndyページからSSL Buddyのインストーラ落としました。
これは何に使うもんでしょう?
0080デフォルトの名無しさんNGNG
>>79
何に使うのか分からないのは、多分今の>>79には必要ないから、かな。
必要になった時にはSSL Buddyという名前だけで
ある程度予想が付くようになってるはず。
それまでは気にしなくていいと思うよ。
0081デフォルトの名無しさんNGNG
SSL Buddy教えて!
0082デフォルトの名無しさんNGNG
Indy普及のためには意地悪せず、教えあおうYO!
0083デフォルトの名無しさんNGNG
9.0.18age

BCB5だと9.0.17はコンパイルエラー出たんだけど直ったYo!
0084デフォルトの名無しさんNGNG
IndyのSSL Buddyとは、



↓
0085デフォルトの名無しさんNGNG
変更
9.0.16から9.0.18の変更点ってどこに書いてあるの?
0086デフォルトの名無しさんNGNG
>>85
9.0.16からは9.0.17は知らないけど、9.0.17から9.0.18は IdVers.incの修正のみと
思われ。
008786NGNG
あ、IdGrobal.pasが抜けてた
008852NGNG
「uneven size in decodetostream」って例外が出たんで、
検索してみたら「10にしたらいいんでないの?」ってやりとりが。
で、今10をDL中。
信用して良いんだろうか(^^;
008952NGNG
うーむ。DLしたは良いがインストール方法がさっぱりw
こりゃβ取れるのを待てという思し召しかしら?
0090デフォルトの名無しさんNGNG
どっちかというとβが取れるように協力しろ、ってことなのではないかと。
009152NGNG
>>90
うーん。出来るものなら協力したいけど、
あっしなんかおこがましくてとんでもございませんって話ですよ。
「あーIndy使ったら楽にメールやりとり出来るな〜」くらいにしか
考えてなかったレベルなんで(^^;
「こーやりゃいいのか…(サンプル身ながら)」って適当に試行錯誤してるだけ状態。
009252NGNG
ありゃ、誤字…。
「見ながら」。
0093ななしへたぐらま ◆XcB18Bks.Y NGNG
Indy 9.0.18のIdTCPServer/IdTCPClientコンポでクライアント/サーバーアプリを作っています.

クライアントからの命令をOnExecuteイベントではなくコマンドハンドラで処理すると
OnExceptionイベントハンドラ存在していても
例外生成時に接続が切れてしまいます.

OnExceptionイベントハンドラで例外が生成された場合は
OnExceptionイベントハンドラを実装することで接続は切れなくなったのですが….
コマンドハンドラを使う場合はコマンドハンドラごとに例外処理コードを書かないとダメなのでしょうか.
0094デフォルトの名無しさんNGNG
>>93
OnNoCommandHandler を使う。
0095ななしへたぐらま ◆XcB18Bks.Y NGNG
レスありがとうございます.
しかしうまくいきませんでした.

試行錯誤の結果,
IdTCPServerコンポのReplyExceptionCodeプロパティに0以外の値を入れることで
エラーをトラップしてくれるようになりました.
(ヘルプは精読しないといけないなと少し反省.)
しかしメッセージはエラーメッセージそのものになってしまうので…

  901 リストのインデックスが範囲を超えています (0)

ちょっと恥ずかしいです.
これが嫌ならやはりコマンドハンドラごとにトラップしないと駄目かも.
0096デフォルトの名無しさんNGNG
IndyのSSL Buddyを使ってる人居まつか?
009794NGNG
>>95
procedure TForm1.IdTCPServer1NoCommandHandler(
 ASender: TIdTCPServer;
 const AData: String;
 AThread: TIdPeerThread);
begin
 try
  // AData で各種コマンド処理
 except
  ShowMessage('例外発生');
 end;
end;

コマンドハンドラ使わずに、こんな感じで処理するのは
どうかな、という話だったんだけどね。ま、好きな方を選んでくれっす。
0098デフォルトの名無しさんNGNG
C++Builderで使っている人いますか?
インストール方法を教えてください。
0099デフォルトの名無しさんNGNG
Pro版のCD-ROMの中の人がインストールしてくれます。
010052NGNG
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
>>98
当方、delphiなので分からないけど、↑ではどう?
0101デフォルトの名無しさんNGNG
TIdPOP3でメールの受信チェックをしていますが、
ごく稀にEIdConnClosedGracefully例外が発生します。
稀過ぎてデバッグ中に発生したことがなく、発生原因がつかめません。
何が原因かわりますでしょうか?

IdPOP3.Connect();
Count:=IdPOP3.CheckMessage;
//ここで各メールのヘッダーを読みこんで新着を確認。
IdPOP3.Disconnect;
0102デフォルトの名無しさんNGNG
ブロードキャストでデータを送るプログラムを作ってるんですが、
テストする時って同じPCではテスト出来ないの?
ネットのことを勉強しろって言われると思うけど、取り敢えず教えてくれ。
0103デフォルトの名無しさんNGNG
>>101
http://www.indyproject.org/KB/

ナレッジベースを活用しましょう。

>>102
受け取るプログラムも一緒に動かしておけば
同一PC上でもテストは出来ると思います。
でも何作ってるの?
0104102NGNG
伝言板というか回覧板というかそんなのを作ろうと思いまして。
IndyのUDPのデモを見たのですが、メッセージのやりとりが出来そうにない物ですから、
同じPCの中ではテスト出来ないのかなと思った次第です。
ブロードキャストとUDPは関係ない?
0105デフォルトの名無しさんNGNG
当方、パーソナルだからよく分からないんだけど、
確か製品版には最初から付いてるんだよね?
製品版も、例外が出るのかな?
0106デフォルトの名無しさんNGNG
初めてIndyを使用してみているのですが、IdTCPClientでConnectしている間にアプリケーションが固まってしまいます。
接続中にフォームの移動などを許可させるにはどうしたらいいのでしょうか?
0107デフォルトの名無しさんNGNG
>>101,105
おまえら検索しろ
EIdConnClosedGracefully
この例外クラスは,接続が正常に閉じられた場合に生成されます

>>106
TThreadを使う。
それが嫌ならIndyを使わない。
0108106NGNG
>>107
ありがとうございます(`・ω・´)
0109デフォルトの名無しさんNGNG
AntiFreeze じゃ駄目なのか?
0110デフォルトの名無しさんNGNG
AntiFreeze じゃ駄目なのか?
0111デフォルトの名無しさんNGNG
なんか挙動怪しくないか。
AntiFreeze
0112105NGNG
>>107
オレは関係無いだろ。
0113107NGNG
御免。
0114105NGNG
>>113
あ、いや…。謝られるとは思ってなかった(汗)
0115デフォルトの名無しさんNGNG
C++Builder6にIndy9がインストールできないのですが
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/

この画面のデモってどこから落とすの??
■ このスレッドは過去ログ倉庫に格納されています