くだすれDelphi(超初心者用)その51at TECH
くだすれDelphi(超初心者用)その51 - 暇つぶし2ch910:765
10/06/30 15:13:50
>>909
知識不足というのは、自分でも痛感しています。 なにぶんプログラムを勉強し始めたばかりで
すのでご容赦ください。
現在の時点では、ググった結果さえ理解できない事も多く、このスレの回答者の皆さんみた
いになるには、かなりの時間が必要そうです。

回避というのは、302が返ってくるのでどのように処理すればいいのかという意味のつもり
だったのですが、適切な言い方ではなかったようで、申し訳ないです。

Live HTTP Headersでの確認では、check.plにアクセスしたあと、「HTTP/1.1 302 Found」が返っ
てきており、その後home.plにアクセスしているので(おそらく>>905さんがおっしゃる通り、ブラウ
ザが302をこの時点で処理している)、やり方としては今Delphiでやっている事と同じような気も
するのですが。
今日は一日休みですので、もう少しLive HTTP Headersを確認しつつがんばってみます。
上で、すでにログインに成功している人がいるし、見落としている部分に答えがありそうです。

911:デフォルトの名無しさん
10/06/30 16:12:08
なぜDelphiなんだろうC#のがいいのに

912:765
10/06/30 16:40:50
>>911
ちら裏になりますが、会社の自分の前任者(元プログラマ、退職済)が2009を購入してもらって、
ちょこちょこ便利ツールを作ってたみたいで、後任の自分も使ってみたら?と渡された。

もともとプログラムできる奴カッケー!!と思っていたので、仕事の合間や自宅にノートPC持っ
て帰ってに勉強しています(セキュリティが緩いので・・・)。
職種はまったくPCと関係ない上、社内でその手の知識がある奴も皆無なのがつらいところ。

913:デフォルトの名無しさん
10/06/30 19:17:26
なぜDelphiなんだろう

914:デフォルトの名無しさん
10/06/30 21:23:52
Webアプリ作りたいんならまずRFC2616くらいは読んどいたほうがいい。

とりあえず、「HTTP/1.1 302 Found」は必ずしもエラーを意味しない。それによりリダイレクト
させることが目的である場合もあるから。
Indyのバージョンによるのかもしれないけど、プロパティで302を自動でリダイレクトさせる
ことができるし、実際自分はそれを使ってる。

915:765
10/06/30 22:33:34
>>914
実はRFC2616を説明しているサイトで302 Foundについてすでに調べたのですが・・・・
さっぱり意味わかんねえええええw orz

他も色々みてみて、どうやら一時的なページの移動か、CGIが返す場合があるという事
として今は理解しています(検討外れだったらすいません・・・)。

Indyのバージョンは最新のはずなので、もしかしたら自動でリダイレクトさせるプロパティ
があったのかもしれないですが、とりあえず現在はRedirectイベントで処理いたしました。

今日は力つきたので、ここまででw

916:デフォルトの名無しさん
10/06/30 23:06:41
Delphiと関係ないことは理解できましたか?

917:デフォルトの名無しさん
10/07/01 04:20:03
 BDEでODBC経由でSQL Serverに接続しています。(TDateBaseクラスを使用)
複数のプロセスでDB接続している際、その中の1つのプロセスを強制終了
(クラッシュ)しては再起動ということを繰り返していると、何度かいったところで
「この操作に必要なメモリがありません」と出て、DB接続できなくなります。
DB接続しているプロセスをいったん全て終了させると、正常に戻ります。
 見たところではリソースのリークのようなのですが、改善することはできますで
しょうか。

918:デフォルトの名無しさん
10/07/01 04:28:35
プロセスの強制終了が直接の原因でしょ
BDE は共有メモリモデルで動いているから異なるプロセス間で共有しているメモリブロックが解放されず
不足したのでしょう。

強制終了しないように直し、仮に例外が発生しても正しくアプリケーションを終了させるようにするのが正道。


919:デフォルトの名無しさん
10/07/01 04:42:57
BDE 使い続けている人は多いなぁ

920:デフォルトの名無しさん
10/07/01 09:41:07
BDE経由だとoracleでもそんな感じだし。

921:デフォルトの名無しさん
10/07/01 09:55:45
>>765
C++Builder2010だけど、>>814 のコードでログインできた。

>>814 のコードの
IdHTTP1.Post('URLリンク(mixi.jp)',PostData,Req);
で、Reqにサーバーからのレスポンスが入っている。

とりあえずReqのデータをSaveToFileでファイルに保存してファイルの内容を教えろ。

ログインできていれば、あとは >>814 の次のコードでログイン後のページが表示される。
IdHTTP1.Request.ContentType:='';
Buf:=IdHTTP1.Get('URLリンク(mixi.jp)');

302 Foundとかで躓く理由がない。


922:デフォルトの名無しさん
10/07/01 11:36:04
Indyってnegotiate認証に対応しているのでしょうか?NTLS認証は対応してるっぽい
ですけど、Kerberos認証は対応してます?

923:デフォルトの名無しさん
10/07/01 12:03:02
Delphi2010(Rad Studio)の
逆アセンブル/レジスタなどのペイン(メニューだと表示→デバッグ→CPUウィンドウ以下)
のフォントサイズが6?7?なのか不明ですが、文字が小さすぎて見えません

CPU全体というものを選べばフォントサイズはでかくて見易いのですが、この項目はエディタウィンドウと重なってしまい、使い勝手が悪いです

特にこれらの項目のフォントサイズを変更する項目が見あたらないのですが、文字を大きくすることは不可能なのでしょうか…

924:デフォルトの名無しさん
10/07/01 13:04:34
日付の比較がしたいのですが、

2010年1月1日,aaa,bbb,ccc
2010年1月2日,ddd,eee,fff
       ・
       ・
       ・
2010年7月1日,111,222,333

の様なリストがあって、ユーザーからは「2010年2月1日から2010年5月6日まで」みたいに指定されます。
今考えているのは、年月日の漢字を消して 201021 と言う数字にして比較しようと思っているのですが、
もっと良い方法があれば教えて欲しいです。

よろしくお願いします。



925:デフォルトの名無しさん
10/07/01 13:07:09
TDateTime型に変換する

926:デフォルトの名無しさん
10/07/01 18:50:02
>>924
> 今考えているのは、年月日の漢字を消して 201021 と言う数字にして比較しようと思っているのですが、
それだと2010年1月11日と2010年11月1日の区別ができないのでは。

927:デフォルトの名無しさん
10/07/01 19:25:17
StrToDateTimeでTDateTimeにして比較する

928:デフォルトの名無しさん
10/07/01 19:26:19
ごめん、こっちの方
VarToDateTime


929:924
10/07/01 23:06:28
皆さん、ありがとうございました。
VarToDateTimeを使って、上手くできました。

また、よろしくお願いします。

930:765
10/07/02 10:16:26
>>921
Reqのデータですが、こちらでは
<html><head><meta http-equiv="refresh" content="0;url=/check.pl?n=home.pl"></head></html>
となっています。

>>921さんはどのようなデータを取得できましたか?

931:デフォルトの名無しさん
10/07/02 13:17:35
あれだけ言われてまだここでやるんだ

932:デフォルトの名無しさん
10/07/02 14:46:08
>>930
そのレスポンスなら、mixiの認証は通っている。
ここまでは正しい動作だ。

では次に >>815 の次の部分を下のコードのように変更してほしい。

これを

Buf:=IdHTTP1.Get('URLリンク(mixi.jp)');

こうする

Req.Clear();
IdHTTP1.Get('URLリンク(mixi.jp)', Req);

Reqにサーバーからのレスポンスが入っている。
これをSaveToFileでファイルに保存して内容を確認してほしい。
なお文字コードはeuc-jpなので、euc-jpに対応しているエディタで開く必要がある。


933:765
10/07/02 16:49:20
>>932
Reqの中身はログイン前の画面でした。
「すでに登録済みの方は、
こちらからログインしてください」
と共にログインメールアドレスとパスワードの入力を施す画面です。

>>932さんや>>814さんはこれでログインできているようですので、もしや、Indyのアップデータを
行ったのが問題なのか?
週末にでも一度削除し、インスロールを一からやり直してみます。

934:デフォルトの名無しさん
10/07/02 17:45:30
>>933
これ使え。
URLリンク(yuukiremix.s33.xrea.com)

935:デフォルトの名無しさん
10/07/02 19:01:55
ここまでやってパスかメアド間違えてるとかだったら殺意すら湧く

936:デフォルトの名無しさん
10/07/02 20:26:11
var
  X: Cardinal;
としておいて、
  X:=32768*32768;
  X:=X*2;
とか、
  X:=2147483648;
だと問題ないのですが、
  X:=32768*65536;
では、コンパイル時に「[エラー] ~: 数値演算のオーバーフロー」となってしまいます
どうしてなのでしょうか

937:デフォルトの名無しさん
10/07/02 20:41:12
0..4294967295

938:デフォルトの名無しさん
10/07/02 21:00:16
>>937
4294967295 ?
32768*65536は
2147483648
ですから、あふれてないように思うのですが

939:デフォルトの名無しさん
10/07/02 21:26:45
ヘルプの「真の定数」によると、定数式が整数の場合はその値によって型が決まり
32768~65535 ⇒ WORD
65536~2147483647 ⇒ 0..2147483647
となる。この場合 (WORD)*(0..2147483647) の演算だから
式全体の型は 0..2147483647 となり、結果がこの範囲に収まらないとエラー
という理屈になるのかな。何だか納得いかないけど、とりあえず
X := 32768*Cardinal(655356) とでもすればコンパイルは通るだろ。

940:デフォルトの名無しさん
10/07/02 22:26:25
>>939
「真の定数」読みました
なるほど、65536..2147483647は、ほぼInteger(Longint)ですね
X:=Cardinal(32768)*65536;
でもOkでしたので、その解釈は当たりだと思います
分かりましたー、と言いたいところですが、それなら
X:=32768*32768;
でもオーバーフローになるはずでは???
やっぱりなんか変ですよね

941:デフォルトの名無しさん
10/07/02 23:09:09
>>940
あとは、整数型同士の演算の場合
どちらかがInt64なら結果もInt64、そうでなければ結果はInteger
という規則があるから、これにひっかかるのかな。(ヘルプだと「算術演算子」のところ)

Cardinalが入った場合の規則が書かれていないからよくわからないけど、
Integerの範囲には収まらないはずだからInt64扱いになるのかもしれない。

942:デフォルトの名無しさん
10/07/03 00:29:21
>もしや、Indyのアップデータを行ったのが問題なのか?
>週末にでも一度削除し、インスロールを一からやり直してみます。

ワロタwww アップデータをインスロールしてくださいね(笑)


943:デフォルトの名無しさん
10/07/03 01:39:16
定数の型を指定したい場合はこうすればいい
const foo = Cardinal(1);

944:デフォルトの名無しさん
10/07/03 08:46:20
計算時に
i := Cardinal(1) * 10;
でいいやん。

945:デフォルトの名無しさん
10/07/03 12:29:36
仕事に忙殺されてるうちにすっかり取り残されてしまい、いまだに D6 Pro ですが、
職場では Win7 を使っています。
少々余裕も出てきた&ネイティブコードも必要になりそうなので、職場のマシンに
インスコしてみました。今のところ動いています。

せっかくなので Win7 のタスクバーの新機能を使ってみたいのですが、D6 Pro で
ITaskbarList3 を使うにはどうしたらいいんでしょうか。タイプライブラリの取り込みで
ExplorerFrame.dll を指定してもエラーになってしまいます。さすがに古すぎるんでしょうか。

946:デフォルトの名無しさん
10/07/03 12:44:42
>>944
定数の話してるのになんでマジックナンバーにするの?馬鹿なの?

947:946
10/07/03 12:45:56
僕が馬鹿でした

948:944
10/07/03 12:47:03
分かればいいよw

949:デフォルトの名無しさん
10/07/03 12:48:35
const foo:Cardinal=1;
でいいやん。

950:デフォルトの名無しさん
10/07/03 13:02:41
>>949しか知らんかったわ。
>>943今度使ってみよう。
些細なことで偶に勉強になるな。役立つかは別にして。

951:デフォルトの名無しさん
10/07/03 15:25:44
厳密に言えば>>949は一度だけ書き替え可能な変数
>>944が本当の定数
>>944はコンパイル時に実際に数値と置き換わるけど、>>949は変数と同じく参照として扱われるから、
その展開がない分>>944の方が高速になる
知らないことは誰だってあるけど、いいやんとか言って違いも調べず思考停止するやつは向上心もう少し持とうぜ

952:デフォルトの名無しさん
10/07/04 03:30:07
もっと!もっと熱くなれよ!!

953:765
10/07/05 14:22:54
IndyのバージョンをDelphiインストール時のものに戻してテストしてみたところ、こちらの
バージョンではログイン後の画面が表示されました。
よって、バージョンアップをしてしまうと、なんらかの原因で正常なログインができなくなる
ようです。
Proxomitronを使って、両者のPOSTおよびGETの内容を確認してみましたが、全く同じデー
タでした。

旧バージョンで新バージョンのunitを開くとRequest.Ranges.Unitsが無いというエラーがでた
ので、そのあたりのプロパティかと思い、わからないならがも色々やってみたのですが改善
することができませんでした。
ソースを追って、原因追及といきたいところですが、自分にはまだまだ無理ですので、とり
あえず旧バージョンに戻す事で対応したいと思っています。

新バージョンで実装されているRequest.CharSetを使いたくてバージョンアップしたのですが、
残念です・・・。

色々教えていただき、ありがとうございました。
また自分の書き込みでご気分を害された方、申し訳ございませんでした。

954:デフォルトの名無しさん
10/07/05 17:05:21
そういうときはIndyのバージョンも書けよ

955:デフォルトの名無しさん
10/07/05 17:31:55
Double, Integer, Byte, Word, ShortIntなどの2値を比較し、その結果を返すような関数を作りたいのですが、

function TCompareClass.chkValProc<TypeID>( const srcVal, dstVal : TypeID ): Boolean;
begin
if ( srcVal < dstVal) then begin
Result := False;
end else begin
Result := True;
end;
end;

イメージ的にこういう感じのメソッドを作る方法ってないもんでしょうか。
↑だと、型が限定されないからか、コンパイルが通りません。

function TCompareClass.chkValProc<TypeID>( const srcVal, dstVal : Double ): Boolean;
function TCompareClass.chkValProc<TypeID>( const srcVal, dstVal : ): Boolean;
function TCompareClass.chkValProc<TypeID>( const srcVal, dstVal : TypeID ): Boolean;


956:デフォルトの名無しさん
10/07/05 17:33:11
失礼しました。後半あやまって送信してしまいました

function TCompareClass.chkValProc( const srcVal, dstVal : Double): Boolean;
function TCompareClass.chkValProc( const srcVal, dstVal : Integer ): Boolean;
function TCompareClass.chkValProc( const srcVal, dstVal : Byte ): Boolean;
function TCompareClass.chkValProc( const srcVal, dstVal : Word ): Boolean;
function TCompareClass.chkValProc( const srcVal, dstVal : ShortInt ): Boolean;

こういう風に全部用意してやれば一応目的は達成できるのですが、1つにまとめたく思います。

957:デフォルトの名無しさん
10/07/05 17:56:55
>>954
自分の無能さをライブラリのせいにして逃げる口実なんだからわざと書いてないんだよ
言わせんな恥ずかしい

958:デフォルトの名無しさん
10/07/05 18:02:31
>>955-956
TComparer<T>.Defaultの実装が参考になるというかそのまま使えると思う

959:デフォルトの名無しさん
10/07/05 18:14:50
>>954,>>957
バージョンについては>>818に書いたのですが、最初の書き込み時に書くべきでしたね。
申し訳ございません。

960:デフォルトの名無しさん
10/07/05 19:09:23
「最新」なんてバージョンはない

961:デフォルトの名無しさん
10/07/05 20:55:58
最初から最後までここまでぐだぐだになれるのもある意味才能だろうな・・・

962:デフォルトの名無しさん
10/07/05 23:49:35
ume

963:765
10/07/06 11:10:56
>>960
同じようにアップデートしてしまって以前と同じような動きができなくなった方の為に、参考ま
でに書いておきますね。
バージョンは10.5.7で(2009に同梱のものは10.2.5)昨日の時点ではr4270のものを使用しまし
た(changelog.txtでの確認)。
最初に試したものはr4258です。

>>961
PCやプログラムについての知識がなさすぎて、皆様を不快な気持ちをさせてしまいました。
申し訳ございません。

964:デフォルトの名無しさん
10/07/06 13:14:00
いいよ^^

965:デフォルトの名無しさん
10/07/09 18:38:37
匿名関数使ったサンプル集みたいなサイトや本って無い?

966:デフォルトの名無しさん
10/07/09 21:25:28
WebBrowserをフォームに貼ってサイトを表示させてるとkeypreviewをtrueにしてもonkeydownでキーを拾ってくれないんですがどうすればよいのでしょうか?

967:デフォルトの名無しさん
10/07/12 17:50:49
ローソク足のチャートが書ける日本語のコンポーネントってありませんか?
有料でも良いです。

968:デフォルトの名無しさん
10/07/12 17:54:02
条件をひとつ削ってもいいなら腐るほどあると思うけど

969:デフォルトの名無しさん
10/07/12 17:54:17
URLリンク(page13.auctions.yahoo.co.jp)


970:デフォルトの名無しさん
10/07/12 17:58:25
>>967
ありますよ

971:デフォルトの名無しさん
10/07/12 19:57:43
>965
omnithreadlibrary - Project Hosting on Google Code
URLリンク(code.google.com)
のデモの30番とか。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch