くだすれDelphi(超初心者)その29

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者)その28
http://pc8.2ch.net/test/read.cgi/tech/1131168199/l50

<雑談・討論などはこちらへ>
||:3ミ バカボンのパパのDelphi談話室その27
http://pc8.2ch.net/test/read.cgi/tech/1130605843/l50

<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki 避難所。
http://wiki.s54.xrea.com/delphi/
BDN(Borland Developer Network)※英語
http://bdn.borland.com/delphi/

#過去スレは>>2-10のどこかに
2デフォルトの名無しさん:2005/12/29(木) 23:36:48
3デフォルトの名無しさん:2005/12/29(木) 23:37:28
4デフォルトの名無しさん:2005/12/29(木) 23:38:06
5デフォルトの名無しさん:2005/12/30(金) 00:11:05
質問です。

接続させるプログラムを使う時はServerSocketとClientSocketをつかいますよね?
それを使って接続した状態で相手がアプリケーション上で行ったことをリアルタイムに受信するためにはどうすればいいのでしょうか?
(カードゲームのアプリケーションで例えれば相手がフィールドのカードをずらした場合こちらにもその状態で表示させるようにする) 
6デフォルトの名無しさん:2005/12/30(金) 03:02:04
受信つうかアプリでイベントが起きたら相手に送信って感じじゃね
7デフォルトの名無しさん:2005/12/30(金) 14:19:02
質問です
アプリケーション同士で接続させるためにはどのような設定をすればいいのでしょうか?
8デフォルトの名無しさん:2005/12/30(金) 15:13:59
「アプリケーション同士で接続」をもう少し詳しく。
9デフォルトの名無しさん:2005/12/30(金) 15:54:36
>>7
ServerSocketとClientSocketを使う。
使い方はヘルプ参照。
10デフォルトの名無しさん:2005/12/30(金) 16:01:16
ServerSocketもClientSocketも、とっくにobsoluteなんで今から作るなら
Indyの方がいいかもね。
11デフォルトの名無しさん:2005/12/30(金) 16:04:44
5=7 じゃないの?
12ななしへたぐらま ◆XcB18Bks.Y :2005/12/30(金) 21:27:57
>>1
お疲れ様でした.睡魔にはやはり勝てませんでした.
睡魔だけにすいま(ギャー
13デフォルトの名無しさん:2005/12/31(土) 01:11:38
、i`ヽ                      ,r‐'ァ 
 `ヽ::                      ::´
   ヽ ヽ        , -‐--、         / /
    ヽ \      I:::::::I_      _ / /
     ヽ  ヽ    i,(;;;ノI、;;;)l    ,,/  , '
      ヽ  ` ー 、.,,ゝ´ヮ`,ノュ_, - '   r'
        ` 、_ /  `山'    /
         ヽ       ,r‐'          _     _
          ヽ 、   /    ∧ ∧―= ̄ `ヽ, _
          |    (  ∵. ・(   〈__ >  ゛ 、_―
           ヽ  ー=- ̄ ̄=_、  (/ , ´ノ
             `iー__=―_ ;, / / /   ←>>12
           -=_二__ ̄_=;, / / ,'
           /  /       /  /|  |
          /  /       !、_/ /   〉
        / _/             |_/
       ヽ、_ヽ
14デフォルトの名無しさん:2006/01/01(日) 16:16:52
gzipファイルをTStreamに展開したいんだけど、zlibを使ってそのまま開こうとすると
gzipファイルのヘッダを解釈してくれないらしく、エラーになっちゃう。
(圧縮もヘッダをつけないのでアーカイブソフトで取り扱えない)

zlibのページにもRFC 1950 1951準拠とあるので
1952には対応してなくて正しいのだろうけど、
対応してるコンポーネントどっかにないでしょうか?

統合アーカイバプロジェクトのはいったんファイルに開くので使いにくいし、
パフォーマンス落ちるのでボツになりました。
15デフォルトの名無しさん:2006/01/01(日) 19:07:16
>>14
そのままボツってて下さい。
1614:2006/01/02(月) 01:50:25
こちらのコンポーネントが見つかりました。
http://codecentral.borland.com/Item.aspx?id=23490

某公式を見落としていたorz
17デフォルトの名無しさん:2006/01/02(月) 13:49:26
他のソフト(例えば格闘ゲームとすると)を起動して使用している上で
バックグラウンドで動いて例えば「a」キーが押されたら特定のコマンド(ab↑↓とか)
を動かしてる格闘ゲームのほうに反映させるようなプログラムってのは
Delphiで書けるようなモンでしょうか?
18デフォルトの名無しさん:2006/01/02(月) 13:55:26
出来る
19デフォルトの名無しさん:2006/01/02(月) 17:04:17
フォームをリサイズするとComboBox上のテキストがすべて選択されてしまうのですが、
防ぐにはどうすれば良いのでしょうか。

Delphi6 Personalです。
20デフォルトの名無しさん:2006/01/02(月) 17:10:37
そんなことはない
21デフォルトの名無しさん:2006/01/02(月) 18:14:51
言い方が悪かったです。配置されているComboBoxのTextが選択されてしまうということです。
22デフォルトの名無しさん:2006/01/02(月) 18:46:46
そんなことはない
23デフォルトの名無しさん:2006/01/02(月) 19:48:45
どうやらPageControl上に置いてるとなるようです。
どうしたもんかなー。
24デフォルトの名無しさん:2006/01/02(月) 20:09:50
そんなことはない
25デフォルトの名無しさん:2006/01/02(月) 21:20:39
time関数について質問です。
検索してtime関数はdouble型で1899年の12月30日から現在までの日数を返すとわかったのですが、
time関数は現在時刻を返す関数とも書いてあり、ちょっと混乱しています。
これは例えば、AM6:00のことを
0.24991
PM3:00を
0.54000
のように表しているということでしょうか?

またtime関数の数値を確認するサンプルコードなどあればご教示いただければ幸いです。
26デフォルトの名無しさん:2006/01/02(月) 21:25:05
FloatToStr(Time);
2725:2006/01/02(月) 21:34:23
すいません初心者なのでそのコードをどこに入力すればよいのかもわかりません。
28デフォルトの名無しさん:2006/01/02(月) 21:42:27
>>7 です

ServerSocketとClientSocketについて詳しいサイトとかありませんか?
29デフォルトの名無しさん:2006/01/02(月) 21:57:04
procedure TForm1.Button1Click(Sender:TObject);
begin
ShowMessage(FloatToStr(Time));
ShowMessage(FloatToStr(Time));
end;
3025:2006/01/02(月) 22:08:52
レスありがとうございました!
数値確認できました。
3123:2006/01/02(月) 22:51:59
ようやく詳しいことが分かってきました。

ComboBoxのAnchorsのRightかBottomをTrueにした状態でフォームをリサイズしたとき、
Textの文字列がItemsの中に存在するとき、Textがすべて選択されてしまうようです。(ノ▽`)
32デフォルトの名無しさん:2006/01/02(月) 23:07:05
program test(input,output);

begin
writeln("hello")
end.
33デフォルトの名無しさん:2006/01/02(月) 23:14:23
Delphiで作ったソフトが実行してるか終了してるか監視するソフトを作りたいのですが、終了を判断するAPIがわかりません。

名前を教えていただければ、Googleで色々探せるのですが。

どなたか教えてください。
34デフォルトの名無しさん:2006/01/02(月) 23:18:46
WaitForSingleObject
35デフォルトの名無しさん:2006/01/02(月) 23:25:31
>>34

ありがとうございます
実行したアプリケーションの終了を検知するには等、いろいろ参考になるサイトがヒットしました。
3623:2006/01/02(月) 23:37:48
現状はComboBox1.SelLength := 0;のようにして回避することにしました。
もしもっと別の良い方法がありましたら、レスしていただきたいと思います。
ありがとうございました。
37デフォルトの名無しさん:2006/01/02(月) 23:44:00
たんにフォーカスを移動するだけのような
38デフォルトの名無しさん:2006/01/02(月) 23:45:09
シッ
39デフォルトの名無しさん:2006/01/02(月) 23:53:37
それフォーカスを移動させるだけじゃ直らんよ。
40デフォルトの名無しさん:2006/01/02(月) 23:58:04
じゃバグなんだね
4123:2006/01/02(月) 23:58:28
>>37
レスありがとうございます。

>ComboBoxのAnchorsのRightかBottomをTrueにした状態
にしている時、フォームをリサイズすると配置されているすべてのComboBoxのTextが
選択された状態になります。その状態で例えばMemo1にSetFocusしても選択された
状態が変わる事はありません。

ComboBox1.SetFocus;
Memo1.SetFocus;

とすれば一応直りますが、それだったらSelLength := 0したほうがいいかなぁという
状況です。
4223:2006/01/03(火) 00:00:36
>>40
私もバクだと思います。

なので、良い回避方法はないかとここで尋ねてみました。(;´▽`A)
43デフォルトの名無しさん:2006/01/03(火) 00:44:27
QC に登録して、フィックスしたパッチを出してもらう。・・・ってことは絶望的にあり得ないな。
某は放置が得意だし。
44デフォルトの名無しさん:2006/01/03(火) 00:45:13
条件はTextの文字列がItemsの中に存在するときにコンボボックスをリサイズ、だな。
VCでやっても起きるんで、ラップしたVCLが余計なことをしてるわけじゃなくて、Windowsのコンボボックスコントロール自身の仕様(バグ?)なだ。
45デフォルトの名無しさん:2006/01/03(火) 00:53:44
>>43
Pro 以上でソースがあれば自分で間単に挙動を変更できると思うが。
46デフォルトの名無しさん:2006/01/03(火) 01:21:20
どういうふうに?
47デフォルトの名無しさん:2006/01/03(火) 01:21:56
簡単にFix出来るものをなぜ放置するんだろうか?
48デフォルトの名無しさん:2006/01/03(火) 01:24:52
> Windowsのコンボボックスコントロール自身の仕様

VCL のバグじゃないからかぁ・・・>放置
4923:2006/01/03(火) 02:21:08
>>44
ありがとうございます。

なるほど・・私にはどうしようもなさそうなので一応SelLength := 0;で回避することにします。
50デフォルトの名無しさん:2006/01/03(火) 09:45:14
Delphi6のTMediaPlayerコンポーネントについて質問します。
これでMP3を演奏する場合、deviceTypeをdtAutoSelectにするしかないのでしょうか?
51デフォルトの名無しさん:2006/01/03(火) 11:15:54
全部ためしたらいいのでは?
52デフォルトの名無しさん:2006/01/03(火) 13:02:39
質問があります。

以下の関数名は〜Atとか付いていますけど、
このAtって一体何の略でしょうか?

GetHitTestInfoAt
IndexOfTabAt
ControlAtPos
53デフォルトの名無しさん:2006/01/03(火) 13:05:51

  ( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_ 
  \/    /
54デフォルトの名無しさん:2006/01/03(火) 13:57:15
略じゃなくて英語の at じゃないかと
55デフォルトの名無しさん:2006/01/03(火) 14:03:04
>>52
at [ət, 強æt]

━━ prep. ((位置)) …において, …で (at home); ((時・時節・年齢)) …に, …で (at noon);
((状態・情況・従事)) …中で, …して (at work); ((方向・目標)) …に対して, 向って (look at it);
((径路)) …を通って; …によって, …から (come in at the window 窓から入る);
((原因)) …に接して, …で; ((代価・率)) …で (at a low price 安い値段で);
((仕方)) …で, …に従って (at will 思うままに); ((動作の仕方)) …に, …で (at a gallop 大速力で).

at it again また始まって(いる).
at that それぐらいで; しかも; それにもかかわらず; その結果.
at this これを見て[聞いて].
at mark 【コンピュータ】アット・マーク ((@のこと)).
At Work 【コンピュータ】マイクロソフト社のOAシステムアーキテクチャー.
5652:2006/01/03(火) 14:24:01
>>54-55
ありがとうございます。
てっきり何かの略かと思っていました。
57デフォルトの名無しさん:2006/01/03(火) 15:14:43
Delphiでできないことを教えてください。
58デフォルトの名無しさん:2006/01/03(火) 15:37:13
57>>
君にできないこと=Delphiでできないこと
59デフォルトの名無しさん:2006/01/03(火) 20:40:58
子作り
60デフォルトの名無しさん:2006/01/03(火) 21:19:51
質問があります

プログラムの中のものをドラックして動かせるようにするのはどうすればいいのですか?
61デフォルトの名無しさん:2006/01/03(火) 23:07:28
プログラムの中のもの・・・?
62デフォルトの名無しさん:2006/01/04(水) 00:58:47
>>59
WinControlにInsertするとChildになりますよ。
63デフォルトの名無しさん:2006/01/04(水) 01:28:10
動的にも性的にも作れるな
64デフォルトの名無しさん:2006/01/04(水) 08:46:53
>>61
トランプゲームとかのカードをドラッグで動かす方法を教えてください。
65デフォルトの名無しさん:2006/01/04(水) 09:23:21
マウスボタンが押されたらドラッグ開始。
ドラッグ中にマウスが動いたらカードを動かす。
マウスボタンが離されたらドラッグ終了。
66デフォルトの名無しさん:2006/01/04(水) 09:38:52
>>65
ありがとう
それはなんて言うプロパティを使いますか?
67デフォルトの名無しさん:2006/01/04(水) 10:34:10
トランプゲームのカードというクラスはデフォルトでは存在しないので、
あなたが自作することになります
よって、そこで使われるプロパティ名はあなたが決めるのですよ。
68デフォルトの名無しさん:2006/01/04(水) 11:41:13
>>66
気合と力技
とりあえずOnMouseDownとかでごにょごにょやってみろ
わからんかったら又くればいい
69デフォルトの名無しさん:2006/01/04(水) 20:10:20
>>67
>>68

アリガト
気力で頑張るよ
70デフォルトの名無しさん:2006/01/05(木) 14:59:15
> 気合と力技

これからの回答のテンプレになりそうだな(笑
回答の質も下がったもんだな
71デフォルトの名無しさん:2006/01/05(木) 15:24:05
人いないし・・・冬休み中なのに厨房も湧いて来ないし・・・
下層のビンボ学生や趣味グラマのユーザは死滅なのかも
72デフォルトの名無しさん:2006/01/05(木) 15:53:00
ビンボ人はVSExpressに行くだろうさ、それは。
メーカにこだわるほど長くやってもないだろうし。
73デフォルトの名無しさん:2006/01/05(木) 16:51:36
>>69
です
全然わからん
オラに力を分けてくれ
74デフォルトの名無しさん:2006/01/05(木) 17:30:37
>>73
世の中には偶然の一致というものがあるもので、
ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200601/06010010.txt
に同じような質問が出されてる。
誰かが答えてくれるのを待って、この質問の回答を参考にするといいよ。


日付も時間も質問の仕方も>>73にそっくりだけど、まさかマルt・・・
75デフォルトの名無しさん:2006/01/05(木) 17:36:27
たぶん間違いないかと
76デフォルトの名無しさん:2006/01/05(木) 17:44:12
わかってて>>74を書いたw
マルチじゃなきゃ答えを書こうと思ってた
それにしても質問の仕方が、典型的な教えて君だな
向こうのBBSで誰か回答してくれたらいいですね^^
77デフォルトの名無しさん:2006/01/05(木) 19:00:57
案の定、こんなレスがついてる
>意味がわからないのでもう少し具体的にお願いします。
>>73はリア厨なんだろうけど、質問するときはもう少し詳しく書かないとな
せっかく>>65>>68がヒントを出してるのに、それに対する答えが>>73じゃなぁ…

たぶんやりたいことは「動かせる」じゃなくて「移動させる」だろ?「動かせる」じゃ意味が多すぎ
自分でどこまでやったのか書け。まさか何もやってないのか?
コンポーネントを「移動させる」方法は知ってるのか?
ドラッグ&ドロップしたときにイベントを起こす方法を知らないのか?
そもそもこの程度の事は、わざわざ掲示板で聞くよりもググった方が早いぞ
はぁ…まるで赤ん坊を相手にしてるようだ…
78デフォルトの名無しさん:2006/01/05(木) 19:16:21
まぁ落ち着け
何もそこまで切れるこたぁないと思うぞ
79デフォルトの名無しさん:2006/01/05(木) 19:21:09
ここはくだすれだという事を忘れては困る
正月出勤でもあったのか?
80デフォルトの名無しさん:2006/01/05(木) 19:35:09
delphi6 personalを落としてきて、使用許諾コードを取ろうとしているのですが、
何度やっても登録確認のメールが届きません。
本体はちゃんと起動するから、そのまま放置でもいいんでしょうか?
起動時のスプラッシュウィンドウに、[使用許諾未完了]と出るくらいで
プログラム自体はちゃんと実行できています。

Delphi 6 使用許諾コードの取得プログラム(改訂版)も試してみましたが、
[CRCが一致しません]と表示され、何も起きません。
81デフォルトの名無しさん:2006/01/05(木) 21:22:57
var ch Byte;
begin
 ch := $
end.

この$ってどういう意味ですか?
何かの文字ですか?
82デフォルトの名無しさん:2006/01/05(木) 21:29:32
そのコードエラー出ませんか
83デフォルトの名無しさん:2006/01/05(木) 21:44:23
$以下16進数の数字を入れ忘れてるのかな?
84デフォルトの名無しさん:2006/01/05(木) 21:45:38
すいません、元はレジストリを弄るコードです
var
 Reg : TRegistry;
 data : Array [0..11] of Byte;
begin
 Reg := TRegistry.Create;
 Reg.RootKey := HKEY_CURRENT_USER;
 Reg.OpenKey('key', false);
 Reg.ReadBinaryData('data', data, 12);
 data[2] := $;
 data[3] := $;
 Reg.WriteBinaryData('data', data, 12);
 Reg.CloseKey
end.

$ってなんなのかな、と。
85デフォルトの名無しさん:2006/01/05(木) 22:03:17
hogehoge:Array[0..7] of fugafuga;
           ↑
これをそれより前に定義した定数に置き換えることできない?
86デフォルトの名無しさん:2006/01/05(木) 22:09:45
実際に置き換えてみれば分かるよ
87デフォルトの名無しさん:2006/01/05(木) 22:14:06
>>86
定数式が必要です って言われる
定数式ってconst uhouho:integer=7; これ 混ぜれんの?
88デフォルトの名無しさん:2006/01/05(木) 22:16:29
>>84
だからそのコードエラーd(ry

>>87
型取れ
89デフォルトの名無しさん:2006/01/05(木) 22:18:47
>>88
うおお!!
const hoge=8;
この記述は知らなかった!ありがとう!
俺まだまだ根本的な構造がわかってないなぁ・・・
90デフォルトの名無しさん:2006/01/05(木) 22:21:04
>>88
わかりました。
このままではコンパイルできないってことですね。
ありがとうございました。
91デフォルトの名無しさん:2006/01/06(金) 01:16:31
知らぬは一生恥って言うし・・・質問させてくれー
data:pointer;で、型は何が入るかわからない。
integerかも知れないし、自作のクラスかも知れん。
どれにしても解放(してその後nilに)したいんだけど、このコードってどう?
もしかして超池沼?
procedure reset;
begin
  if data<>nil then begin
    if data is TObject then begin
      TObject(data).Free;
    end else begin
      Dispose(data);
    end;
    data:=nil;
  end;
end;
92デフォルトの名無しさん:2006/01/06(金) 01:17:56
a: TObjectList;
b: TObjectList;
a := TObjectList.Create(True);
b := TObjectList.Create(True);

としている時に、

a.Assign(b, alCopy);

とすると、bが保持してるポインタリストだけがコピーされますか?
それともbが保持してるオブジェクトの実体ごとクローンが生成されます?
93デフォルトの名無しさん:2006/01/06(金) 01:22:42
実体ごと
94デフォルトの名無しさん:2006/01/06(金) 01:23:56
>>91
クラスはそれでおkだが、
配列やレコード等の解放時にはメモリリークする可能性がある
95デフォルトの名無しさん:2006/01/06(金) 01:26:20
>>93
どうもです。
96デフォルトの名無しさん:2006/01/06(金) 01:33:42
嘘だ。今、ソース追ったけど、オブジェクトの参照だけがコピーされるような気がするんだけど。
実態毎のクローン作成されないでしょ。つまり、ディープコピーじゃなくてシャローコピーじゃ??
97デフォルトの名無しさん:2006/01/06(金) 01:33:49
>>94
あ そうか。考えてなかった。。。ありがとう。

てか pointer型にisは使えない って言われてしまった。
class(TObject)かどうかも調べられない。困ったな。
全部に対応するには、解放用イベントを用意しておくしかないかな。
98デフォルトの名無しさん:2006/01/06(金) 01:38:53
>>97
TObject(data).hoge みたいにキャストしてメンバにアクセスすると
例外がでた気がするから、それ拾ったら?

try
 TObject(data).Free;
except on E何とか do
 Dispose(data);
end;
99デフォルトの名無しさん:2006/01/06(金) 01:40:16
だから、クラスでも実体が複製されないよ。
100デフォルトの名無しさん:2006/01/06(金) 01:41:56
>>98
あああああ!頭いいな!!!
例外を判断に使うなんて発想ねーよwwww
超ありがとう その方向性で行く
101デフォルトの名無しさん:2006/01/06(金) 01:44:29
自作自演かよ。
100>>
102デフォルトの名無しさん:2006/01/06(金) 01:46:10
>>101
いや俺>>91>>97>>100だけど。
何この板 性格悪すぎ こんどからトリップつけよ・・・
103デフォルトの名無しさん:2006/01/06(金) 01:49:36
たった一人の煽りで板全体を性格悪すぎと決めつける君もどうかと
2chにいるなら煽り耐性くらいつけなさい
104デフォルトの名無しさん:2006/01/06(金) 01:51:08
96,99,101だけど、

本当にTObjectListはクラスでも実体は複製されないからね。
あくまで、参照だけがコピーされるだけです。
って、他の人の質問だったのか・・俺の事なら俺が悪かった。
てっきり、92の人かと。

105デフォルトの名無しさん:2006/01/06(金) 01:54:24
今ちょっと試してみたけど、EAccessViolationだった。
よく考えてみると
data := Pointer($乱数);
みたいなめちゃくちゃなアドレス入れられた場合も考慮しなけりゃいけないのか
この場合はDisposeしてもEAccessViolation

結構めんどくさそう。
106デフォルトの名無しさん:2006/01/06(金) 01:57:21
まぁ、そもそも、オブジェクトとIntegerとかを一緒に扱おうという方向性が
問題だと思うが。
107デフォルトの名無しさん:2006/01/06(金) 01:59:04
入らないようにすれば良い
108デフォルトの名無しさん:2006/01/06(金) 02:21:05
>例外を判断に使うなんて発想ねーよ。
まぁ、悪い発想なら、発想しない君の方が正常だと思うが。
109デフォルトの名無しさん:2006/01/06(金) 02:21:57
これ
110デフォルトの名無しさん:2006/01/06(金) 02:29:36
JclSysUtils.pasのIsObjectとか
ttp://hallvards.blogspot.com/2004/06/hack-6checking-for-valid-object.html
の ValidateObjとか使って判断すれば?

>>109は書き込みミス すまん。
111デフォルトの名無しさん:2006/01/06(金) 02:56:33
ねぇねぇ、AdditionalのところにLabeledEditってあるじゃん?
普通のEditにLabelがくっついた感じのコンポーネント
それと同じようなのでLabeledComboBoxってないかな?
ComboBoxの上にLabelがくっついた感じのやつ
探してるんだけどないんだよね〜。誰か知らない?
112デフォルトの名無しさん:2006/01/06(金) 03:16:14
それくらい自分で作りなされ
名前とか気にしないなら10秒で作れると思う
113デフォルトの名無しさん:2006/01/06(金) 03:16:27
>>111
1. 自作する。
2. ComboBoxとLabelを配置する。
3. PCを窓から投げ捨てる。
114デフォルトの名無しさん:2006/01/06(金) 03:53:00
10秒って、、アンタプロ並ですね〜
どっかにLabeledEditのソースがあれば真似できるかなー?
115デフォルトの名無しさん:2006/01/06(金) 04:06:14
>>113の2ではダメな理由を三行で書け
116デフォルトの名無しさん:2006/01/06(金) 04:25:17
>>87
型付き定数って変数として扱われるんじゃないっけか
117デフォルトの名無しさん:2006/01/06(金) 04:28:39
定数はコンパイル時にそのまま展開される
型付き定数はコンパイル時に参照アドレスが展開される
118114:2006/01/06(金) 05:01:54
ラベルつきComboBoxを複数動的に生成して、それらをTComponentListで管理するので、
ComboBoxとLabelをまとめた1つのコンポーネントで管理したい
新しい事に挑戦しないと進歩できない(今までは2の方法でやってきた)
119デフォルトの名無しさん:2006/01/06(金) 05:19:01
THogehoge = class
 Label: TLabel;
 ComboBox: TComboBox;
 constructor Create;
 destructor Destroy; virtual;
end;

constructor THogehoge.Create;
begin
 Label := TLabel.Create(nil);
 ComboBox := TComboBox.Create(nil);
end;
//略
  ・
  ・
var
 HogeList: TList;
begin
 HogeList.Add(THogehoge.Create);
//略
  ・
  ・
end;

ちょっと手抜いたけど、こんな感じじゃダメなん?
120デフォルトの名無しさん:2006/01/06(金) 05:20:40
ところどころ何か抜けたりおかしかったりするけど、その辺は察して
121デフォルトの名無しさん:2006/01/06(金) 05:27:53
TPopupActionBarって何に使うものなんでしょうか。
ヘルプにも記述がないし・・・
TPopupMenuとの違いがいまいち。
122デフォルトの名無しさん:2006/01/06(金) 12:19:46
memcpyみたいに、
直接メモリからメモリへコピーする方法おしえてくだせぇ!
123931:2006/01/06(金) 12:24:44
質問させてください。

TListViewのOnMouseClickイベントをつかってListViewに列挙されたテキストファイルを開くようなものを作ってみました。
それで、ListView(List形式)に列挙されている部分をクリックするとちゃんとファイルがmemoの部分に表示されるんですが、ListViewのファイル名がない白地の部分をクリックすると
「アドレス000004に対する読み込み違反がおきました」
とか、エラーが出てしまいます。
選んだItem.Selected.IndexがItems.Count以内になるように
if Item.Selected.Index<Items.Count then (読み込み)
みたいにしたけど、効き目ありませんでした。どこかのプロパティを設定するのかなと思って探したけどわかりません。

検索したけどモリタポが足りませんって出るので…
すごく初歩的なことなのかもしれませんが、よろしくお願いします。
124デフォルトの名無しさん:2006/01/06(金) 12:39:28
>>122
Move手続き

>>123
onMouseClickイベントの先頭に

if ListView1.ItemIndex = -1 then
 exit;
125122:2006/01/06(金) 12:52:13
>>124
ありがとう!!
126123:2006/01/06(金) 13:01:26
>>124

ありがとうございます!!
127123:2006/01/06(金) 13:16:42
>>124さんへ

TListViewにItemIndexプロパティはありませんでした・・
代わりに
if ListView1.Selected.Index=-1 then exit;
ってやってみたんですが、おんなじように
「アドレス000004に対する読み込み違反がおきました」
って出てしまいます(; ;)
ItemIndexが0〜IndexCount-1内なら処理しないでOnMouseClickイベントから抜けるって、
文法的にはわたしにもわかるんですが・・
128デフォルトの名無しさん:2006/01/06(金) 13:24:31
>>127
> TListViewにItemIndexプロパティはありませんでした・・
アッー!りえない
オブジェクトインスペクタにはないぞ
コードに書くんだぞ

どーしてもSelected使いたければ
if lvRecordW.Selected = nil then
 exit;
129デフォルトの名無しさん:2006/01/06(金) 13:58:49
コンソールアプリを作ったとき、
コンソールの右上の×を押されたことを知るにはどんな方法がありますか?
フォームでいうOnCloseやOnCloseQuery等にあたるものが欲しいです
130デフォルトの名無しさん:2006/01/06(金) 14:01:37
>>129
コンソールって、DOS窓自体はアプリじゃないから、
自分の外の事はわからないんじゃない?
猫リセットにカートリッジのプログラムで抵抗するような。
131123:2006/01/06(金) 14:04:14
>>128さんへ

TListBoxにはItemIndexありますけど、TListViewには無いみたいです・・
で、if lvRecordW.Selected = nil then exit; を使ってみたらうまくいきました。

ありがとうございます。Happyです!
132デフォルトの名無しさん:2006/01/06(金) 14:10:05
>>130
いや、特に×にこだわってはいなくて、
別にAlt+F4でもよくて、そこに書いたとおり終了時のタイミングが欲しいだけです
whileループでしばらく時間かかる処理しようとしてまして、
その間に×押された場合に色々処理挟みたかったもので・・・
133デフォルトの名無しさん:2006/01/06(金) 14:48:49
プロセス監視するとか
134デフォルトの名無しさん:2006/01/06(金) 14:58:21
WM_CLOSEメッセージを捕まえるとか
135デフォルトの名無しさん:2006/01/06(金) 15:09:23
Stringから改行コードの前まで取得する方法はありまつか?
136デフォルトの名無しさん:2006/01/06(金) 15:12:22
PCharにキャストして#13#10が出るまで
IncするなりCharNextするなりすりゃ良いんじゃね?
137135:2006/01/06(金) 15:13:19
メソッドでは無いんですか。
138デフォルトの名無しさん:2006/01/06(金) 15:18:31
>>135
pos関数+copy関数はどうかな?
139デフォルトの名無しさん:2006/01/06(金) 15:22:10
TStringListにブチこんでCommaText使うとか
140デフォルトの名無しさん:2006/01/06(金) 15:47:07
>>134
コンソールに飛んでくるか?
141デフォルトの名無しさん:2006/01/06(金) 15:54:27
WinAPI使って、いったん外側から、自分の実行されてるコンソールに行ってから監視すればいいのかな?妄想
142デフォルトの名無しさん:2006/01/06(金) 16:02:22
SetConsoleCtrlHandlerは駄目か?
143114:2006/01/06(金) 16:08:52
>>119
ウボァ、Label:TLabelを加えるだけでいいのか
クラスを自作するのは初めてなんで、いろいろ調べながら解読したいと思います
どうもありがとう
144デフォルトの名無しさん:2006/01/06(金) 16:20:49
>>142
うは、まさにそれでした
てか終了要因まで引数で分かるんですね
ありがとうございました
145デフォルトの名無しさん:2006/01/06(金) 18:02:18
フォームからマウスが離れたイベントって取れますか?
146デフォルトの名無しさん:2006/01/06(金) 19:42:37
TDrawGridの指定したCellを再描画する方法ありますか?

具体的には、DrawCell(ACol, ARow, ARect, AState)コールしたいんですが、
引数多杉orz
147146:2006/01/06(金) 19:44:54
procedure Repaint; override;

ってのはあるみたいですね。
でも、1セルだけ再描画かけたいんですが。
148デフォルトの名無しさん:2006/01/06(金) 20:33:27
C言語のstructに相当するのは
recordとpacked recordのどちらなんですか?
Cで利用するDLL作りたいのですが…
149デフォルトの名無しさん:2006/01/06(金) 20:51:02
Cの事詳しくないけど、
Cで#pragmaでアライメントって調整できなかったっけ?
処理系によって違うのかな?
だから、Delphiでpacked recordで宣言したら、それにあわせて、
Cで宣言する。
ただのrecordで宣言したら、それにあわせて、Cで宣言する。
150デフォルトの名無しさん:2006/01/06(金) 20:52:32
あ、でも、アライメント指定できなかった、VBの事考えると、
どっちがよかったのか忘れた。
ごめん
151デフォルトの名無しさん:2006/01/06(金) 21:03:06
で、
146>
OnDrawCellイベント使っちゃ駄目なの?
って、そういう意味じゃなくて、強制的に再描画かけたいのなら、
んー、どうやるんだろ?とりあえず、OS的には、ウィンドウのクライアント領域が
無効にならないと再描画されないわけで、repaintメソッド呼び出すとか。
152デフォルトの名無しさん:2006/01/06(金) 21:08:24
ごめん、repaintの事自分で書いてたね。
特定のセルだけ、再描画したいなら、Cellの座標(矩形座標)計算して、
WindowsAPIのInvalidateRect呼び出すしかないんじゃ??
153デフォルトの名無しさん:2006/01/06(金) 21:25:09
例外ダイアログを出さずにアプリを終了させる方法は無いでしょうか。

Delphiで実行させると例外ダイアログが出ずに終了しますが、
出来上がった実行ファイルを終了させると例外ダイアログが出てしまうんです。
154デフォルトの名無しさん:2006/01/06(金) 21:29:50
Delphiの利点はVB並の接しやすさで、ネイティブコードを吐けて、尚且つインラインアセンブラが使えるところだ。
この点、C#は駄目だね。
ただし、64Bit時代のVisualC/C++にはインラインアセンブラは搭載されないようだし、別にそれが欠点になるということはないようだな。
でもあれだろ、.NETはユーザーの利便性というより、MS支配のためだよな。
155デフォルトの名無しさん:2006/01/06(金) 21:37:37
>>153
それってアプリがデバッグされているかどうかに依存してしまってるってことっしょ?
ダイアログを止めるより、原因突き止める方が先では
156デフォルトの名無しさん:2006/01/06(金) 21:54:44
>>154
なにをいまさら、かつ、レベル低すぎ、かつ、すれ違い
157デフォルトの名無しさん:2006/01/06(金) 22:38:16
>>153
SetErrorMode(SEM_NOGPFAULTERRORBOX); は?
158デフォルトの名無しさん:2006/01/06(金) 22:57:11
>>157

実行ファイルでも例外ダイアログが出なくなりました。
ありがとうございました
159デフォルトの名無しさん:2006/01/06(金) 23:14:40
そんなんでいいんかぁああー〜〜
160デフォルトの名無しさん:2006/01/06(金) 23:19:19
確かにそれ根本的な解決になってないような・・・対症療法の見本
161デフォルトの名無しさん:2006/01/06(金) 23:31:55
市販ソフトでもこういう事ってあるの?
バグ放置→どんなバグか誰も知らない→もしかしたらテラヤバスなバグ

おら、なんだか尿意がしてきたぞ
162デフォルトの名無しさん:2006/01/06(金) 23:37:15
何が言いたいかさっぱり分からんがあるだろ
163デフォルトの名無しさん:2006/01/06(金) 23:59:16
Windowsなんてどうせ潜在的にとんでもないもん隠れてるだろ
164デフォルトの名無しさん:2006/01/07(土) 00:07:51
それを言っちゃぁジェンキンス
165デフォルトの名無しさん:2006/01/07(土) 01:13:35
>>145
フォームでマウスをキャプチャしていたら正確かつ楽に取れる。
多少のタイムラグがあっても良いならタイマを、
面倒でも良いならグローバルフックかな。
166デフォルトの名無しさん:2006/01/07(土) 11:44:11
>>165
ありがとー。
SpecialLaunchみたいな動作をさせたいのです。
167デフォルトの名無しさん:2006/01/07(土) 16:50:54
var
NotifyData: TNotifyIconData;
begin
with NotifyData do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := hWndTrayIcon;
uID := 0;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
szTip := Toolname;
hIcon := Application.Icon.Handle;
uCallbackMessage := WM_MY_TRAYICON;// 独自に定義
end;
Shell_NotifyIcon( NIM_ADD, @NotifyData );
end;

この szTip に Toolnameの文字列を入れたいのですが、
[StringとArrayには互換性がありません]とエラーがでます。

szTip := Toolname; をどのように書き直せばよいでしょうか。
 
168デフォルトの名無しさん:2006/01/07(土) 17:04:04
>>167
StrPLCopy
169デフォルトの名無しさん:2006/01/07(土) 17:05:24
>>168

StrPCopy(szTip, Toolname);
できました、感謝!
170デフォルトの名無しさん:2006/01/07(土) 17:23:58
初歩的な質問で悪いけど
THogehoge = Class(TObject)
private
fuga
171デフォルトの名無しさん:2006/01/07(土) 17:26:22
うあ インデントしようとしてtab押した後
改行しようとしたら送信ボタンがへこんだ><

THogehoge = class(TObject)
  public
    constructor Create;  ←───┐
    destructor Destroy;override; .←┴─この二つって必須?
  end;

172デフォルトの名無しさん:2006/01/07(土) 17:30:23
必須じゃないよ。
173デフォルトの名無しさん:2006/01/07(土) 17:34:56
う〜〜わ〜〜〜
からっぽのCreate、Destroyを書き続けてきた俺は!!!???
ありがとうっ 呪縛から放たれるお( ^ω^)
羽ばたけ俺
174デフォルトの名無しさん:2006/01/07(土) 19:34:31
あともうひとつ
THogehoge = class(TObject)
    fuga: TFuga;  ←───これってprivate? public?
  private
    fugafuga
  public
    foofoo
  end;
175171,173:2006/01/07(土) 19:38:16
>>174
そこのスコープ俺も知りたい
176デフォルトの名無しさん:2006/01/07(土) 19:51:44
ヘルプでフィールドを調べてみろ
177デフォルトの名無しさん:2006/01/07(土) 19:52:00
>可視性指定子が指定されていないメンバーには,1 つ前のメンバーと同じ可視性が与えられます。
>クラス宣言の先頭で定義されているメンバーで可視性が指定されていないものについては,
>そのクラスを {$M+} 状態でコンパイルした場合,または,{$M+} 状態でコンパイルされたクラスから派生させた場合は,
>デフォルトでパブリッシュの可視性が与えられます。それ以外の場合,
>このようなメンバーにはパブリックの可視性が与えられます。

ヘルプより転載
178デフォルトの名無しさん:2006/01/07(土) 20:10:36
>>177
どうも
179デフォルトの名無しさん:2006/01/07(土) 20:45:02
>>173には関係ないかもしれないけど、
からっぽのCreate、Destroyと定義すらしないのでは動作が違うよ。
180デフォルトの名無しさん:2006/01/07(土) 20:47:31
そりゃ初耳だ
具体的にはどう違うん?
181173:2006/01/07(土) 20:57:46
>>179
うぇ???kwsk教えてください
182デフォルトの名無しさん:2006/01/07(土) 21:14:18
フォームにボタンを2個置いて以下入力。
interface
TForm1 = class(TForm)
(略)
end;
TA = class(TObject)
public
constructor Create;
end;
TB = class(TA)
end;
TC = class(TA)
public
constructor Create;
end;
183デフォルトの名無しさん:2006/01/07(土) 21:15:20
続き
implementation
(略)
constructor TA.Create;
begin
Form1.Caption := TimeToStr(Now);
end;
constructor TC.Create;
begin
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TB.Create.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
TC.Create.Free;
end;
184デフォルトの名無しさん:2006/01/07(土) 21:16:17
Button1をクリックすると、FormのCaptionが現在時刻に更新されるけど、
Button2をクリックしても、何もおきない。
185デフォルトの名無しさん:2006/01/07(土) 21:19:33
>constructor TA.Create;
>begin
>Form1.Caption := TimeToStr(Now);
>end;
>constructor TC.Create;
>begin
>end;

『空』ってのは inherited すらしないと受け取っていいのか?
186デフォルトの名無しさん:2006/01/07(土) 21:21:28
inheritedしないんですか、そうですか…
187デフォルトの名無しさん:2006/01/07(土) 21:22:36
185>>
そう、上位クラスのコンストラクタは呼び出されない。
188デフォルトの名無しさん:2006/01/07(土) 21:27:27
普通inheritedは当然あるものとして、それ以外のコードがないと空と言うと思うが
189デフォルトの名無しさん:2006/01/07(土) 21:29:03
まぁ継承しなければそりゃ動作も変わりますよ
でも173はさすがにinheritedを除いて「からっぽ」と言ってたと思う
・・・と信じたい
190デフォルトの名無しさん:2006/01/07(土) 21:32:42
189>
俺もそんな気がする。172でそこまで考えずにレスしちまった。
さすがに、面倒とか言ってたらかCtrl+Cでメソッド定義を生成してないと思うし。
191デフォルトの名無しさん:2006/01/07(土) 21:42:58
>TC = class(TA)
>public
>constructor Create;
>end;
これでCtrl+Shift+Cしてもinheritedは自動的には入らない@D7
192デフォルトの名無しさん:2006/01/07(土) 21:48:32
191>
そうだった?ごめん、適当な記憶で書いちまったから。
でも、Createを仮想メソッドにしてたら、入ると思う。
193デフォルトの名無しさん:2006/01/07(土) 21:52:17
レスをつける時の心得
・質問文を熟読する。はっきりと理解できない箇所は問い直す。
・書かれたコード、提示するコードを実際に検証する。
・書いたレスは投稿する前に内容をよく確認する。
194デフォルトの名無しさん:2006/01/07(土) 22:00:01
レスアンカーも何とかならんのか
195デフォルトの名無しさん:2006/01/07(土) 22:02:44
193>
まぁ、その通りだけど、あんま厳しく管理しないでくれ、
想像だけど、ここの人たちは、大半が暇つぶしにレスしてると思うから、
厳しくすると検証とか面倒だから、レスする人いなくなると思う。

194>
レスアンカーって何??
196デフォルトの名無しさん:2006/01/07(土) 22:03:29
あ、
194>
↑のことね。あれ、どうやってリンクするのかわからん。
197デフォルトの名無しさん:2006/01/07(土) 22:03:59
「からっぽ」にinheritedは含まれるのね。
「くだすれ」なので一応書いといた方がいいかなと。
すまんかった。
198デフォルトの名無しさん:2006/01/07(土) 22:12:14
>>196
↑こうするんだよ
199デフォルトの名無しさん:2006/01/07(土) 22:14:26
それができん。ということで、
テストします。
>>198
200デフォルトの名無しさん:2006/01/07(土) 22:15:26
おお、2個つければよかったのか、
201173:2006/01/07(土) 22:30:18
え・・・・・・inheritedしなきゃ駄目?
orz...............
202空気読めないレスすまそ:2006/01/07(土) 22:39:49
偉そうな事言ってるけどさぁ、いくらプログラマとしてのスキルがあってもマナーを知らない奴は公共の掲示板に書き込む資格は無いと思う。
それにアンカーの打ち方とか基本的なことはヘルプ見るなりググるなりすればいいだけの事でしょ?
2ちゃんねるは特にROMMERが多いんだからそう言う点に注意してから書き込んだ方がいいよ。
203デフォルトの名無しさん:2006/01/07(土) 22:49:19
>>202
アンカーの事叩くのおかしいだろ。
2chに書き込む資格なんて必要ないのとおんなじで、
初心者だって書き込んだっていいじゃないか。
そういうのが嫌いなら、誰かが反応する前に「ぐぐれ」って3文字打てばいいんだ。
204デフォルトの名無しさん:2006/01/07(土) 22:50:37
レスアンカーの付け方に決まりなんてないから好きにすればええやん
分からないわけじゃないんだし

そんなことより173を一発殴ってもよかですか?w
205173:2006/01/07(土) 22:53:43
    /\___/ヽ   ヽ
   /    ::::::::::::::::\ つ
  . |  ,,-‐‐   ‐‐-、 .:::| わ
  |  、_(o)_,:  _(o)_, :::|ぁぁ
.   |    ::<      .::|あぁ
   \  /( [三] )ヽ ::/ああ
   /`ー‐--‐‐―´\ぁあ
206デフォルトの名無しさん:2006/01/07(土) 22:54:10
>決まりなんてない
あります
207デフォルトの名無しさん:2006/01/07(土) 22:58:24
>>としないとリンクされないとでも言いたいんだろうけど、
それは決まりじゃなくて単にcgiの仕様
むしろリンクにならない方が転送量削減に貢献して運営も喜ぶんじゃない?(w
208デフォルトの名無しさん:2006/01/07(土) 23:00:41
>>207
そこまで追求するなら、
専ブラが対応してて cgiに負荷がかからない
>1000
これが一番良い( >一個ね
209デフォルトの名無しさん:2006/01/07(土) 23:03:48
専ブラでもリンクタグはくっ付いてくるから別に変わんないよ
210デフォルトの名無しさん:2006/01/07(土) 23:05:56
173のキャラが初心者に似つかわしくなくおもろい件について
211デフォルトの名無しさん:2006/01/07(土) 23:06:32
くだすれ2ch(超初心者)
212173:2006/01/07(土) 23:13:10
>>210
ありがとうっ 
今度からインヘるとするよっ また来るぜ! (`・Д・´)ノシ

213デフォルトの名無しさん:2006/01/07(土) 23:20:08
よし、次からまた1発ずつ・・・
214デフォルトの名無しさん:2006/01/07(土) 23:43:20
ROMMER(笑)
215デフォルトの名無しさん:2006/01/07(土) 23:47:57
>偉そうな事言ってるけどさぁ、いくらプログラマとしてのスキルがあってもマナーを知らない奴は公共の掲示板に書き込む資格は無いと思う。
だからさぁ、それは人それぞれのものさしがあるわけでしょ、ある程度の幅が。
だから、君のものさしですべてを見ないでくれる。
216デフォルトの名無しさん:2006/01/07(土) 23:51:12
>>206
一応、2chの決まりあるけど、
他のスレを引用するのにリンクタグをつけろなんて決まりまはない。
217デフォルトの名無しさん:2006/01/07(土) 23:57:07
ほんと、自分の価値観で他人のする事でどうこういう輩多いいよね。
人それぞれ考え方とか違うのに。
だから、基本的に自分のルールはずれた人現れても俺からは何も言わん。
言われたら言い返すけど。
そんなに自分のルールで運用したければ、自分で掲示板作れって感じ。



218デフォルトの名無しさん:2006/01/08(日) 00:25:27
だから、色んな人が集まるんだから、ある程度の自分のルールにはずれた人が
くると思って対処しろよ、リンクタグはそもそも付けろなんてルールなんて2chにはないし、
グダグダいってんじゃねぇよ、この考え方狭いクソヤロウが。

って↑、こういうのは、2ch的には、煽りとかになるから禁止されていると思う。
219デフォルトの名無しさん:2006/01/08(日) 00:30:28
2chで煽りが禁止されてるなんて初耳だ
220デフォルトの名無しさん:2006/01/08(日) 00:31:07
それをいうならお前らスレ違いですよ
221デフォルトの名無しさん:2006/01/08(日) 00:35:31
>>220
そんなこと言う君は全く俺の言った事わかってないな。
2chにスレッドタイトルと関係ないことを書いちゃいけない2chの決まりはない。

>>219
あ、そうなの?禁止されていないなら、俺が間違ってた。
222デフォルトの名無しさん:2006/01/08(日) 00:38:28
じゃあ教えてあげますね^^
2chではそういうのを

空気嫁

って言うんですよ^^
あ、2chの玄人さんだから当然知ってるか^^;;;;;;;;;
ごめんなさいね^^;;;;;;;
223デフォルトの名無しさん:2006/01/08(日) 00:41:23
おいおい、俺の意見に反論してくれよ。
この意見に。
>2chにスレッドタイトルと関係ないことを書いちゃいけない2chの決まりはない。
反論できないと問題すりかえるんだもんな。しかも、
反論できないが自分が優位にたちたいから、絵文字をなるべく多く使う。
よくいるよ君みたいな人。
224バカはバカボンスレ逝ってくれ:2006/01/08(日) 00:46:38
225デフォルトの名無しさん:2006/01/08(日) 00:51:07
俺においおいって何度も言わせないでくれよ。
さらに、反論できないと、あげくのはてはそれかよ。
実社会でもある話題を他人に意見ぶつけてるときに、君は意見言い返せないと
、話の中心をすりかえて、あげくはその人自体を攻撃。
たまにいるよ君みたいな人。
226デフォルトの名無しさん:2006/01/08(日) 00:51:15
考え方が違う奴が集まるから衝突する
おそらくこれからも議論が起こるだろうが絶対に解決はしない
だからお前等不毛な言い争いするくらいなら黙ってろ
227デフォルトの名無しさん:2006/01/08(日) 00:51:19
んまぁ、決まりうんぬんじゃなくて、結局

  周 り の 奴 に ど う 思 わ れ る か

マナーってそういう事。
228デフォルトの名無しさん:2006/01/08(日) 00:51:58
君は議論が苦手ってことは知能も低そうだね。
229デフォルトの名無しさん:2006/01/08(日) 00:54:24
226>>
その点はあやまる。俺も解決はしないと思う。だから、これくらいにしときます。
ちなみに、不毛とはおもわない。相手からためになる意見があるかも知れないので。

230デフォルトの名無しさん:2006/01/08(日) 00:57:00
さらに最後に一言だけ、
>おそらくこれからも議論が起こるだろうが絶対に解決はしない
絶対に解決しないとは思わない。絶対に解決しないと思ってる君は
他人のいい意見も取り入れないわけ?俺は相手の方が意見よさそうなら、
相手の意見を取り入れます。でないと人間的に成長しないので。
231デフォルトの名無しさん:2006/01/08(日) 01:03:20
>>230
>でないと人間的に成長しないので。
偉いなお前。でもそれなら今後は
「よくいるよ君みたいな人」とか最後につけない事を推奨する。
相手を上から見た発言だし、
「僕は世の中の事がわかってます」っていう厨房スメルがして痛いから。
それじゃ話し合いにはならないさ。
232デフォルトの名無しさん:2006/01/08(日) 01:08:24
231>
ありがとうございます。その通りです、「よくいるよ君みたいな人」とかは、
実社会ではもちろん使いません。今回はバカとか意見に対して反論するんじゃなく、
その人自体を攻撃してきたので、言い返してしまいました。
すみません。それでは、寝ます。
233デフォルトの名無しさん:2006/01/08(日) 01:22:35
おいおい、俺の意見に反論してくれよ。
この意見に。
>2chにスレッドタイトルと関係ないことを書いちゃいけない2chの決まりはない。
反論できないと問題すりかえるんだもんな。しかも、
反論できないが自分が優位にたちたいから、絵文字をなるべく多く使う。
よくいるよ君みたいな人。
おいおい、俺の意見に反論してくれよ。
この意見に。
>2chにスレッドタイトルと関係ないことを書いちゃいけない2chの決まりはない。
反論できないと問題すりかえるんだもんな。しかも、
反論できないが自分が優位にたちたいから、絵文字をなるべく多く使う。
よくいるよ君みたいな人。
おいおい、俺の意見に反論してくれよ。
この意見に。
>2chにスレッドタイトルと関係ないことを書いちゃいけない2chの決まりはない。
反論できないと問題すりかえるんだもんな。しかも、
反論できないが自分が優位にたちたいから、絵文字をなるべく多く使う。
よくいるよ君みたいな人。
234デフォルトの名無しさん:2006/01/08(日) 01:23:54
顔真っ赤だね
235デフォルトの名無しさん:2006/01/08(日) 01:46:40
おまいら、そうとう暇なんですね・・・。
236デフォルトの名無しさん:2006/01/08(日) 01:47:21
>>235
ヒント:冬厨
237デフォルトの名無しさん:2006/01/08(日) 03:00:19
>>179がエスパーであとは凡人だということがよくわかった。
238デフォルトの名無しさん:2006/01/08(日) 08:34:49
冬休みですねこの展開
239デフォルトの名無しさん:2006/01/08(日) 08:47:56
DEL厨最後の冬休みになりそう
240デフォルトの名無しさん:2006/01/08(日) 09:37:11
Delphiの内容についてのはなしにしようぜ
241デフォルトの名無しさん:2006/01/08(日) 10:07:21
>>80
俺も今やってみたけど、そうなった。

後日またやってみるかな…。
242デフォルトの名無しさん:2006/01/08(日) 11:30:47
delphi6&7のプロフェッショナル版を持っています。
BDEを使うことがないので、これだけインストールしたくないのですが、
最後までインストールが終了した後、BDEのみをアンインストールする
方法を教えてください。コントロールパネルを開いてもBDEのアンイン
ストールの項目ででてきません。
243デフォルトの名無しさん:2006/01/08(日) 13:31:59
>>242
気 に し な い
244デフォルトの名無しさん:2006/01/08(日) 14:06:57
BDEは必須コンポーネントだから無理じゃなかったけ。
245デフォルトの名無しさん:2006/01/08(日) 14:38:08
>>240
Delphiの内容についてのは、無しにしようぜ
ってことなのかもしかして
246デフォルトの名無しさん:2006/01/08(日) 14:49:56
10×10の範囲ごとにRGB値の合計を出すっていうのを画像全体で行いたいんですが
もし範囲内にRGB(0,0,0)が出現したときは、次の範囲の取得に移る動作をさせたいんですけど頭がこんがらかって分からなくなってます

変数について書いてきます

y、x:画像のy座標とx座標
j、i:10×10の範囲内でのループ、1ピクセルごとにRGB値を加算するためです
All10R、All10G、All10B:RGB各々の合計
Pnt1[y,x].R、Pnt1[y,x].G、Pnt1[y,x].B:座標(y,x)のRGB値、前もって取得済み
All10[y,x]:左上を(y,x)とする10×10のRGB値の合計

以下にプログラムを書いておきます
247246:2006/01/08(日) 14:50:28
for y:=0 to Image1.Picture.Height -10 do //10×10の範囲の左上の座標は画像の縦ピクセル数−9まで変化、480の画像なら471まで
begin
for x:=0 to Image1.Picture.Width -10 do //yと同様で、こちらは640の場合なら631まで変化
begin

//All10〜の初期値は10×10の左上のピクセル
All10R:=Pnt1[y,x].R;
All10G:=Pnt1[y,x].G;
All10B:=Pnt1[y,x].B;

for j:=0 to 9 do //10×10の範囲内で対象のピクセルを移動する、y座標
begin
for i:=0 to 9 do //10×10の範囲内で対象のピクセルを移動する、x座標
begin
   
//範囲内の値を加算していく
Inc(All10R,Pnt1[y+j,x+i].R);
Inc(All10G,Pnt1[y+j,x+i].G);
Inc(All10B,Pnt1[y+j,x+i].B);

All10[y,x]:=All10R+All10G+All10B;

end;
end;
end;
end;

248246:2006/01/08(日) 14:50:59
yとxのループで−10となっているのはPnt1[y,x]の配列に格納されてるのは
1ピクセル目がPnt1[1,1]ではなくPnt1[0,0]に入ってるから・・・です

それで本題なんですが、これにRGB(0,0,0)を見つけたら次の10×10の範囲の取得に移る動作をくわえたいんです
たとえば(a,b)を左上とする範囲を調べてた際にRGB(0,0,0)が出てきたら、その範囲は無視して左上(a+1,b)の範囲に移る、というような

次の範囲に移る前に加算の計算を行ってしまっているのが当然で、その範囲の情報自体がいらないのが困りモノです・・・
All10[y,x]に格納したいのはRGB(0,0,0)が存在しないもののみにしたいんです

条件文などをどう加えればいいのか教えてくださいm( _ _ )m
長文スミマセン
249デフォルトの名無しさん:2006/01/08(日) 15:14:20
なんかj、iのループがおかしい気も・・・これだと左上のピクセルを2回加算してるような・・・
250246:2006/01/08(日) 15:33:52
前もって範囲内にRGB(0,0,0)があるか調べておいて、なければ加算処理する、あれば無視・・・にしないとダメですかね
調べる処理が何度もダブるので(同じRGB(0,0,0)を何度もひろってしまう)無駄も生まれますが

前もって画像全体からRGB(0,0,0)の位置を全てチェックして、最初からそれを避けるように調べられるやり方ができればいいんですが・・・
251デフォルトの名無しさん:2006/01/08(日) 15:59:20
寝起きだから間違ってるかも試練
Breakってループのネストひとつだけ抜けるんだっけ?忘れちったケケケ
var
  check: Boolean;
for y:=0 to Image1.Picture.Height -10 do
begin
  for x:=0 to Image1.Picture.Width -10 do
  begin 
    check := False;
    All10R := 0;
    All10G := 0;
    All10B := 0;

    for j:=0 to 9 do
    begin
      if check then Break;
      for i:=0 to 9 do
      begin
        if (All10R+All10G+All10B)=0 then //RGB(0, 0, 0)を発見しますた
        begin
           check := True;  //フラグ立ててから
           Break;  //抜ける
        end;
        Inc(All10R, Pnt1[y+j,x+i].R);
        Inc(All10G, Pnt1[y+j,x+i].G);
        Inc(All10B, Pnt1[y+j,x+i].B);
      end;
    end;
    //フラグが立ってないときだけ
    if not check then All10[y,x] := All10R +All10G +All10B;
  end;
end;
252246:2006/01/08(日) 16:58:16
ありがとうございます。
そのままだとエラーは出ませんでしたがラベルに値を表示しようと思ったらエラーが出てしまいました。

Label4.Caption:=IntToStr(All10[0,0]);
→なぜかフォームが開く前に”定数式が範囲を超えました”のエラー

Label4.Caption:=IntToStr(All10[1,1]); 
→エラーは出ませんが値が0に

値が0になっちゃうのはAll10R:=0などで初期化する段階まで戻っちゃってるからでしょうか・・(よくわかってない)
if文も次のようにしたらそれらしい値が出ましたがここもy+j,x+iにしたほうがいいのでしょうか?

if (Pnt1[y,x].R+Pnt1[y,x].G+Pnt1[y,x].B)=0 then

なんで(y,x)は(0,0)からはじまってるのに[0,0]でエラーが出る理由もわかりませんが(汗

253デフォルトの名無しさん:2006/01/08(日) 19:09:05
>>252
うわやっぱ間違ってたか
ぐわあああああやっぱScanLineつかいてええええええええ

> if (All10R+All10G+All10B)=0 then //RGB(0, 0, 0)を発見しますた 
たしかにここは
if ( Pnt1[y+j, x+i].R+Pnt1[y+j, x+i].G+Pnt1[y+j, x+i].B )=0 then だな

> なぜかフォームが開く前に”定数式が範囲を超えました”のエラー 
Pictureには何かしら画像は入ってるんだよね?
All10の変数定義部分はどうなってる?

つかさあ、配列で記憶しておくには要素数多すぎじゃね?
超頻繁に呼び出すような値じゃなければ手続きにして
getGoukei(x, y); みたいにして値をもらってきたほうがいいような気がする
254246:2006/01/08(日) 19:27:27
>>253
RGB値をPnt1に格納する際にはscanlineで取得してます、Pnt1は2次元の動的配列です
むなしいことにscanlineでの利用法を他に知らないのです・・・

定数式が範囲を超えました、のエラーの原因はおっしゃるとおりAll10配列の定義ミスでした

× All10:array[1..631,1..471] of integer;
○ All10:array[0..630,0..470] of integer;

にしたらなくなりました。

>getGoukei(x, y); みたいにして値をもらってきたほうがいいような気がする

確かにそのとおりですね、ゴリ押ししか考えてなかったもんで・・・
255246:2006/01/08(日) 20:09:58
>ぐわあああああやっぱScanLineつかいてええええええええ

ここでscanlineを使ってRGB値を取得しながら繰り返ししたほうがはやいんですか?
今のやり方だと640ピクセルの画像でこの処理に0.6〜0.7秒かかりますね(基準が曖昧・・)
256デフォルトの名無しさん:2006/01/08(日) 21:12:05
いや、すでに使ってるんでしょ
どういうコード書いてるのかこっちは分からんのでなんともいえないなぁ
257デフォルトの名無しさん:2006/01/08(日) 21:16:06
まさか Pixels[] じゃないだろな。まさか、いくらなんでも・・・
258ぬやあ:2006/01/08(日) 21:28:03
RGBの情報から、
色相、鮮やか、明るさ
に変換するにはどうすればいいの?
259デフォルトの名無しさん:2006/01/08(日) 21:34:26
>>258
HSVへの変換はググれば、どっかに公式落ちてたよ。
それがてっとりばやいと思う。

260ぬやあ:2006/01/08(日) 21:38:54
>>259
お そうですか 野暮な質問で正直スマンカッタ
261デフォルトの名無しさん:2006/01/08(日) 21:44:29
>>258
いえいえ。
たぶん、知ってるというか、公式をそのまんま覚えてる人は、いないと
思うから。覚えてる人は画像処理の達人か記憶力がすごい人くらいだと。
262デフォルトの名無しさん:2006/01/08(日) 21:58:11
HSL への変換はWindowsにすでにあるよ。
263デフォルトの名無しさん:2006/01/08(日) 23:19:47
多分D2005以降だと思うけど、GraphUtilユニットにColorRGBToHLSというのがあるよ。
264デフォルトの名無しさん:2006/01/09(月) 01:39:22
HSVなのかHSLなのかHLSなのか
265デフォルトの名無しさん:2006/01/09(月) 01:45:49
ウチのビデオはVHS
266デフォルトの名無しさん:2006/01/09(月) 13:11:26
Aというアプリでテキストファイルの内容を追加編集させ、Bというアプリで
テキストファイルに更新状況を監視して更新があれば読み込ませたいです。

AとBでファイルの読み書きが同時に起こり、干渉が原因でBアプリが読み込みエラーを
起こします。

他アプリがファイル使用中か調べる関数はありませんか?。
267デフォルトの名無しさん:2006/01/09(月) 13:21:26
268デフォルトの名無しさん:2006/01/09(月) 13:21:42
>266
Aでファイルを開くときに排他する
Bでファイルを開くときに排他でエラーになったらしばらく待つ
269デフォルトの名無しさん:2006/01/09(月) 14:42:04
>>267
>>268

排他や267さんのキーワードを参考にサンプルを見つけました。
どうも有難うございました。

ttp://forum.nifty.com/fdelphi/samples/00638.html

270デフォルトの名無しさん:2006/01/09(月) 18:38:23
例えば、
 Button1.Visible := (Button1.Caption = Button1.Name);
見たいな書き方ってアリ?それとも読みにくいから無し?(if ---- then のほうがいい?)
271デフォルトの名無しさん:2006/01/09(月) 18:40:47
あり。
272デフォルトの名無しさん:2006/01/09(月) 18:49:25
それは括弧なしでも書けるけど、その場合は無しだね。
273デフォルトの名無しさん:2006/01/09(月) 18:50:41
括弧無しの場合は質問してない。
274デフォルトの名無しさん:2006/01/09(月) 18:51:10
リストボックスの項目削除なのですが
特定の項目名を探して見つかったら削除するという処理で何故か例外が発生します。

for k:=0 to ListBox1.Items.Count-1 do begin
if ListBox1.Items[k] = 'hoge' then
ListBox1.Items.Delete(k);
end;

ListBox1.Items.Countは4なのでkは0から3なわけですが
k=3の時にif文で止まってしまうようです。
275270:2006/01/09(月) 18:52:33
おー、アリなのか
実はこの書き方が成立するのを知ったのが2日前なんだけど、これから慣れるようにがんばります
276デフォルトの名無しさん:2006/01/09(月) 18:54:26
>>274
削除は後ろからやりなさい
その場合は
for k := ListBox1.Items.Count - 1 downto 0 do begin


277274:2006/01/09(月) 18:58:58
>>276
ありがとうございます。
278デフォルトの名無しさん:2006/01/09(月) 19:09:00
>>273
日本語が不自由なの?
279デフォルトの名無しさん:2006/01/09(月) 19:54:02
コンボボックスが数10個あって、そのすべてに同一のリスト(1万個近く)を設定する処理がクソ重い。
どうもコンボボックスのItemsにTStringsを代入するときが重いらしい。

コンボボックスのリスト自体は後からはいじらないんで、
TStringsのコピー処理が重いんだったらポインタ(参照先)だけ変えてやりゃいいんじゃね?と思ったんだけどそれって可能?
&それで早くなる?
280デフォルトの名無しさん:2006/01/09(月) 19:55:21
シングルクォーテーションを含む文字列ってどうやって指定すればいいんですか?
281デフォルトの名無しさん:2006/01/09(月) 19:58:30
>>280
'シングルクォーテーションで''文字を囲む''実例'
282デフォルトの名無しさん:2006/01/09(月) 20:07:26
文字列の中にシングルクォーテーションを入れたいのですが
283デフォルトの名無しさん:2006/01/09(月) 20:08:52
>>279
BeginUpdate/EndUpdateはしてる?
284デフォルトの名無しさん:2006/01/09(月) 20:20:16
>>283
してる そしてしてもしなくても大して変わらないorz

処理内容は
ItemList := TStringList.Create;
ItemList.BeginUpdate;
for i := 0 to intItemListLength - 1 do begin
ItemList.Add('リストのデータ - ほんとはファイルから事前に読み込まれて配列に入ってる');
end;
ItemList.EndUpdate;

ってやって登録するデータを作って、
for i := 0 to Length(ComboBoxArray) -1 do begin
ComboBoxArray[i].Items.BeginUpdate;
ComboBoxArray[i].Items := ItemList; //ここが重い。リスト登録件数が8500件くらいあるんだけど、P4/3.2Ghzで0.5秒程度かかる
ComboBoxArray[i].Items.EndUpdate;
end;
って設定してる。(ComboBoxArrayはFindCompornentで配列化してあるコンボボックスたち)

ComboBoxArray[i].Items := ItemList; のところを
@ComboBoxArray[i].Items := @ItemList; みたいに書けたら早いんじゃないかなーと思った
285デフォルトの名無しさん:2006/01/09(月) 20:21:18
あぁ半角スペース使ったせいでインデントがとんだ
286デフォルトの名無しさん:2006/01/09(月) 20:31:45
@つけなくてもポインタ代入してるだけなんだが
あんまり基礎分かってなさそう
0.5秒で重いって言ってるのもどうかと思うが
287デフォルトの名無しさん:2006/01/09(月) 20:39:52
>してる そしてしてもしなくても大して変わらないorz

>ComboBoxArray[i].Items := ItemList;

この場合は自動的にBeginUpdate/EndUpdateされるからだね。
288デフォルトの名無しさん:2006/01/09(月) 20:48:05
>>286
>@つけなくてもポインタ代入してるだけなんだが
そうなの?
リストボックス2つ作って、同じStringList代入して、かたっぽ操作してももう一つ変わらないけど

>あんまり基礎分かってなさそう
基礎が分かって応用できりゃ自力解決してる、とorz

>0.5秒で重いって言ってるのもどうかと思うが
その0.5秒の処理が数十回行われるんで重いんです。
ウインドウ開くのに0.5x30で15秒。20回でも10秒。

>287
なるほど
とりあえず取っ払いました
ちょっと 数ミリ秒は早くなったのかな
289246:2006/01/09(月) 20:50:17
別のことで解決できないことがあるので再びご教授お願いしますm(_ _)m

ややこしくなると思うのでプログラムをうpしておきました、パスはdelphiです。
ttp://erotyabin.gotdns.com/user/erotyabin/cgi/uproda/img/upsf001709.zip

中に説明も一緒に入れておきました、実行してもらえば一目瞭然なんですが見当違いの場所からコピペされてる原因が分かりません。
白いブロックとコピペする座標は一致してるので探索がおかしいような気はするのですが・・・他の部分かもしれません。

黒く塗った部分と関係ない部分を消すようにすると本来は全く同じ部分がコピペされて元画像と変わらないものが出来るはずですが、全然関係ないものが。
わけわからんです・・・
290デフォルトの名無しさん:2006/01/09(月) 21:00:14
>>288
重いのはどうしようもないと思うぞ
やるならコンボボックス30個という仕様を変える方を選ぶべき
291デフォルトの名無しさん:2006/01/09(月) 21:04:26
>>288
>>@つけなくてもポインタ代入してるだけなんだが
>そうなの?
>リストボックス2つ作って、同じStringList代入して、かたっぽ操作してももう一つ変わらないけど

Itemsプロパティへ代入するとItemsプロパティのSetterである
TCustomCombo.SetItemsが呼ばれる。

そこでFItems.Assign(Value)によって中身が複製される。
なので当然反映されることはないよ。

ところでVCLのソース持ってないの?
292デフォルトの名無しさん:2006/01/09(月) 21:24:10
ComboBoxじゃなくてEdit+Buttonでカスタムダイアログで項目選ばせれば。
それに一万個も項目あったら選びにくくないか。
293デフォルトの名無しさん:2006/01/09(月) 21:40:03
> それに一万個も項目あったら選びにくくないか。

ワラタ
294デフォルトの名無しさん:2006/01/09(月) 21:41:55
>>293
e?nande?
295デフォルトの名無しさん:2006/01/09(月) 21:52:56
>>290
外部アプリの設定ファイルを操作するツールなんで、インターフェースとか変えにくいんですよ…
分割して1個ずつ設定とかにすると、操作が分かりにくくなるんで

>>292
TCustomCombo継承して、新しいコントロール作ったほうがいいんですかね
>それに一万個も項目あったら選びにくくないか。
オートコンプリートonにしてるんで最初の数文字入力するだけで選択できて、そこは問題ないと思います。
296デフォルトの名無しさん:2006/01/09(月) 21:56:42
ComboBox コントロール使っていれば少なくとも、(その1万個の文字列×コンボボックスの数)分の文字列の実体のコピーは発生するんだからどうやったって遅くなる。
起動時の初期化処理にでも組み込めばユーザーからはマシに見えるんじゃない?
297デフォルトの名無しさん:2006/01/09(月) 22:13:48
lame.exe等を使って音楽ファイルのデコードをする、フロントエンド的なソフトを作っています。
createprocessを使うことで一応デコード自体はできるようになりました。
が、プログレスバーによるデコード進行状況の表示ができず不便です。

コマンドプロンプトからlame.exe等を実行すると、デコード中の進行状況(56%とか)が出ます。
これを読み取って数値に変換し、プログレスバーのプロパティに入れればできると思うのですが…

どうすればいいでしょうか。ご教授お願いします。
298デフォルトの名無しさん:2006/01/09(月) 22:17:42
lameは使ったこと無いけどリダイレクトを横取りしたら駄目なの?
299デフォルトの名無しさん:2006/01/09(月) 22:20:08
リダイレクトを横取りとかわけわかんないこと書いた
正直すまん
300デフォルトの名無しさん:2006/01/09(月) 22:24:38
>>289

> //ここで各々の探索ブロックの場所のRGB値の合計を出しておく
> //RGB(0,0,0)は加算しても変化がないのと同じこと

初期化する必要があるんじゃない。
wbRGB[n] := 0;

>  difMax:=99999; //適当

これはループの中に必要でしょ。
しかしおそろしく汚いソースだな。。。
301デフォルトの名無しさん:2006/01/09(月) 22:24:43
lameの標準出力をパイプで受け取る
302297:2006/01/09(月) 22:37:35
ありがとうございます。
「リダイレクト」「パイプ」でgoogle先生に訊いてきました。
ttp://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/stdinout.html
読んでみましたが、いまいちよくわかりません…

・コマンドプロンプトから実行すると、処理中の表示が出る=標準出力が画面になっているから
・プログレスバーへ表示するには、今まで画面になっていた出力先を
作成したフロントエンドに向ける必要がある。

ということでよろしいでしょうか?
303デフォルトの名無しさん:2006/01/09(月) 22:43:41
304デフォルトの名無しさん:2006/01/09(月) 22:48:31
>>303
すごい!これで何とかなりそうです。
お答えいただいた皆様、ありがとうございました。
305289:2006/01/09(月) 23:12:00
>>300
汚くてスミマセン・・・

他に何かおかしいと思う場所はないですか?
やっぱり見当違いの場所がペーストされるのは他に原因があるんですかね・・・
306デフォルトの名無しさん:2006/01/09(月) 23:16:43
>>279
ダミーのComboBoxを配置してフォーカスの当たったコントロールをOnEnterで察知して
実際にデータの詰まったComboBoxに差し替えるとか。
307デフォルトの名無しさん:2006/01/09(月) 23:17:17
>>288
ItemListが既に有るんだから、空の項目のみ追加しておいて、
オーナードローでやってはどうだろう?
オートコンプリートは自分で実装する必要があるけど。
308デフォルトの名無しさん:2006/01/09(月) 23:22:16
>>305
おかしいところは他にもいろいろあるよ。

そもそもどんな動作を期待してるのか分からん。

黒く塗ってたところをクリックしたら

>Aクリックした2点を白いブロックで塗るのと同時にそのブロックの座標を取得
>+(image2から)ブロックで隠れる部分1つ1つのRGB値の合計を計算しておきます。

ここで計算した値には黒ばっか入っちゃうけど。
309デフォルトの名無しさん:2006/01/09(月) 23:51:49
これからコンポーネントの自作に挑戦したいんだけど
先にポインタの勉強しといたほうがいい?
310デフォルトの名無しさん:2006/01/09(月) 23:56:15
なんで同時にできないの? 関係ない事項だからどっち先でもOK
311デフォルトの名無しさん:2006/01/10(火) 00:06:42
ポインタの知識があったほうがコンポーネントについて深く理解できるのか気になってさ
とりあえずカスタムコンポーネント先にチャレンジしてみまっす
312デフォルトの名無しさん:2006/01/10(火) 00:14:49
はぁ、海外のオープンソースのコンポーネント使ってるんだけどさ、
ちょっとバグがあって、デバッグしてるんだけど、
気が付いたら、オブジェクトインスタンスとかStdWndProcのレベルまで、調査しても
原因わからん。もう、どこを調べたからいいか分からんよ。
313デフォルトの名無しさん:2006/01/10(火) 00:23:02
独り言はチラシの裏へ
314デフォルトの名無しさん:2006/01/10(火) 00:28:17
デバッグは整理してからやるかな。とりあえず、オナニーして寝るか。

315289:2006/01/10(火) 00:55:18
>>308
>黒く塗ってたところをクリックしたら〜ここで計算した値には黒ばっか入っちゃうけど

これは黒い線よりも白く塗る範囲のほうがでかいので(本当は線の太さを制限しておかないとダメですね)
実際に取得するRGB値は黒と、その他の部分になります

RGB(0,0,0)はRGB値の合計を計算する際に加算しても結果には影響しないので、
プログラムでは白いブロックに隠れる部分のRGB値を求めるとき区別してないです
316デフォルトの名無しさん:2006/01/10(火) 01:18:57
>>315
> これは黒い線よりも白く塗る範囲のほうがでかいので(本当は線の太さを制限しておかないとダメですね)
> 実際に取得するRGB値は黒と、その他の部分になります

でかければよいという問題ではないと思うんだけど。

たとえば風景1-1なんかだと、右上の白い空の部分の黒線は
処理後は白くなって欲しいのだよね?
黒い部分が少しでも入ると白くならなくなるわけで。。。

黒い部分を無視して平均すればマシになるかな。

wbRGB[n] := 0;
BlackCount := 0;
for y:=py-5 to py+4 do
begin
for x:=px-5 to px+4 do
begin
if (Pnt2[y,x].R+Pnt2[y,x].G+Pnt2[y,x].B)=0 then
Inc(BlackCount);

Inc(wbRGB[n],Pnt2[y,x].R+Pnt2[y,x].G+Pnt2[y,x].B);

end;
end;

wbRGB[n] := Trunc(wbRGB[n]*100/(100-BlackCount));
317289:2006/01/10(火) 01:47:15
おお、確かにRGB(0,0,0)を含めたら本来は白い部分をとってこないといけないのに
合計値が少なくなるから違う色になりますね。指摘ありがとうございます!
318289:2006/01/10(火) 02:25:17
差が最小になるのを探す部分は間違えてないですか?

コピーとペーストの座標のズレはないみたいですし、RGB値の取得にミスがないとすると残るはここだけなんですよね。
いや、別のところが間違えてるかもしれないですが・・・
319デフォルトの名無しさん:2006/01/10(火) 08:12:29
>>318
上に書いた点を直せばとりあえずそれっぽくは動くけど。

グラデーションでは、どこを選んでも元の状態が復元され、
風景1-1では黒線が一見消えたように見える。
よく見ると変だけど、このアルゴリズムではしょうがないね。
320デフォルトの名無しさん:2006/01/10(火) 16:40:12
MemCheckでメモリーリークをチェックしたらちょっと動かしただけで200個300個くらい余裕でヒットしてしまうのですが
何をどうやって開放した良いのかわからず途方に暮れているのですが
TListItemとかTListViewなんかで気をつけるべき点などあれば教えて頂きたいです。
321デフォルトの名無しさん:2006/01/10(火) 16:44:14
そんな漠然としたこと聞かれても困るからソース晒しなさい
322デフォルトの名無しさん:2006/01/10(火) 16:44:29
リークしてるメモリダンプしてクラス名割り出せ
323デフォルトの名無しさん:2006/01/10(火) 16:52:30
TListItemでメモリリーク発生する可能性と言えば
TListItem.Dataにメモリを設定してそれを解放しないまま
TListItemだけFreeするとかかな
下記の例を参考に

var
myListItem: TListItem;
pMemory: Pointer;
begin
Getmem(pMemory, 10);
myListItem := TListItem.Create;
myListItem.data := pMemory;

//この文がないとメモリリーク発生!
FreeMem( myListItem.Data, 10 );

myListItem.Free;
end;
324デフォルトの名無しさん:2006/01/10(火) 16:53:18
ListItemのDataプロパテ使ってるならOnDeletionで解放
もし仮想ListView使ってるなら話は別だけどね
325289:2006/01/10(火) 17:17:12
>>319
確かにグラデーションの画像はピッタリのものを取得してますね、写真の空の部分も特に問題なしで
他の部分だと黒線のあるなしに関わらずかなり色が違う部分を引っ張ってくることが多々あるんですが・・・

試したものです
ttp://www.imgup.org/file/iup144962.jpg
ttp://www.imgup.org/file/iup144964.jpg

そちらでもこんな風になってますか?
ズレちゃうのはもしかしてこちらで修正したのがまだ間違ってるだけなんでしょうか・・・今現在こうなってます(パスはdelphi)
ttp://turibori.net/sup/5m/upload.cgi?mode=dl&file=373

326320:2006/01/10(火) 18:14:09
皆さんレスありがとうございます
TListItemはSubItemsしか使っていないです
procedure TForm1.OnTimer(Sender:TObject);
begin
 ListView.Clear;
 ListItem:= ListView.Items.Add;
 ListItem.Caption:= hoge;
 ListItem.SubItems.Add(hogehoge);
end;
こんな感じです
今はIndyのTIdTcpClientでデータを取得する際に使っているReadBufferがいけないのかなぁと思い調べてみています。
327デフォルトの名無しさん:2006/01/10(火) 18:17:11
>>325
すげえええええええええ
商用ソフトかこれ?!
328デフォルトの名無しさん:2006/01/10(火) 20:34:49
>>325
> そちらでもこんな風になってますか?

なってるし、想定通りの動作だと思うけど。

RGBを足しちゃってるから、たとえばR:255 G:0 B:0とR:0 G:255 B:0が同じに評価されるわけで、
色が違う部分が引っ張ってこられるのは当然だよね。
329デフォルトの名無しさん:2006/01/10(火) 20:41:38
>[Pascal 警告] hogehoge.pas(1200): W1000 シンボル 'AllocMemSize' を使用することは推奨されていません
と出るのですが、AllocMemSize の代替となる関数は何でしょう。
330デフォルトの名無しさん:2006/01/10(火) 21:10:02
今は、
{$WARN SYMBOL_DEPRECATED OFF}
 Result := AllocMemSize;
{$WARN SYMBOL_DEPRECATED ON}
とやってます。
331デフォルトの名無しさん:2006/01/11(水) 02:20:15
すいません、質問させてください。デルファイ6パーソナルです。

簡単なサンプルで、メニューの実行→実行を選んだときに、
普通に実行してくれる時と、実行すると見せかけて実行してくれない
時があります。(どちらも全く同じファイルです)
何度やっても駄目な時はデルファイを再起動すると実行してくれたりします。

何が原因なんでしょうか?回避策ってありますか?
332デフォルトの名無しさん:2006/01/11(水) 02:51:50
f9とctrl+f9の違いみたいなもん?
333デフォルトの名無しさん:2006/01/11(水) 02:58:59
>>331
メニューを選ぶ代わりにF9ボタンを押す
334デフォルトの名無しさん:2006/01/11(水) 03:07:50
>>332-333
レスどうも。やってみたんですが、メニューで実行してくれない時は、
f9、ctr+f9どちらも、同じように実行してくれなかったです。
更に、メニュー→実行を選べない(グレーアウト)の状態になることもあります。
難しい事してるわけではないので、ソースがどうこう、って話ではないと思うんですが。
unit sample;   interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;
type    TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Show1: TMenuItem;
N2: TMenuItem;
ool1: TMenuItem;
HELP1: TMenuItem;
Close1: TMenuItem;
N1: TMenuItem;
N3: TMenuItem;
About1: TMenuItem;
About2: TMenuItem;
procedure Close1Click(Sender: TObject);
private    { Private 宣言 }
public    { Public 宣言 }
end;
var    Form1: TForm1;
implementation   {$R *.dfm}
procedure TForm1.Close1Click(Sender: TObject);
begin   close;   end;
end.
335デフォルトの名無しさん:2006/01/11(水) 03:43:31
なんどやっても出来るときと出来ない時が・・・
法則性が全く見当たらず・・・とりあえず今日は寝ます。
336325:2006/01/11(水) 04:03:56
>>328
ですね・・・ただそれ自体まともに出来てない感じもします(^ ^ ;

ttp://www.imgup.org/file/iup145222.jpg
この画像を見てもらえると分かりますが、明らかに平均自体が全然違うところもってきてますよねw
・・・ということは探索の時点でミスがあるような・・・うう
337325:2006/01/11(水) 04:37:36
というかdelphi内部で実行を選んで動かしたときと、exeファイルから動かしたときで結果が違う・・・(@ @
338デフォルトの名無しさん:2006/01/11(水) 08:26:10
DelphiじゃなくてVB使ってるんじゃないのかw
339デフォルトの名無しさん:2006/01/11(水) 08:28:33
いやVBだったらdelphiみたいな糞言語と違ってもっとマトモに動作するだろうがな。
340デフォルトの名無しさん:2006/01/11(水) 09:02:49
じゃあずっとVB使ってて下さい
341デフォルトの名無しさん:2006/01/11(水) 10:10:08
談話室の過去ログによると、旧VBユーザはまだDelphiユーザの5倍はいるし、
ほんとにVBの方がよさそうですね。
342デフォルトの名無しさん:2006/01/11(水) 10:32:56
341=ハンメルンの笛吹き男
343デフォルトの名無しさん:2006/01/11(水) 10:35:54
雑談スレ逝け屑共
344デフォルトの名無しさん:2006/01/11(水) 12:52:38
DelphiのTCustomFormから継承されたフォームをSpy++で見ると、WindowsのParent Window
とOwner Windowとなるウィンドウがあります。これって どうやっているのでしょうか??
普通のフォームを見る限り、Parent Windowは設定されていません。
で、そのソースも見てもSetParentなどで設定されているようでもありません。

345デフォルトの名無しさん:2006/01/11(水) 13:14:04
346デフォルトの名無しさん:2006/01/11(水) 13:31:39
>>345
ありがとうございます。丁度そのページの他のところ読んでました。
347デフォルトの名無しさん:2006/01/11(水) 13:48:21
Jane当たりはParent Windowのハンドルの解放がうまく行っていないのか、
explorer.exeがどんどんメモリリークしちゃうね。explorer.exeから見ると、
画面に表示されない「お化けウィンドゥ」が多量にあるわけだ。そしてそれは
Janeを終了しても消えない。

Windowsを再起動するか、わざと多量のウィンドゥを作って、Windowsに
「未使用のハンドルがありますよ」と知らせないと、気づいてくれない。
348デフォルトの名無しさん:2006/01/11(水) 15:51:31
Parent と Owner を混同する人って多いよね。まったく違うんだが。
349デフォルトの名無しさん:2006/01/11(水) 19:03:06
panelをフォームサイズにピッタリにしたくて、formcreateに
panel.width:=form.width;panel.height:=form.height;lett:=0;top:=0;
と入れてみたのですがなぜかあまりが出てスクロールバーが出てしまいます。
どうすればよいですか?初心者過ぎてすみません。
350デフォルトの名無しさん:2006/01/11(水) 19:10:40
panelのAlignをalClientにしてみな
351デフォルトの名無しさん:2006/01/11(水) 19:18:21
>>350
ありがとうございます、できました。
352デフォルトの名無しさん:2006/01/11(水) 19:39:06
>>336
>この画像を見てもらえると分かりますが、明らかに平均自体が全然違うところもってきてますよねw

空の横線のことを言ってるんだと思うけど、そう思うならホントに節穴だよ。。。
置き換える前と後でRGBの合計値を実際に比べてごらん。

> if (dif<difMax) then
ってなってるから、同じ差分なら最初に見つけた場所から持ってきちゃうしね。

前にも書いたけどせめてRGB別々で処理する必要があるんじゃないの。
353デフォルトの名無しさん:2006/01/11(水) 22:26:22
解説サイトを読んだり、実際delphiをいじってみて「オブジェクト」というのが何かはなんとなくわかった
しかし「オブジェクト指向のプログラム」というのがどういうことなのかいまいちわからない
オブジェクトを使ったプログラムならオブジェクト指向なの?
354デフォルトの名無しさん:2006/01/11(水) 23:42:03
本一冊買えよ。
355デフォルトの名無しさん:2006/01/11(水) 23:49:27
>>353
> オブジェクトを使ったプログラムならオブジェクト指向なの?
YesでもありNoでもあり、難しいね。

その時々の流行もあるし・・・やたらとC++やJavaの話が出てきたり、デザインパターン
が強調されたり、UMLを使わなきゃ駄目だとか。Delphi の場合、オブジェクト指向で
作られたVCLを使っているから手続き志向で書いてもオブジェクト指向だ!なんて言う
トンデモ意見すらあったし。

カプセル化、継承、ポリモフィズムを使っている事・・・うーん抽象的すぎるかな。
クラスに属していないグローバル変数・関数とか裸の配列とかが沢山ありすぎない事。
静的なクラスではなくてインスタンスを中心に物事が進むこと。
やたらと大きくて何でも出来るクラスやメソッドが無いこと・・・

http://www.borland.co.jp/borcon/pdf/Day2/D2_A1.pdf あたりを読むと
やってはいけない事が分かるかな〜
356デフォルトの名無しさん:2006/01/12(木) 00:02:46
> クラスに属していないグローバル変数・関数とか裸の配列とかが沢山ありすぎない事。

Delphi や C++ なんかは OOPL としては、これができるんで中途半端なんだよね。
Java とか C# とか、もっと徹底した OOPL をやった方が入門としてはよいよ。
その分、すこし敷居が高いけど。
Java や C# は本がたくさんあるから、本買うのがおすすめ。
357デフォルトの名無しさん:2006/01/12(木) 00:03:38
初めてまともに触ったプログラムがTonyuSystemだった俺には、
Delphiを始めてからしばらくしてHSPとか見て唖然とした。無理だRO!?って・・・
358デフォルトの名無しさん:2006/01/12(木) 00:04:06
オブジェクトを使うという事は、どのようにインスタンス生成させるか設計するということ。
それがプログラム全体の構造とリーダビリティを決定する。
359デフォルトの名無しさん:2006/01/12(木) 00:07:08
あるいは古い概念では、どのようにオブジェクトにそいつ自身の処理の責任をまかせるかということ。
360デフォルトの名無しさん:2006/01/12(木) 00:10:02
そんな抽象的な説明では何の役にも立たないが
361デフォルトの名無しさん:2006/01/12(木) 00:12:14
>>356
> もっと徹底した OOPL をやった方が入門としてはよいよ。
正論だけど、Delphi に慣れてきた所で?JavaやC#に移れというのも酷なような気も。
とりあえずDelphi で継承、ポリモフィズムあたりを実践してみたら、どうよ。

自分でクラスを作って継承させるだけでも、なんとなく分かってくるはず。
virtual とかoverride を使えるようになれば楽しい。

その先は後で考えれば良いと思うが。
362デフォルトの名無しさん:2006/01/12(木) 00:13:41
353は Delphi じゃなくて OOP を知りたいんだろ?
363デフォルトの名無しさん:2006/01/12(木) 00:15:24
C# から、はどうか知らんが、Java からプログラミング入門する人は多いよ。
364デフォルトの名無しさん:2006/01/12(木) 00:19:09
うーん、そう言う事ならJava スレで聞いた方が良いかも。
原理主義的にSmallTalk スレの方が良いのかな?
365デフォルトの名無しさん:2006/01/12(木) 00:26:20
ふーむ、せっかく Delphi 始めたんだから Delphi の言葉で OOP を説明した本か
HP なんかを紹介できればいいんだけど・・・
366デフォルトの名無しさん:2006/01/12(木) 00:27:11
367デフォルトの名無しさん:2006/01/12(木) 00:28:32
http://kakinotane.s7.xrea.com/delphi/d2/toc.html のクラスとオブジェクトの初歩
368デフォルトの名無しさん:2006/01/12(木) 00:31:07
さすが、はやいね
369デフォルトの名無しさん:2006/01/12(木) 00:52:19
MSXのベーシック→C→パールと全て独学でやってきて、
今までは何の困った事もなかったんだけど。
数年ぶりになんかプログラムいじるかぁ、と思って
デルファイに手だしてみた。
なんかさっぱりわからん。
ネット上の情報も少なすぎて痒いところに手が届いてない感じだね。
注文した本が届くまであと数日お預けって感じ。
370デフォルトの名無しさん:2006/01/12(木) 00:56:44
>>369
で?質問は何?
371デフォルトの名無しさん:2006/01/12(木) 01:25:24
>>369
だから日記はチラシの裏に書けとあれほど…('A`)
372デフォルトの名無しさん:2006/01/12(木) 01:43:47
エクセルVBでゲーム作りしてたんですがそろそろ転向したいなと
思いまして。DelphiとFlashではどちらがとっつきやすいですか?
入門サイトナナメ読みした感触ではDelphi=変数管理がラク、
Flash=メモリ管理不要のようなイメージで、どっちもエクセル依存
してた未知の分野なので甲乙付けられなくてorz
両方こなせる方おりましたら率直な感想教えてください。
373デフォルトの名無しさん:2006/01/12(木) 04:32:11
>Delphi の場合、オブジェクト指向で作られたVCLを使っているから手続き志向で書いてもオブジェクト指向だ!なんて言う
トンデモ意見すらあったし。

一応Tmemoなんかのクラスからインスタンスつくったりしてるわけで、オブジェクト指向だっていうのはトンデモ意見ってわけじゃないと思うが。
374デフォルトの名無しさん:2006/01/12(木) 05:08:59
オブジェクト指向のライブラリを使って、
自分が書いた分がオブジェクト指向じゃない場合どうなるか、だな。

「指向」なんで、自分が書いた分がオブジェクト指向を目指して無い場合は
オブジェクト指向ではないと言っていいと思うけれども。
375デフォルトの名無しさん:2006/01/12(木) 05:19:43
質問があります。

オーナードローで以下のようにサブアイテムが存在する
ListViewを扱う場合、サブアイテムのテキストの上にマウ
スカーソルを移動しても、そのアイテムの1列目のCaption
がツールチップとして表示されてしまうのですが、これをマ
ウスカーソルの下のアイテムの該当列のテキストをツール
チップに表示するにはどうすれば良いでしょうか?

列1   列2
---   ---
---   ---
376デフォルトの名無しさん:2006/01/12(木) 09:36:20
>>372
各人の向き不向き、好み、色々あって、他人の意見はあまり意味がないかと。
何を作るか、用途は何か、目的でどちらを使うべきかが決まるのではないかと。
良く分からなければ自分で両方試してみて、選択すべきかと。
377デフォルトの名無しさん:2006/01/12(木) 12:28:33
どうみてみFlashを使ったことのなさそうなお前の意見なんて誰も聞いていないだろう。
378デフォルトの名無しさん:2006/01/12(木) 12:49:15
379デフォルトの名無しさん:2006/01/12(木) 14:12:23
>>376
お前人に相談されたことないんじゃない?
相談する側はそんなどうでもいい回答を期待してるわけじゃないよ
せめて両方のメリットデメリット挙げるくらいはしろよ
380デフォルトの名無しさん:2006/01/12(木) 14:29:53
>お前人に相談されたことないんじゃない?

無駄な挑発書いてる手間でお前が挙げろよw
381デフォルトの名無しさん:2006/01/12(木) 14:54:13
まぁ、なんだ、376みたいなレスは役に立たないレスの見本みたいなもんだな。
人生いろいろ、人の好みもいろいろ、だから自分で決めろ、ってなんも中身ないもんね。
382デフォルトの名無しさん:2006/01/12(木) 15:03:45
>>381
まぁ、彼は寛容な人なんだとは分かったけどね。
もちろん、多少、メリット・デメリット出すと良かったとは思うけど。
383デフォルトの名無しさん:2006/01/12(木) 15:05:45
大抵の相談事というのは、実は既に自分の中で答えは出ているものだ
故に、方向性はどうあれ、背中を押してやるような答えが望ましい
384デフォルトの名無しさん:2006/01/12(木) 15:07:19
お前らもう消えていいよ
385デフォルトの名無しさん:2006/01/12(木) 15:14:01
>>376=>>378=>>380=>>384
はいはい
386デフォルトの名無しさん:2006/01/12(木) 15:40:28
TStringGridのセル編集カーソルを閉じる方法を教えて下さいでつ。

お願いします。
387デフォルトの名無しさん:2006/01/12(木) 15:51:20
StringGrid1.Options := StringGrid1.Options - [goEditing];
388386:2006/01/12(木) 16:00:44
>>387
有難うございます。
でも、既に開いたエディタが消えないよぅ。
・゚・(つД`)・゚・ウワアン
389デフォルトの名無しさん:2006/01/12(木) 16:04:11
エディタが消えないとはどういうことなんだ
StringGridの各セルを編集不可能にするんじゃないのか
390386:2006/01/12(木) 16:08:14
セルを編集してるのを、
ポップアップメニューが開いた時点で一時カーソルを閉じたいだけです。

ポップアップメニューのイベントハンドラで、
goEditingを引いてみましたが、
既に編集中のカーソルが消えません。
391デフォルトの名無しさん:2006/01/12(木) 16:32:01
カーソル消すのは無理なんじゃないかな
イベントハンドラでgoEditing引く処理入れても選択セルが変わらないと
反映されないみたいだし
392デフォルトの名無しさん:2006/01/12(木) 16:34:00
「カーソル」の意味が間違ってるような。InplaceEdit のことかな?
393386:2006/01/12(木) 16:37:38
>>392
そうです。
394386:2006/01/12(木) 17:03:32
TStringGrid.EditorModeプロパティで出来ます田。
有難うございました。
395デフォルトの名無しさん:2006/01/12(木) 18:12:36
>>369
引きこもりかよ
本屋行けよ
396デフォルトの名無しさん:2006/01/12(木) 20:36:49
>>395
擁護するわけじゃないが、
その辺の本屋にDelphi本が売ってる確率は極めて低い
なのでネット注文になることは多々あったりする
397デフォルトの名無しさん:2006/01/12(木) 21:32:40
いえてる
398デフォルトの名無しさん:2006/01/12(木) 21:49:19
Delphi本、ほんとに少なくなったな。
Del4、5のあたりはVC++やVBにタメはってたくらい出てたのに。
399372:2006/01/12(木) 22:17:06
比較系スレに行くべきでしたね。タイヘン失礼しました。
400デフォルトの名無しさん:2006/01/12(木) 22:44:40
ここでむちゃくちゃ初歩的な質問していいですか?
401デフォルトの名無しさん:2006/01/12(木) 22:49:43
いいよ
402デフォルトの名無しさん:2006/01/12(木) 22:54:53
ども。
IDispatchでインターフェースされてるコレクションから、一つずつ取り出したい
のですけど、使えると思ってたFor〜Inでは使えないので思案してます。
VBだと、For〜Eachで取り出せたのですが。

もし、COMを勉強しろ、そしたらわかる。というのなら、そうします。
403デフォルトの名無しさん:2006/01/12(木) 23:00:32
>>402
そんなのはよそで聞け&もう来るな
404デフォルトの名無しさん:2006/01/12(木) 23:01:08
>>395
俺は引きこもりだけどネットの情報だけでかなりのところまで行けるぞ
少なくとも>>369の言うような、さっぱりわからん ということはない
Delphiは情報が少ないとか言う人は検索スキルが低いんじゃねーの?
405デフォルトの名無しさん:2006/01/12(木) 23:20:26
>>403
Delphiではできないってことですか。
うーん、おとなしくC#で作り直します。Delphi2005で・・・ 
ども。
406デフォルトの名無しさん:2006/01/12(木) 23:25:24
>>402
for〜inはCOMではなく.NET互換のための構文だからな。
ラッパー一枚噛ませてGetEnumerator定義すればいけるが、
逆にめんどいだろうから素直にfor〜toでいいじゃん。
407デフォルトの名無しさん:2006/01/12(木) 23:32:34
>>406
ところが、そのコレクションには要素数のプロパティが無いのですよ。
具体的にはDirectShowで定義されているフィルタを検索するため、
タイプライブラリをインポートして使おうとしたのですが、生成された
ユニットに定義されたインターフェースを見ても、たしかにFor〜Inで
使える条件は満たされてません。

VBとかC#のFor Eachはどうやってそれをクリアしてるのか。
408デフォルトの名無しさん:2006/01/12(木) 23:41:04
409デフォルトの名無しさん:2006/01/12(木) 23:42:51
>>408
お、ポインタありがとう。読んでみますね。
410デフォルトの名無しさん:2006/01/13(金) 00:23:23
Delphiができりゃなんでもできるって言ってた人がいるんですけどマジですかね?
あとDelphiに移るとき、どの言語を知っていたら飲み込みやすいですか?
411デフォルトの名無しさん:2006/01/13(金) 00:37:21
APIスレに書くべきかもしれんが、VCL使ってるのでこっちで。

仮想リストビュー (TListView.OwnerData := True) の
OnDataHint イベントに何を書けばいいのか分かりません。

引数は (Sender: TObject; StartIndex, EndIndex: Integer) ってなってるけど、
OnData を fo rで回したような感じのを書けばいいのかな?
412デフォルトの名無しさん:2006/01/13(金) 01:48:34
>>410
Delphiができりゃ(ALGOL系なら)なんでもできる、だろうね。
LispとかHaskellできるようにはならない。
でも、大抵はできるってこと。

Delphiに移る時は、JavaかC#やってると楽。(普通は逆だがw)
413デフォルトの名無しさん:2006/01/13(金) 01:50:55
Lispはカッコの鬱陶しささえクリアすればいけると思うw
文法自体は単純だし
414デフォルトの名無しさん:2006/01/13(金) 01:55:40
>>412
レスサンクス。
>Delphiに移る時は、JavaかC#やってると楽。(普通は逆だがw)
まじか(;´Д`)
Delphiって難しいってイメージがあるから後にやるもんだと思ってた
415414:2006/01/13(金) 02:06:03
今Delphiについてちょっと調べてみた。
Delphiって基本的に簡単な言語らしいね(本当かどうかはわからんけど…)
先にDelphiを勉強してみます
416デフォルトの名無しさん:2006/01/13(金) 05:29:08
Pascal自体が教育用に作られた言語じゃなかったっけ。
だからそれほど難しい言語ではないと思うけど。
417デフォルトの名無しさん:2006/01/13(金) 07:42:30
「簡単」とかいうより「見やすい、読みやすい」という感じかな。俺には。
結局はオブジェクト指向系の言語ですから。
418デフォルトの名無しさん:2006/01/13(金) 09:43:18
>>415
別にDelphiから初めても何の問題もないよ
要はやる気と才能次第
419デフォルトの名無しさん:2006/01/13(金) 09:56:35
いや、Delphiからやるべき。
自分C→C++を本で勉強したが全然分からなくてMFCのスケルトンコード見て絶望してたが、
Del数年したらC++勉強しなくても読めちゃった。

DelのVCLがFormからコンポーネントから全部クラスになってて、
クラスの派生文法はC++を読みやすくした構文だたから。
420デフォルトの名無しさん:2006/01/13(金) 10:02:44
Delphi より Java からがオススメ。死滅間近なのと情報・書籍少ないのでDelphiはおすすめしない。
421デフォルトの名無しさん:2006/01/13(金) 10:09:44
しかし、Javaで勉強がてらに作ったアプリは使えない。

勉強後、そこそこのアプリを作れるのは認めるが。
422デフォルトの名無しさん:2006/01/13(金) 10:27:36
ま、初心者が使えるアプリを作れるのはずっと先なわけだが。
簡単にWindowsでアプリを作るのが優先ならDelphiでもいいかもね。
一般的な意味でプログラミングを学習したい、というならDelphiよりJavaがいいと
思うけど。
423デフォルトの名無しさん:2006/01/13(金) 10:38:16
学習とアプリを切り離すのは学習効果落とすぉ。
424デフォルトの名無しさん:2006/01/13(金) 10:40:08
ついでに書いとくと、
>一般的な意味でプログラミングを学習したい
なら、
DelとJavaは全く等価なクラスベース言語。

学問として、実行時に自分を書き換える言語とか、オブジェクトベース言語を学ぶならいざ知らず。
425デフォルトの名無しさん:2006/01/13(金) 10:44:34
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
426デフォルトの名無しさん:2006/01/13(金) 11:18:54
正直なところ俺もdel厨だしこれからも死滅するまで使って行くと思うが、
新しく始める人に勧めるかっていったらかなりそれは酷だと思う
427デフォルトの名無しさん:2006/01/13(金) 11:20:09
> DelとJavaは全く等価なクラスベース言語。

まったく等価なわけねぇだろ。裸の関数やら、グローバルな変数が作れるのに。
Delphi は Windows べったりだろ。そういう意味では一般的じゃない。
ま、それが簡単にアプリを作れる利点でもあるが。

初心者にとって、よい入門本がない(少ない?)のがDelphiの弱点ですね。
あと、コミュニティーが閑散としてるとこも。
428デフォルトの名無しさん:2006/01/13(金) 11:20:43
ター坊から使ってる俺のようなおっさんもいるわけで.
429デフォルトの名無しさん:2006/01/13(金) 11:27:33
そんなおっさんとかしかいないだろ。あとわけわからん超初心者。
430デフォルトの名無しさん:2006/01/13(金) 11:48:46
M$Cだと、コンパイル〜リンクのコマンドラインの不整合から、
defファイルの記述1個間違えただけで起動しなかった。
DOS窓〜Win起動の繰り返し地獄もあったし、
コンパイラがヒープ足りないエラーでコンパイルをあきらめたり。

TurboC++はプロジェクトに適当にソース足すと、GUIが超高速でコンパイルして、
平然とアプリが起動してそれまでの苦労は何だったんだろうかとオモタ。
431デフォルトの名無しさん:2006/01/13(金) 11:51:42
思い出は美しい・・・ってか? 雑談スレに行けば
432デフォルトの名無しさん:2006/01/13(金) 11:55:18
おっさんはもう引退して下さい
433デフォルトの名無しさん:2006/01/13(金) 12:48:24
TurboPascal→Delphi
TruboC++→BCBコンパイル

  →BDS

となってソースもライブラリもあるんだから引退必要ないじゃん。
434デフォルトの名無しさん:2006/01/13(金) 13:23:38
でも仕事が無いから引退じゃん
435デフォルトの名無しさん:2006/01/13(金) 13:24:39
あ、そっちは仕事無いんだ。
こっちはあるから。
436デフォルトの名無しさん:2006/01/13(金) 13:26:00
あ、それで2chに書き込んでるヒマの仕事してるんだね
437デフォルトの名無しさん:2006/01/13(金) 13:27:04
きっと儲かってるんだろうなぁー。余裕で2chやってるし。
438デフォルトの名無しさん:2006/01/13(金) 13:28:09
マンセー書き込みが仕事なんだろ。
439デフォルトの名無しさん:2006/01/13(金) 13:28:52
雑談スレに行けよーーーーーーーーーーー
440デフォルトの名無しさん:2006/01/13(金) 13:38:19
>>436-437
粘着してるお前も充分暇だと思うお^^
441デフォルトの名無しさん:2006/01/13(金) 13:39:10
>>440
それ言ったらきっと泣いちゃうよ
442デフォルトの名無しさん:2006/01/13(金) 13:41:45
きっと儲かってるんだろうなぁー。余裕で2chやってるし。
443デフォルトの名無しさん:2006/01/13(金) 13:43:07
>>442
それ言ったらきっと泣いちゃうよ
444デフォルトの名無しさん:2006/01/13(金) 13:45:59
これおしえてください><  
RndNum:integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
RndNum:=Random(  )+ ;
Label1.Caption:=IntToStr(RndNum)
end;

procedure TForm1.Button1Click(Sender: TObject);
var MyNum:integer;
begin
MyNum:=StrToInt(Edit1.Text);

if  >   then
Label1.Caption:='もっと大きい数を入力してください'
else If  <  then
Label1.Caption:='もっと小さい数を入力してください'

Label1.Caption:='正解!!';

Edit1.SetFocus
end;
445デフォルトの名無しさん:2006/01/13(金) 13:49:10
> Label1.Caption:=IntToStr(RndNum)

答え表示してるんじゃ、数あてゲームにならないんじゃ・・・
446デフォルトの名無しさん:2006/01/13(金) 13:54:36
何を教えろと
447デフォルトの名無しさん:2006/01/13(金) 13:55:39
括弧の中を教えてくださいRandomの><
448デフォルトの名無しさん:2006/01/13(金) 13:59:47
if文オカシイから無理
449デフォルトの名無しさん:2006/01/13(金) 14:01:59
if 分のところも空欄です すみません
450デフォルトの名無しさん:2006/01/13(金) 14:06:59
エスパーじゃねえんだから分かるかバカ
それとここは宿題スレじゃない
451デフォルトの名無しさん:2006/01/13(金) 14:09:56
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
452デフォルトの名無しさん:2006/01/13(金) 14:10:59
> Delphi使いが優しくコメントを返しますが、

450 はDelphiユーザではない、と認定されました。
453デフォルトの名無しさん:2006/01/13(金) 14:14:19
質問に答えるのであって宿題に答えるのではないから
そこんとこ間違えないように
454デフォルトの名無しさん:2006/01/13(金) 14:15:40
宿題だといってるのは450だけ。
455デフォルトの名無しさん:2006/01/13(金) 14:21:07
>>444必死だなw
456デフォルトの名無しさん:2006/01/13(金) 14:23:45
ということで

450 はDelphiユーザではない、と認定されました。
457デフォルトの名無しさん:2006/01/13(金) 14:24:44
粘着www
458デフォルトの名無しさん:2006/01/13(金) 14:26:13
ということで

450 はDelphiユーザではなく、粘着と認定されました。
459デフォルトの名無しさん:2006/01/13(金) 14:30:31
厨房必死だな
460デフォルトの名無しさん:2006/01/13(金) 14:31:49
ということで

450 はDelphiユーザではなく、粘着で厨房必死と認定されました。
461デフォルトの名無しさん:2006/01/13(金) 14:34:41
いい加減あきらめたら?
462デフォルトの名無しさん:2006/01/13(金) 14:39:20
ということで

450 はDelphiユーザではなく、粘着と認定されました。
463デフォルトの名無しさん:2006/01/13(金) 14:40:05
お前もこんなことしてる暇あったら宿題考えろよw
464444:2006/01/13(金) 14:50:21
もうお前らには頼まないよバーかあほ
465444:2006/01/13(金) 14:52:18
ていうか自力でできたしねこんな初心者でも解決できることを答えられないなんてばかじゃねーの?ワラ
466デフォルトの名無しさん:2006/01/13(金) 14:57:20
またひとつ大人になったな
467デフォルトの名無しさん:2006/01/13(金) 14:58:38
自力でできることを質問するほうがどうかしてるだろ・・・
468デフォルトの名無しさん:2006/01/13(金) 15:09:14
この板は何故いつまでたってもIDが表示されないのだろうか?
469デフォルトの名無しさん:2006/01/13(金) 15:26:51
すれ違い
470デフォルトの名無しさん:2006/01/13(金) 15:36:36
ずーっと待っていればIDが表示されるはず、って思い込むほうがおかしいだろ
471デフォルトの名無しさん:2006/01/13(金) 15:51:04
>>468
>>1-471まで全てFOXの自演だから
472デフォルトの名無しさん:2006/01/13(金) 15:52:27
そうか、もつカレー
473デフォルトの名無しさん:2006/01/13(金) 16:22:20
471=FOX
474デフォルトの名無しさん:2006/01/13(金) 17:07:48
抽象的な質問ですいませんが、よろしくお願いします。
ボタンを押したらサーバ上のHTMLファイルを読み込み、
必要な部分だけを抜き出した形にして(抜き出したHTMLはローカル保存)
表示したいのですが、
どういった手段でどういった手順でやればいいんでしょうか?
HTMLを読みに行く段階ですでにわかりません。

よろしくお願いします。
475デフォルトの名無しさん:2006/01/13(金) 17:21:00
TWebBrowser つかってみたら。グぐればいっぱい情報ある。ソーステキストも抜き出せるし
目に見えるのもいいし。
476デフォルトの名無しさん:2006/01/13(金) 17:22:21
Indyというのを使ってみれ
とりあえずHTMLを簡単に取得出来る
477デフォルトの名無しさん:2006/01/13(金) 17:41:06
>>408
昨日の>>400だけど,かなりうまくいったよ.ありがと.
定型処理だからマクロ化できたらいいのになあ.
478デフォルトの名無しさん:2006/01/13(金) 17:42:43
>>475>>476
どうも!今、検索で出てきたサンプルで勉強してます。ありがとうございました。
(サンプルが何故かまともに動いてくれないけど・・・)
479デフォルトの名無しさん:2006/01/13(金) 20:46:11
DelphiがバグだらけなんですけどVSに乗り換えた方が賢明ですか?
480デフォルトの名無しさん:2006/01/13(金) 21:12:07
ここで質問してる時点で賢明ではないだろ
481デフォルトの名無しさん:2006/01/13(金) 22:34:31
もし、過去ログにあったとしたらすみません。

VC++で書かれたコードをDelphiで書き直さなければならなくなったのですが、
DelphiのFindFirst、FindNext関数はVC++のCFileFine::FindFile、Fine::FindNextFileと同じように使えるのでしょうか?
使えるとしたらVC++のFine::GetFileNameと同じようにファイル名を返す関数はあるのでしょうか?

また、この部分以外は書き直しが済んでいるのですが、
exeのサイズがVC++でビルドしたexeの10倍あるんですが、
ビルドの方法間違えてますか??
(VC++:32kB、Delphi:345kB)
482デフォルトの名無しさん:2006/01/13(金) 22:44:55
>>481
その前にDelphiのドキュメントを読むとかしないの?
483481:2006/01/13(金) 22:52:39
おっしゃる通りなのですが、
事情によりDelphiのヘルプだけしかないんですよ。
ヘルプで調べても出てこなかったので、ここで質問させてもらいました。
484デフォルトの名無しさん:2006/01/13(金) 22:58:06
いいえ、出てきます。
485デフォルトの名無しさん:2006/01/13(金) 22:59:31
出てくるよね
486デフォルトの名無しさん:2006/01/13(金) 23:03:05
同じように使える
ExtractFileName
フォーム使うアプリはでかい
487デフォルトの名無しさん:2006/01/13(金) 23:15:47
つうかDelphiは、マニュアル全部をヘルプファイルにぶちこんであるだろ。
488481:2006/01/13(金) 23:16:24
>>486

回答ありがとうございます。
やってみます。

てゆーか、CFileFineって何だよ、俺。。。
コピペしながら書いたのがバレバレだ。。。。。
489481:2006/01/13(金) 23:17:53
追加。

ヘルプの検索がまだまだ下手ってことですね。
もっと精進します。
490デフォルトの名無しさん:2006/01/13(金) 23:22:44
Delphiはヘルプが糞な上にクラス化が不十分だから検索が大変なんだよな。
VCLソースがあるならWin32APIのFindFirstFileとかでソース検索して
それ使ってる関数名を検索するとかすると早いかも。
491デフォルトの名無しさん:2006/01/13(金) 23:51:08
Delphiのヘルプは糞。VSのヘルプの方がマシ。
492デフォルトの名無しさん:2006/01/13(金) 23:56:11
ま、それは今に始まったことではないが、最近はどんどんひどくなってるね
493デフォルトの名無しさん:2006/01/14(土) 00:05:36
Delphi1とか2とかヘルプ日本語版ですら不十分ながらもやたら丁寧だったからな…
自動翻訳するぐらいなら英語版付けといて欲しい、つーか2005には英語版ヘルプついてたのに2006には無い…
494デフォルトの名無しさん:2006/01/14(土) 00:25:31
MSDNにいってAPIの意味を必死に考えるのが楽しい エキサイトとおすと日本語とも英語ともいえないお
495デフォルトの名無しさん:2006/01/14(土) 00:28:41
API なら6−7割は日本語化されてんじゃないの
496デフォルトの名無しさん:2006/01/14(土) 01:48:58
雑談スレでやれよ屑共
497デフォルトの名無しさん:2006/01/14(土) 01:53:02
アンタも含めて屑しかいないんだからどこでも同じ。
498デフォルトの名無しさん:2006/01/14(土) 02:01:23
だから雑談スレでやれよ屑
499デフォルトの名無しさん:2006/01/14(土) 03:08:37
ちょっとぐらいええやん
500デフォルトの名無しさん:2006/01/14(土) 03:25:21
ほとんどのアプリにあるみたいに、
メニューのヘルプ→バージョン情報を選んだら
ポップアップで情報表示させたいんだけど、どうやってポップアップだすの?
501デフォルトの名無しさん:2006/01/14(土) 03:32:45
フォームデザイナで設計して Show するだけ。
502デフォルトの名無しさん:2006/01/14(土) 03:47:32
>>501
ありがとうございます、今日はもう眠気限界なので明日試して見ます!
503デフォルトの名無しさん:2006/01/14(土) 06:39:38
簡単なゲームを作っています。
セリフや画像は外のデータフォルダに入れて暇なときにテキストエディタなどで編集してたりするのですが
いざ公開するときにデータフォルダから直接シナリオや画像が見られないようにしたいのです。
メモリ操作などの強固なガードではなくて、メモ帳なんかで開けなくするか文字化けさせるような方法でよいので
どなたかご教授ください。
504デフォルトの名無しさん:2006/01/14(土) 06:53:35
>>503
QuadrupleDのQDArc
505デフォルトの名無しさん:2006/01/14(土) 07:00:25
>>504
3Dプログラム用のやつですか・・・。
かなり難しそうですが、他に方法がなかったらがんばってみます。
ありがとうございました。
506デフォルトの名無しさん:2006/01/14(土) 07:51:28
>メモ帳なんかで開けなくするか文字化けさせるような方法でよいので
XOR通すとかblowfishなんかの共通鍵で暗号化するとか
zipで圧縮して拡張子だけ変えるとか。
507デフォルトの名無しさん:2006/01/14(土) 08:00:07
>>506
ありがとうございます。
用語を聞いてもやり方の検討もつかないのですが、難しい技術ですか?
508デフォルトの名無しさん:2006/01/14(土) 08:33:10
506が答えないようなので、かわりに。
XORなら簡単。
1.あらかじめ全てのファイルをXORで変換しておく。公開するのは変換したファイル。
procedure toDat();
var
pFileStream: TFileStream;
iCount: Longint;
Data: array of Byte;
begin
pFileStream := TFileStream.Create('Test.txt',fmOpenRead);
SetLength(Data,pFileStream.Size);
pFileStream.Read(Data[0],pFileStream.Size);
for iCount := 0 to pFileStream.Size-1 do begin
Data[iCount] := Data[iCount] xor XORDATA;
end;
FreeAndNil(pFileStream);
pFileStream := TFileStream.Create('Test.dat',fmCreate);
pFileStream.Write(Data[0],Length(Data));
FreeAndNil(pFileStream);
Data := nil;
end;
509デフォルトの名無しさん:2006/01/14(土) 08:35:01
2.読み込む時にXORで元のファイルにもどす。
procedure toText();
var
pFileStream: TFileStream;
iCount: Longint;
Data: array of Byte;
begin
pFileStream := TFileStream.Create('Test.dat',fmOpenRead);
SetLength(Data,pFileStream.Size);
pFileStream.Read(Data[0],pFileStream.Size);
for iCount := 0 to pFileStream.Size-1 do begin
Data[iCount] := Data[iCount] xor XORDATA;
end;
FreeAndNil(pFileStream);
Data := nil;
end;

おっと、XORDATA はconstで指定しておけ。
const
XORDATA = 255;

0から255の好きな数いっとけ。
510デフォルトの名無しさん:2006/01/14(土) 08:36:14
ああスマン。
0じゃ駄目だ。元のファイルと同じになる。
1から255な。
511デフォルトの名無しさん:2006/01/14(土) 08:57:10
>>508−510
ご丁寧にありがとうございます。

XORを掛けて、もう一度掛けると元に戻る、とルールでしたっけ。
509が変換で、510が戻すコード、'test.txt'を別のstring、プロシージャーの引数からにすれば色々使い勝手がよくなりそう?
とあってるかどうか微妙ですが自分なりに理解してみました。

初級の参考書でクラスとポインタまで勉強したものの
怖くて使えずせいぜいレコード型くらいしか使えないレベルなのでちっとも実力は上がらないのですが
まずはコピペで利用して、HELP読みつつ必要なところはカスタマイズできるようになるよう頑張りたいと思います。
512デフォルトの名無しさん:2006/01/14(土) 09:13:01
>>511
508,509はちょっと無駄が多い
せっかくxorなんだから、デコードとエンコード関数は同じにできる
引数をTStreamあたりにして、ファイル読み込みと保存は小分けにすればいい
513デフォルトの名無しさん:2006/01/14(土) 09:53:25
>512
どうせならTFileStreamを継承して新しいクラスを作るとか。
で、Readをオーバーライドする、と。
514デフォルトの名無しさん:2006/01/14(土) 10:08:45
>>513
どうせならTStream派生させてファイルのアーカイブ化も(ry
515デフォルトの名無しさん:2006/01/14(土) 10:19:21
>>513
ああ、それがスマートかもね
でもXORが分からなかった彼にしてみると、
クラス継承してoverrideして・・・・ってのはハードル高そう
あえてチャレンジして欲しいが
516デフォルトの名無しさん:2006/01/14(土) 12:09:46
単にメモリ上の操作で完結したルーチン示してあげればいいだけなのに。
教え方のセンスが悪いね。
517デフォルトの名無しさん:2006/01/14(土) 12:20:16
>メモリ操作などの強固なガードではなくて、メモ帳なんかで開けなくするか文字化けさせるような方法でよいので
518デフォルトの名無しさん:2006/01/14(土) 12:28:41
質問の意味すらわかってないなら適切な回答が出来なくてもしょうがないね。
519デフォルトの名無しさん:2006/01/14(土) 12:32:44
きっと516はTFileStreamを3時間かけて調べてたんだよ。
でも、そこは本質的な事じゃなかったんだ。
すごい時間がかかったのに、あんまりだって怒ってるんだ。
……だよね、516。
520デフォルトの名無しさん:2006/01/14(土) 12:32:59
>>503
もう終わった話題かもしれないが、ゲーム製作という事で
ttp://www.miyabi-vs.co.jp/~c-works/tips/Lafie/index.html
ここの第13回に暗号化についてちょっと詳しい説明があるよ
他にも参考になる情報があるかもね
521デフォルトの名無しさん:2006/01/14(土) 12:38:47
>>516
教えてる人が居るのに怒るだけとかwwwキモスwww
522デフォルトの名無しさん:2006/01/14(土) 12:39:03
じゃあ516は早くセンスのあるコード示せよ
まぁ示される可能性は限りなくゼロだろうが、
それでも一応期待してやるよ
523デフォルトの名無しさん:2006/01/14(土) 13:13:25
516が答えないようなので、かわりに。
センスがないかも知れんがそこは大目に見てくれ。
const
XORDATA = 255;

type
TXorFileStream = class(TFileStream)
public
function Read(var Buffer; Count: Longint): Longint; override;
end;

function TXorFileStream.Read(var Buffer; Count: Longint): Longint;
var
pBuf: PByte;
iCount: Longint;
begin
Result := inherited Read(Buffer,Count);
pBuf := @Buffer;
for iCount := 0 to Result-1 do begin
pBuf^ := pBuf^ xor XORDATA;
Inc(pBuf);
end;
end;
524デフォルトの名無しさん:2006/01/14(土) 13:14:15
今時XORで暗号化って・・・
C#なら標準でできるのに
http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/encrypt/cs.aspx
525デフォルトの名無しさん:2006/01/14(土) 13:21:35
>メモ帳なんかで開けなくするか文字化けさせるような方法でよいので
日本語も読めないのか?
526デフォルトの名無しさん:2006/01/14(土) 13:24:25
516と524は同一人物か、そうでなくても同じような頭の構造してる人だろうね
527デフォルトの名無しさん:2006/01/14(土) 13:25:06
>>524
はいはいC#すごいすごい

これで満足ですか?^^
528デフォルトの名無しさん:2006/01/14(土) 13:42:40
>>526
そうそう、君らとはだいぶデキか違うようだ。
529デフォルトの名無しさん:2006/01/14(土) 13:43:48
>>524
謎すwwwwwwXOR暗号ぐらいサクッと作れるのにそれが無い事批判するとかよっぽど実力ないのね^^
AES(だっけ?ラインダールが採用された奴)使うライブラリが入ってたら便利だけど、
そんなブルートフォースで現実的に突破できる最低限のXOR暗号のライブラリ自慢するとか馬鹿じゃねwwwwww
530デフォルトの名無しさん:2006/01/14(土) 13:49:01
ないことを弁解するのも大変ですね。あったほうがいいにきまってるだろ。
531チラシ:2006/01/14(土) 13:52:30
無いよりは有ったほうが便利だろうなぁ。
でもまぁ、この程度の暗号化なら初心者でも作れるし、俺は初めてこの手法を知ったときけっこう感動した。
こういう小さな感動もプログラムやる楽しみの1つだと思ってる。
532デフォルトの名無しさん:2006/01/14(土) 13:56:19
使ったことないけど標準で付いてるIndyでできるんじゃないの。
けど、今回の用途には大げさすぎるよね。
533デフォルトの名無しさん:2006/01/14(土) 14:26:49
ということは今回の用途の為にC#に乗り換えるなんて愚の骨頂と
534デフォルトの名無しさん:2006/01/14(土) 15:18:07
ネトラジのストリーム再生全部やってくれるコンポーネント無い?
535デフォルトの名無しさん:2006/01/14(土) 15:20:28
WMP
536デフォルトの名無しさん:2006/01/14(土) 15:32:09
>>535
把握した
537デフォルトの名無しさん:2006/01/14(土) 17:06:29
ActiveXコントロールのインストールってすごくね?どうなってんの????
538デフォルトの名無しさん:2006/01/14(土) 17:19:00
しかもmsdn行ったらいろいろダウンロードできるwwwwなんだこれwwwww
言語関係なしで使えるようになってんの}??
539デフォルトの名無しさん:2006/01/14(土) 17:26:50
うぜ
540デフォルトの名無しさん:2006/01/14(土) 17:36:48
いっくらやってもやっぱりわかんねー!おしえてー!!!

form1のメニューである項目を選んだら
form2がポップアップされるようにしたんだけど
どうやればいいのー???
541デフォルトの名無しさん:2006/01/14(土) 17:41:15
>>540
form2.show;
542デフォルトの名無しさん:2006/01/14(土) 17:44:46
activeXって普通にあるコンポーネントみたいなのばっかやな
Delphiの中の人もこれをラップしてるだけなの???
543デフォルトの名無しさん:2006/01/14(土) 17:53:42
>>541
ありがとうございます!できました。
544デフォルトの名無しさん:2006/01/14(土) 19:19:34
ActiveX=COMは多言語で使いまわせるクラスライブラリ=コンポーネント。
技術的にはDLL経由で関数ポインタやり取りしてるだけ。
545デフォルトの名無しさん:2006/01/14(土) 19:31:14
>>544
>DLL経由で関数ポインタ
ほーう・・・ OSの機能の一つでやってるのか 勉強になりました!
546デフォルトの名無しさん:2006/01/14(土) 21:23:39
なんかおもしろそうなもんを落としてみた
http://www.microsoft.com/japan/msdn/scripting/default.asp
スクリプトが簡単に使えるだってー?
547デフォルトの名無しさん:2006/01/14(土) 21:31:05
で?
548デフォルトの名無しさん:2006/01/14(土) 21:38:21
>>547
使い方のマニュアルがVBで、何がなんだかわからなかったお
549デフォルトの名無しさん:2006/01/14(土) 23:39:35
ChangeFileExtとExtractFileNameの戻り値(というより中の処理?)をWideStringにできませんか?
Delphi6でUnicode使いたいのでWideStringを扱いたいのですが。。。
550デフォルトの名無しさん:2006/01/14(土) 23:40:08
mp3プレイヤーなどで、
mp3ダブルクリック時
 プレイヤーが起動していなければ、プレイヤーを起動。
 プレイヤーがすでに起動していれば、新しくプレイヤーを起動しないで、
 現在起動しているプレイヤーで再生する

という動作がありますが、
これを実現するにはどうしたらよいのでしょうか?
二重起動防止だけならば下記で出来たのですが・・・

var
MainWnd: THandle;
begin
MainWnd := FindWindow('TForm1', nil);
if MainWnd <> 0 then
begin
SetForegroundWindow(MainWnd);
Exit;
end;
551デフォルトの名無しさん:2006/01/14(土) 23:46:47
>>549
単に戻り値をWideStringにするなら
WideString(ExtractFileName('Hoge'))でおkだが、
中もUnicodeで処理したいなら自作かTntを使う

>>550
WM_COPYDATAでも使ってみれば?
552549:2006/01/14(土) 23:58:14
>>551
解説ありがとうござます。
Tntの中身を検索してみたのですが、ChangeFileExtとFileExtractPathはありませんでした。
ディレクトリのファイル一覧をTntのListBoxに追加する処理を作っている為の質問だったのですが、
TSearchRecとかFindFirstとかもWideStringに対応してないですか?
553デフォルトの名無しさん:2006/01/15(日) 00:06:01
関数ないとは、そりゃスマナイ…と思ったらちゃんとあるじゃんよ
TntSysUtils.pasにWideString用の関数ちゃんとあるぞ
TSearchRecWなんて構造体もしっかり宣言されている
…もしかして釣られたのかオレ?
554549:2006/01/15(日) 00:13:10
>>553
ほんとにすんません!確かにありました!!
Windowsの"含まれる文字列"で検索してました。。。
本当にありがとうございます。お手数かけてすみませんですorz
555550:2006/01/15(日) 00:34:36
>>551
ありがとうございます。やってみます。
556デフォルトの名無しさん:2006/01/15(日) 00:54:02
TPopupMenuに背景画像を付けたいのですがどのようにすればいいでしょうか?
557デフォルトの名無しさん:2006/01/15(日) 00:59:44
TMenuItemのOnDrawItemで描写
558デフォルトの名無しさん:2006/01/15(日) 01:25:41
調べてもさっぱりなんで諦めます
ありがとうございました
559デフォルトの名無しさん:2006/01/15(日) 02:53:57
例えば、
「ファイルのダウンロード」等のダイアログの中身を読み取る…みたいなことって出来ますか?
フリーウェアでダイアログ中のStaticLabel等をコピペ出来るツールがあったのですが…
どうやって実現させてるのかなぁと。
いくつかヒントを挙げてくれれば、後は自力で何とかします。
560デフォルトの名無しさん:2006/01/15(日) 03:26:10
> フリーウェアでダイアログ中のStaticLabel等をコピペ出来る

簡単。ハンドルを見つけるのがちょっとメンドイけど、Static はウィンドウなので
ハンドルさえ見つかれな、WM_GETTEXT でテキストげっと
561デフォルトの名無しさん:2006/01/15(日) 07:45:10
特定のイベントが起きたときだけフォームを最前面に表示したいのですが
SetForegroundWindow( Application.Handle );
Update;
ではうまくいかないのですが。。。
562デフォルトの名無しさん:2006/01/15(日) 07:53:15
563deleteじゃないよdelphiだよ:2006/01/15(日) 10:37:41
 はじめまして、最近、Delphi7プロフェッショナル版(アカデミック版)を
入手した、中学3年生の男子生徒です。身長170cm体重55kgです。一応数学は
得意です。
 入門本がアスキー出版のコースウエアかカットシステムのDelphi2005用の
一連の本しかないので、迷っています。それは2006を買うかどうかです。
我が家では大蔵大臣は母です。勉強に役立つし、将来工学部に行くからと
説得できるのですが、もうDelphi7をもっているのに2006を買っても何か
メリットはあるかどうかわかりません。繰り返しますが参考書籍が少なくて
Delphi7用はコースウエアしか見当たらないので、将来2006関連の本が出る
ことを期待して2006を買ったほうがいいでしょうか?自分の学習スタイルは
本をじっくり読むことです。
564563:2006/01/15(日) 10:40:32
ちなみに、いま取り組んでいることはデータベースプログラミング
です。図書館のサーバーに5台のノートパソコンを使ってアクセスし
蔵書をチェックするシステムに取り組んでいます。学校には
お金がないので、図書委員でソフトを作ることになりました。
565デフォルトの名無しさん:2006/01/15(日) 11:01:37
まずは、Delphi7 を使い込んでみたらいいんじゃないの?
機能的に Delphi2006 で出来ることが増えたわけじゃないし、
あせって買う必要もないし、D7で出来ることをやってみてはいかがでしょうか。
566デフォルトの名無しさん:2006/01/15(日) 11:35:37
>>563
Delphiは滅亡への道を辿ってるから、今後も

D7(で使える)本>>>>超えられない壁>>>>D2006の本

という構図は変わらないと思う
あと工学部に行くなら(絶対ではないけど)Delphi使う機会ほぼないかと
だいたいCで書くし
567デフォルトの名無しさん:2006/01/15(日) 12:10:38
>>563
こっちにも来てね
【Delphi互換!?】FreePascal【GPL】
http://pc8.2ch.net/test/read.cgi/tech/1137051510/
568デフォルトの名無しさん:2006/01/15(日) 12:43:12
できることが増えたわけではないというのは、逆に言えばDelphi7でも大抵のことは
できるからなんだよね。開発効率は2006の方があがるのは間違いないと思うけど。

>>567
Delphi7持ってればFreePascalは論外かと。
569デフォルトの名無しさん:2006/01/15(日) 12:48:11
一応XP対応してるしD7でいいんじゃね。
個人で明確な動機なしに2006購入するのは無駄すぎる。
570デフォルトの名無しさん:2006/01/15(日) 13:40:02
初めまして。
サーバーにファイルをアップロードするプログラムを組みたいのですが、どうやったらいいのかわかりません。
いろいろ調べてみたのですが、なかなか理解できなくて・・・。
簡単に書いていただけないでしょうか?
お願いします。
571デフォルトの名無しさん:2006/01/15(日) 13:52:55
まずはサーバにファイルをアップロードするプロトコルをはっきりさせないと
572デフォルトの名無しさん:2006/01/15(日) 14:16:14
プロトコルとは、アドレス・ユーザー名・パスワード等のことですよね・・・。
それらは、分かってます。
573デフォルトの名無しさん:2006/01/15(日) 14:19:20
↓ここで満を持してエスパー降臨
574デフォルトの名無しさん:2006/01/15(日) 14:23:56
どうみても知識不足です
ありがとうございました。
575デフォルトの名無しさん:2006/01/15(日) 14:39:28
>>572
プログラム以前にネットワークについての知識を学んだ方が良いでしょう
576デフォルトの名無しさん:2006/01/15(日) 14:41:49
まずTCP/IP関連の本を1冊でも読んでから質問。(RFC読んで来いとまでは言わん。)
話はそれから。
577デフォルトの名無しさん:2006/01/15(日) 14:42:24
きっとファイルをアップロードするのはFTPが全てだとか思ってる類なんだろうな。
578デフォルトの名無しさん:2006/01/15(日) 14:50:32
FTPって何ですか?


って来そう('A`)
579デフォルトの名無しさん:2006/01/15(日) 15:09:44
中1から趣味でプログラミングして、(主にゲームとゲームとゲーム)
科学技術高校の情報科に推薦合格した俺が着ましたよ。



・・・すっげー叩かれそう
580デフォルトの名無しさん:2006/01/15(日) 15:13:26
>>579=570なの?
581579:2006/01/15(日) 15:16:21
>>580
俺がきましたよ って言ってるじゃないかwwww 違う違う

ファイル転送なら謎の自作プロトコルで作ったりしたおwwww msnメッセ糞バルスwww
ftpはwininetでもできるんじゃなかったっけ?
582デフォルトの名無しさん:2006/01/15(日) 15:52:03
いいから、どっかいちゃいな、じゃまなんだよ
583デフォルトの名無しさん:2006/01/15(日) 16:08:26
>>579
よかったね
584デフォルトの名無しさん:2006/01/15(日) 16:25:54
>>579
叩かれるって言うかスレ違いなんじゃないの?
質問は?
推薦合格したのを自慢したいだけ?
585579:2006/01/15(日) 17:30:38
そうだよ
まあお前らが束になっても一生追いつけないだろうけどねw
586579 ◆UM8a1py3qg :2006/01/15(日) 18:16:15
585は俺じゃないよ。
偽者が出たからトリ付けるね。
587デフォルトの名無しさん:2006/01/15(日) 18:19:01
>>586
おめでとう。
がんばれよ。パソコンばっかやってないで、遊んだりもしろよ。
588デフォルトの名無しさん:2006/01/15(日) 18:21:06
Vipperの為のDelスレ作って出てってくれ
589デフォルトの名無しさん:2006/01/15(日) 19:08:49
やはり、理解する必要ありますか・・・?
アップロードのことだけでそこまでする余裕無いので諦めます。
アドバイスありがとうございました。。
590デフォルトの名無しさん:2006/01/15(日) 19:19:36
case文って同時に2つのことを実行できないんですか?
ENDが必要な場所に , があります、というエラーが出ます

1..100 : x:=10, y:=10;
101..200 : x:=20, y:=20;

2つ実行する方法ってないんでしょうか?
591デフォルトの名無しさん:2006/01/15(日) 19:21:32
begin end;で囲め
592デフォルトの名無しさん:2006/01/15(日) 19:23:35
case Hoge of
1:
begin
ShowMessage('Hoge');
ShowMessage('Uho');
end;
end;
593590:2006/01/15(日) 19:32:24
>>591-592
出来ました、ありがとうございます
594デフォルトの名無しさん:2006/01/15(日) 20:22:20
特定のピクセルだけ色を塗り替えるって命令ありますか?
595デフォルトの名無しさん:2006/01/15(日) 20:24:28
Form1.Canvas.Pixels[x,y] := clRed;
596デフォルトの名無しさん:2006/01/15(日) 23:32:24
質問があります。

あるファイルのファイルの種類(エクスプローラーの”種類”の列
に表示される値)を取得するにはどうすれば取得できるでしょうか?
597デフォルトの名無しさん:2006/01/15(日) 23:34:28
何か関数があったような気がしないでもないが、
普通にやるならレジストリ見れば分かる
598デフォルトの名無しさん:2006/01/15(日) 23:38:55
思い出した、SHGetFileInfoだな
599481:2006/01/15(日) 23:39:07
FindFirstとFindNextでフォルダ内のファイル名の取得について質問した481です。
やってみたのですが、上手くいきません。

var
sFile : TSearchRec;
szFileName : string;
begin
nRet := FindFirst(szInputDir, faAnyFile, sFile)
szFileName := sFile.Name;
while (true) do begin
if (FindNext(sFile) <> 0) then begin
break;
end;
szFileName := sFile.Name
end;
end;

というような感じで仮に書いてみたのですが、FindFirstではファイル名が取得できているのですが、
while文の中のFindNextで次のファイル名が取得できません。
どのようにすれば取得できるようになるのでしょうか?
600デフォルトの名無しさん:2006/01/15(日) 23:41:28
>>599
頼むからヘルプ見てくれ
601デフォルトの名無しさん:2006/01/15(日) 23:42:15
ヘルプのサンプルを16777216回嫁
602デフォルトの名無しさん:2006/01/15(日) 23:45:24
ああ、ヘルプ1箇所だけ間違ってるから
>if (sr.Attr and FileAttrs) = sr.Attr then

>if (sr.Attr and FileAttrs) = FileAttr then
な。
あとはヘルプ嫁

603デフォルトの名無しさん:2006/01/15(日) 23:46:48
s抜けたがまぁ許せ
604デフォルトの名無しさん:2006/01/15(日) 23:54:27
あの・・・10進数で256が16進数では100ってどうやったらわかるの
でしょうか??もう頭パンクしそうです!!
605596:2006/01/15(日) 23:56:05
>>598
ありがとう、使い方調べてみますね。
606デフォルトの名無しさん:2006/01/15(日) 23:56:08
>>604
それって高校の時に習わなかったっけ?
607デフォルトの名無しさん:2006/01/16(月) 00:02:37
>>606
すいません。もうわかりましたぁ☆
簡単だったんですね。
608デフォルトの名無しさん:2006/01/16(月) 01:42:05
線形リストとポインタがさっぱりわかんね…
なんかコツとかある?
609デフォルトの名無しさん:2006/01/16(月) 01:44:22
デバッガで全部の変数の内容表示して
ポインタ・参照の値がどうなってるかを理解しながらステップ実行
610デフォルトの名無しさん:2006/01/16(月) 14:15:28
質問があります。
ファイルが開かれていたり、ファイルにデータを書き込んでいる最中は
ファイルが使用中という事でそのファイルを操作できないですけど、
ファイルが使用中かどうかを調べる関数とかは存在するでしょうか?
611デフォルトの名無しさん:2006/01/16(月) 14:18:35
ファイルを操作して使用中なら使用中。

どうしても処理前にリソースをロックしたいなら書き込み側アプリにも手を入れてMutexでも仕込んどけ。
612デフォルトの名無しさん:2006/01/16(月) 17:52:54
>>610
try
 ファイルを開く処理
except
使用中だった処理
end;

これでよくね?
613デフォルトの名無しさん:2006/01/16(月) 18:54:45
「こういう機能を実現したいけど何ていう関数を使うんだろう?」
って時は、みんなどうやって調べてるの?

今日も、IEを呼び出す、ってためだけに散々検索しまくって
見つけたソースをコピペして済ませました。
意味もわからずコピペしただけだから、発展性もないし。
本ももってるけど、そういう意味では全く役に立ちません。
614デフォルトの名無しさん:2006/01/16(月) 18:57:20
>>613
文字列検索なら、
まずcopyとかの知ってる文字列関数のページだして、
そのあと、ヘルプの左上?にある、グループのウィンドウ出して、
そーすると文字列操作シリーズがいっぱいでたりするから
ウィンドウ最大化して説明をひたすら読む
615デフォルトの名無しさん:2006/01/16(月) 19:10:20
>>614
ヘルプの時に出てくる「参照」ってやつですよね?
たしかに、それだと知識が有機的に広がっていきますよね。

この場合、初心者の場合は目当ての項目にたどり着くまでが
非常に困難ですよね。初心者や他の(非オブジェクト指向の)言語しか
経験ない人間には辛いところです。
616デフォルトの名無しさん:2006/01/16(月) 19:10:54
知識が少ないうちは、暇なときにTipsが載ってるサイトを眺めてりゃ、IE起動などといったありがちな疑問は解消する。
内容まで覚えて無くても、あああそこに載ってたなって思い出せれば十分だし。
617デフォルトの名無しさん:2006/01/16(月) 19:16:05
キーワードがわからなかったらここで聞けと
618デフォルトの名無しさん:2006/01/16(月) 19:35:10
>>613
コピペしたソースの全てを理解するのは大変なときもあるので、
見たことがないキーワードだけでもざっと調べておく。
それがWindowsAPIだったりすると、他言語のサンプルがあってその言語の勉強にもなったり。
619デフォルトの名無しさん:2006/01/16(月) 19:36:41
WindowsAPIなら、思い切って検索キーワードから Delphi はずすといっぱい出るよね
慣れればC++⇒Delphi 翻訳(・∀・)デュワー(・∀・)デュワー
620608:2006/01/16(月) 23:05:20
やっぱりよくわからない…
名前を入力するキーといままで入力された名前を出力するキー、終了のキーを用意したもので考えてるんですが、
ttp://www.uploda.org/file/uporg288356.txt.html
入力と終了の動作はうまくいくんですが、出力の部分がうまく出てきません
どうしてでしょうか?
621481:2006/01/16(月) 23:12:13
解決しました。

FindFirst関数の第1引数にフォルダ名までのパスしか入っていなかったことが原因でした。
ヘルプをちゃんと読んだらしっかり書いてありました。
すみませんでした。

テスト用だからといって、フォルダ名:a、ファイル名:a、b、cなんてやってたこともあって、
気付くのがホントに遅くなりました。。。
622デフォルトの名無しさん:2006/01/17(火) 08:21:47
自作のクラスにタイマー機能付けようとしたのですが
メモリ違反といわれてうまくいきません。

Ttest = class
s : string;
t :Ttimer;
end;

procedure Tform1.button1click;
var
test:Ttest;
begin
test := Ttest.create;
test.t.enabled := true; //ここでエラーがでます。
test.free;
end;
623デフォルトの名無しさん:2006/01/17(火) 08:23:40
TTest.Create内でtに値をちゃんと代入してるか?
test.tがnilのままだったらアボーンだぞ。
624デフォルトの名無しさん:2006/01/17(火) 08:29:15
SJIS以外の文字を扱うため、WideString型の変数を用意して
Unicodeで管理しようと思います。そこで質問です。

1.監視式ウィンドウで見るとSJIS以外の文字が「?」で表示されてしまう
  値を見るにはどうすればよいのでしょうか

2.SJIS以外の文字が入っているWideString型の文字を一度String型に代入して
  もう一度WideString型に代入すると文字が?になってしまう(情報の欠落?)
  この場合、VCLの内部までさかのぼって調べる必要があるのか?

よろしくお願いいたします
625デフォルトの名無しさん:2006/01/17(火) 08:34:02
>>623
原文のままなのでnilのままだと思いますが
tの値の入れかたもよくわかりません。
626デフォルトの名無しさん:2006/01/17(火) 08:37:05
constructor TTest.Create;
begin
 ...
 FT := TTimer.Create(nil); // TTestがTComponentならnilの代わりにSelfを渡す
 ...
end;

destructor TTest.Destroy; override;
begin
 ...
 FT.Free; // TTestがTComponentなら不要
 ...
end;
627デフォルトの名無しさん:2006/01/17(火) 09:37:42
>>624
Delphiの中の人は基本的にUNICODEは理解出来ない

WideStringをStringに代入したら情報が破損するのは当然
WideCharToString等で安全に変換する必要がある
628デフォルトの名無しさん:2006/01/17(火) 09:39:21
混じれすするとVB.NET使え
629デフォルトの名無しさん:2006/01/17(火) 09:53:43
>>627
なるほど
ありがとうございました
630デフォルトの名無しさん:2006/01/17(火) 10:43:43
>>627
そうだったのかぁ。俺も知らんかった。てっきり、自動変換が行われると
思っておった。やべぇ。ってまてよ。
var
A: string;
S: WideString;
begin
A := 'あ';
S := A;
A := S;
ShowMessage(S);
ShowMessage(A);
end;
が正しく表示されるのは何故??
>>642が言ってることはそもそもマッピングできな文字が入ってるから、
WideCharToStringでも同じじゃないの?
この関数何かしてくれる??ってより、例外生成してしてくれるのかな??
631デフォルトの名無しさん:2006/01/17(火) 10:52:59
627 は言ってることがおかしい、と思う
632デフォルトの名無しさん:2006/01/17(火) 14:42:58
for y:=0 to Image1.Picture.Height -10 do
begin
for x:=0 to Image1.Picture.Width -10 do
begin

check := False;

All10R := 0;
All10G := 0;
All10B := 0;

for j:=0 to 9 do
begin

if check then Break;

for i:=0 to 9 do
begin
633632:2006/01/17(火) 14:43:53
上の続き

if (Pnt1[y+j,x+i].R+Pnt1[y+j,x+i].G+Pnt1[y+j,x+i].B)=0 then //RGB(0, 0, 0)を発見したら
begin
check := True; //フラグ立ててから
Break; //抜ける
end;

Inc(All10R, Pnt1[y+j,x+i].R);
Inc(All10G, Pnt1[y+j,x+i].G);
Inc(All10B, Pnt1[y+j,x+i].B);

end;
end;

//フラグが立ってないときだけ
if not check then All10[x,y] := All10R +All10G +All10B;

end;
end;

このループってRGB(0,0,0)を発見した場合は処理の順序はどうなるんでしょうか?
634デフォルトの名無しさん:2006/01/17(火) 14:55:55
PageControlにリッチテキストをのせてテキストエディタを作成してるのですが、
最新に作ったタブシートにはフォントなどの機能がアクセスできるのですが、その前までに作成したタブシートをアクティブにしても、機能がアクセスできません。何か特別な方法があったら教えていただけませんでしょうか?
635デフォルトの名無しさん:2006/01/17(火) 15:04:47
>最新に作ったタブシートにはフォントなどの機能がアクセスできるのですが、
これが良く分からない
636デフォルトの名無しさん:2006/01/17(火) 15:10:12
>>634
PageControl1.ActivePage := TabSheet2;
637デフォルトの名無しさん:2006/01/17(火) 15:13:00
>632
ざっと見た感じ。

ある点Pnt1(y,x)について(y,x)から(y+9,x+9)について調べる。
  調べる順序は、Pnt1(y,x)、Pnt1(y,x+1)……Pnt1(y,x+9)、Pnt1(y+1,x)、……Pnt1(y+9,x+9)
  1.この正方形の中にRGB(0,0,0)がなかった場合、All10[x,y] は変化なし。
  2.あった場合Pnt1(y,x)からRGB(0,0,0)になる点までのRGBの合計をAll10[x,y] に代入。
以上を(0,0)から(Image1.Picture.Height -10,Image1.Picture.Width -10)までの全ての点で行う。

※疑問点
 Pnt1は[y,x]の順でAll10は[x,y]の順?
 All10R、All10G、All10Bって3つも変数いらなくない?

638632:2006/01/17(火) 15:34:50
>>637
どうもです、RGB(0,0,0)がなければAll10の計算は無視されてしまうんですか
となるとAll10R,G,Bだけ算出してるのみになるようなので意図してることと全く逆かもしれません

RGB(0,0,0)が見つかったらAll10[x,y]はデータなしにしたいんですが
単にこんなのでいいんですかね

if not check then All10[x,y] := 0

他に空データにする書き方があればいいんですが
639637:2006/01/17(火) 15:58:13
ああ、スマン。よく見ると逆だった。
  1.この正方形の中にRGB(0,0,0)が「あった」場合、All10[x,y] は変化なし。
  2.「なかった」場合Pnt1(y,x)からPnt1(y+9,x+9)までのRGBの合計をAll10[x,y] に代入。

>RGB(0,0,0)が見つかったらAll10[x,y]はデータなしにしたいんですが
なかった場合は合計を代入、でいいのか?
それなら、

if check then All10[x,y] := 0
else All10[x,y] := All10R +All10G +All10B;
640デフォルトの名無しさん:2006/01/17(火) 16:06:29
Delphi起動したときのTFormの座標、サイズってどこで設定するんだっけ?
さっきからレジストリみてるけど、よくわからん。
641デフォルトの名無しさん:2006/01/17(火) 16:30:44
タスクトレイにアイコンを表示させるアプリはよく見かけ、
Delphiでもサンプルやコンポが結構ありますが、
タスクトレイの領域にFormそのものを格納することはできますか?
どこかで長細い時刻表示をしているアプリを見たのですが・・・
642デフォルトの名無しさん:2006/01/17(火) 16:32:51
意味不明。アイコンをいろいろ用意して動的に変更して時刻表示やタスクマネージャ
のCPU使用量などを擬似的に表示することはできる。
643デフォルトの名無しさん:2006/01/17(火) 16:35:43
TClockのことだろ。あれタスクトレイの領域じゃありませんから。
TClock2chのソース嫁。
644デフォルトの名無しさん:2006/01/17(火) 16:36:12
要は、アイコンの大きさではなかなか思うような情報を
表示できないため、長細いFormを格納できないかと思ったのです。
645デフォルトの名無しさん:2006/01/17(火) 16:40:21
そもそもFormって言葉の使い方が違ってる
646デフォルトの名無しさん:2006/01/17(火) 16:46:51
あったかくのーる
647641:2006/01/17(火) 16:50:53
>>643
おお!そうなんですか!
情報、ありがとうございます。
648デフォルトの名無しさん:2006/01/17(火) 16:56:52
>>647
ただ、そのレベルであれを表現するのはたぶん無理
あと1〜2年は勉強するつもりで頑張りな
649デフォルトの名無しさん:2006/01/17(火) 17:43:55
【例題】
・Button→Btn
・Label→Lbl
・Image→Img
【問題】
・Memo→?
・Panel→?
650デフォルトの名無しさん:2006/01/17(火) 17:44:30
GExpert使っとけ
651デフォルトの名無しさん:2006/01/17(火) 17:51:48
>649
・Panel→Pnl
652デフォルトの名無しさん:2006/01/17(火) 17:52:17
>649
・Memo→Mem
653デフォルトの名無しさん:2006/01/17(火) 18:01:45
ボインボインの法則に則るならMmだな
654デフォルトの名無しさん:2006/01/17(火) 18:04:15
Memって他にも使ってそうだけど、やっぱりMemだよな・・・
655デフォルトの名無しさん:2006/01/17(火) 18:25:20
1文字目ではない母音を抜くんだよ
656デフォルトの名無しさん:2006/01/17(火) 18:36:26
Memoでいいじゃない
657デフォルトの名無しさん:2006/01/17(火) 18:41:32
・DataSource→?
・UpdateSQL→?
・QuickRep→?
658デフォルトの名無しさん:2006/01/17(火) 18:42:33
dsrc
sql
rep
659デフォルトの名無しさん:2006/01/17(火) 19:40:46
Delphi 2006 で MemCheck を使いたいんだけど、コンパイルできません。
何とかお助けを。
ニューズグループでも話題になってますが、解決はしていないようです。
http://groups.google.co.jp/group/borland.public.delphi.thirdpartytools.general/browse_frm/thread/47c60796f04c0956/d889ccb8b3293369

エラー内容は
[Pascal Error] MemCheck.pas(1554): E2003 Undeclared identifier: 'System'
[Pascal Error] MemCheck.pas(1557): E2003 Undeclared identifier: 'SysUtils'
[Pascal Error] MemCheck.pas(1561): E2003 Undeclared identifier: 'Variants'

エラーがでたコードは procedure ChangeFinalizationsOrder; 内の
if {$IFNDEF DELPHI6_OR_LATER}@{$ENDIF}CurrentUnitInfo.Init = @System.System then //ここ
NewUnitsInfoOrder.Insert(0, CurrentUnitInfoCopy)
else
if {$IFNDEF DELPHI6_OR_LATER}@{$ENDIF}CurrentUnitInfo.Init = @SysUtils.SysUtils then //ここ
NewUnitsInfoOrder.Insert(1, CurrentUnitInfoCopy)
else
{$IFDEF DELPHI6_OR_LATER}
if CurrentUnitInfo.Init = @Variants.Variants then //ここ
NewUnitsInfoOrder.Insert(2, CurrentUnitInfoCopy)
else
{$ENDIF}

この @System.System とかがおかしいわけですが、この部分が
何をしようとしてるかもさっぱりなので行き詰まっております。
MemCheck全ソースはhttp://v.mahon.free.fr/pro/freeware/memcheck/より
{$IFDEF VER170} を VER180 に変えて試しました。
660デフォルトの名無しさん:2006/01/17(火) 19:55:32
>>659
Warning: this routine is likely to need to be rewritten when upgrading Delphi
661デフォルトの名無しさん:2006/01/17(火) 23:25:49
>>640
オブジェクトレポジトリでしょ。
デフォルトプロジェクトを設定。
662デフォルトの名無しさん:2006/01/18(水) 00:54:38
>>624
GUIでもUNICODEを使いたいなら、TntWare Delphi Unicode Controlsという
コンポーネント群がある。
ttp://www.tntware.com/delphicontrols/unicode/
663デフォルトの名無しさん:2006/01/18(水) 01:06:47
ボタンをクリックすると子ウィンドウが表示されるようにしたいのですが
どうすればいいのでしょうか?
664デフォルトの名無しさん:2006/01/18(水) 01:37:53
Form2.Show;
665デフォルトの名無しさん:2006/01/18(水) 04:45:42
for y:=0 to Image1.Picture.Height -10 do
begin
 for x:=0 to Image1.Picture.Width -10 do
 begin
  for j:=0 to 9 do
  begin
   for i:=0 to 9 do
   begin

   r:=0;
   g:=0;
   b:=0;

   case Pnt1[y+j,x+i].R of
   0..43 :begin Pnt2[y+j,x+i].R:=22; end;
   44..85 :begin Pnt2[y+j,x+i].R:=65; end;
   86..127 :begin Pnt2[y+j,x+i].R:=107; end;
   128..169:begin Pnt2[y+j,x+i].R:=149; end;
   170..211:begin Pnt2[y+j,x+i].R:=191; end;
   212..255:begin Pnt2[y+j,x+i].R:=234; end;
   end;
666665:2006/01/18(水) 04:47:44
   case Pnt1[y+j,x+i].G of
   0..43 :begin Pnt2[y+j,x+i].G:=22; end;
   44..85 :begin Pnt2[y+j,x+i].G:=65; end;
   86..127 :begin Pnt2[y+j,x+i].G:=107; end;
   128..169:begin Pnt2[y+j,x+i].G:=149; end;
   170..211:begin Pnt2[y+j,x+i].G:=191; end;
   212..255:begin Pnt2[y+j,x+i].G:=234; end;
   end;


   case Pnt1[y+j,x+i].B of
   0..43 :begin Pnt2[y+j,x+i].B:=22; end;
   44..85 :begin Pnt2[y+j,x+i].B:=65;b end;
   86..127 :begin Pnt2[y+j,x+i].B:=107; end;
   128..169:begin Pnt2[y+j,x+i].B:=149; end;
   170..211:begin Pnt2[y+j,x+i].B:=191; end;
   212..255:begin Pnt2[y+j,x+i].B:=234; end;
   end;

   end;
  end;
 end;
end;


Pnt1に格納されたRGB値を特定の範囲で書き換えて減色してるものなんですが、
Pnt2に格納した値を使って減色した画像を描画するにはどうすればいいんでしょうか?
667665:2006/01/18(水) 05:02:56
image2に描画するとして・・・
668デフォルトの名無しさん:2006/01/18(水) 10:16:30
取得はどうしてるの。ScanLine で取得してるんなら、設定もできるだろうに。
なんかややこしいことするまえに、ちゃんと基本を押さえておかないと
669デフォルトの名無しさん:2006/01/18(水) 10:49:56
やってみた

uses
  Jpeg;

procedure TForm1.FormCreate(Sender: TObject);
var
  jpg: TJpegImage;
begin
  Image1.AutoSize := true;
  Image2.AutoSize := true;
  jpg := TJpegImage.Create;
  try
    jpg.LoadFromFile('c:\サンプル.jpg');
    Image1.Picture.Bitmap.Assign(jpg);
  finally
    jpg.Free;
  end;
end;
670デフォルトの名無しさん:2006/01/18(水) 10:50:35
procedure TForm1.Button1Click(Sender: TObject);
var
  x, y, i: integer;
  ps, pd: PByte;
begin
  Image2.Picture.Bitmap.Width := Image1.Picture.Bitmap.Width;
  Image2.Picture.Bitmap.Height := Image1.Picture.Bitmap.Height;
  Image2.Picture.Bitmap.PixelFormat := pf24bit;
  for y := 0 to Image1.Picture.Bitmap.Height-1 do
  begin
    ps := Image1.Picture.Bitmap.ScanLine[y];
    pd := Image2.Picture.Bitmap.ScanLine[y];
    for x := 0 to Image1.Picture.Bitmap.Width-1 do
      for i := 1 to 3 do
      begin
        case ps^ of
          0..43 : pd^ := 22;
          44..85 : pd^ := 65;
          86..127 : pd^ := 107;
          128..169: pd^ := 149;
          170..211: pd^ := 191;
          212..255: pd^ := 234;
        end;
        inc(ps);
        inc(pd);
      end;
  end;
end;
671659:2006/01/18(水) 12:52:34
>>660
確かにそう書いてありますね。
メモリマネージャ変わったみたいだからいろいろややこしいのか

FastMMのメモリリークレポートでも、発生箇所なんかも
追跡できるようにならないかどうか並行して調査中。
672665:2006/01/18(水) 13:10:58
for i := 1 to 3 do

これはなんのためにおいてあるんですか?
673641:2006/01/18(水) 13:43:02
タスクトレイ関係はあまりにも難しそうなので、タスクバーを親として
フォームをタスクバーに埋め込みました。
これでもいいのですが、できればスタートボタンに埋め込みたいので、
スタートボタンのハンドルを取得して、MoveWindowで大きさを変えようと
したのですが、何も変わりません・・・何故でしょう?
674デフォルトの名無しさん:2006/01/18(水) 14:23:17
>>672
その中身を嫁
675デフォルトの名無しさん:2006/01/18(水) 15:02:54
UTF-8 = Unicodeと思っちゃって
WideString型変数にブチ込んでも問題ないですか?
676デフォルトの名無しさん:2006/01/18(水) 15:08:31
>>675
UTF8とUnicodeは別物
UTF8StringとUtf8Decode使え
677デフォルトの名無しさん:2006/01/18(水) 15:30:44
>>675
UTF-8を入れれるのはWideStringじゃなくてAnsiStringだお。

ま、Utf8Stringってのもあるが、AnsiStringでtypedefしてるだけ。
678デフォルトの名無しさん:2006/01/18(水) 15:58:33
見通しをよくするため普通は分ける
679デフォルトの名無しさん:2006/01/18(水) 16:34:22
>>676->>678
ありがとうございました
今後はUTF-8はUtf8Stringにブチ込むことにします
680デフォルトの名無しさん:2006/01/18(水) 17:22:53
Form を起動時に最大化して表示する方法を教えて下さい。
Delphi7 です。
681デフォルトの名無しさん:2006/01/18(水) 19:45:48
WindowStateをwsMaximized
682669:2006/01/18(水) 20:38:21
>>672

R,G,B の分で1ピクセルにつき3回
683デフォルトの名無しさん:2006/01/18(水) 23:50:31
>>665

それよりこっちの方が謎。

for j:=0 to 9 do
begin
  for i:=0 to 9 do
  begin

    r:=0;
    g:=0;
    b:=0;

なんで、同じことを1ピクセルにつき最大10回も繰り返すのか?
684デフォルトの名無しさん:2006/01/19(木) 00:29:03
そういえば彼はこれをなおしたんだろうか。

> //類似領域をコピペする際に使えるようにPnt1をPnt2にコピーしておく
> Pnt2:=(Pnt1);

動的配列のディープコピーはこれではできないんだが。。。
685デフォルトの名無しさん:2006/01/19(木) 01:39:50
例えばパネルなんかは自分自身に他のコンポーネントを乗せられるじゃないですか
でもラベルとかは他のコンポーネントを乗せられない
この、[乗せられる/乗せられない]はどこのプロパティで設定されてるんだっけ?
686デフォルトの名無しさん:2006/01/19(木) 02:07:58
TWinControlの派生であれば
Handleを持っているので親になれる
687デフォルトの名無しさん:2006/01/19(木) 02:25:41
>>685
TControl.ControlStyleのcsAcceptsControlsじゃない?
688685:2006/01/19(木) 02:29:22
>>687
それそれ!ComponentStyleと勘違いしてた
こんな夜更けにサンクス
689デフォルトの名無しさん:2006/01/19(木) 06:34:35
質問させてください。

procedure CActinData_Set;
var
DataList : TStringList;
i , j : integer;
begin
DataList := TStringList.Create;
try
DataList.LoadFromFile('CActionData.txt');

Cconf_x := StrToFloat(DataList.Strings[1]);
Cconf_y := StrToFloat(DataList.Strings[2]);

〜省略〜

finally
DataList.Free;
end;
end;

このような状態でAcccessViolationエラーが出てしまいます。
ちなみに、それの一歩前の部分で同じ形式で書かれてる部分ではエラーが出ません。
またこのプロシージャを実行するタイミングを変えるとエラーがでなくなります。
(違うところでエラーが出ますが)
690デフォルトの名無しさん:2006/01/19(木) 06:35:06
続き

そして不思議なことに一度動的に作成したことのあるTImageをソースから削除したのが、
このエラーのきっかけなのです。
PaintBoxを知らなかったときに背景代わりに60個のTimageを動的に作成して並べていたのですが、
それを削除するとエラーがでて、戻すとなぜかエラーがでなくなります。
35個あれば問題ないのですがそれ以上減らすとエラーがでております。

動的に作成したものについては全てFreeやSetlength(〜,0)など指定してみたのですが直りませんでした。
どのような理由からくるものかわかる方はいらっしゃいませんか?
691デフォルトの名無しさん:2006/01/19(木) 09:52:48
理由は勉強不足
692デフォルトの名無しさん:2006/01/19(木) 10:13:53
ttp://forum.nifty.com/fdelphi/samples/00922.html

ここの最後らへんにある「6, 8, 5 // これくらいがお勧めです」
この数値で何が変化してるんですか?

数値を変えると見た目に変化が出てるのは分かりますが、内部で何を変えてるのか不明です
693692:2006/01/19(木) 10:24:24
photoshopでレベル補正を見てみたら解決しました
RGBそれぞれの階調の設定みたいですね

これだと6×8×5で240色ってことですか
694デフォルトの名無しさん:2006/01/19(木) 10:26:34
>>691
その理由はもちろんですけど、
実際にここ数週間かけたものが動かなくなってしまってるので、
もっと直接的な原因とその改善方法を教えていただきたいんです。
695692:2006/01/19(木) 10:27:00
あ・・ちがうかも・・
696デフォルトの名無しさん:2006/01/19(木) 10:29:37
DataList の行数を表示してみる
697デフォルトの名無しさん:2006/01/19(木) 10:41:57
>>695

いや、RGB 各色のパレット設定値の段数だから、色数でいいんじゃないの。
この方法では、RGB を線形に区切ってるだけで、パレットの最適化はしてないのね。

ところで君は665だろう? 同じことしてるし。上のレスにちゃんと応答してよね
698デフォルトの名無しさん:2006/01/19(木) 10:50:50
>>697
パレットの最適化が問題みたいですね・・・photoshopの誤差拡散の減色と品質が雲泥の差でした
前の質問についてはまだ考えてるので終わってから書こうと思ってました、すみません
699デフォルトの名無しさん:2006/01/19(木) 10:58:58
> パレットの最適化が問題みたいですね

そう。森の中の葉っぱをとった写真と夕焼けの写真を同じパレットで減色するのに無理が
あるのは当然。
700デフォルトの名無しさん:2006/01/19(木) 11:54:48
>>696
3箇所で同じ書き方をしてるのですが、
うまくいってる部分では直前が0行で読み込んだ後は44行でした。

問題の箇所も同じように直前が0行で、そのままエラーとなります。
701デフォルトの名無しさん:2006/01/19(木) 12:19:17
そりゃない行を参照すればAVがでるわな。なぜ読み込んだ後を見ないのか謎だが
702デフォルトの名無しさん:2006/01/19(木) 12:29:42
>>701
LoadfromFileの途中でエラーが出て終了するために、
読み込んだ後をチェックできないんです。
エラーが出るのは読み込んだ後の参照部分ではなくて、

DataList.LoadFromFile('CActionData.txt');

この行の途中でエラーとなります。

そのプロシージャを違う段階で呼ぶと普通に通るので、
載せた箇所自体に問題があるわけじゃない気もするのですけど、
それでも違う部分でどこかしらエラーが出るのはどこかがおかしいんですよね・・・
703デフォルトの名無しさん:2006/01/19(木) 12:41:16
private
BackImage : Array[0..59] of TImage;
procedure Create_Image;

〜省略〜

procedure TMainForm.Create_Image;
var
i , j : integer;
begin
for i := 0 to 11 do
begin
for j := 0 to 4 do
begin
BackImage[i * 5 + j] := TImage.Create(Self);
with BackImage[i * 5 + j] do
begin
Parent := pnlCtrl;
Picture.LoadFromFile('backimage.bmp');
Left := i * 40;
Top := j * 38;
SendToBack;
end;
end;
end;
end;

なぜかこのプロシージャがある時はエラーは出ていなかったのですが、
これを削除すると関係ない上記のDatalist.LoadfromFileの部分でAccessViolationがでるんです。
704デフォルトの名無しさん:2006/01/19(木) 13:10:00
そんな訳分かんないこと言われて理解できるのはエスパーだけ
705デフォルトの名無しさん:2006/01/19(木) 13:20:33
withでなんか勝手に他の呼ばれてるんじゃねーの
706デフォルトの名無しさん:2006/01/19(木) 13:23:07
その関数呼ぶ前にヒープだかスタックだかが破壊されまくってるんだろ。
707デフォルトの名無しさん:2006/01/19(木) 13:37:28
画像をタイル状に敷き詰めるのに TImage はひとつだけでいいんだよ。
Bitmap に画像をひとつ読み込んで、予めタイル状に描けば済むのに。
あるいはもうひとつの Bitmap にタイル状に描いておいて PaintBox.OnPaint
で表示するとか。
708デフォルトの名無しさん:2006/01/19(木) 13:39:46
たぶんメモリ破壊だろうな
709デフォルトの名無しさん:2006/01/19(木) 13:40:57
>>705
なぜかそのイメージ作成部分があると動き、呼ぶのをやめるとエラーになるのです。

>>706
今からヒープとスタックについて調べてみます。

>>707
その方法を昨日知ったのでそう書き直そうとしたらこのエラーに遭遇しまして。
710デフォルトの名無しさん:2006/01/19(木) 13:43:21
>>708
それは動的に作成したものを破棄し忘れている部分があるとかでしょうか?

あまりに心配でPCのメモリ壊れてないかのチェックはしてみてしまったのですが。
711デフォルトの名無しさん:2006/01/19(木) 13:51:19
率直に言って、上記ルーチンの有無とエラーは関係ないと思うけど。それ以外の
要因に気づいてないような気がする。しめされたコードだけでエラーを類推するのは
ほとんどエスパーの仕事になってるし。ま、適切なコードをしめせないのがエラー原因
を突き止めれない理由でもあるんだが。
712デフォルトの名無しさん:2006/01/19(木) 13:58:24
それからファイルアクセスはちゃんと絶対パスを設定しろよ。ファイル名だけで
アクセスするとカレントディレクトリが変化しただけでアウト。LoadFromFile()
で失敗する場合はこれが多い。
713デフォルトの名無しさん:2006/01/19(木) 14:00:54
頓珍漢なアドヴァイスはいりませんから
714デフォルトの名無しさん:2006/01/19(木) 14:02:58
712が有力だな
715デフォルトの名無しさん:2006/01/19(木) 14:05:56
自演もいりませんから
716デフォルトの名無しさん:2006/01/19(木) 14:06:01
別のファイルや存在しないファイルを読みに行っても
アクセス違反にはならないけどな。
717デフォルトの名無しさん:2006/01/19(木) 14:06:04
>>713
質問者が頓珍漢なのでそれにレベルを合わせてあげてるのですよ^^
718デフォルトの名無しさん:2006/01/19(木) 14:07:56
もうソース全部出せよ
この情報量でやっても無意味
719デフォルトの名無しさん:2006/01/19(木) 14:08:37
エスパー同士がんばれよ!
720デフォルトの名無しさん:2006/01/19(木) 14:10:30
> これを削除すると関係ない上記のDatalist.LoadfromFileの部分でAccessViolationがでるんです。

これ「AccessViolation」を厳密な意味で使ってるの? 失敗するだけじゃないの?
721デフォルトの名無しさん:2006/01/19(木) 14:15:14
>>720
ww
722デフォルトの名無しさん:2006/01/19(木) 14:17:30
712が有力だな
723デフォルトの名無しさん:2006/01/19(木) 14:24:09
712が有力じゃね?
724デフォルトの名無しさん:2006/01/19(木) 14:26:37
多分712
725デフォルトの名無しさん:2006/01/19(木) 14:30:20
きっと712
726デフォルトの名無しさん:2006/01/19(木) 14:30:32
エスパー大集合!!
727デフォルトの名無しさん:2006/01/19(木) 14:37:06
720も捨てがたい
728デフォルトの名無しさん:2006/01/19(木) 14:40:41
>>691が最有力だな
729デフォルトの名無しさん:2006/01/19(木) 14:43:13
画像をカレント以外に読み込みにいって、カレントが変更されて712=720 になってると思う
730デフォルトの名無しさん:2006/01/19(木) 18:18:20
TImageで動画表示させたらチラツキまつね。
731デフォルトの名無しさん:2006/01/19(木) 18:36:56
712ならさっき電車で見たよ
732デフォルトの名無しさん:2006/01/19(木) 18:39:56
置換から女の子助けようとして逆に痴漢と間違えられてた。
733デフォルトの名無しさん:2006/01/19(木) 22:47:37
ほんとの置換は732だよな
734689:2006/01/19(木) 23:02:23
>>711
少し出かける必要があったので出ていました。
713は別人です。
あの後メモリ破壊という言葉を元に調べたところ、
自分があげたルーチンの前でおかしくなっていてそのせいだった気がしました。
今から怪しい部分を徹底的に調べてみたいと思います。

頓珍漢な質問をしてすみませんでした。
もし他の部分を全部見直してみても直らないようでしたら、
ソースを全部あげてみたいと思います。

絶対パス指定というのはインストール先でも困らないように、
現在のパスを取得してから書く方法ですよね?
エラーが直ってから実装したいと思います。

アドバイスありがとうございました。
735デフォルトの名無しさん:2006/01/19(木) 23:35:23
>>734
そんな大変なことじゃないから忘れないうちにやっとけ
hoge.LoadFromFile(FileName);

hoge.LoadFromFile(ExtractFilePath(ParamStr(0)) + FileName);
にするだけ
736デフォルトの名無しさん:2006/01/19(木) 23:36:33
あ、別にexeと同じ階層とは限らないか・・・
('A`)
737デフォルトの名無しさん:2006/01/19(木) 23:38:55
がんばるねぇ
738デフォルトの名無しさん:2006/01/20(金) 00:13:21
>>735
親切にありがとうございます。
早速やってみたいと思います。

>>696-737
後おかげさまで原因が突き止められました!
ずっとそのLoadFromFile周りを調べてたので気づかなかったのですが、
ここの方のアドバイスを参考にその前の部分を全部1から調べていったら直りました。

SetLength(Pl,2);
for i := Low(pl) to High(pl) + 1 do

とHigh(pl) - 1 とかいていたつもりがプラスになっていて違反を起こしていたようです。

皆様お騒がせいたしました。
本当にありがとうございました。
739デフォルトの名無しさん:2006/01/20(金) 01:20:00
2 をリテラルで書いておいて、High、Low もないもんだが
740デフォルトの名無しさん:2006/01/20(金) 01:21:46
結局、あれか Image たくさんつくるルーチンは関係なかったのか?
アホエスパーばかりだったな・・・
741デフォルトの名無しさん:2006/01/20(金) 01:21:59
頼む。お前しゃべるな
742デフォルトの名無しさん:2006/01/20(金) 02:04:12
Font.StyleでfsBoldなどに変更した文字を戻すのはどうすればいいのでしょうか?
743デフォルトの名無しさん:2006/01/20(金) 02:06:32
>>742
-[fsbold]
744デフォルトの名無しさん:2006/01/20(金) 02:14:01
-[fsBold]ってのはダメでした。
Font.Style := [];
で出来た。
745デフォルトの名無しさん:2006/01/20(金) 02:17:09
Excludeっていうのもある
746デフォルトの名無しさん:2006/01/20(金) 02:28:42
>-[fsBold]ってのはダメでした。
どうせ
Font.Style := -[fsBold];
とかやってたんだろ。
747デフォルトの名無しさん:2006/01/20(金) 02:43:03
Font.Style := Font.Style-[fsBold];
と書けばいいだけなのに。

ここ最近変なニート君が常駐してるなぁ。いよいよ末期かもしれない。
不毛な議論ばっかしてたオサーンたちのがまだましだったかも。
748デフォルトの名無しさん:2006/01/20(金) 02:44:32
不毛がましって、末期症状だよな
749デフォルトの名無しさん:2006/01/20(金) 02:46:37
ってか、やはり質問者も回答者もカスだよな、最近。
750デフォルトの名無しさん:2006/01/20(金) 02:54:19
変なのが一匹常駐するだけでこうも変わるもんだな
751デフォルトの名無しさん:2006/01/20(金) 03:44:34
自己紹介、乙
752デフォルトの名無しさん:2006/01/20(金) 04:07:16
くだすれなんだからみんなカスだよ
変にプライドとか持っちゃダメ
753デフォルトの名無しさん:2006/01/20(金) 04:11:56
カスすれにするといいね、次から。
754デフォルトの名無しさん:2006/01/20(金) 05:25:43
みんなエスパーじゃなかたってことだな
755デフォルトの名無しさん:2006/01/20(金) 08:53:53
プログラム
ttp://erotyabin.gotdns.com/user/erotyabin/cgi/uproda/img/upsf001791.zip

ご教授お願いします!
RGB単体じゃ精度が話にならなかったんで今度はどの色がどのくらい含まれてるか
という比較でやってるんですがまたまた取得する場所がヘンテコです・・・

RGB単体のときと違って同じ色が存在しないとダメなので何かおかしいはずなんですが
正確に出来ていれば全く同じ割合で同じ色が含まれてる箇所が抽出されるはずなんですね


色の比較方法はここと似たような方法にしてます
ttp://www.cis.nagasaki-u.ac.jp/~hotta/gke/index.html
756デフォルトの名無しさん:2006/01/20(金) 09:33:06
>>755
ここで尋ねる規模じゃないと思うのだが・・・
問題点を抽出しぬいて、簡潔に尋ねてください。
757デフォルトの名無しさん:2006/01/20(金) 10:33:32
>>756
おっしゃるとおりです・・
誤った部分が取得されるということはヒストグラム取得〜コピペ以外はあまり関係がないと思います

最後のほうのDの中で最大のものを探す処理ですが、
if max:=100(100ピクセルの中の使われてる色とその回数が完全に一致する)
という条件のときしかx,yを取得しないようにしても取得場所がおかしかったので比較以前でミスしてる気がします

比較する条件文か、配列D、wb[ ]、AllHis[ ]で格納してるデータがおかしいのか・・・
ここはなにしてるんだ?っていうのがあればいくらでも言ってください

ヒストグラム取得部
画像全体で10×10ピクセルの範囲ごとに使われてる色を見て、最大216色でどの色が何回使われてるか調べてます

除去領域指定部
クリックした地点から少しずつずらして白く塗りつぶしてます。同時にその範囲の1つ1つのヒストグラムをwbHis[ ]に格納してます

比較部
D値(比較する範囲同士で色が一致する個数)を求めてます。Dが0なら全く同じ色が使われておらず、100なら使われてる色も個数も同じということになります。

長くなってすみません
758デフォルトの名無しさん:2006/01/20(金) 10:37:14
簡潔じゃないですね・・問題なく動作するんで余計にどこがおかしいのかわからなく・・
759デフォルトの名無しさん:2006/01/20(金) 10:48:28
訂正です

if D[x,y]:=100(100ピクセルの中の使われてる色とその回数が完全に一致する)
760デフォルトの名無しさん:2006/01/20(金) 11:02:49
756が言いたかったのはそういう事じゃないような。
・そもそもこれは何をするプログラムなのか?
・どういう問題が発生しているのか?
・その問題はどの部分で発生しているのか?
・何故その問題は発生しているのか?

わかる部分でいいから755は答えてくれ。
761755:2006/01/20(金) 11:20:10
どうもです

>何をするプログラムなのか?

画像中で消したい部分があったら、画像中の他の部分から似てるところをひろってきて消したい部分にペーストして消してしまおうというプログラムです。
アップしたものはその前段階で、消したい部分は関係なく白く塗りつぶした部分と同じものをひろってくる!というのを目的にしてます。
白く塗りつぶしたところにペーストするわけですね、似てるかどうかの判断材料は使われている色とその回数です。

>どういう問題が発生しているのか?

白く塗りつぶした部分の色と関係のない色の部分をひろってきてしまう、ということです。
たとえば青い色が使われてる空で実行したのに茶色い地面からひろってくるとか。

>その問題はどの部分で発生しているのか?

これは・・・画像中のどこで実行してもですね(汗
単純に言ってしまうと色の違う部分をひろってくるってだけなので。

>何故その問題は発生しているのか?

エラーとか見える部分で問題がないようなので実行したら結果が変だ・・・
でも何で間違っているのか分からないという状態です
762デフォルトの名無しさん:2006/01/20(金) 11:34:34
付け加えで。。
色数が多すぎるとやっかいなので比較に用いる画像の情報は減色してあるImage2のを使ってます。

→白く塗りつぶした部分の座標を取得しておいて、Image2の同じ部分の色情報を取得
→それに最も似た場所をImage2内で探し座標を取得
→Image1でその座標の部分をコピーして白い部分にペーストする

の流れになってます。
仮に結果が正確ならばほとんど同じ色が使われてる場所からしかひっぱってこないはずなんです。
763デフォルトの名無しさん:2006/01/20(金) 11:52:30
せめて、どの辺でおかしいのかぐらいは自分で発見するべきだと思うのだが
何が間違っているのか分からないなんて話ならん
お前、何故動くか分からないとかの魔法のコードを書くタイプだろ
764デフォルトの名無しさん:2006/01/20(金) 11:54:11
チェックすべき項目をざっと挙げてみた。すべてクリアにすればおそらく問題は解決できるだろう。

>その問題はどの部分で発生しているのか?
その問題は「プログラム」のどの部分で発生しているのか?
問題の発生する部分で使用される変数は何か?
その変数の値はどのように変化すべきなのか(具体的な数値で)?
実際にはどう変化しているのか(具体的な数値で)?


白く塗りつぶした部分の座標を取得
 これは何という変数に取得してるのか?
 正しく取得されているか?
 実際に使われる時、正しいデータが入っているか?

Image2の同じ部分の色情報を取得
 これは何という変数に取得してるのか?
 正しく取得されているか?
 実際に使われる時、正しいデータが入っているか?

最も似た場所をImage2内で探し座標を取得
 これは何という変数に取得してるのか?
 正しく取得されているか?
 実際に使われる時、正しいデータが入っているか?

Image1でその座標の部分をコピーして白い部分にペーストする
 この処理は正しく行われているか?
765デフォルトの名無しさん:2006/01/20(金) 12:20:58
どうせ自分では理解できないコードが何十行とあるんだろ
もう一度最初から、今度は自分が理解できるコードを少しずつ書きなさい
766デフォルトの名無しさん:2006/01/20(金) 12:25:09
画像処理スレいけよ

画像処理スレッドその5
http://pc8.2ch.net/test/read.cgi/tech/1127705848/
767デフォルトの名無しさん:2006/01/20(金) 12:34:45
>763の言う魔法のコードを書くタイプによくあるが、問題を一気に解こうとするのは間違いだ。
「1つの問題をいくつかの細かい問題に分けて1段階ずつ解決していく」という手法の方がいい。
ジグソーパズルを例にとると、まず枠を完成させてから中身に取りかかるのが普通だ。
いきなり全部をやろうとするのは、よほど簡単な場合か、腕に自信がある奴が腕試しにする場合だろう。
あと、テストデータが複雑なのもよくない。
フランス国旗みたいな画像でテストしたらどうか。
768デフォルトの名無しさん:2006/01/20(金) 13:29:51
>>766
>画像処理スレいけよ
画像処理スレはもう、イッパイイッパイなので勘弁して〜
769デフォルトの名無しさん:2006/01/20(金) 13:34:47
>>767
>フランス国旗みたいな画像でテストしたらどうか。
で、サイズを40x40ぐらいにしたほうがいい。
そうすれば配列をダンプして、目で追えるだろう。

>//truncは小数点以下を切り捨てる関数
コメントを入れるときは、こーいうのじゃなくって、p2とp3はなんなのかとか書いてね
あと、関数ローカルじゃない変数とかは、名前を長めに。
770デフォルトの名無しさん:2006/01/20(金) 14:28:37
まぁーた、エスパー勢ぞろいですか。ごちゃごちゃ言わずに、正解書けよ。
771デフォルトの名無しさん:2006/01/20(金) 14:38:51
グダグダ遠回りに書いて引き伸ばす一文字いくらでバイト料もらってる某日の雇ったテクニカルエバンジェリストなんだよと言ってみる
772デフォルトの名無しさん:2006/01/20(金) 14:44:16
>>770 (´・ω・) カワイソス
773デフォルトの名無しさん:2006/01/20(金) 14:51:52
この質問してるヤツって、連日、減色だの誤差拡散だのとわけ分からんコードしめして
質問してるのと同一人物だろ。過去にいっぱいレスもらってるのに放置してるから無視した
方がいいよ。
774デフォルトの名無しさん:2006/01/20(金) 14:59:43
>>773
確かに。
ツッコミ待ちにしか見えないもんな、あのソース。
775デフォルトの名無しさん:2006/01/20(金) 15:09:19
毎日毎日よく飽きないな・・・
776デフォルトの名無しさん:2006/01/20(金) 18:54:25
ソースをよく見てないがこれたぶんこの考え方じゃ無理だと思うんだが・・・
777755:2006/01/20(金) 19:12:13
>>769
適当に数色だけで書いた画像を用意したらきちんと白く塗った部分と同じ色を拾ってきました
ただ色の境界の部分でやるとおかしいので白く塗るところの色の情報の取得が間違ってるのかもしれないです

>>776
処理を少なくして精度をあげたいんですけど何か方法ないですかね・・・
前にやったRGB値の合計だと合計が一致すれば同じと判断されて全然ダメでしたから

今度は同じ色が存在しない限りスルーするやり方なので精度はかなり上がると思うんですよ
同じ色がどれだけたくさんあるかで判断してるんで(処理時間も増えちゃってますが)

778デフォルトの名無しさん:2006/01/20(金) 20:00:13
>>777
青、白、赤のフランス国旗でやってみたが、ちゃんとなんないぞ。

Button6Click内の、
if wbHis[n,h+1]<AllHis[x,y,h] then
Inc(D[x,y],wbHis[n,h+1])
else
Inc(D[x,y],AllHis[x,y,h]);

ってトコ、何やってんの?
「同じ色がどれだけたくさんあるか」になってないよ。
779デフォルトの名無しさん:2006/01/20(金) 20:34:31
>>778
もしかすると332行目あたりに6,8,5っていう数字ないですか?
そこを6,6,6に変えてみてください、修正せずにアップしてしまったかもしれません。

あとそこは白く塗りつぶした範囲と比較する範囲で同じ色の数を比較してます。
値が小さいほうを加えていけば一致する分だけカウントできるってやり方です。
hには216色のうちどれかの色が含まれてる数が格納されてます。

データの受け渡しがおかしいみたいですね。
ボタン6もそうかもしれないですが、塗る潰すところの時点でおかしい気がしてるので考え中です。
780デフォルトの名無しさん:2006/01/20(金) 20:35:04
302行目でした
781デフォルトの名無しさん:2006/01/20(金) 20:38:24
すみません、hは216色のうちどの色かをあらわすだけですね
ヒストグラム取得のところでカウント処理してます

hが200なら、この色は200番で、じゃあ配列に+1して200番が使われた数が1回・・・こんな感じです
782デフォルトの名無しさん:2006/01/20(金) 20:42:50
頼むからもう余所に行って下さい
783デフォルトの名無しさん:2006/01/20(金) 20:55:21
お前がな
784デフォルトの名無しさん:2006/01/20(金) 20:55:32
>>761
> >何をするプログラムなのか?
>
> 画像中で消したい部分があったら、画像中の他の部分から似てるところをひろってきて
> 消したい部分にペーストして消してしまおうというプログラムです。
ここから、すでに何を意図しているのかわからない漏れは一体…orz

画像をベクトル量子化的に非可逆圧縮するプログラムってことなのかな?
785デフォルトの名無しさん:2006/01/20(金) 21:01:21
>>784
多分、クローンブラシみたいなことをコピー元を指定せずにやりたいってことじゃない?
786デフォルトの名無しさん:2006/01/20(金) 21:28:38
漏れDel6持ってないんでコンパイルできなんだけど
B,G,Rの構造体ってpaqueしなくていいんだっけ?
787デフォルトの名無しさん:2006/01/20(金) 21:42:45
>>785
そうですそうです

ペイントソフトとかでも修正ツールとかあるんですけど、自動修復みたいなのはないんですよ
それをやりたいんです
788デフォルトの名無しさん:2006/01/20(金) 21:54:12
修復っていうのは、修復後の画像が分かってないと(予想できないと)出来ないわけだが。
789778:2006/01/20(金) 22:10:22
>>780
298行目じゃないか?
6,6,6); になってるぞ。

>あとそこは白く塗りつぶした範囲と比較する範囲で同じ色の数を比較してます。
色ごとに比較しているのが問題なんじゃないの?

640×480の画像で右半分が黒、左半分が白に場合、
(0,0)のヒストグラムAllHis[0,0,0]が100、AllHis[0,0,1..215]は0になる。
(319,0)のヒストグラムAllHis[319,0,0]が10、AllHis[319,0,1..214]は0、AllHis[319,0,215]は90になる。
検索ブロックの先頭が(0,0)の場合、wbHis[1,1..216]にAllHis[0,0,0..215]がコピーされるはず。
ここで>>778のプログラムを実行すると、D[319,0]はどうなるか。
hが0の時、wbHis[1,0+1]はAllHis[0,0,0]=100、AllHis[319,0,0]=10だからまず100がプラスされる。
hが1..214の時は変化なし。
hが215の時、wbHis[1,215+1]はAllHis[0,0,215]=0、AllHis[319,0,215]=90だからさらに90がプラスされる。
で、D[319,0]は190になる。

と、思うのだがどうか?
790デフォルトの名無しさん:2006/01/20(金) 22:15:25
>>788
言葉の意味で言うならそうなのかもしれませんけど
Photoshopとかでも修復ツールというのは手動で他の部分をコピーしてきてなじませるだけですから(処理は複雑みたいですが)

元を予想するとか元画像があるなしじゃなくて、とりあえず消したい部分を違和感なく消そうってことですよ
791デフォルトの名無しさん:2006/01/20(金) 22:31:14
手動だとユーザは消したい部分を知っている。プログラムで「消したい部分」をそうでない部分と
どうやって自動で認識するの?
792デフォルトの名無しさん:2006/01/20(金) 22:34:02
質問させてください。
プログラムを実行したときに、突然ある一つのButtonだけがクリックできなくなってしまいました。
以前は正常に動作していましたし、そのButtonのプロパティをいじったわけでもありません。
Enabledはもちろん常にTrue状態で、見た目も灰色表示になっていないのですが、
なぜか実行中クリックしても押すことができません(押下状態になりません)。
それ以外の他のボタンは至って正常なのですが。
これには可能性としてどのような原因が考えられますでしょうか?
ちなみに、Delphi6でOSはWinXPです。
793デフォルトの名無しさん:2006/01/20(金) 22:39:04
ソース読まずに発言するけど
>>790の人はもう一度アルゴリズムの部分を整理して考え直した方がいいんじゃないの?
794デフォルトの名無しさん:2006/01/20(金) 22:47:19
>>792
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
 Releasecapture;
end;
795デフォルトの名無しさん:2006/01/20(金) 22:52:30
実行中にEnable:=Falseしてるとか
796デフォルトの名無しさん:2006/01/20(金) 23:04:36
> Enabledはもちろん常にTrue状態で、見た目も灰色表示になっていないのですが
797792:2006/01/20(金) 23:11:09
>>794
なるほど。と思いましたが、それでも無理でした…。
思い当たる原因もなく突然クリックできなくなったので、どうも何かおかしいようです。
私の個人的な環境側の問題なんでしょうか。
>>795
ボタンの表示は常にEnable:=Trueの(灰色になっていない)状態なんです。
しかも、以前正常だった時から、そのボタンに関する処理の部分も特にいじってないんですよ。
まあ処理以前に押下状態にさえならないのですが…。
798775:2006/01/20(金) 23:13:31
>>789
後半の部分ですが、同じ色があれば数が少ないほう加算するので合計は10になりませんか?

>>791
プログラムが消したい部分を判別するために本来はそこを黒く塗りつぶしておく必要があります
とにかく白く塗った部分と同じものがもってこれないとダメなんで、判別の処理は一旦消しました

799デフォルトの名無しさん:2006/01/20(金) 23:14:04
ボタンが乗ってるパネルのEnabledがFalse
800デフォルトの名無しさん:2006/01/20(金) 23:15:09
>>790
そんなこと簡単にできるなら、レタッチツールに実装されてないはずないとか思わないのかな。
801デフォルトの名無しさん:2006/01/20(金) 23:16:38
> 黒く塗りつぶしておく必要があります

手動でやるんだよね、これ(汗汗
802デフォルトの名無しさん:2006/01/20(金) 23:20:56
>>800
消したい部分を違和感なく消すっていうだけなら、精度の高いものはすでに完成してます。
でもかなり処理に時間がかかるのであまり使えないんで精度を保ちつつ処理時間を短くする方法を考えてるんです。
今やってるのもその1つのアプローチの仕方ってだけで。
803775:2006/01/20(金) 23:22:06
>>801
消す部分を指定しないで出来たら人工知能になっちゃいますから到底出来ないです(汗
804792:2006/01/20(金) 23:25:25
>>799
…まさにそうでした。ありがとうございます!
いつの間に変わってたのか…お恥ずかしい。
お騒がせして申し訳ありませんでした。レスくれた人ありがとうございます。
805794:2006/01/20(金) 23:25:29
>>797
勘違いしてるかもしれないけど、>>794みたいな事をするとボタンが反応しなくなるよ、って言う実例
ボタン1つならもう一回そのボタンだけ作り直せば?
806794:2006/01/20(金) 23:26:33
4秒差か…orz
807789:2006/01/20(金) 23:42:23
>>798
スマン。そうなるな。
808デフォルトの名無しさん:2006/01/20(金) 23:46:36
誰か775がやろうとしてることを分かりやすく3行で頼む
意味がよく分からんです
809775:2006/01/20(金) 23:47:17
>>807
でも色の境目とかで実行すると大変なことになってますね・・・
取得は出来ててもデータの受け渡しの最中でどっかミスってますなこれは
810デフォルトの名無しさん:2006/01/21(土) 00:13:22
>>808
毎日
毎日
よく飽きないな・・・
811デフォルトの名無しさん:2006/01/21(土) 04:08:14
>>755
ttp://erotyabin.gotdns.com/user/erotyabin/cgi/uproda/img/upsf001797.lzh
使われていない変数やらがあったので整理してみた。
こんな感じでOKか?
812775:2006/01/21(土) 06:33:25
>>811
おおおおおおっこれは!!!完璧に同じ場所をコピペできてますね!
しかも難題だったパレットからひろってくる処理まで加えられてあって・・・涙出そうです

これは・・・同じ手法で色の比較方法なんですかね?
複雑な形状の部分でも完璧にひろってきてますし、正直216色でここまで精度が高くなるとは思いませんでした。
深夜まで作業ありがとうございます、変わってるところも多々あるようなので勉強させていただきます。

813775:2006/01/21(土) 06:52:43
っと、パレット云々は関係ないですか
814デフォルトの名無しさん:2006/01/21(土) 08:31:00
ところでおまえさんは775じゃなくて755じゃないのか。
815デフォルトの名無しさん:2006/01/21(土) 10:11:11
775だろ。どっちも変なヤツ。
816デフォルトの名無しさん:2006/01/21(土) 10:16:19
>>811
すげー、よくあれで仕様が理解できたなー
ロゼッタストーンみたいな神だな。
817デフォルトの名無しさん:2006/01/21(土) 10:17:39
ロゼッタストーンは神と関係ないですが
818デフォルトの名無しさん:2006/01/21(土) 11:10:54
毎日毎日よく飽きないな・・・
819デフォルトの名無しさん:2006/01/21(土) 11:22:40
楽しそうだな。こちとら雪の中つまらんコーディングの最中でもう飽きあきだ…
820デフォルトの名無しさん:2006/01/21(土) 11:30:12
プログラマって、つまらなそーな職業ですね。趣味にしてると、楽しいから飽きないけど
821デフォルトの名無しさん:2006/01/21(土) 11:31:30
.NETを速く動作させることはできますか?
822デフォルトの名無しさん:2006/01/21(土) 11:34:36
できるよー、速いCPU使えば
823デフォルトの名無しさん:2006/01/21(土) 11:36:06
クラスをリスト化するには具体的にどうすればよいですか?
824デフォルトの名無しさん:2006/01/21(土) 11:57:00
>>823
クラスのオブジェクトってことね??
ContnrsユニットのTObjectListを使うと解放までしてくれる。
TListでもいいと思う。
825デフォルトの名無しさん:2006/01/21(土) 12:41:58
>>824
しばらく頑張って出来なかったので再度質問します。
リストに加えるのは出来たのですが、リストのアイテムをクラスに代入する方法がわかりません。
826デフォルトの名無しさん:2006/01/21(土) 12:49:16
>>821
.NETってdelphiじゃないのにwww
827デフォルトの名無しさん:2006/01/21(土) 13:32:13
procedure TForm1.Button1Click(Sender: TObject);
var test :Test;
begin
test := Ttest.Create;
objectlist.Add(test);
test.Free;
end;
は問題なく出来るのに、
procedure TForm1.Button2Click(Sender: TObject);
var Ttest;
begin
test := Ttest.Create;
test := objectlist.Items[i];
test.Free;
end;
ではTobjectとTclassでは互換性がないと言われて先に進めないのですがどうすればよいですか?
828デフォルトの名無しさん:2006/01/21(土) 14:02:56
>>827
「キャスト」を調べなさい
つーかキャストも分からないでクラス使おうなんて・・・
829デフォルトの名無しさん:2006/01/21(土) 14:13:51
>>828
クラスを習いたいと思ってキャストの方法を聞いたつもりなのですが・・・
830デフォルトの名無しさん:2006/01/21(土) 14:27:07
test := Test(objectlist.items[i]);
もしくは
test := objectlist.items[i] as Test;

as演算子、is演算子をヘルプでしらべてみん。
831デフォルトの名無しさん:2006/01/21(土) 14:29:01
DelphiもDelphiならユーザーもユーザーだなぁ
832デフォルトの名無しさん:2006/01/21(土) 14:30:33
>>830
有難うございました。
833デフォルトの名無しさん:2006/01/21(土) 14:38:03
>>827
これがDelphiユーザーの負の部分の代表格か
834デフォルトの名無しさん:2006/01/21(土) 15:01:01
↑ これがDelphiユーザーの負の部分の子分格
835デフォルトの名無しさん:2006/01/21(土) 15:06:13
>>834
うまいこというな。おもわず、ワロタ。
836デフォルトの名無しさん:2006/01/21(土) 16:04:56
DelphiもユーザーならユーザーもDelphiだなぁ
837デフォルトの名無しさん:2006/01/21(土) 16:10:32
>>836
特にうまくもない
838デフォルトの名無しさん:2006/01/21(土) 16:50:03
TPageControl
を使っているのですが、
タブの表示/非表示を切り替えるにはどうすればよいでしょうか。

TabHeightの値を1にすれば、
ほぼじゃまにならないと言えなくもないのですが、
すっきりと見えなくするにはどうすればよいでしょうか。

よろしくお願いします。
839デフォルトの名無しさん:2006/01/21(土) 17:03:05
TTabSheetにTabVisibleプロパティあるじゃんよ。
840838:2006/01/21(土) 17:21:19
書き方が下手でした。失礼しました。

ページそのものは表示しておきたいのですが、
タブの部分だけ表示したり、非表示にすることで、
少しでも画面サイズを大きく使いたい という意味だったんです。
よろしくお願いします。

841デフォルトの名無しさん:2006/01/21(土) 17:32:16
全ページのTabVisibleをFalseにして、ActivePageやActivaPageIndexで表示したいページを指定するのだよ
842838:2006/01/21(土) 19:24:49
>>839様 >>841
失礼いたしました。
完璧です。ありがとうございました。


843デフォルトの名無しさん:2006/01/21(土) 19:49:11
TPaintBoxに描いた絵の一部を消すにはどうしたらよいのでしょうか?
透明色で塗り潰せばいいのかといろいろ調べましたがその方法が
わかりません。invalidateやrefreshは画面がちらつくので使いたく
ありません。よろしくお願いします。
844デフォルトの名無しさん:2006/01/21(土) 21:37:07
背景色で塗りつぶす
845デフォルトの名無しさん:2006/01/21(土) 22:03:03
別途TBitmapなどに描画しておいて、後からコピー
846デフォルトの名無しさん:2006/01/21(土) 22:24:07
意味わかんね。それでどうして一部を消すことができるの?
847デフォルトの名無しさん:2006/01/21(土) 22:42:35
消すなんて処理はない。何かを描く事で消したように見せるだけ。
下地が絵ならその絵をコピー。下地が単一色ならその色で塗りつぶす。
848デフォルトの名無しさん:2006/01/21(土) 22:46:26
Delphi6パーソナルのページ、
インスコ鍵の取得が日本語サイトからできなくなったーーwwww
これから参戦するフリー厨オワタ
849デフォルトの名無しさん:2006/01/21(土) 22:51:15
>これから参戦するフリー厨オワタ

うひょー、某もなかなか厨房くさいことやるんだな。最低。イメージとっとこ。
850デフォルトの名無しさん:2006/01/21(土) 22:52:54
あっ、インストールキーか。それならオレは問題ないな。これからのヤツはお終いか。
厨房ユーザはあとすこしで絶滅
851デフォルトの名無しさん:2006/01/21(土) 23:18:46
英語がわかりません

って質問がこなきゃいいけど
852デフォルトの名無しさん:2006/01/21(土) 23:22:21
もう、わざとDL、インストールしにくくしてるとしか思えんな・・・
853デフォルトの名無しさん:2006/01/22(日) 00:29:40
>>850
厨房ユーザーだった俺ももう工房。
ってことはほんとに絶滅直前や
854デフォルトの名無しさん:2006/01/22(日) 01:47:17
BDNのアカウントは製品版でも登録には必要なんだが・・・
英語が分かりませんというほど難しい所は無いだろ。
855デフォルトの名無しさん:2006/01/22(日) 01:49:01
英語まだ習ってないような子もいるんだからさ
856デフォルトの名無しさん:2006/01/22(日) 02:02:33
そんな子供にプログラミングが出来るとも思えないが
857デフォルトの名無しさん:2006/01/22(日) 02:03:26
学校の先生とか、周りの大人に聞きなさい。
858デフォルトの名無しさん:2006/01/22(日) 02:13:04
なぜ、日本語でできるようにしないのか? っていう議論はないのですか?
不思議なユーザコミュニティーですね。
859デフォルトの名無しさん:2006/01/22(日) 02:20:21
      |
      |
      |
      |              /  ̄   ̄ \
     (=)           /、          ヽ
     J            |・ |―-、       |
                   q -´ 二 ヽ      |
                 ノ_ ー  |     |
                 \. ̄`  |      /
                   O===== |
                  /          |
                   /    /      |
860デフォルトの名無しさん:2006/01/22(日) 02:49:54
日本語しか出来ない奴は相手しない=日本市場撤退
861デフォルトの名無しさん:2006/01/22(日) 03:03:42
>>848
FreePascal, Lazarus の時代が来るのかな?

【Delphi互換!?】FreePascal【GPL】
http://pc8.2ch.net/test/read.cgi/tech/1137051510/

多分来ないか…
862デフォルトの名無しさん:2006/01/22(日) 03:36:14
>>861
鍵だけの話だから大して影響ないんじゃね
とりあえずそれらの時代が来るとすれば、
どっちもタダってことで同じなんだから、
Delphi6の機能をまず追い抜いてもらわないと
863デフォルトの名無しさん:2006/01/22(日) 12:30:35
for y:=0 to pBitmap.Height -10 do begin
 for x:=0 to pBitmap.Width -10 do begin

 check:=False;
 Blackcount:=0;

  for j:=0 to 9 do begin
  if check then Break; //ループを抜ける

   for i:=0 to 9 do begin
    if (aRgbArray[y+j,x+i].R+aRgbArray[y+j,x+i].G+aRgbArray[y+j,x+i].B)=0 then begin //RGB(0,0,0)があったら

     Inc(Blackcount); //カウント処理

     check := True; //フラグ立ててから

     Break; //ループを抜ける
    end;

☆   h := Trunc(aRgbArray[y+j,x+i].R/51)
      +Trunc(aRgbArray[y+j,x+i].G/51)*6
      +Trunc(aRgbArray[y+j,x+i].B/51)*36;
    Inc(aHistogram[x,y,h]); //カウント処理

   end;
  end;
864863:2006/01/22(日) 12:31:13
★ if check then begin   
    for h:=0 to 215 do begin
    aHistogram[x,y,h]:=Trunc(aHistogram[x,y,h]*100/(100-Blackcount));
    end;
   end;

 end;
end;

また同じループのところで混乱しているんですが
画像にRGB(0,0,0)がなければ☆を実行、あれば★を実行できるようにしたいんですがどうすればいいんでしょうか?

調べたところ上のままだとRGB(0,0,0)があろうがなかろうが☆は実行されてます
逆に★はあろうがなかろうが実行されてません・・・if not check then beginにしたところ、逆転して必ず★は実行されてます
865デフォルトの名無しさん:2006/01/22(日) 12:43:31
全然わからん
866デフォルトの名無しさん:2006/01/22(日) 12:49:48
お前さぁ…もう少し自分で調べるなりしろよ…
Breakはループを一つしか抜けないが、
その程度のことは一回調べれば済むことだろ
黒抜き星はまたエスパー待ちか?
もうお前の相手すんの疲れた
867863:2006/01/22(日) 12:50:12
ttp://pc8.2ch.net/test/read.cgi/tech/1135866929/632-639

632〜639で処理の順序を聞いてたんですが、どうもそのとおりにいかないみたいです
868デフォルトの名無しさん:2006/01/22(日) 12:54:03
check:=True;
Break;→☆回避
if check then Break;


って進むように見える・・・
869デフォルトの名無しさん:2006/01/22(日) 13:40:26
>>863
お前の個人スレじゃないんだからもういい加減自分で何とかしろ
870863:2006/01/22(日) 13:42:02
はぁ?分からないなら黙っててくれませんか?
871865:2006/01/22(日) 13:43:40
すまんこ
872デフォルトの名無しさん:2006/01/22(日) 13:44:12
華麗に863をスルーで次の質問↓
873863:2006/01/22(日) 13:49:08
>>868
Breakはループ抜けて次の文に進む、ですね

for y:=0 to pBitmap.Height -10 do begin
for x:=0 to pBitmap.Width -10 do begin
for j:=0 to 9 do begin
for i:=0 to 9 do begin
if (aRgbArray[y+j,x+i].R+aRgbArray[y+j,x+i].G+aRgbArray[y+j,x+i].B)=0 then

showmessage('kita');

end;

end;
end;
end;
end;

試しに中身すっからかんにして実行してみたらダイアログボックスでましたが・・・

if (aRgbArray[y+j,x+i].R+aRgbArray[y+j,x+i].G+aRgbArray[y+j,x+i].B)=0 then begin
Inc(Blackcount);

showmessage('kita');
end;

にしたら文が必要な場所にFUNCTIONがありますとかいうエラーが・・・
if文の中身を1つ追加しただけなのに何が変わってるんでしょうね
874863:2006/01/22(日) 13:52:29
>>873の原因は分かりました・・コメントみたいです
Inc(Blackcount);の横に//カウント処理ってコメント消したらエラー消えました・・・なんなんでしょう
875デフォルトの名無しさん:2006/01/22(日) 14:12:13





863はスルーでよろしく




876デフォルトの名無しさん:2006/01/22(日) 14:17:10
少し前の方で誰かが予測したとおりに
863が真面目に魔法のコードを書いている件について
877863:2006/01/22(日) 14:43:20
for y:=0 to pBitmap.Height -10 do begin
 for x:=0 to pBitmap.Width -10 do begin
 Blackcount:=0;
  for j:=0 to 9 do begin
   for i:=0 to 9 do begin
   if (aRgbArray[y+j,x+i].R+aRgbArray[y+j,x+i].G+aRgbArray[y+j,x+i].B)=0 then begin //RGB(0,0,0)があったら
    Inc(Blackcount);

    continue;
   end;


    h := Trunc(aRgbArray[y+j,x+i].R/51) //RGB(0,0,0)がなければ

      +Trunc(aRgbArray[y+j,x+i].G/51)*6
      +Trunc(aRgbArray[y+j,x+i].B/51)*36;
    Inc(aHistogram[x,y,h]);


   end;
  end;
  for h:=0 to 215 do begin
  aHistogram[x,y,h]:=Trunc(aHistogram[x,y,h]*100/(100-Blackcount));
  end;
 end;
end;

これでよさそうですか・・・
878デフォルトの名無しさん:2006/01/22(日) 14:55:55
魔法のコードってなんだ?
879デフォルトの名無しさん:2006/01/22(日) 15:04:51
マホっ
880863:2006/01/22(日) 15:07:19
あってたようで問題はなくなりました〜
ご迷惑かけてすみませんでした
881デフォルトの名無しさん:2006/01/22(日) 15:08:11
アッー! 変数h!!!
882デフォルトの名無しさん:2006/01/22(日) 16:20:02
アイデアに実装能力がついていかないって悲惨だな・・・
883デフォルトの名無しさん:2006/01/22(日) 17:35:51
>>882
そのための超初心者スレやね?
プロの職場だと先輩にきけたりすんのかね
884デフォルトの名無しさん:2006/01/22(日) 19:57:21
素人が出したアイデアを俺らがコード化するスレでないのは確かだ
885883:2006/01/22(日) 19:58:34
うまい事いうねえ そのとおりですた
886デフォルトの名無しさん:2006/01/22(日) 20:06:51
コードの書き方なんだけど、
(1)
if 〜 then begin
 処理;
end;

(2)
if 〜 then
begin
 処理;
end;

if〜then に限らず、with〜do、while〜doとかも同じだと思うけど
一般的にはどっちの方が読みやすい?
初心者の漏れは断然(2)だと思うんですけど
887デフォルトの名無しさん:2006/01/22(日) 20:11:15
オレはVCLに準拠した(2)で書いている
てか、そういった書き方に興味あるなら
DelWiki…は消滅したか
「Delphi コーディング規約」でググレ
888デフォルトの名無しさん:2006/01/22(日) 20:18:54
>>887
多くのサンプルが(1)方式だから迷ってた
さっそくググって見ますわ
889デフォルトの名無しさん:2006/01/22(日) 20:36:15
俺は1派だなぁ 行が増えるとスクロールバーがちっこくなって困る
しおり が つかえなさすぎる
890デフォルトの名無しさん:2006/01/22(日) 20:46:40
しおり機能なんてあったっけ?
891デフォルトの名無しさん:2006/01/22(日) 20:58:10
エディタの左端で右クリックしてみなさい
892889:2006/01/22(日) 21:03:43
>>891
細かいことだが、文章のところでも大丈夫だよ

製品版だと、文字列と行ジャンプを関連付けするTodo機能があるらしいんだが都市伝説?
しおり1 しおり2 ・・・ これじゃぁ何がどこだかわからんちん
893デフォルトの名無しさん:2006/01/22(日) 21:04:09
>>891
894891:2006/01/22(日) 21:08:09
あ、ついでに質問ですけど、コードの途中でprocedure呼んだりするじゃないですか、PrcHoge;とか。
そいつをダブルクリックして反転させて「このprocedureを宣言した行に飛ぶ」みたいな機能ってない?
無いなら自分で作ろうと思うんだけど
895893:2006/01/22(日) 21:09:18
すまそ、>>894はワタクシ、>>893の発言です
896デフォルトの名無しさん:2006/01/22(日) 21:13:23
>>894
Ctrl+左クリックではだめ?
897889:2006/01/22(日) 21:16:13
>>894
右クリック→定義の検索
ユニットが違う場合は、最初から入ってるユニット?は見れないけど
898デフォルトの名無しさん:2006/01/22(日) 21:16:22
ctrl+shift+↓
899889:2006/01/22(日) 21:16:43
描き忘れた

>自分で作ろうと思う
ここkwsk!
900デフォルトの名無しさん:2006/01/22(日) 21:17:55
>>896
ダメっす。普通に反転したのが解除されるだけ見たいです
と思ったら右クリック、定義の検索ってのがあった
>>896=神
901893:2006/01/22(日) 21:21:55
神 := >>889
自分で作るってのは.pasファイル読み込んで定義文を検索して何行目か表示するショボイのを作ろうかと思った次第です
902889:2006/01/22(日) 21:31:17
>>901
あんた誤爆しすぎwwww
なんだ 外部エディターとdelphi連動できるのかとおもた
これエディターさえなんとかしてくれればなぁ。。。

Delphiのなんかのハンドルぶっこぬいて、エディターに文字列強引に飛ばすようなソフトって作れるのかな?
リアルタイム解析がいかれそう
903デフォルトの名無しさん:2006/01/22(日) 22:23:49
↑ 君、レベル低すぎ
904デフォルトの名無しさん:2006/01/23(月) 10:59:03
クイック起動のように、自分の作成したアプリをタスクバーに
追加する方法を教えてください。
905デフォルトの名無しさん:2006/01/23(月) 11:31:16
いやだお^^
906デフォルトの名無しさん:2006/01/23(月) 11:39:51
907904:2006/01/23(月) 12:07:45
>>906
ありがとうございます。
ばっちりです!!
908デフォルトの名無しさん:2006/01/24(火) 00:02:52
質問させて下さい
他アプリケーションのフォーム位置を変える事はできないのでしょうか?
SetWindowPosでサイズを変更するところまではできたのですが
サイズ変更後に画面の真ん中にウィンドウを移動させたいと考えています。
宜しくお願いします。
909デフォルトの名無しさん:2006/01/24(火) 00:10:40
何故サイズ変更が出来て移動がわからんのか理解出来ん
SetWindowPosの引数調べなおせ
910デフォルトの名無しさん:2006/01/24(火) 00:49:00
>>908
他アプリケーションのフォーム位置を変える事はできます。
911デフォルトの名無しさん:2006/01/24(火) 01:22:24
あー なに?
(デスクトップのサイズ - ウィンドウズのサイズ) / 2とかゆー計算式が教えて欲しいわけか?
912デフォルトの名無しさん:2006/01/24(火) 01:23:03
ウィンドウズじゃねぇ ウィンドウ
癖でなぜかズつけてしまった
913908:2006/01/24(火) 01:27:52
できました。どうもありがとうございました。
914デフォルトの名無しさん:2006/01/24(火) 01:49:26
>>911
> (デスクトップのサイズ - ウィンドウズのサイズ) / 2とかゆー計算式
Delphi では

 (デスクトップのサイズ - ウィンドウのサイズ) div 2;

じゃね?
915デフォルトの名無しさん:2006/01/24(火) 02:11:39
整数型の場合はね。
916デフォルトの名無しさん:2006/01/24(火) 02:12:45
>>914
アフォ杉wwwwwwwwwww
917デフォルトの名無しさん:2006/01/24(火) 02:46:36
この場合は整数にしないとダメだろ
SetWindowPosの引数分かってる?
>>916さんもっとお勉強しましょうね^^;
918デフォルトの名無しさん:2006/01/24(火) 03:37:26
一度doubleで計算してtruncしてるんですがもっとスマートなやり方があれば教えて欲しいです。
919デフォルトの名無しさん:2006/01/24(火) 04:00:35
こんなもん、1ピクセル以上の精度なんか関係ないだろ。どうみても div で十分だわな。
920デフォルトの名無しさん:2006/01/24(火) 13:40:37
stringや動的配列を含む構造体をコピーするにはどうするのが一番ですか?

やりたいことは例えば、
type
TMyStruct = record;
name: String;
 values; Array of TOtherStruct;
end;
MyStructs = Array[0..31] of TMyStruct;
で MyStructs[0] と MyStructs[3] の値をSwapしたいのですが、
Move(MyStructs[0], tmp, SizeOf(TMyStruct));
Move(MyStructs[3], MyStructs[0], SizeOf(TMyStruct));
Move(tmp, MyStructs[3], SizeOf(TMyStruct));
上のようにメモリコピーでやると中身がぐしゃぐしゃになってしまうようです。
921デフォルトの名無しさん:2006/01/24(火) 13:50:31
tmp.name := MyStructs[0].name;
tmp.values := MyStructs[0].values;
MyStructs[0].name := MyStructs[3].name;
MyStructs[0].values := MyStructs[3].values;
MyStructs[3].name := tmp.name;
MyStructs[3].values := tmp.values;
922920:2006/01/24(火) 14:30:07
>>921
回答どうもです。
実際のソースでは、構造体のサブアイテム(?)が20個くらいあるので
できればもっとすっきり書きたいです。

今、したのような感じで試してみて、うまく行っているように
見えるのですが、まずいでしょうか?
tmp := MyStructs[3];
MyStructs[3] := MyStructs[0];
MyStructs[0] := tmp;

あと、920のソースコードでぐちゃぐちゃになってしまう理由というのは
TMyStruct.name のlengthがコピーできていないのが原因
といいうのであってますか?
923デフォルトの名無しさん:2006/01/24(火) 15:14:32
>>922
おk

動的配列はもちろんAnsiStringも実際はポインタなので
Length取ったところで4バイトしか返さない
長さの管理は言語が管理してるので無理やりメモリコピーしても
ポインタがコピーされるだけだし参照カウンタも狂ってぐちゃぐちゃに
代入で問題無し
924920:2006/01/24(火) 15:25:33
>>923
ありがとうございます。
これですっきりできました。
925デフォルトの名無しさん:2006/01/24(火) 15:30:00
recordで文字列とか動的配列とかまずいんじゃなかったっけ
926デフォルトの名無しさん:2006/01/24(火) 15:33:16
ヘルプにこんな構造体載ってるし、大丈夫だろ

var S: record
Name: string;
Age: Integer;
end;
927デフォルトの名無しさん:2006/01/24(火) 15:58:55
>>925
Delphi1.0の頃はNGだったね
928デフォルトの名無しさん:2006/01/24(火) 19:45:36
>>927
1.0には長い文字列も動的配列もないけど、短い文字列のこと?
929デフォルトの名無しさん:2006/01/24(火) 19:48:01
>>923
Length取るっていうとLength関数と勘違いするかも。
sizeofのことを言ってるんだよね?
930デフォルトの名無しさん:2006/01/24(火) 21:01:47
>>928
はい、ShortString型のことです

>>929
うん、書き方まずかった
931デフォルトの名無しさん:2006/01/24(火) 23:28:12
Length関数のことだと思ってたDelphi初心者がここにいます。。。
932デフォルトの名無しさん:2006/01/25(水) 01:09:57
Length使う時はちゃんとした長さが返ってくる
933デフォルトの名無しさん:2006/01/25(水) 03:34:04
treeviewでindexof(caption: string)のように
captionと一致したNode返してくれるようなのってなす?
934デフォルトの名無しさん:2006/01/25(水) 05:13:59
適当にごまかすた
935デフォルトの名無しさん:2006/01/25(水) 09:26:04
Webログイン後のページをWebBrowserで表示させたいのですが
どのようにすればよいのでしょうか?
現在、以下のようなソースで実行していますが、WebBrowserの表示がおかしくなります(画像、外部スクリプトを読みこまない)
(TFormにはTidHttp, IdCookieManager, WebBrowserを貼り付けています)
const
 ADDR = '<URL>'; ADDR_REG = ADDR+'<LoginPath>';
var
 sl: TStringList; ms: TMemoryStream;
begin
 sl := TStringList.Create; ms := TMemoryStream.Create;
 sl.Add('user=<UserName>'); sl.Add('passwd=<Password>');
 try try
  //ログイン
  IdHTTP1.Post(ADDR_REG, sl);
  //例外無視
  except on EIdHTTPProtocolException do ; end;
  //ログイン成功なら
  if IdHTTP1.ResponseCode = 302 then begin
   //ログイン後のソースを読み込み
   IdHTTP1.Get(ADDR, ms);
   //WebBrowserで読み込み
   WebBrowser1.Navigate('about:blank');
   if Assigned(WebBrowser1.Document) then begin
    ms.Seek(0, 0);
    (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
   end;
  end;
 finally
  ms.Free; sl.Free;
 end;
end;
何か根本的に間違っているような気がしますが、どうぞよろしくおねがいします。
936デフォルトの名無しさん:2006/01/25(水) 11:25:07
>>935
Indyで認証してHTML取得>IEコンポに流し込んでるから、おそらく画像とスクリプトが認証で刎ねられてロードされてない。
IEコンポは認証用のID、Passを知らないわけだから呼び出そうとしてもサーバが401返してくる。

IEコンポで認証できるはずだからIndy使わずIEコンポで完結させれ
937デフォルトの名無しさん:2006/01/25(水) 11:50:41
>>936
なるほど、そういうことだったんですね。ML参考にしながらWebBrowserのみで認証してみました。
しかしうまくいかず・・・。アドバイスがあれば、どうかよろしくお願いします。
const
 ADDR_REG = '<URL>':
 USERNAME = 'user=<USERNAME>';
 PASSWORD = 'passwd=<PASSWORD>';
var
 URL: OleVariant;
 TargetFrameName: OleVariant;
 Flags: OleVariant;
 PostData: OleVariant;
 Headers: OleVariant;
 PostStr:PChar;
 pb:PChar;
begin
 URL := ADDR_REG;
 Flags := navNoReadFromCache;
 TargetFrameName := '_self';
 Headers := 'Content-Type: application/x-www-form-urlencoded'+#$d#$a;
 
 //DelphiMLの過去ログを参考(よく意味がわからず使用)
 //しかし複数のパラメータを設定してるせいかうまくいかない
 PostStr := PChar(USERNAME+#$d#$a+PASSWORD);
 PostData := VarArrayCreate([0,Length(PostStr) - 1],varByte);
 pb := varArrayLock(PostData);
 StrMove(pb,PostStr,Length(PostStr));
 VarArrayUnlock(PostData);

 //認証できない。
 WebBrowser1.Navigate2(OleVariant(URL), OleVariant(Flags), OleVariant(TargetFrameName), OleVariant(PostData), OleVariant(Headers));
end;
938デフォルトの名無しさん:2006/01/25(水) 12:08:51
パケットのログをとりHTTPヘッダを抽出してみました。
POSTされているような気がするのですが、なぜか認証できず。

POST <LoginPath> HTTP/1.1
Accept: */*
Accept-Language: ja
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: <HOST>
Pragma: no-cache
Connection: keep-alive
Browser reload detected...
Posting * bytes...
user=<USERNAME>
passwd=<PASSWORD>

その後、認証できないので他のページに飛ばされて・・・
(上記(>>935)、indyでの認証では302 Foundでログイン出来たのを確認しています)。

HTTP/1.1 200 OK
Server: Apache/1.3.34 (Unix) PHP/4.3.11 mod_ssl/2.8.25 OpenSSL/0.9.8a
X-Powered-By: PHP/4.3.11
Transfer-Encoding: chunked
Content-Type: text/html
939デフォルトの名無しさん:2006/01/25(水) 12:13:08
>>937(30行目)訂正(必要ないのにキャストしてました)

//認証できない。
×WebBrowser1.Navigate2(OleVariant(URL), OleVariant(Flags), OleVariant(TargetFrameName), OleVariant(PostData), OleVariant(Headers));
○ WebBrowser1.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
940デフォルトの名無しさん:2006/01/25(水) 13:20:20
>>938
IEでBasic認証(ルータ: NTT V110M)したときの通信見るとAuthorizationヘッダで認証してるようだが‥‥
941デフォルトの名無しさん:2006/01/25(水) 16:17:01
>>937
Basic認証なのでは?
このあたりを参考にして
ttp://www.studyinghttp.net/auth
ttp://www.studyinghttp.net/rfc_ja/rfc2617.ja
ttp://www.ietf.org/rfc/rfc2617.txt

GETしたときに401で、WWW-Authenticate: Basic realm="hogehoge"
がとか返ってきたらBasic認証なので、
リクエストヘッダに
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
を加えてもう一度GETすると認証してとれる。
Basicの後は、<USERNAME>:<PASSWORD>をBase64エンコードしたものね
942デフォルトの名無しさん:2006/01/25(水) 19:08:51
根本的に間違えていたようで紹介していただいたサイト、じっくり見てみました。
そこでそのサイトと>>941氏がおっしゃってる内容を元に以下のように記述してみましたが
ログインウインドウが表示されて自働認証にはなりません。
おそらく一回目のGetで"Authorization: Basic 〜"を発行しているためとと思われますが
2回目のGetで"Authorization: Basic 〜"を発行する方法がわかりませんでした。
お分かりの方、何卒ご教授お願いいたします。

現在のソース
const
 //Base64でエンコードした<USERNAME:PASSWORD>
 BASE64_USER_AND_PASS = 'AAABBBCCCDDDEEEFFF';
 //ヘッダの区切り
 H_BREAK = #$d#$a;
var
 URL: OleVariant;
 TargetFrameName: OleVariant;
 Flags: OleVariant;
 PostData: OleVariant;
 Headers: OleVariant;
begin
 {初期設定}
 URL := '192.168.0.1'; //基本認証の自前のルータに接続
 Flags := navNoReadFromCache;
 TargetFrameName := '_self';
 PostData := '';
 Headers:= 'Authorization: Basic '+BASE64_USER_AND_PASS+H_BREAK;

 {WebBrowserで認証}
 WebBrowser1.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
 //しかし一度目のGetの為、ログインウインドウが出て自働認証にならない。
end;
943デフォルトの名無しさん:2006/01/25(水) 19:20:37
>>935
の認証でmsにどんなデータが入ってるかちゃんと確認したのかな?
302で認証出来てると見てるみたいだけど
>938では200OKが返って来てると思うんだが
944デフォルトの名無しさん:2006/01/25(水) 19:31:24
ルータの画面は単一のhtmlだけで終わってるの?

GETしたhtmlの中に、cssなり画像なり他のhtmlなりが記述されていたら
ブラウザがそれらをGETしにいくと思うんだけど、そのときは
Authorizationヘッダついてなくなるよね。
945デフォルトの名無しさん:2006/01/25(水) 20:06:55
>>942
Authorizationヘッダ付けなくても、これを

> URL := '192.168.0.1'; //基本認証の自前のルータに接続

 URL := 'http://USER:[email protected]'; //基本認証の自前のルータに接続
にしたらいけるってオチはない?
946デフォルトの名無しさん:2006/01/25(水) 20:44:08
>>944
ビンゴ!
キャプチャしたログと睨めっこしてたら以下のような手順になっていました。
1) 192.168.0.1/index_frame.html読み込み(Authorization付)
2) 192.168.0.1/index_frame.htmlがmenu.htmlとwork.htmlを要求
3) menu.htmlとwork.html読み込み(Authorization無し)
4) 認証を要求されログインウインドウが表示

そこで、menu.html(又はwork.html)を直接読み込むと認証できました。
付き合ってくださった皆様、本当にありがとうございました。

しかし、このようなケースの場合どうやって自働認証すればよいのかという新たな疑問が・・・。
むむむ・・・。

>>945
昔はそれでいけたらしいのですが今は以下のパッチで埋められているらしいようです。
"Internet Explorer 用の累積的なセキュリティ修正プログラム (832894) (MS04-004)"
ttp://www.microsoft.com/japan/technet/security/bulletin/MS04-004.mspx
947& ◆zLXgQexfRg :2006/01/25(水) 20:59:06
すみません、どなたか教えてください。

DelWikiに記述があったはずですが、Delphi7から7.1にアップグレードすると
コンパイラの最適化か何かに支障が生じたはずです。
詳しくはどんな事象で、回避策はどうだったのか、ログをなくしてしまったし、
Delwikiが消失したので困っております。

今頃になってやっと7.1にアップしようとしている自分もなんですが
どうか、教えてください。


948デフォルトの名無しさん:2006/01/25(水) 21:06:06
(1)パッチをインストールする前にdcc32.exeとdcc70.dllをbinディレクトリから
コピーしておく。(*.jpも?)

(2)パッチをインストールし、(1)でコピーしておいたファイルを上書きする。

949デフォルトの名無しさん:2006/01/25(水) 21:09:37
>946
>"Internet Explorer 用の累積的なセキュリティ修正プログラム (832894) (MS04-004)"
>ttp://www.microsoft.com/japan/technet/security/bulletin/MS04-004.mspx

レジストリいじれば使えるようにもできるみたいだけど、
今試してみたらNavigate2するときには使えるみたいだね。
確かにIEやExplorerからはできなかったけど。
950& ◆po73KQOmZk :2006/01/25(水) 21:23:45
>>948
ありがとうございました。
951デフォルトの名無しさん:2006/01/25(水) 21:32:06
質問です ごっつぁんです
ある文字列から指定した文字列を削除する関数ってありませんか?
Erase('phi','Delphi厨');
みたいな
952デフォルトの名無しさん:2006/01/25(水) 21:34:51
>>951
たぶん、それReplaceでいけると思うよ。置換後の文字列を空文字列にすれば、
削除にならない??
953951:2006/01/25(水) 21:44:36
押忍!
先輩が教えてくれたReplaceっていうのは見つからなかったけど、StringReplaceというのがありました
ヘルプ見ながら
StringReplace('Delphi厨','phi','',[rfReplaceAll]);
ってやったらできました。ありがとうございました
954デフォルトの名無しさん:2006/01/26(木) 13:44:39
質問です。

1から40までの整数をランダムで1つずつ選び(取り出し)
int型配列に格納していきたいのですが
既に選ばれたものかどうか判別するには
どのようなやり方が効率いいのでしょうか?
955デフォルトの名無しさん:2006/01/26(木) 14:31:11
>>954
1)StringList に1〜40までの数値を格納する
2)行数までのランダムな数値(A)を計算し、
3)行Aにある数値を格納すると同時に、行Aを削除
4)2)〜3)を40回繰り返す
956デフォルトの名無しさん:2006/01/26(木) 14:37:38
>>954
にふちーサンプル蔵からTIntegerListぱくってくる
Random->indexof->add
957954:2006/01/26(木) 14:38:35
>>955
なるほど、使わせていただきます
958954:2006/01/26(木) 16:40:29
rand_num: Array[0..39] of Integer;

num := TStringList.Create;
try
 for i := 0 to 39 do begin
  num.Add(IntToStr(i+1));
 end;
 for i := 0 to 39 do begin
  j := RandomRange(0, num.Count-1);
  rand_num[i] := StrToInt(num[j]);
  num.Delete(j);
 end;
finally
 num.Free;
end;
こんな感じかな?
>>955-956
ありがとうござました。
959デフォルトの名無しさん:2006/01/26(木) 17:28:50
rand_num: array [0..39] of Integer;

for i := 0 to 39 do begin
rand_num[i] := i + 1;
end;
for i := 39 downto 0 do begin
j := Random(i + 1);
k := rand_num[j];
rand_num[j] := rand_num[i];
rand_num[i] := k;
end;
960デフォルトの名無しさん:2006/01/26(木) 17:34:12
TStringListを使うのはちょっと酷いな
961デフォルトの名無しさん:2006/01/26(木) 17:46:27
stringlist重いからな
まぁ40くらいだったら楽だからいいのか
962デフォルトの名無しさん:2006/01/26(木) 18:41:55
重いのもあるけど、それ以前に手段と目的を取り違えてるという話でしょ?
963デフォルトの名無しさん:2006/01/26(木) 18:48:37
ただのTListはだめかね
964デフォルトの名無しさん:2006/01/26(木) 23:30:14
TStringListよりはマシだけど・・・
965ささ ◆6KVcpBNXy. :2006/01/26(木) 23:52:45
みなさん。こんにちゎ。経済学部のささと申します。
パスカル(Delphi)の授業での課題がわかりません。。教えてください!
3科目、10人分のデータを入力して各人の合計点と科目毎の平均点を出せ!
という課題が出ました。。。

先生に下記を改変するとやりやすいといわれました。repeatとwhileとforまでしか習っていません。
Score :array[0..1000] of integer; 
begin
writeln('入力得点の平均と偏差値を計算します'); writeln('入力後、負の数を入力すると…終了します。');
kazu :=0;
repeat
write('点数は?'); readln(data);
if data >= 0 then
begin 
kazu := kazu + 1;
score[kazu] := data
end
until data < 0;
goukei := 0;  for i := 1 to kazu do goukei := goukei + score[i];  heikin :=goukei / kazu;
goukei :=0;  for i := 1 to kazu do  goukei := goukei + Sqr(score[i]); hensa := sqrt(goukei /kazu - sqr(heikin));
writeln('点数  偏差値');
for i := 1 to kazu do  writeln(score[i]:4, 50 +10 * (score[i]-heikin)/ hensa:10:1);
writeln(' 平 均 =',heikin:5:1);  writeln('標準偏差=',hensa:5:1);
readln;
end.
966デフォルトの名無しさん:2006/01/27(金) 00:00:31
>>965
どこがどうわからないんだい?
967デフォルトの名無しさん:2006/01/27(金) 00:01:51
968デフォルトの名無しさん:2006/01/27(金) 00:08:16
科目数と人数は決まってるから、ふつうにforでまわして配列に入れていけばいいやん
969ささ ◆6KVcpBNXy. :2006/01/27(金) 01:34:50
>>968 forでまわして配列ってどういう意味ですか?
970ささ ◆6KVcpBNXy. :2006/01/27(金) 01:35:51
>>966全くどう作るか思いつかないという意味です。
971デフォルトの名無しさん:2006/01/27(金) 01:49:30
宿題スレにいけ
972デフォルトの名無しさん:2006/01/27(金) 01:52:26
次の質問↓
973デフォルトの名無しさん:2006/01/27(金) 01:58:56
リソースファイルを使ってexeにwavを埋め込むことは出来ますが
wavでは無くmp3を埋め込むようには出来ないでしょうか。
wavにするとサイズが大きくなりすぎます。
現在は外部からそのままの状態で読み込ませています。
974追記:2006/01/27(金) 02:05:49
再生はTMediaPlayerを使っています
975デフォルトの名無しさん:2006/01/27(金) 02:20:01
>>973
単にバイナリとして埋め込めるはずだけど
976デフォルトの名無しさん:2006/01/27(金) 02:28:41
バイナリと埋め込むにはどうするのですか?
977デフォルトの名無しさん:2006/01/27(金) 02:37:55
http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N008.html

リソースファイル(hoge.rc)用意して、

hoge MP3 "hoge.mp3"

って書く。
プロジェクトに追加。
ビルドしたら埋め込まれる
TResourceStreamとかで取り出す。
978デフォルトの名無しさん:2006/01/27(金) 04:03:57
var hoge: TResourceStream;
hoge := TResourceStream.Create(hInstance,'HOGE','MP3');
と、取り出すところまでは出来ましたが
これをTMediaPlayerでPlay()やStop()で操作に出来るようするには
どういう方法でやればいいのでしょうか?
979デフォルトの名無しさん:2006/01/27(金) 13:31:43
↓次の質問どぞー
980デフォルトの名無しさん:2006/01/27(金) 14:19:11
はぁ?さっさと教えなさい
怒りますよ?
981デフォルトの名無しさん:2006/01/27(金) 14:29:48
フリーザ様がいるな
982978:2006/01/27(金) 14:38:49
>>979
TMediaPlayerでLoadFromStreamを実現する方法を教えてください
983デフォルトの名無しさん:2006/01/27(金) 14:51:29
>>982
リソースとして取り込んでもTMediaPlayerで扱えない
どうしてもTMediaPlayer使いたいならSaveToFileで
テンポラリにどっかファイル作ってそのファイルをTMediaPlayerで読み込ませる
984978:2006/01/27(金) 15:49:54
>>983
コードお願いします
985デフォルトの名無しさん:2006/01/27(金) 15:59:38
var
 hoge: TResourceStream;
 sFileName: String;
begin
 hoge := TResourceStream.Create(hInstance,'HOGE','MP3');
 hoge.SaveToFile(sFileName);
 MediaPlayer1.FileName := sFileName;
end;
986978 ◆TvbdT7pwtk :2006/01/27(金) 18:04:42
>>984
勝手に名乗るなよ

987978 ◆TvbdT7pwtk :2006/01/27(金) 18:12:21
ついでだから

>>958と似たようなもの見つけました。
>>983サンクス

RS := TResourceStream.Create(hInstance,'HOGE','MP3');
try
if FileExists(ExtractFilePath(Application.ExeName)+'HOGEHOGE.mp3') = False then begin
RS.SaveToFile(ExtractFilePath(Application.ExeName)+'HOGEHOGE.mp3');
end;
finally
RS.Free;
end;
if FileExists(ExtractFilePath(Application.ExeName)+'HOGEHOGE.mp3') then
with MediaPlayer1 do begin
Filename := ExtractFilePath(Application.ExeName)+HOGEHOGE.mp3';
end;
988978:2006/01/27(金) 19:56:42
>>986
ちょっと待ってくれ、そっちこそ偽者だろう
こっちはすでに解決しました
989デフォルトの名無しさん:2006/01/27(金) 20:21:28
↓質問したい人は「ワッフルワッフル」と書き込んでください
990978 ◆TvbdT7pwtk :2006/01/27(金) 20:40:52
>>988
ID出ないとややこしいな。
じゃあちょっと質問。

PlaySound関数を使えばリソースファイルから読み込んで
直接ストリームから再生する事が出来る。
それなのにわざわざ、SaveToFileで書き出してから読み込む
という効率の悪いTMediaPlayerを使う理由は?
TMediaPlayerではTMediaPlayer.Start以外使わない。
つまり機能の面でTMediaPlayerに頼る必要は無い。

PlaySound()が良く分からないとか
TMediaPlayerの方が簡単・分かりやすいとかその程度の理由ではなく
どうしてもTMediaPlayerでないとOSの動作の仕様上困るって言う理由がある。
その理由を100字以内で明確に書いて下さい。
991デフォルトの名無しさん:2006/01/27(金) 20:44:31
なにこの流れ
992デフォルトの名無しさん:2006/01/27(金) 21:15:21
>>990
お前がTMediaPlayerでって言ったんだろうが
アホか?
993デフォルトの名無しさん:2006/01/27(金) 21:17:11
なぜTMediaPlayerでって言ったのか、その理由聞いてるんだろ。
日本語大丈夫?
994デフォルトの名無しさん:2006/01/27(金) 21:22:04
はいはい自演乙
995デフォルトの名無しさん:2006/01/27(金) 21:24:44
流れをまとめると、

リソースにmp3埋め込んで、TMediaPlayerで再生ってどうやるの?

〜〜で××すればできる

分かりました。ところで私がTMediaPlayer使う理由ってなんですか?100字以内で答えなさい

(゚Д゚)ハァ?

この場合おかしいのはどっちよ?
996デフォルトの名無しさん:2006/01/27(金) 21:25:32
>>993
煽るくらいならあんたが答えてやりなよw
997978:2006/01/27(金) 21:26:57
すいません。トリップ付いてるのは偽者です。
私の方はもう解決しましたので、気を悪くされないようお願いします…。
998デフォルトの名無しさん:2006/01/27(金) 21:29:18
>分かりました。ところで私がTMediaPlayer使う理由ってなんですか?100字以内で答えなさい
これは
978◆TvbdT7pwtkが真の978ではない(978を騙った)と断定する988に対して聞いていること。
自問自答じゃないだろ。
999デフォルトの名無しさん:2006/01/27(金) 21:30:50
私怨はよそでやってくれ
1000デフォルトの名無しさん:2006/01/27(金) 21:30:59
>>997
書けるはずが無い。
なぜならお前は私ではないからだ。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。