【Delphi】 Indyコンポーネント 【C++Builder】
873 :
デフォルトの名無しさん :
2008/10/30(木) 07:13:34 おはようございます。 質問ですが、DelphiでidFTPを使って鯖にログインした時にリストボックスにアイテムをリストアップさせたいのですが、どうにもうまくいきません。 以下がコードです。 procedure Tform1.DisplayFTP; var i, c : Integer; s : String; begin lbDirectory.Items.Clear; FTP.List(lbDirectory.Items, '', false); end; procedure TForm1.FtpAfterClientLogin(Sender: TObject); var i, c : Integer; s : String; begin DisplayFTP; end; おかしい箇所とか改善箇所ありますでしょうか?
>>873 「うまくいきません」の内容をはっきり書いて質問することから改善した方が・・・
>>874 すいませんでした。
うまくいかない内容は、ログイン成功したあとにきちんとリストアップしてくれないという事です。
synapseに汁!
878 :
デフォルトの名無しさん :2008/10/31(金) 06:48:10
結局875の解決になってないなw まあおれも原因わからんが
ソース見ないとわからないもん
881 :
873 :2008/11/03(月) 14:41:53
ここでの質問はあきらめて別のところで質問してみます。
882 :
デフォルトの名無しさん :2008/11/17(月) 15:40:01
age
883 :
デフォルトの名無しさん :2008/12/24(水) 22:25:11
なんか、公式サイト 死んでね??
大丈夫みたいだけど?
885 :
デフォルトの名無しさん :2008/12/25(木) 00:07:28
あ、サイト自体は生きてるけど、ダウンロードとかが404
ああ、QCとかも動いてないね。メンテナンスでなんかやらかしたか?
IndyってHTML描画コントロールは無いんでつよね?
ないね。IEかFirefoxを取り込んで使うのが普通じゃないかな。
サンクス Indy一色でやりたいんだけどねw
つまりVCLは使わないと
Indyの中の人もVCLでIndyはDel7/BCB6以降製品に組み込まれましたから、残念!
Delphi 2009 + TIdHttp の Post メソッドで TStringList に入れた項目を送信しようとしているのですが、 Unicode で送信されてしまいます SJISで送信する方法ってありますか?
Delphi2009を窓から投げ捨てろ
どっちで処理するかの違いしかないんだろうが 2009って面倒くさそうだな
895 :
デフォルトの名無しさん :2009/03/01(日) 00:04:53
>> 892 jconvertで変換すればいいのでは?
896 :
デフォルトの名無しさん :2009/03/13(金) 01:57:26
インディの接続が遅いんですが・・・ TCPサーバー側のサンプルだと、 AThread->Connection->WriteLn("Hello from Basic Indy Server server."); AThread->Connection->Disconnect(); ↑ クライアントからの接続は速攻Disconnectしてるんですが、 これを Disconnect()せずに、connect状態を維持しようとすると CPUパワーを100%喰います。 こういう仕様なんでしょうか?
897 :
deldel :2009/04/10(金) 08:26:34
みんな何であんな使いにくい indy なんかを使うんだろう。 ■メール?・・・だったら、「Bsmtp.dll」なんかを使った方が よっぽど楽(外部dllが嫌だったらあれだけど) ■ソケット通信?・・・これは、indyの意味不明な動きがあり。 Winsockを直接使った方が簡単で確実。 どうも、DelphiについているInternet関連VCLは使いにくいと言うか 役に立たない。 Delphiは今でもWindows最高の開発環境と思うので本当は その辺も考えてほしいなあ〜。 (本体がいいだけでも良しとするか・・・)
IndyってHTTP通信専用じゃないの? メールやソケット直なんて使ったことも無い。
Indyはなんというか、ゴテゴテしすぎで逆に使いにくいんだよな もうちょっと単純化したほうがいいと思う
そうかなあ
そうIndyは、なんかわかりずらい まるでマヤ語のようだ、、 ( ゚Д゚)ハッ! そういうことか!
902 :
デフォルトの名無しさん :2009/04/12(日) 15:41:51
Indyの欠点は、バグが多いことだ。 でもソース付きだから自力でバグを修正して使っている人々も結構いるのではないだろうか。 しかし、それらがちゃんとフィードバックされて、最新版で反映されることはない。 開発しているのが毛唐で、どうフィードバックすればいいかわかんねえからだ。 あと、BDS2006以降のバージョンでは、Indyの再構築用ファイルが添付されていない。 なのでどうやって再構築すればいいのかわからん。 下手に再構築に失敗して安定している開発環境をぶちこわすのも嫌だしな。 おれは、Indyのバグ対策は該当クラスを継承して、新クラスを作成して対応している。 日本語でバグ報告できる窓口とかあれば、だいぶ違うだろうな。
Indyが接続が正常に閉じられるとEIdConnClosedGracefullyを発生させるのってどういう理由でなんだろう 俺は例外ってのはどうしようもない時にだけ飛ばすものだって考えてるから、どうにも違和感感じるんだけど
>>902 環境壊れたら再インスコすればいいじゃん
>>903 >例外ってのはどうしようもない時にだけ飛ばすものだって考えてるから
いや、このりくつはおかしい。
catchしる!
例外っていいよな。 同じ関数から型が違うオブジェクト生成できるし。
例外そのものを飛ばすことを言っているんじゃないか? TRUE、FALSE、0、非0でやれよみたいな。 まぁ例外には例外のよさもあると思うけど。
まぁ正常動作時の実行経路にraiseがあんのは違和感ありだぁね。
synapseでいいじゃん
それってTCP/IPまでだおね。
んなわけない
あ、思いだした。 HTTPクライアントはあるけど、HTTPサーバーは無いでそ。 HTTPサーバーはやっぱIndy。
すみません、質問お願いします
上の方で楽天のログインに挑戦されてる方のレスを参考に、
ニコニコ動画への自動ログインを試みているのですがどうもうまくいきません・・・
ソースは↓の様になっていますがこの場合どれを送信すればいいのでしょうか?
<form name="login_bar" id="login_bar" method="post" action="
https://secure.nicovideo.jp/secure/login?site=niconico ">
<input type="hidden" name="next_url" value="">
<input value="" class="tool_login" style="width:160px;" type="text" name="mail" id="bar_mail">
<input value="" class="tool_login" style="width:80px;" type="password" name="password" id="bar_password">
<input name="submit" type="image" src="
http://res.nicovideo.jp/img/base/tool/submit_login.gif " alt="ログイン">
あと、使用しているIndyはDelphi2007付属の10.0.0.17なんですが、
OpenSSLライブラリは
http://indy.fulgan.com/SSL/ ↑のページの0.9.8eにしてみましたが用意するものはこれであってるでしょうか?
914 :
デフォルトの名無しさん :2009/04/17(金) 09:42:09
どれって・・・基本的にみんなだろ、ボタンはいらんけど といかぁ、HTTPの基本的な知識が無いようだから HTTPの基本的な解説しているドキュメントを1回読んだ方がいいぜ。
うーん全部というとこれじゃだめなんですか?
いちおう今のコードを晒しとくとこんな感じなんですが
これだとError connecting with SSLとなります・・・
フォームに
Memo1, Bottun1, IDHTTP1, IdSSLIOHandlerSocketOpenSSL1, IdCookieManager1
を貼り付けて、
procedure TForm1.Button1Click(Sender: TObject);
var
Res: TStringStream;
Value : TIdMultiPartFormDataStream;
const
URL_LOGIN = '
https://secure.nicovideo.jp/secure/login?site=niconico ';
MYMAIL = //メールアドレス
MYPASSWORD = //パスワード
begin
Value := TIdMultiPartFormDataStream.Create;
Res := TStringStream.Create('');
IdHTTP1.CookieManager := IdCookieManager1;
IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdHTTP1.AllowCookies := True;
Value.AddFormField('next_url', '');
Value.AddFormField('mail', MYMAIL);
Value.AddFormField('password', MYPASSWORD);
IdHTTP1.Post(URL_LOGIN, Value, Res);
Memo1.Lines.Text:=UTF8Decode(Res.DataString);
Value.Free; Res.Free;
end;
>>915 単純にSSLでの接続にミスっているだけでは?
たしかIndyでSSLを使うときは外部DLLが必要だったはず。
パケットモニタくらい入れときましょう
917 :
デフォルトの名無しさん :2009/04/19(日) 22:40:35
接続先サーバがどんなメッセージを返してきているかをちゃんと確認すれ。 そうすれば解決するぞ。
ネットワークものでうまくいかないときはパケットキャプチャで正常ケースと異常ケースを比較。これ基本中の基本。
言えてる
920 :
デフォルトの名無しさん :2009/04/21(火) 18:45:24
某巨大掲示板へのPOSTが上手くいかずに5時間ほど悩んでいたんですが、
このスレの
>>361 によると、
1)改行が変なコードに変換され、改行より後ろの文字列が無視される
というバグだという事がわかりお先真っ暗になりました。
自前でURLエスケープすれば解決すると思うのですが、
Indyが勝手にエンコードしないように設定する事は出来るのでしょうか?
Indyを使わない
922 :
デフォルトの名無しさん :2009/04/21(火) 20:30:07
TIdMultiPartFormDataStream つかわないで 自分でURLうんこすればイイじゃん。 ってか、おいらはそうしている。
>>922 TIdMultiPartFormDataStreamは使っていないんですがその方法どうやるんですか?
自分はTStringListを使って
PostData.Text:='bbs=〜&key=〜& ・・・・・・ &MESSAGE=〜';
としているんですがこれだとエンコードされてしまいます。
HttpEncordをつけて自分で変換したらエンコードした文字がそのまま書き込まれてしまいましたし・・・
924 :
デフォルトの名無しさん :2009/04/21(火) 21:15:55
functionPost(AURL:string; const ASource:TStream):string; overload; この形式のPostは えんこされないよ。
>>924 やってみます
どうもありがとうございます
ああ、ここにもIndyを使ってのニコ動ログインができなくなった同志が…
自分もIndyでニコ動にログインしてコメント取得させるツール作ってたんだけど
はじめの数ヶ月はうまく動いてたのに、今年の1〜2月ぐらい? のある日から
唐突にログインできなくなった。症状は
>>913 と同じで、
https://secure.nicovideo.jp/ のどこに接続してもその例外を吐きやがる。
URLを別のサイトにするとつながる。
どうやらOpenSSL自体がエラーコードを返してるみたいなんだが、さっぱりわかんねえ。
どう見ても以前とはログイン方法は変わってないんだけどな。
UA変えてもダメだし、パケットモニタを見てもいまいちピンとこないから
もう半年ぐらいあきらめ状態だわ。
うわああああああああああああああ 何となく思いつきで、TIdSSLIOHandlerSocket の SSLOptions.Method プロパティを sslvSSLv23以上にしたら動いたアアアァァァァァ それだけかよぉぉぉ、半年も悩んでたのに…
あ
Indy初めて使ってみました。 簡単でびっくりしました。 でも、訳分からんことがあります。 メインフォームでButton1Clickイベントから Memo1.Lines.Text:=euc2sjis(IdHTTP1.Get(url)); をすると、ブラウザで見たのと同じソースが表示されるのですが、 TThredを作ってTThred側から実行すると、違う内容が表示されます。 TThredで使うとしたら IdHTTP1:=TIdHTTP.Create(nil); ってやって Form1.Memo1.Lines.Text:=euc2sjis(IdHTTP1.Get(url)); で、合ってますか?
>929 サブスレッドからUIを直接操作しちゃだめ。Synchronize経由で。
932 :
デフォルトの名無しさん :2009/10/24(土) 13:18:37
Delphi2010付属のTIdMessage.Body.Text に日本文を入れて送信したいのですが うまくいきません。 携帯に送ると文字化け、WEBメールでも文字化けし、それをアウトルックで取り出すと正常など。 下記のようなやり方ではダメでしょうか? type ISO2022JP = type AnsiString(50220); var Msg : TIdMessage; AnsiStr : ISO2022JP; UniStr : UnicodeString; //本文 unicode→ISO-2022-JP AnsiStr := 'あいうえお'; UniStr := AnsiStr; Msg.Body.Text := UniStr;
934 :
デフォルトの名無しさん :2009/10/24(土) 18:26:12
>>923 Indyよくわからないが
Charset := 'iso-2022-jp';
入れないとだめだと思うが
Indyのメールのキャラクターのプロパティを探して
935 :
デフォルトの名無しさん :2009/10/24(土) 18:46:54
>>923 https://forums.embarcadero.com/thread.jspa;jsessionid=F5CF939FFE16FA427099B8511D4B9A6B?messageID=118505 これってずばりじゃないかな
-- Code --
var
Subject, Body, Host, MailTo, MailFrom: String;
begin
Host := 'smtp.....';
MailTo := 'to@....';
MailFrom := 'from@...';
Subject := 'テストです';
Body := Subject;
IdSMTP1.QuickSend(Host, Subject, MailTo, MailFrom, Body, 'text/plain', 'ISO-2022-JP', '7bit');
end;
936 :
932 :2009/10/24(土) 19:42:55
937 :
932 :2009/10/24(土) 19:45:36
>>934 コレ入れると何故かすべて文字化けするんです…泣
938 :
932 :2009/10/25(日) 06:28:46
>>935 QuickSendだと認証が通らないです。
また、送信時に各設定文字列(宛先アドレス)などが
文字化けしてエラーとなってしまいます。
QuickSendのパラメーターも変更されているようで、
Body以降は不要となっています。
困りました…
939 :
932 :2009/10/25(日) 08:17:56
下記のように一旦旧Delphiの様にSJISに変換したらうまくいきました。 type ISO2022JP = type AnsiString(50220); //iso-2022-jp SHIFTJIS = type AnsiString(932); //SHIFT-JIS var Msg : TIdMessage; AnsiStr2022JP : ISO2022JP; AnsiStrSJIS : SHIFTJIS; begin Msg := TIdMessage.Create(SMTP); Msg.Date := now - StrToTime('9:00:00'); Msg.ContentType := 'text/plain'; Msg.CharSet := 'ISO-2022-JP'; Msg.ContentTransferEncoding := '7bit'; Msg.From.Name := usr_name; //unicodeのままで文字化けしない Msg.From.Address := jConvert.CreateHeaderString2(usr_mailaddress); Msg.Recipients.EMailAddresses := MailAddress Msg.Subject := SubjectStr; //unicodeのままで文字化けしない //本文 unicode→SHIFT-JIS→ISO-2022-JP→unicode AnsiStrSJIS := tblDM.FieldByName('MSG').AsString; AnsiStr2022JP := AnsiStrSJIS; Msg.Body.Text := AnsiStr2022JP;
940 :
デフォルトの名無しさん :2009/10/28(水) 19:11:20
TIdHttpServerでダイジェスト認証を行いたいのですが、 どなたかご教授願えませんでしょうか? 調べても方法が見つからず困っています。
code932 = SJIS だな はじめから答えは判明していたな
Tiburon用 Indy10の SMTP 12月に入ってからのリビジョンは 日本語のSubjectが化けるね。 IdCoderHeader.pas あたりが大幅に書き換えられていて、 ヘッダーのエンコードがバグってる模様。 ソース追っかけてたけど面倒になって やめた。 rev3878に戻すとSubjectも正常に送れるんで戻した。
943 :
942 :2009/12/23(水) 11:04:19
化けると書いたけど、実際はエンコード自体がうまく機能せず空文字列になるんだった。
ISO-2022-JPだとSubjectが長いと途中から文字化けするな。 MIMEエンコードして複数行になった場合、二行目以降に エスケープ文字が付加されていないためのようだ。 Subject全体をBase64変換して単純に76文字でぶった切ってる せいか・・・
945 :
デフォルトの名無しさん :2009/12/23(水) 17:25:42
Indyの日本語処理は昔からバグだからけ。 TIdMessageは、はっきり言って使えない。
くだスレからきました。 ここを見て何となくIndyを使ったフォームの内容の受信は 何とかなるなと思ったんですが、その内容をメールで送りたいのですが、 sendmailとか無くてもIndyでやれますか?
やれる。
>>946 とりあえず、メールの仕組みを勉強した方がいいと思う。
ちゃんと知らないと、いつかどこかで、はまるよ。
949 :
946 :2010/01/14(木) 09:06:39
>>947 ,948
レス、有り難うございます。
windowsの自宅サーバーでsendmane等を使いたくない場合に
どうしたら良いんだろうと思い質問させてもらいました。
昨日、メールを送るCGIについて自分なりに調べた結果、
もしIndyで出来るとすると自分が使っているプロバイダーのメール設定
と同じような設定をするものがあるってことですよね?
自分は
>>1 の状態なので、また質問させてもらいます。
よろしくお願いします。
950 :
946 :2010/01/15(金) 00:35:48
いまいちよくわからんのだが そのsendmaneとやらを自作するというだけのことだよね?
レス、有り難うございます。 > そのsendmaneとやらを自作するというだけのことだよね? 確かに、そう言われればそういうことですね。 今日一日中、IdsmtpのQuickSendでメールを送るテストをしていたのですが、 メールサーバーがSMTP認証がない単純な設定の場合は 送れるのですが、CRAM_MD5のSMTP認証が必要な場合に タイムアウトでサーバーに接続できないとエラーが出てしまいます。 IdSMTP.AuthenticationType:=atLogin; IdSMTP.Password:='hogehoge'; IdSMTP.Username:='hogeyama'; IdSMTP.Port:=587; こんな感じで設定しているのでが他にもあるのでしょうか。
954 :
946 :2010/01/17(日) 00:26:07
Indy10でSMTP認証できるようになりました。 有り難うございました。 今回、9から10に入れ替えたのですが、プログラムを実行して タイムアウトエラー等が起きると、そのエラーに関係すると思われる リソースがないと言うダイアログが出て、Idhogehoge.pasはどこにある? みたいに聞かれるんですが、これが出ないように設定って出来るのでしょうか? pasファイルがあるところに、ライブラリパスを通しても駄目っだった気がして。
>>954 ブラウザ検索パスの設定にIndyのソースのパスを設定
indy10について質問です。 10にしたら「要求したパッケージIndyがありません」という サンプルプログラム(自作以外のもの)をコンパイルできなくなりました。 自作でIndyのコンポーネントを置いたものはコンパイルできます。 これってどうしたら回避できますか?
Indy10にIdsysってある?
IdSys.pasはないね。
959 :
957 :2010/01/25(月) 09:18:49
>>958 dです。
なんか10にしてから調子よくないや
ちなみにIndy9にもIndy8にもIdSys.pasはない。
>ちなみにIndy9にもIndy8にもIdSys.pasはない
そうですか。じゃぁなんなんだろ。
>>956 の現象も起きるし。
マジ>1状態。
アララットに移行しましょう
>961 状況をもっと正確に書け。
964 :
961 :2010/01/27(水) 23:56:25
有り難う。お言葉に甘えて書かせてもらいます。 xamppで自宅鯖を立てました。 xamppに入ってるsendmailの最新版にdel7のソースが付いてる というのをxamppスレで見て早速見てみた。 読み込みは何ともなかったんだけど、コードの定義を見ようとすると Idsysが無いとか、Indyのパッケージがないとか色々出てモヤモヤしてます。 Idsysは作者がわざとソースから削除してる可能性もあると思いますが、 Indyのパッケージが無いと言われるのは、今後サンプルとかをいじる時に 困るだろうなぁと思って凹んでます。 長文失礼しまた。
>964 > 読み込みは何ともなかったんだけど、コードの定義を見ようとすると > Idsysが無いとか、Indyのパッケージがないとか色々出てモヤモヤしてます。 いやだから正確に書けっての。エラーメッセージとか、ソースどっから落としたのかとか。
そう言うことですか。 何度もすみません。&有り難うございます。 確認して夜に書き込みさせてもらいますので 気が向いたら、よろしくお願いします。
あほすぎ
なにやら盛り上がってる?
indy9から10に変更して、9で作ったプログラムをコンパイルしたら IdSSLOpenSSLHeaders.pas(11194): 'Array' と 'Char' には互換性がありません て、出たんだけどどうしたらいい? やってることは、IdHttpをcreateしてGetプロシージャーで ホームページ上のデータを取ってきてるだけなんだけど。
970 :
969 :2010/02/08(月) 10:14:28
コンパイルエラーの出る場所です。 function IdSslSessionGetIdCtx(s: PSSL_SESSION; id: PPChar; length: PIdC_INT) : TIdC_UINT; {$IFDEF USEINLINE} inline; {$ENDIF} begin Assert(s<>nil); id^ := @s.sid_ctx; <---ここが駄目って出る Result := s.sid_ctx_length; Length^ := Result; end;
うちのソースだと、そこんところは {function IdSslSessionGetIdCtx(s: PSSL_SESSION; id: PPAnsiChar; length: PIdC_INT) : TIdC_UINT; {$IFDEF USEINLINE inline; {$ENDIF begin Assert(s<>nil); id^ := @s.sid_ctx; Result := s.sid_ctx_length; Length^ := Result; end; } って丸ごとコメントアウトされてるよw 頭んところも //function IdSslSessionGetIdCtx(s: PSSL_SESSION; id: PPAnsiChar; length: PIdC_INT) : TIdC_UINT; なってる
有り難うございます。 さっき、Indyのサイト行ってバージョン確認したら 最新のをインスコしてるんですがどういうことだろう。
973 :
971 :2010/02/08(月) 17:57:54
>>973 有り難うございます。
私はのはD7で、D8にして絶望したのでそのままです。
Indy10でメール送信プログラムを作っています。 とりあうえず送信はできるようになったんですが大きな添付ファイルの 送信中に、それを中止する方法がうまくいきません。 IdSMTP.Disconnect では止まってくれず、IdSMTP.IOHandler.Close で 強引にSocketを切ってやれば止まることは止まるけど例外が発生する orz TIdFTPなんかだとAbortメソッドがあるみたいだけど、TIdSMTPにはないし… IdSMTP.Sendは IdThreadCompornent使って別スレッドで動かしてます。
了解しました 次の方どうぞ
}{
`
-
]
\
@