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

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

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

<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
2デフォルトの名無しさん:2005/05/09(月) 04:44:07
3デフォルトの名無しさん:2005/05/09(月) 04:44:51
4デフォルトの名無しさん:2005/05/09(月) 04:59:43
はじめまして。
つい先ほどDelphi6をインストールしたばかりなのですが、
Delphi6を最大化しても他のプログラムのウィンドウや
デスクトップとかが見えてすごく気が散ります。
環境オプションにもそれ関係の設定は見あたりませんでした。
そういうもんなんでしょうか?
5デフォルトの名無しさん:2005/05/09(月) 05:49:22
Delphi6 personal, Windows95 OSR2を使ってます。

StringReplaceで半角カナを全角カナに変換する関数を作っているのですが、
目的の文字列に変換できません。

function KanaHanToZen(data: string): string;
// 半角カナを全角カナに変換する処理
var
TRF: TReplaceFlags;
begin
TRF := [rfReplaceAll];
data := stringReplace(data, 'バ', 'バ', TRF);
data := stringReplace(data, 'パ', 'パ', TRF);
Result := data;
end;

バ が バになり、パ が パになる。
他の文字は、アはアとなるのですが、どうやら濁音と半濁音が正常に変換されないようです。
こういう場合、どうしたらよいのでしょうか?他に代替案はありますでしょうか?
よろしくお願いいたします。
6デフォルトの名無しさん:2005/05/09(月) 07:12:36
AnsiStringReplace >>5
7デフォルトの名無しさん:2005/05/09(月) 08:24:03
FAQな気がしますが、
rubyだとx+=1、cだとx++
こんな感じで
x := x + 1; を短縮する形ってありますか?
8デフォルトの名無しさん:2005/05/09(月) 08:32:54
Inc?
9デフォルトの名無しさん:2005/05/09(月) 09:15:11
>>8
ありがとうございます
FAQ以前に基本でしたね
すいません
105:2005/05/09(月) 12:22:58
>>6
お返事どうもありがとうございます。
AnsiReplaceStr関数があったので、やってみましたが、結果は>>5と同じになりました。
パやバが一文字とならず、点々と丸が別の文字となってしまいました。

引き続き、何か対策方法がありましたら、教えてください。
よろしくお願いいたします。
11デフォルトの名無しさん:2005/05/09(月) 12:32:33
>>10 StringReplaceを窓から投げ捨ててAPIのLCMapStringを使う
125:2005/05/09(月) 12:38:12
>>11
情報ありがとうございます。
APIのLCMapStringを調べてみます。
結果がわかったら、またこのスレで報告いたします。
135:2005/05/09(月) 13:20:16
>>11
APIのLCMapStringで正しく変換できました。ありがとうございました。
14デフォルトの名無しさん:2005/05/09(月) 15:45:26
配列の要素を全部0にしたいのですが、
配列の要素をクリアするメソッドみたいなものありますか?
var rx: Array [ 1..100 ] of integer;
宣言の際、これだけだと適当な値が各要素に入ってしまいます。
15デフォルトの名無しさん:2005/05/09(月) 15:55:56
FillCharとか?
16デフォルトの名無しさん:2005/05/09(月) 16:37:08
>>14
FillChar(rx,SizeOf(rx),0);
17デフォルトの名無しさん:2005/05/09(月) 16:37:38
>>14
rx[1]:=0;
rx[2]:=0;
rx[3]:=0;
rx[4]:=0;
rx[5]:=0;
rx[6]:=0;
rx[7]:=0;
rx[8]:=0;
rx[9]:=0;
rx[10]:=0;
rx[11]:=0;
rx[12]:=0;
rx[13]:=0;
rx[14]:=0;
rx[15]:=0;
rx[16]:=0;
↓省略!
18デフォルトの名無しさん:2005/05/09(月) 17:54:47
14 じゃ無いけど FillChar 初めて知った。今までは
for I := Low(rx) to High(rx) do
rx[I] := 0;
19デフォルトの名無しさん:2005/05/09(月) 18:50:02
6のPersonalを使ってます。

ショートカットから実行した時
ショートカットが存在するパスを取得するには
どうすればいいのでしょうか。

'c:\abc.exe'
'd:\abc.lnk'
の状態で'abc.lnk'実行時、exe内部で'd:\'を知りたいです。

よろしくお願いします
20デフォルトの名無しさん:2005/05/09(月) 19:02:07
http://YahooBB220059252253.bbtec.net/
wwwwwwwwwwwwうぇwwwwうはっwwwおkwww

っうぇ
っうぇっうぇうはっwwwうはっwww
っwwwっうぇうぇwwwwwwwっっ
うはっwww
21デフォルトの名無しさん:2005/05/09(月) 20:48:15
>>20
あちこちで見るけど、何これ?
22謎電波:2005/05/09(月) 21:18:01
山田ウィルス。
Cドライブの中身だかとデスクトップのキャプチャ画像だかを公開するらしい。
23デフォルトの名無しさん:2005/05/09(月) 22:15:17
17 はそんなやり方をホントに本当にほんとーーにしていると見た。
24デフォルトの名無しさん:2005/05/09(月) 23:04:04
そうだよ。
それであのコードを自動で書くためのツールつくって、そのなかでは For 文使ってる。
25デフォルトの名無しさん:2005/05/09(月) 23:34:42
日本語の文字列を一バイトずつで処理したあとにまた日本語の文字列として直すにはどうしたらいいですか?
配列c{i]にその一バイトずつが入ってるのですが、そのまま
edit1.text:=edit1.text+c[i];
のようにしたらダメでした
26デフォルトの名無しさん:2005/05/09(月) 23:37:51
マクロでインターネットプラウザを操るってことはできないんでしょうか。
できるとしたら 方法も教えてくれると嬉しいです。
27デフォルトの名無しさん:2005/05/09(月) 23:51:31
>>25
何スレか前で見た質問だ。
28デフォルトの名無しさん:2005/05/09(月) 23:53:46
>>27
マジですかorz
過去スレ見れないからorz
29ゴッド:2005/05/10(火) 01:06:34
>>25
// 暗号化
procedure XorEncode(const Source, PassWord: string;var ba:ByteArray);
var
i, LP,LS: Integer;
begin
SetLength(ba,0);
LP := Length(Password); LS := Length(Source);
if (LP = 0) or (LS = 0) then Exit;
SetLength(ba,LS);
for i := 1 to LS do
ba[i-1] := Ord(Source[i]) xor Ord(Password[(i-1) mod LP +1]);
end;

// 復号化
function XorDecode(const ba: ByteArray;const PassWord: string):string;
var
i, LP,LS: Integer;
begin
result := '';
LP := Length(Password); LS := Length(ba);
if (LP = 0) or (LS = 0) then Exit;
SetLength(result,LS);
for i := 1 to LS do
result[i] := Char( ba[i-1] xor Ord(Password[(i-1) mod LP +1]) );
end;
30たまご:2005/05/10(火) 01:36:15
サーバーにあるテーブルをインポート、エクスポート、ワークビューに設定するのはなぜですか?
31たまご:2005/05/10(火) 01:38:16
概念がさっぱり(・・?)なためどなたか教えてください。
32デフォルトの名無しさん:2005/05/10(火) 01:59:13
下のコードすごく無駄に書いている気がするのですが、
スマートにまとめることはできますか?

if a > 10 then a := -10;
if a < -10 then a := 10;
if b > 10 then b := -10;
if b < -10 then b := 10;
if c > 10 then c := -10;
if c < -10 then c := 10;
if d > 10 then d := -10;
if d < -10 then d := 10;
if e > 10 then e := -10;
if e < -10 then e := 10;
if f > 10 then f := -10;
if f < -10 then f := 10;
33デフォルトの名無しさん:2005/05/10(火) 02:01:02
関数化する
a := EnsureRange2(a, -10, 10);
b := EnsureRange2(b, -10, 10);
c := EnsureRange2(c, -10, 10);
...
34デフォルトの名無しさん:2005/05/10(火) 02:03:39
不思議な結果だな
35デフォルトの名無しさん:2005/05/10(火) 12:30:54
Delphi6 でも使える64bit版のコンパイラってないですか?
Borlandは出すみたいだけどまだ出てないとか、逆に出すつもりはないらしいとか何でも良いので(自分で作れとかは無しで)そういう情報を教えてください。
(公式版・非公式版などは問いません)
36デフォルトの名無しさん:2005/05/10(火) 12:44:33
次のバージョンにβ版がつくらしい。
Delphi6で対応はありえないだろ。
37ななしへたぐらま ◆XcB18Bks.Y :2005/05/10(火) 14:39:28
>>4
おそらく「そういうもん」というのが答えになってしまいます.
初期のVisual Basic(VB)の統合環境がこういう感じだったんですよ.
ただ,エディタウィンドウに他のウィンドウをドッキングさせ,
エディタウィンドウを最大化することで
ある程度画面を埋めることはできると思います.

#うちはエディタウィンドウを半透明化させて壁紙がよく見えるようにしているのですが,ニーズは様々ですね.

>>26
はずしているかもしれませんが,
・単に特定のウェッブページを表示させたい→APIのShellExecuteを使う
・ファイルのダウンロード→IdFTPコンポなどを使う
・あちこちのウェッブページを表示させたい→WebBrowserコンポを使う
こんなところでしょうか.

#ちなみに『プ』じゃなくて『ブ』です.
#元はといえば『MS Pゴシック』という判読しづらいフォントを用意したマイクロソフトが悪いのですが….
#ちなみに元になった単語はここ↓でチェックできますので発音も聞いておくともう間違えませんよ.
ttp://www.excite.co.jp/dictionary/english_japanese/?search=browse&match=beginswith&dictionary=NEW_EJJE&block=35519&offset=1542
38ななしへたぐらま ◆XcB18Bks.Y :2005/05/10(火) 15:17:12
>>32-34
変数a〜fが全く同じ目的の変数なら配列変数にしてはいかがでしょうか.
たとえばゲームなら複数いるそれぞれの敵のパラメータとか,
イベントか何かでの人気投票ソフトで各候補の得票数とかいう場合です.

TForm1 = class(TForm)
private
 TekiNoBasho: array [1..6] of integer; // a〜fに相当.必ず目的に合わせて名前を変えること.
end;

procedure TForm1.Button1Click(Sender: TObject);

 procedure fix(var n: integer);
 begin
  if n > 10 then n := -10;
  if n < -10 then n := 10;
 end;

var
 i: integer;
begin
 for i := Low(TekiNoBasho) to High(TekiNoBasho) do
  fix(TekiNoBasho[i]);
end.

>>34 多分-10〜10の間でループするのでしょう.
39デフォルトの名無しさん:2005/05/10(火) 15:48:45
ちょっとお尋ねします。

2次元の動的配列で、SetLength(V, y, x) とした場合、
後で x と y の値をどのようにして取得できますか?
Vを関数の引数にして、関数内で x や y を参照したい場合です。

初心者の質問ですが、よろしくお願いします。
4014:2005/05/10(火) 16:04:25
>>15-16
遅くなりましたが、FillCharで思うように動いてくれました。
ありがとうござました
41デフォルトの名無しさん:2005/05/10(火) 16:07:05
procedure TForm1.Button1Click(Sender: TObject);
var
V:array of array of integer;
begin
SetLength(v,3,7);
Label1.Caption := IntToStr(Length(V));
Label2.Caption := IntToStr(Length(v[0]));
end;
4239:2005/05/10(火) 16:56:43
>>41
なるほど。そうやって調べるんですか。
ありがとうございました。
4335:2005/05/10(火) 20:58:57
>>36
情報ありがとうございました。
自分は未だにDelphi6を使っているので(理由は単純に無償だからなんですが)、できればDelphi6の64bit版のコンパイラがほしいんです。
Delphi2005とか次バージョンで、無償版+64bit版のコンパイラがあればいずれ乗り換えたいと思っています(もちろんPC環境を64bitにするのが先ですが)。
44デフォルトの名無しさん:2005/05/10(火) 21:42:14
>>37
ありがとうございます^^
ちなみに そのソフトやらはフリーウェアなんですか?
45デフォルトの名無しさん:2005/05/10(火) 22:05:34
>>43
>できればDelphi6の64bit版のコンパイラがほしいんです。

ずいぶん簡単に言ってくれるじゃないの。
なんでDelphi6にこだわるのか意味不明なんだが。

そもそも「Delphi6の64bit版のコンパイラ」って、ワケワカメ
46デフォルトの名無しさん:2005/05/10(火) 22:08:28
只版が欲しいだけだろ。読解力のない奴。
47デフォルトの名無しさん:2005/05/10(火) 22:11:43
IEツールバーをDelphiを使って自作する方法を解説しているページが
ありましたら教えてください。多分見ても作れないとは思いますが一応知りたいです。
48デフォルトの名無しさん:2005/05/11(水) 00:38:51
おすすめの HTML parser コンポーネントありませんか?
フォーマットの決まっている掲示板HTMLからスレ一覧とか、レスに分割したりしたいんですが
49デフォルトの名無しさん:2005/05/11(水) 00:44:14
Delphiは書籍が少ないわけですが、どうやって学習してますか?
50デフォルトの名無しさん:2005/05/11(水) 00:55:32
ヘルプを片っ端から読み倒す。
でもD7のヘルプって手抜き?情報量が以前より少ないみたいだ。
51デフォルトの名無しさん:2005/05/11(水) 01:01:35
>>49
定期的にこの話題が出るけど、
「ネットから」
っていつも答えてる。

大体、検索すれば何とかなる場合の方が多いし。
日本のだけじゃなくて、英語のページから探と良いことあるかも。
なぜかロシア語がヒットしやすかったりすんだよなw
52デフォルトの名無しさん:2005/05/11(水) 01:52:14
つまりDelphiはいろいろ不便なんだな
53デフォルトの名無しさん:2005/05/11(水) 01:58:23
>>32
最大値と最小値によるけど、テーブルでやるのもいいかもしれない。
Table: array[-20..20] of Integer = (
10, 10, ...., 10, 10,
-10, -9, -8, ... 8, 9, 10,
-10, -10, ..., -10, -10);
54デフォルトの名無しさん:2005/05/11(水) 02:27:24
Indy のことで、スレ違いかもしれませんが
IdSMTP1.QuickSend(host,subject,mailto,from,body);
で、メールを送信してるんですが、SMTPサーバからメッセージが帰ってこないとき
タイムアウトさせたいのですが、うまい方法はないでしょうか?

同報メール送信ソフトを作っています。
よろしくお願いします。
55デフォルトの名無しさん:2005/05/11(水) 02:43:55
>>54
だから何だってこともないけど、スレはあるよ。
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
56デフォルトの名無しさん:2005/05/11(水) 14:31:11
ちょっと聞きますね。

TBitmapには便利なScanLineとかありますが、
ビットマップのデータのアドレスとか、必ずしも
順番に並んでないんでしょうか?

たとえば、ScanLine[0]とScanLine[1]だけを取得し、
その差から他のラインのアドレスを計算して
処理すると都合の悪い場合があるんでしょうか?

ある処理をMMX化したんですが、上の方法で
アドレス計算してしまってるんで、はたして
こんなんでいいのかと、ふと疑問に思ったもんで。
57ななしへたぐらま ◆XcB18Bks.Y :2005/05/11(水) 14:37:36
>>44
すいません,WebBrowserコンポはDelphi 5以降のPro版以上のようです.
もとはActiveXコントロールなのでDelphiから取り込んでコンポとして使うことができます.

ぐぐっていたらこんなサイトが出てきました.参考になるかもしれません.
ttp://hogehoge2001.at.infoseek.co.jp/note-delphi.html

IdFTPコンポも6以降に標準で付いていたような.
(なかったらフリーで落とせます.詳しくはIndyスレ(>>55)の>1で)

>>52
その不便さを補ってあまりある魅力があるということでもあるのですよ.
>>50
初代から5まで見ていますがバージョンが上がるたびに悪くなってます.
58ななしへたぐらま ◆XcB18Bks.Y :2005/05/11(水) 14:58:35
>>56
Delphi 5のGraphicsユニットのソースを見る限り,
ScanLineプロパティはBottom-UpとTop-Downの差を吸収した上で
計算した値を返しているようですから問題なさそうな感じです.
ただ速度的に問題がなければ動的配列にScanLineプロパティの値を
丸ごとコピーしておくのが安全だと思います.
5956:2005/05/11(水) 15:32:04
>>58
さっそくの回答、ありがとうございます。

そうか、ソースを見ればある程度は回答が得られたのか。
調べてくれて、ホントにありがとうございました。
60デフォルトの名無しさん:2005/05/11(水) 17:22:50
>>58
>動的配列にScanLineプロパティの値を丸ごとコピーしておくのが安全

激しく無駄。第一線一本引いただけで古くなるし。なにが危険なのか?
61デフォルトの名無しさん:2005/05/11(水) 18:52:16
>>56
Windowsのビットマップは下のラインから順番に格納されてるからScanline[Height-1]が先頭アドレスな。
62ななしへたぐらま ◆XcB18Bks.Y :2005/05/11(水) 20:00:25
>>60
危険だとは思っていません.より安全,というか確実ということです.
各ラインごとにScanLineプロパティを読むぶんにはそれが正しいと保証されているので.

動的配列へのコピーは同じラインの先頭アドレスを何度も読みに行く場合に速くなります.
1回しか読みに行かないならおっしゃるとおり激しく無駄です.

>>61
上のラインから格納しているビットマップデータもあるそうなのですよ.
>>58のBottom-Up(下のラインから上に),Top-Down(上のラインから下に)
というのはこのことです.
63デフォルトの名無しさん:2005/05/11(水) 20:27:54
教えてくださり。
TMemo の内容を TStringList にコピーしようとしています。
で、SL.Text := Memo1.Text とか SL.Assign(Memo1.Lines) とかすると、
最後に改行コードができてしまいます。Lines で1行づつ代入ってのも
試したのですが、1行がある程度長いとなぜか途中で改行されてしまいます。
いかが致したらそのままコピーできるものでしょうか。
Delphiは7 OSはWinXP です。
64ゴッド:2005/05/11(水) 20:45:28
>>48
 以下を改造して使え
http://rerere.zive.net/res/up/source/up5424.txt
65デフォルトの名無しさん:2005/05/11(水) 20:50:24
2バイトコードは大丈夫なんか?
66デフォルトの名無しさん:2005/05/11(水) 20:59:15
>>63
TStringList.Textに代入したときに、末尾が改行で終わっていないと
自動的に改行を付けるようになっているみたいだね
内部はAddメソッドというかInsertメソッドだから仕方がないのかな
改行されて困るんならMemo型をそのまま使えば?
それと途中改行はWardWrapプロパティのせいだから
67デフォルトの名無しさん:2005/05/11(水) 21:20:46
>>66 様 回答ありがとです。小出しな感じでやなのですが、他の TEdit と
くっつけて保存ってことをやりたかったのです。うーん、もちっと考えてみます。
あと、WordWrap を False にしても、1行がすごーく長いと途中で改行されるんです。
どーもディスプレーの長さで改行っぽい感じもするのですが気のせいかも。
68デフォルトの名無しさん:2005/05/11(水) 21:33:40
Delphi6 Personalを使っています。
WindowsXPのLunaに対応させようとmanifestを作成したのですが
ステータスバーやタブがうまく表現されません。
うまく表現させるにはどのようにすれば良いでしょうか。
何か良いコンポーネント等はありますでしょうか。
69デフォルトの名無しさん:2005/05/11(水) 21:40:37
>>64
まだ試してないけど、サンクスコ。
70デフォルトの名無しさん:2005/05/11(水) 22:10:39
質問させてください。

var
p :PChar;
begin
p := PChar(Memo1.Lines[1];

TreeView1.Items.Add(nil, p);
end;

のようにやると文字の後に点が2つ付きます。(CRLFなんでしょうか?)
これを消すにはどうしたらいいでしょうか?

StrMove(n, p, StrLen(p)-2);

などもやってみたのですが、上手くいきませんでした。
71デフォルトの名無しさん:2005/05/11(水) 22:12:45
>>62
> 動的配列へのコピーは同じラインの先頭アドレスを何度も読みに行く場合に速くなります.

>>58
>速度的に問題がなければ

矛盾してないか?
72デフォルトの名無しさん:2005/05/11(水) 22:26:26
>>70
そのとおりやってみたけど、ゴミはつかないけど
73デフォルトの名無しさん:2005/05/11(水) 22:51:51
>>70
この問題と関係あるか分らないけど、TMemo.Lines.Strings[i] は
呼ばれるたびにメッセージ送って取得してるから、文字列の実体が静的に存在してない。
だからポインタだけ取って置くのは危険。
ローカル変数に移してからやったほうがイイ。
74デフォルトの名無しさん:2005/05/11(水) 23:04:18
>>72
そうですか…
試して頂いてありがとうございます。

>>73
よくわかりませんが、ありがとうございます。
高速化したかったんですが、String使うようにします。



素直にソースそのまま貼った方がよかったんでしょうか?
75デフォルトの名無しさん:2005/05/12(木) 00:13:01
>>70
function Add(Node: TTreeNode; const S: string): TTreeNode;
 なんでわざわざPCharなんか使うのかわからん。このSはツリー項目名となるのだから巨大なサイズの
テキストを渡すことはない。だから
> 高速化したかったんですが、String使うようにします。
もナンセンス。
76デフォルトの名無しさん:2005/05/12(木) 00:26:58
>>68
D6 Personalで使えるかは不明ですが
ttp://www.delphi-gems.com/ThemeManager.php
はD7からついているものと同じものです。
7768:2005/05/12(木) 00:54:41
>>76
レスありがとうございます。何故かインストール後コンポーネントタブに追加
されないのですが色々やってみようと思います(´・ω・`)
7876:2005/05/12(木) 01:05:50
>>77
XPというタブがコンポーネントに追加されていないでしょうか?
その中の ThemeManager というものをメインフォームにでも貼り付けてください
後は勝手にすべてのコンポーネントがTheme対応になります(一部除く)
7968:2005/05/12(木) 01:10:00
>>78
追加されていません^^;
6 Personalでも利用できるようなのできっと自分が何か間違えてるのだと思います(´・ω・`)
8076:2005/05/12(木) 01:11:32
インストールディレクトリを見たら D6Personal用に注意書きがありました。
Theme Manager\Delphi\Delphi 6 Personal.txtを見てください。
81デフォルトの名無しさん:2005/05/12(木) 01:24:31
>>57
>その不便さを補ってあまりある魅力があるということでもあるのですよ.

と、思う人が少ないからいつまでもマイナーなわけだが。
82デフォルトの名無しさん:2005/05/12(木) 01:27:42
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その22
http://pc8.2ch.net/test/read.cgi/tech/1110454743/

はいはい、せっかくわざわざ用意してあるんだから。
8368:2005/05/12(木) 02:19:15
>>80
ありがとうございます。
書かれている事を実践してみたところ、XPというタブが追加されました。
早速ThemeManagerを貼り付けてコンパイルしてみたところ、何故か
反映されませんでした(´・ω・`)


う〜む、明日起きたらまたやってみたいと思います。
8476:2005/05/12(木) 03:01:18
>>83
先ほどのホームページから Windows XP manifest resource (WinXP.ZIP)をダウンロードしてください
その中の winxp.res をプロジェクトに加えてください。
これでテーマ対応になると思います。
winxp.resだけでも TButton等はテーマが反映されます。
TBitBtn等はThemeManagerを貼り付けておく必要があります。
8568:2005/05/12(木) 03:16:50
>>84
ありがとうございます。きちんと望み通りの動作をしました。
これで心置きなく作れます!


76さん長々とお付き合いいただき本当にありがとうございました(つД`)
86デフォルトの名無しさん:2005/05/12(木) 08:44:12
>>67
すごく長いと改行するってメモ帳でも同じ動作をするのでWindows側の制限ぽいが
(ちなみにMemoは1K、RichEditは4Kを超えると改行@D7)
それとTStringListに代入した時点で最後に必ずCRLFが付くことがわかったのだから
別のものとくっつけるときは(長さ-2)だけくっつけるようにすればいいっしょ
87デフォルトの名無しさん:2005/05/12(木) 11:12:08
教えてください。
c:char;
s:string;
の場合で
c:=chr($00);と等価の式を
s:='00';を使って実現するにはどうしたらいいでしょうか?

88デフォルトの名無しさん:2005/05/12(木) 11:17:56
c := chr(StrToInt('$'+s));
8987:2005/05/12(木) 11:39:58
>>88
ありがとうございます!
90ななしへたぐらま ◆XcB18Bks.Y :2005/05/12(木) 16:10:12
>>70
プロパティの値をポインタに保管しているのがいけないのでしょう.
少なくとも配列プロパティの読み出しは内部的には関数です.
関数の戻り値はすぐに消滅する変数のようなもので
この場所を覚えておいても意味がありません.

(ある程度,あるいは完全に原形をとどめていたりすることがあるのは
 生物が死んでもすぐに消滅しないのと同じです)

ポインタを使うのでしたら指している実体が変数などとして存在していなければなりません.
一方,string(AnsiString)型は同じ型同士で変数に代入しても文字列データそのもののコピーは行われません.
速度の心配は不要でしょう.よってstring型を使うべきです.
(詳しくはヘルプの『長い文字列』をご覧下さい)

>>71
そうかもしんない(汗),すいません.
>>56は多分上から1ラインずつ読み書きするのでしょうから,
ScanLineの値を動的配列にコピーする意味はありませんね.
91デフォルトの名無しさん:2005/05/12(木) 17:26:21
メインで生成したスレッドにメイン内の変数を渡したいのですが
どうすればいいのでしょうか?
検索処理高速化の為に並列化(スレッド化)したい!
1つの文字列中を20個の単語で検索する場合。
検索対象=STR
検索単語=s[0],s[1],s[2]...s[19]とし
wordfind.pas(スレッドオブジェクト)に
STRとs[x]の内容をわたせればいいのですが。。

//--メイン---
for i := 0 to 20 do begin
  wthread[i]:=wordfind.Create(False);
  //どうやって記述するの?
  wthread[i].Resume;
end;

--スレッドオブジェクト--
procedure wordserch.Execute;
var
 STR_t,s_t:string; 
begin
{ ToDo : スレッドとして実行したいコードをここに記述 }
end;
92デフォルトの名無しさん:2005/05/12(木) 18:08:38
>>91
スレッドもクラスだから、プロパティ作ってそこにつっこめば?
9391:2005/05/12(木) 18:26:36
>>92
>プロパティ作ってそこにつっこめば?
すみません。具体的にどこにどう記述するのでしょうか?
場所はwordfind.pasのtype節ですか?
94デフォルトの名無しさん:2005/05/12(木) 18:33:10
コンストラクタのオーバーライドじゃだめなん?
んで、プライベートな変数に保持しておく。
95デフォルトの名無しさん:2005/05/12(木) 18:40:19
type TWordFindThread = class(TThread)
public property Text: String read FText;
...

wthread[i] := TWordFindThread.Create(FALSE);
wthread[i].Text := Str;

てな感じか。
ただし検索スレッドを20個も立ち上げるのは効率悪すぎ。
うまく工夫してCPUが物理的にさばけるスレッドの個数に抑えるのが無難。
Pen4なら1本、Pen4HTなら2本、デュアルCPUの構成なら4本とか。
# HTだと並列化しても速くならんかも・・・
96デフォルトの名無しさん:2005/05/12(木) 18:41:11
TWordFindThread は wordsearch に読み替えてくれ
97デフォルトの名無しさん:2005/05/12(木) 18:56:56
コンストラクタの方がスマートじゃないか?

type TMyThread = class(TThread)
private
 FHensuu1: Integer;
 FHensuu2: string;
public
constructor Create(nandakke: Booelan; hensuu1: Integer; hensuu2: string);
...

constructor Create(nandakke: Booelan; hensuu1: Integer; hensuu2: string);
begin
inherited Create(nandakke);
FHensuu1 := hensuu1;
FHensuu2 := hensuu2;
end;
98デフォルトの名無しさん:2005/05/12(木) 18:57:31
好きなほうでいんじゃね
99デフォルトの名無しさん:2005/05/12(木) 19:51:18
>>97
破棄せずに再利用できなくない?

必要ならコンストラクタでもプロパティでも両方使えるようにしてる。
100デフォルトの名無しさん:2005/05/12(木) 19:54:30
ケースバイケース
コード量と利便性のトレードオフ
10191:2005/05/12(木) 21:23:42
>>94-100
ありがとうございました。
95さんのようにパブリックなプロパティにしたらできました。
ですが、↓の例のように
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200404_04040088.html
劇的に早くなるかな?とおもったのですが、
メモリ使用量との兼ね合いでスレッドを絞らざるを得なくなり
速度的には変わりませんでした。(むしろ遅くなったかも(笑))
102デフォルトの名無しさん:2005/05/12(木) 21:37:59
速くなるかどうかはCPUのコア数しだいだぞ。
一個しかなければいくらスレッド分けても速くはならない。
103デフォルトの名無しさん:2005/05/12(木) 21:43:09
Windows95でExtractFileNameを使うと必ず大文字で取得されてしまうのですが
小文字や大文字をその通りに取得する事は可能でしょうか。
104デフォルトの名無しさん:2005/05/12(木) 22:11:55
Delphi4の頃のソースを再利用の為に解析しろって言われたんだけど、
試しにコンパイルしてみるとVarIsNullとかのバリアント系識別子が軒並みエラーになる。
使用する環境に入ってるのはDelphi7。
当然漏れの作ったソースじゃなく、漏れ自身、数年ぶりのDelphiの仕事。

取り敢えずusesにSystem加えたりとかしてみたんだけど駄目。
VarIsNullだけならまだ回避出来る物のVarTypeとかってなるともうどうして良いやら。

Variantに関して何か変更とかあったの?
代替の識別子とかってあるの?
コンパイル出来ないとどんな動きのアプリなのかイメージが掴みにくいです。
漏れの凡ミスであればある意味不幸中の幸い。解決策、誰か教えて下さい。
10525:2005/05/12(木) 22:17:09
おそれすスマソ
>>29
初心者なのでわからないのですが、どの部分が二バイト文字への変換なんでしょう?
106デフォルトの名無しさん:2005/05/12(木) 22:25:50
>>104
> Variantに関して何か変更とかあったの?
色々とあったと思う。Delphi6 What's Newあたりをダウンロードして
読むべし。
107デフォルトの名無しさん:2005/05/12(木) 23:37:05
>>104
現在Variant関連は uses にVariantsを追加する仕様になっている。
どのバージョンからだったかは覚えていないが。
っていうか VarIsNulllやVarTypeでヘルプを引けばわかると思うが・・・
108デフォルトの名無しさん:2005/05/13(金) 00:16:54
あのー、Delphiでhtml文書を(画像として)縮小表示する
なんてことは可能なんでしょうか?

いったん普通に表示させて、その画像を取得後、
縮小処理なんてプロセス以外にない?

できれば、背後で画像を作成したいんですが。。。
109デフォルトの名無しさん:2005/05/13(金) 00:39:40
>>103
マジレスしていいんだよな…?

オレの環境(Windows95)じゃ、そんなことないけど。
110デフォルトの名無しさん:2005/05/13(金) 01:13:42
>>108
1. TBitmap 作って、
2. その Canvas にTextOut して、
3. 表示したいものに縮小コピー、かな。
そんな面倒なプロセスでも無いっしょ
111デフォルトの名無しさん:2005/05/13(金) 01:15:24
( ゚Д゚) ハァ?
112デフォルトの名無しさん:2005/05/13(金) 01:16:16
>>108
日本のサイト
ttp://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=33#0247.txt
海外のサイト
ttp://www.swissdelphicenter.ch/torry/showcode.php?id=1983
こちらのは前もって WebBrowserに読み込んでおいて保存するもの
WebBroeserを非表示にしておけば画面には表示されない。
ちょとソフトの修正がいるがうまく出来た。
113デフォルトの名無しさん:2005/05/13(金) 01:17:41
>>110
111じゃないけど、「ハァ?」って書かれてもしょうがないな。
111に同意見。
114103:2005/05/13(金) 09:47:20
>>109
マジですかorz
今手元にWin95が無いので滅茶苦茶単純化してやってみようと思います。
115デフォルトの名無しさん:2005/05/13(金) 09:52:08
もとデータがちゃんとしてるのを確認してるんだろうな
116103:2005/05/13(金) 09:54:49
>>115
漏れですか?もちろんしてます。
つーか直前で取得して代入して95だけで上手くいかないから
ShowMessageで確認したんですよ〜。

何故なんだろorz
117104:2005/05/13(金) 12:07:42
>>107
了解。解決しました。ありがとうございます。
ぶっちゃけ、ホント凡ミスでごめんなさい。
ブランクがあってヘルプに対する漏れの依存性が薄れていたのと、
VarをVerに間違えて検索していたのが困惑の要因でした。orz
118デフォルトの名無しさん:2005/05/13(金) 13:29:19
Delphi7でヘルプにサードパーティ製コンポーネントのヘルプファイルを組み込みました。
ヘルプを開いて、キーワード検索ではそれらのヘルプが表示されますが
IDEのコード上ででF1キーを押しても、ヘルプは起動しますが、キーワードが空白のまま表示されます。
どうやったらいいですか。
119デフォルトの名無しさん:2005/05/13(金) 14:08:20
>>112
わー、ありがとうございます。
Torryのページのは、僕が希望してたそのものです。。
さっそく使わせてもらいます。
120デフォルトの名無しさん:2005/05/14(土) 21:46:49
サウンド関連のTipsやマルチメディアAPIについて
Delphiを使って詳しく解説してるサイトはないですか?
C/C++は結構あるんですけど、Delphiは情報が少なすぎて…
12125:2005/05/14(土) 22:00:19
おそれすスマソ
>>29
初心者なのでわからないのですが、どの部分が二バイト文字への変換なんでしょう?
122デフォルトの名無しさん:2005/05/14(土) 22:10:33
http://YahooBB219190072037.bbtec.net/
(´・ω・)カワイソス)カワイソス)カワイソス
)カワイソス)カワイソス(´・ω・)カワイソス

)カワイソス(´・ω・)カワイソス)カワイソス
)カワイソス
(´・ω・)カワイソス)カワイソス(´・ω・)カワイソス)カワイソス)カワイソス
123デフォルトの名無しさん:2005/05/14(土) 22:32:19
とてつもなく初歩的な質問なのですが、同ディレクトリ内に存在するファイルを指定するとき、
自身のパスを取得してc:\hoge.txtのように絶対パスで指定するのと./hoge.txtのように相対パスで
指定するのってどちらが良いのでしょうか。どちらが一般的でしょうか。
124デフォルトの名無しさん:2005/05/14(土) 22:44:03
>>120
探せばあると思うけど、C/C++をDelphiに変換した方が早い。
125デフォルトの名無しさん:2005/05/14(土) 22:48:00
>>123
相対パスでいいんじゃない。
126123:2005/05/14(土) 22:51:53
>>125
早速のレスありがとうございます。
どちらにしようか迷っていたのですが相対パスにする事に決めました!
127デフォルトの名無しさん:2005/05/14(土) 23:25:49
同ディレクトリってのが、実行ファイルと同じディレクトリって意味なら相対パスは危険なかほりがする。
128123:2005/05/14(土) 23:30:44
>>127
('A`)ぬーん
マジですか〜。どのようにマズイのか教えていただけないでせうかorz
129デフォルトの名無しさん:2005/05/14(土) 23:31:23
どっちでも良いなら、悪いことイワンから絶対にしとけ
いつの間にかカレントディレクトリが移動してることだって十分ある
130デフォルトの名無しさん:2005/05/14(土) 23:32:27
>>126
TOpenDialog などを使っていてカレントディレクトリが変わるなら
相対パスはバグの元になるのでお勧めしない。
(プロパティ弄れば変えないようにもできるけど)
131デフォルトの名無しさん:2005/05/14(土) 23:34:33
ショートカットの設定で起動時のカレンドディレクトリ変えられるし、
OpenDialogでファイル開いても変わるしね
132デフォルトの名無しさん:2005/05/14(土) 23:36:44
平たく言えば相対パスの基準ディレクトリは、実行ファイルのあるディレクトリじゃないというこっちゃ
133123:2005/05/14(土) 23:39:19
皆さんどうもありがとうございます。

hoge.txtと./hoge.txtって同じ事になるのでしょうか。
てっきり後者の場合はカレントディレクトリを無視して必ず実行ファイル
直下を指定してるモソだと思い込んでいましたorz

絶対パスで指定する事にします!
134デフォルトの名無しさん:2005/05/14(土) 23:47:24
>>121
var
 eByte: ByteArray;
 S :string;

 XorEnCode('Ord関数やChar関数のことはわかってるの?','ぱすわーど',EncodeByte);
 S := XorDecode(eByte,'ぱすわーど');
とすると
 S = 'Ord関数やChar関数のことはわかってるの?'
となる(はず)。
135デフォルトの名無しさん:2005/05/14(土) 23:52:41
> 'Ord関数やChar関数のことはわかってるの
'Ord関数やChr関数のことはわかってるの
スマソ。しかしXorDecodeの
for i := 1 to LS do
result[i] := Char( ba[i-1] xor Ord(Password[(i-1) mod LP +1]) );
部分はChar(キャスト)でいい。

136デフォルトの名無しさん:2005/05/14(土) 23:53:37
すみません。

TListViewの各ItemのCheckedの変化に対応したいんですが、
どのようなイベントを使うといいのでしょうか?

よろしくお願いします。
137デフォルトの名無しさん:2005/05/15(日) 00:19:56
>>136
OnChanging/OnChange

何かしら工夫しないと選択状態とかフォーカスの変化と区別できないけど。
チェックボックスの変化だけを表すメッセージ自体が無いらしい。
138デフォルトの名無しさん:2005/05/15(日) 00:27:44
渡された文字列にXOR演算をかけるDLLを
下記のように作ったところ、XORをかけて、もう一度かけた
時に元に戻らなかったり(一部の文字が化けてしまいます)
場合によっては不正な処理ということで強制終了してしまいます。

function MyXor(str: PChar): PChar; stdcall;
var
i, j, k: Integer;
begin
Result := '';

j := length(str);
k := 16;

for i := 0 to j do
begin
str[i] := Chr(Ord(str[i]) xor k);
end;

Result := str;
end;

おそらく書き方に問題があるのではと思いますが
どのように直せば良いでしょうか?
139デフォルトの名無しさん:2005/05/15(日) 00:33:01
>>138
jの値がおかしい
for i := 0 to j do // 0..j
14025:2005/05/15(日) 00:46:26
>>134
>>135
できたーーーーーさんくす!
141デフォルトの名無しさん:2005/05/15(日) 00:51:50
>>138
× for i := 0 to j do
○ for i := 1 to j do

Delphi(というかPascal)の文字列は、1から始まる。
>>29もそうなってる。
142デフォルトの名無しさん:2005/05/15(日) 01:05:39
PChar使ってるから
for i := 0 to j-1 do
ではないかな。それにしても
Result[j] := #0
しなくていいのだろうか?
143デフォルトの名無しさん:2005/05/15(日) 01:43:36
>>142
>Result[j] := #0
>しなくていいのだろうか?
参照渡しの中を直接いじっているだけで長さも変わっていないからいいんじゃない。
144デフォルトの名無しさん:2005/05/15(日) 02:22:49
>>138
細かいことを言えば
>j := length(str);
は良くない。
Length()を使うとstr:PCharがいったんstringに変換されてしまう。
PCharで使うならここは
j:=StrLen(str);
としたほうがよい。
ただしどちらの場合も Xorによって #0が出ないことが前提。
こういうことを行う場合は PByteと Lenを渡すようなほうがベター。
145138:2005/05/15(日) 03:15:35
ありがとうございます。
まだ試行錯誤中ですが、何とか出来そうです!
146デフォルトの名無しさん:2005/05/15(日) 05:20:52
>>137
ありがとうございます。
OnChanging/OnChangeって、いろんな状況で呼び出され、
区別するのが大変ですね。がんばってみます。
147デフォルトの名無しさん:2005/05/15(日) 05:23:16
プロシージャの中のプロシージャなんですが、
procedure test;
var i,h:integer;
 procedure nakami;
 begin
  h:=i;//※iが心配なんです。
 end;
begin
 for i:=0 to maxint do
   nakami

end;

この場合
procedure nakami;を
procedure nakami(const i:integer);とやらなくても大丈夫でしょうか?
148デフォルトの名無しさん:2005/05/15(日) 05:30:17
大丈夫
149デフォルトの名無しさん:2005/05/15(日) 05:32:34
ありがとうございました。
150デフォルトの名無しさん:2005/05/15(日) 10:53:08
Delphi6でAnsiStrComp('1〇〇%','1〇〇〇%')
の返り値が 0 なんですが、なぜですか?
日本語のロケールだと'〇'は無視されてしまうということですか?
151デフォルトの名無しさん:2005/05/15(日) 11:37:14
>>150
ホントだなあ。引数がstring型の AnsiCompareStr もいっしょだ。
両方ともWinAPIのCompareStringをつかっているからこれが原因だろうか?


152デフォルトの名無しさん:2005/05/15(日) 12:41:48
 k :int;
d :string;
d[2*i]:=inttostr(k);

これで、整数型のintをstringの中に入れようと思ったのですが、
Charと Stringには互換性がありません
とでてしまいます。
この場合どうしたらいいのでしょうか?
153デフォルトの名無しさん:2005/05/15(日) 12:46:21
>>124
やっぱりそうですか…。ありがとうございました
154デフォルトの名無しさん:2005/05/15(日) 13:44:31
>>152
半角一文字に '1234' とか入れようとしても無理だろ。

>この場合どうしたらいいのでしょうか?
どうしようもない。
155デフォルトの名無しさん:2005/05/15(日) 13:57:00
s := inttostr(k);
if k < 10 then d[2*i] := s[1] else d[2*i] := '0';
d[2*i+1] := s[2];
StringをCharにばらしてやればいい
文字列sでs[n]とやればn番目のChar型文字を得られる
156デフォルトの名無しさん:2005/05/15(日) 19:07:16
>>144
>Length()を使うとstr:PCharがいったんstringに変換されてしまう。
 へえ、そうなんだ。これ知らなかったです。まあPChar型の文字列を
カウントするのにLengthを使うことは普通はないとは思うけど。
157デフォルトの名無しさん:2005/05/16(月) 12:29:06
アプリケーション間でメッセージをやりとりしたい時ってどうすればいいでしょうか。
具体的には、自前で作ったアプリケーションを複数起動して、そのアプリケーション間で、レコード型の座標情報を送受信したいのです。

PostMessage で送信すればいいのでしょうか・・。
158デフォルトの名無しさん:2005/05/16(月) 13:01:34
>>157
試してないけどこんな感じかな

送り側
procedure TForm1.Button1Click(Sender: TObject);
var
hndl: THandle;
begin
hndl := FindWindow(nil, 'アプリケーション名');
if hndl <> 0 then
PostMessage(hndl, 3333 , 0 ,0);
end;

受け側
const
Mymsg = 3333;
type
private
procedure GetMyMessage(var Message: TMessage); message MyMsg;
end;

procedure TForm1.GetMyMessage(var Message: TMessage);
begin
ShowMessage('メッセージ来たよ')
end;


159デフォルトの名無しさん:2005/05/16(月) 13:17:19
>>158
ありがとうございます。

hndl := FindWindow(nil, 'アプリケーション名');

の部分では、1つのプロセスしか掴めないようです。

3つ、4つのプロセスが起動している時に、全てを取得する方法はありますでしょうか。
また、自分自身のハンドルを取得したりしないでしょうか。
その場合、 if Application.Handle = hndl で判定可能でしょうか。


160デフォルトの名無しさん:2005/05/16(月) 13:18:40
EnumWindowで列挙して名前で判定
161デフォルトの名無しさん:2005/05/16(月) 13:38:02
>>159
メモリマップドファイルとかの共有メモリにプロセスリストとウィンドウハンドル格納しておくのがスマートな実装と思われ。
(起動時に共有メモリオブジェクトの存在をチェック>(なければ作成>)自身のウィンドウハンドルを追加>終了時には自身の情報を削除)
162デフォルトの名無しさん:2005/05/16(月) 13:39:49
ポーリングが必要になるからそれほどスマートでもないと思われ。
163159:2005/05/16(月) 13:48:41
度々すみません。TMessageは、Cardinalのみしか入らないようなのですが、
たとえばレコード型へのポインタを入れて送る事は可能なのですか?
164デフォルトの名無しさん:2005/05/16(月) 14:41:09
共有メモリなら、以下のコンポが便利です。
http://homepage2.nifty.com/t-katochin/download/memma06.lzh

文字列を送受信するだけなら、アトムがお手軽です。

ポインタはわかりません。すみません。
165デフォルトの名無しさん:2005/05/16(月) 14:47:30
若しくは、メールスロット
http://www.asahi-net.or.jp/~nk2w-ishr/programs.htm
166デフォルトの名無しさん:2005/05/16(月) 14:55:25
FastNetもしくはIndyを使ってのメールのUIDLの取得方法を教えてください
167デフォルトの名無しさん:2005/05/16(月) 16:04:34
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/PASCAL/pascal.html
にあるMersenne Twisterという乱数発生器を使って、
1〜10の整数で乱数を発生させるには
どのようなードを書けばいいのでしょうか?
かなりの乱数を発生させるプログラムなので、
高速らしいMersenne Twisterを試してみたいのです。
どうぞよろしくお願いします。
168デフォルトの名無しさん:2005/05/16(月) 16:10:00
そのまま使えるDLLかなんかがあったはず。
少なくともC/C++コードがあるからbccでコンパイルすればリンクできるよ。
169デフォルトの名無しさん:2005/05/16(月) 16:47:07
>>167
そのページのどれを使いたいのかわからないけど、mt19937.pas にはサンプルあるからその通り使えばいいのでは。
1〜10の整数なら Trunc(1.0+9.0*x.real1) かな?
170デフォルトの名無しさん:2005/05/16(月) 16:52:10
あ、Trunc(1.0+10.0*x.real2) かも
171デフォルトの名無しさん:2005/05/16(月) 19:01:30
>>163
アプリ間ではメモリ空間が異なるのでポインタではデータのやり取りは出来ない。
そういう用途にはWM_COPYDATAを使用する。
用途によっては共有メモリより簡便
172デフォルトの名無しさん:2005/05/16(月) 21:05:15
[エラー]指定された引数で呼び出すことのできるオーバーロード関数 'xxx' が
定義されていません。とでてしまいました。
オーバーロード関数って一つの名前で複数の処理が可能な関数のことですか?
で、どこにどう定義すればいいのでしょうか?
indy9のIdUDPClientを使用してまして
Form1.IdUDPClient1.SendBuffer()の場所でエラーがでます。




173デフォルトの名無しさん:2005/05/16(月) 21:15:51
IntToStr(0.2)なんて書くとDelphiは
「あれ?IntToStrは引数に整数を取るはずだぞ?
そうか!IntToStrをオーバロードして浮動小数点を引数に取るIntToStrを
作ったのか。よしよし」と勝手に思い込む

で、いざ翻訳を始めると「オーバーロードされてないじゃん、ウソツキ!」と怒る
要するに引数の型が違うってこと
174デフォルトの名無しさん:2005/05/16(月) 21:38:37
>>173
わかりやすい解説ありがとうございました。
そして引数の型間違ってましたorz
初心者にやさしいエラーにしてほしいですね。。

175デフォルトの名無しさん:2005/05/16(月) 23:13:03
>>167
Mersenne Twisterは別に速いのが売りなんじゃないよね。
速いだけなら従来の線形合同法のほうがはるかに速いわけだし。

要は疑似乱数として周期が極めて長く一様なランダムさをもった良い乱数って話なだけでしょ。
176デフォルトの名無しさん:2005/05/16(月) 23:18:47
だけでしょ。って・・・・・よい乱数の発生はそれだけ難しいのよね
177デフォルトの名無しさん:2005/05/17(火) 00:17:55
フィボナッチ数列を出力するのを書いてるんですが、f(90)あたりで符号が反転してしまいます。
extendedにしてfloattostrを挟むことで解決したんですが、指数表記が気に入らなくて・・
これって取り去れるものなんでしょうか?
178デフォルトの名無しさん:2005/05/17(火) 00:41:16
Ruby使え
179デフォルトの名無しさん:2005/05/17(火) 00:43:54
多倍長整数ユニット拾ってくるとか。どこにあるか知らないけど
180デフォルトの名無しさん:2005/05/17(火) 05:07:22
MonthCalendarコントロールで日付ごとに色を付けるにはどうすればよいのでしょうか? 
Boldにする方法はわかったのですが、それ以外の装飾をつけるにはどうしたらよいのでしょうか? 
181デフォルトの名無しさん:2005/05/17(火) 12:24:58
できない
182デフォルトの名無しさん:2005/05/17(火) 17:12:35
TTimerについて質問です
Timer.Intervalが小さく(300ぐらい)て
Timer.OnTimerイベント中にDBをゴリゴリいじるような
時間の掛かる処理を書いた場合に
イベントが続けざまに来ることがあるのでしょうか?
もしそうだとしたら

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False

//時間の掛かる処理・・・・

Timer1.Enabled := True
end;
とタイマーイベントがダブらないように書いたほうがいいのでしょうか
183デフォルトの名無しさん:2005/05/17(火) 18:18:12
6.0PERSONALでStringGridでマウスのユニバーサルスクロールを
使えるようにするにはどうしたらいいでしょうか?
184デフォルトの名無しさん:2005/05/17(火) 18:26:25
>>182
たぶん300msecを超えるとメッセージが飛んでくる。イベントを抜けたらまた入ることになるので、
その処理はあった方がいい。
できるのであれば、スレッドにした方がいいのでは?
185デフォルトの名無しさん:2005/05/17(火) 19:22:52
>>29
 ありがd。おかげで簡単なファイル暗号化ツールができました。
186デフォルトの名無しさん:2005/05/17(火) 19:45:37
>>182
発想逆にして
while ProcessDB do
 Application.ProcessMessages;
にするとか。処理はこっちのがシンプルになるかもね。
187デフォルトの名無しさん:2005/05/18(水) 08:52:36
Personal 6 を使っています。
付箋紙や時計やカレンダーソフトなどによくあるような、
Formをデスクトップに貼り付けるという動作をしたい場合、どうすればいいかがわかりません。
どこを弄ればいいのか…あるいはどんなコードを書けばいいのか、お教えください。
188デフォルトの名無しさん:2005/05/18(水) 09:47:28
>>187

    { Private 宣言 }
  public
    procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging);message WM_WINDOWPOSCHANGING;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
begin
  inherited;
  Msg.WindowPos.hwndInsertAfter := HWND_BOTTOM;
end;
189187:2005/05/18(水) 10:19:37
>>188 ありがとうございます!それを元にやってみます。
190デフォルトの名無しさん:2005/05/18(水) 12:40:22
ディレクトリ内のファイル名を一つづつ表示したいのですが、
どうすればファイル名を取得できますか?
191デフォルトの名無しさん:2005/05/18(水) 12:46:33
FindFirst
192デフォルトの名無しさん:2005/05/18(水) 12:47:47
ありがとう
193デフォルトの名無しさん:2005/05/18(水) 16:52:36
D7にはクイックレポートはついてないみたいですが、皆さんはRaveを使っていますか?
いまいち使い方がよく分からなくて未だD6と使い分けの状態です。D6からD7への移行はどうされましたか?
194RAVEが憎い:2005/05/18(水) 18:10:49
193です、付いていないのは2005からでした。
Raveを使われてる方に質問です。
RVDSでデーターセットを指定して、デザイナーで新規データーオブジェクト、ダイレクトデータービュでDATAVIEW1を作っても、先頭レコードの先頭フィールド(INDEX)しか見えません。
フォーム上のVCL、DBGridなどからは問題なく接続できています。
詳しい方おられましたらよろしくお願いします。
195デフォルトの名無しさん:2005/05/18(水) 21:23:52
質問です。環境はDelphi6Personalです。

フォームのBorderStyleをiniファイルに保存したい場合、
ReadBoolやReadStringやReadIntegerなどを使うと、TBorderStyleと互換性が無いって怒られます。
どのように指定すればいいのでしょう?型を変えるにしても、何型やら…
ヘルプを見たりググってみても出てこないので…。
196デフォルトの名無しさん:2005/05/18(水) 21:29:31
Ord
197デフォルトの名無しさん:2005/05/18(水) 21:41:32
if文
198デフォルトの名無しさん:2005/05/18(水) 21:55:59
>>197
俺ならそうする
199195:2005/05/18(水) 23:40:43
if文を使ってやる方法は既に試しましたが、できなかったんです。
エラーは吐かないものの、iniファイルにはそこの部分だけ出力されてません。
今気づいたんですが、もしかして、iniファイルのセクションって自由に作成・指定できるわけではないんですか?
200デフォルトの名無しさん:2005/05/18(水) 23:45:48
WriteInteger('Section', 'Ident', Integer(Form1.BorderStyle));
Form1.BorderStyle:=ReadInteger('Section', 'Ident', Integer(Form1.BorderStyle));

エラーチェックも忘れずにな
201デフォルトの名無しさん:2005/05/18(水) 23:48:04
ミスッタ
Form1.BorderStyle:= TBorderStyle(ReadInteger(省略))
つーか、列挙方は簡単にIntegerにキャスト出来る
202195:2005/05/18(水) 23:57:15
>>200-201 ありがとうございます!
それを参考にやってみます。
203デフォルトの名無しさん:2005/05/19(木) 01:55:00
ScrollBoxの中にTJPEGImageでjpegを表示させて
ウインドウより大きい画像の場合スクロールバーで操作できるようにしたいのですが
実際に画像を表示させるとスクロールバーが出てきてくれません。
スクロールバーを出すにはどうしたらいいのでしょうか?
204デフォルトの名無しさん:2005/05/19(木) 01:59:06
>>203
AutosizeっぽいプロパティがTrueになってるか確認してみて。
205203:2005/05/19(木) 02:02:34
>>204
AutoSize、AutoScroll共にTrueにしてみましたがスクロールバーは出ませんでした
ごめんなさい
206204:2005/05/19(木) 02:05:55
>>205
TJPEGImageの方のAutosize
207204:2005/05/19(木) 02:08:21
すみません。TJPEGImageというより画像を表示させてるコンポーネントのプロパティです。
TImageかな?たぶん。
208203:2005/05/19(木) 02:11:56
TImageのAutoSizeもTrueです
209204:2005/05/19(木) 02:13:07
AlignはalNoneになってますか。
210203:2005/05/19(木) 02:21:47
>>209
両方alCliantでした
ScrollBoxとTImageのAlignをalNoneにしたらスクロールバーが出てきました!
少し変な気もしますがここからは自分で頑張りたいと思います
ありがとうございました
211デフォルトの名無しさん:2005/05/19(木) 06:34:50
Delphi6 personalを使っています。
Delphian Worldで配布されていたSusie Plug-in 読込コンポをインストールした後
コンポーネント-ActiveXの取り込みからTWebBrowserをインストールしたらSusieのコンポが消えてしまうんですが
これらのコンポを共存させる方法があれば教えてください
212デフォルトの名無しさん:2005/05/19(木) 09:18:01
ヒントを複数行にすることは可能でしょうか?
213デフォルトの名無しさん:2005/05/19(木) 09:24:06
>>212
叶です。
214デフォルトの名無しさん:2005/05/19(木) 10:45:42
>>212
.Hint := 'aaa'#13'bbb';
215デフォルトの名無しさん:2005/05/19(木) 12:45:01
Explorerのフォルダやファイルを右クリックしたときに出る
コンテキストメニューを自作のアプリで出したいのですが
そういったライブラリはありますか?
216デフォルトの名無しさん:2005/05/19(木) 14:03:10
TPopUpMenuを使うと幸せになれるかも
217デフォルトの名無しさん:2005/05/19(木) 14:15:43
ギャグ?
218デフォルトの名無しさん:2005/05/19(木) 20:43:39
TWebBrowserでブラウザを自作しているのですがEnterキーが効きません
どういったコードを書けばEnterキーが効くようになりますか?
DelphiのバージョンはDelphi6 personalです、どなたか教えてください
219デフォルトの名無しさん:2005/05/19(木) 21:24:03
FormにButtonを敷き詰めるように縦に3つならべて、
FormがリサイズされたときにButton同士が重ならないように
縦の比率を保って追従していくというのを、
オブジェクトインスペクタの設定等のみでコードを書かずに実現できますか?
220デフォルトの名無しさん:2005/05/19(木) 21:48:18
パネル
221デフォルトの名無しさん:2005/05/19(木) 22:00:13
222218:2005/05/19(木) 22:17:22
>>221
大変申し訳ないんですが、日本語のサイトでお願いできませんでしょうか
223デフォルトの名無しさん:2005/05/19(木) 22:26:58
ギャグ?
224デフォルトの名無しさん:2005/05/19(木) 22:28:24
というか、>>221とかページ全部コードと言ってもいいくらいなんだから
英語で何か問題あるのか。
225デフォルトの名無しさん:2005/05/19(木) 22:32:54
>>222
ほとんど英語ねーじゃん
226デフォルトの名無しさん:2005/05/19(木) 22:36:55
答えがでーんと載ってるだけだな。何語であっても問題ないページじゃまいか。
227RAVEが憎い:2005/05/19(木) 22:44:14
解決しました、フィールド名の問題でした。
228219:2005/05/19(木) 23:03:40
>>220
パネルの中にボタンを並べるのですか?
それともボタンごとにパネルを作ってパネルを並べるのですか?

どちらであるにしても、ボタンを縦に並ばせるには
どのプロパティに注目すればいいのでしょうか?
229デフォルトの名無しさん:2005/05/19(木) 23:22:59
>>219
無理。
Delphiには賢いレイアウトマネージャはありましぇーん。
自称最強の開発環境はもうとっくに進歩を止めてます。
230219:2005/05/19(木) 23:28:38
>>229
了解しました。
色々と試してみましたが、自分でもそのように思います。

結局alCustomいじるですか…。
231デフォルトの名無しさん:2005/05/20(金) 00:58:45
Delphiにはハッシュによる連想配列が標準で付いていないようですが、
デファクトスタンダードな STL みたいなライブラリとかってあるんでしょうか?
おすすめがあればご教授ください。
232デフォルトの名無しさん:2005/05/20(金) 01:05:44
DelWiki漁れ
233デフォルトの名無しさん:2005/05/20(金) 02:08:50
質問です。
実行時に、タスクバーにタスクバーボタンを表示しないようにするには、どうしたらいいんですか?

ググって調べてたら、プロジェクトファイルに
Application.ShowMainForm := False;
と記述するとか出てきましたが、それではフォームごと消えてしまいます…。
フォームを表示しつつ、タスクバーから消したいんです。
よろしくお願いします。
234デフォルトの名無しさん:2005/05/20(金) 02:29:20
>>233

procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;

では?
235233:2005/05/20(金) 02:35:42
>>234 それでやってみたら出来ました!ありがとうございます。
236デフォルトの名無しさん:2005/05/20(金) 10:18:18
ttp://oto.chu.jp/kujira/text/delphi/archive.htm
ここを参考にしたのですがうまくいかず、
zipの解凍をしたいのですが、どうすればいいでしょうか?
237デフォルトの名無しさん:2005/05/20(金) 10:56:30
>>236
解凍できないなんて事はないからアドバイスのしようがない。
238デフォルトの名無しさん:2005/05/20(金) 11:05:02
>>236
そのソフトを利用して圧縮・解凍するには別途DLLが必要です。
解凍するのなら
ftp://ftp.info-zip.org/pub/infozip/WIN32/
から unz552dN.zip を落として中に入っている unzip32.dll をパスの通っているフォルダか
実行ファイルと同じところにおくこと
239238:2005/05/20(金) 11:32:54
>>236
足りないソースがあるみたいですね。
想像で作るか、別なもの探したほうが良さそう。
240デフォルトの名無しさん:2005/05/20(金) 12:48:32
ScrollOppositeってなんて読むの?オッポサイト?
241デフォルトの名無しさん:2005/05/20(金) 12:51:21
オポジットも読めないのかよ。
242デフォルトの名無しさん:2005/05/20(金) 14:30:46
http://www.alc.co.jp/ では、
opposite
【名】 反対{はんたい}、正反対{せいはんたい}の人[物・こと]、逆の物、反対{はんたい}の物、反意語{はんいご}
243デフォルトの名無しさん:2005/05/20(金) 14:56:17
>>242
誰も意味なんて聞いてないと思うけどw
244デフォルトの名無しさん:2005/05/20(金) 15:10:56
えっと、初心者丸出しで恥ずかしいんですが。。。

スレッドをFreeOnTerminate:=trueで作って
スレッド内である条件でexecuteを終了した場合、
実際にスレッドが開放された時点をメインスレッド内から
どのようにして検出したらいいんでしょうか?

よろしくお願いします。
245ななしへたぐらま ◆XcB18Bks.Y :2005/05/20(金) 15:23:38
246デフォルトの名無しさん:2005/05/20(金) 16:40:40
>>244
日本語が微妙に理解しにくいんだが、
要はFreeOnTerminateで自動解放されるThreadの
終了タイミングを知りたいということなのか?
だとしたら、ThreadのdestructorでSynchronizeでメインスレッドの
処理を呼び出したり、メッセージを送ればOKなような
247デフォルトの名無しさん:2005/05/20(金) 17:09:49
>>244
FreeOnTerminate:=Falseでスレッド作って
スレッド呼び出し元で
while not Executeメソッドが終わるまで do
Application.ProcessMessages;
と書いたほうがよさげな気がする
248デフォルトの名無しさん:2005/05/20(金) 19:39:51
絶対 >>246 の方がいいよ!
249デフォルトの名無しさん:2005/05/20(金) 21:34:48
質問です。
PageControlを使用し、ユーザーが自由にタブを作成、削除できるようにしたいのです。
例えばタブブラウザやタブエディタのように。

その場合、PagecontrolでTabSheetを作成するということでしょうから、とりあえず

procedure MakeSheet (Sender: TObject);
var
TabSheet:TTabSheet;
RichEdit: TRichEdit;
begin
TabSheet := TTabSheet.Create(PageControl1);
TabSheet.PageControl := PageControl1;
TabSheet.Caption := '***';
RichEdit.Create(TabSheet);
end;

と書いているわけです。コンパイルは通るのに、まっさらなTabSheetが出来上がります。
そして何かいろいろ足りない気がします…ご教授くださいorz
250デフォルトの名無しさん:2005/05/20(金) 21:39:06
>>249
RichEdit.Parent:=TabSheet;
この一行を追加すれば万事OK
"Owner"と"Parent"は全く違う概念だが、
これで理解出来るかな?
251デフォルトの名無しさん:2005/05/20(金) 21:47:48
ん?なんだ"RichEdit.Create(TabSheet)"ってのは…
これじゃコンパイラに怒られるだろ
RichEdit:= TRichEdit.Create(TabSheet);
だな
252249:2005/05/20(金) 21:52:27
>>250 自分、Ownerについて勘違いしていたようですね。ありがとうございます。
それでやってみます。

>>251 素直にコピペすりゃよかったわけですが、単なる書き間違いですorz
253デフォルトの名無しさん:2005/05/20(金) 22:46:45
>>246
何か分かりにくい文章ですみません。

実はあるクラス(通信関係)を作ったんですが、そのクラスは
非同期で通信を行うスレッドを使います。

アプリケーション終了時にクラスを破棄するとき、当該クラスで
スレッドに対して通信切断と終了するように指示します。

で、このときスレッドが実際に開放されるまで時間がかかるようで、
さきに当該クラスが開放されてしまい、タイミングによって、
スレッドがクラスにアクセスして違反が起こります。

それで、このクラスの終了時に、スレッド開放まで待つ効率的な処理が
ないかと。。。

そうですね、スレッド自身が終了をクラスに伝えるまで待てばいいんですね。
ありがとうございました。
254デフォルトの名無しさん:2005/05/21(土) 02:02:42
Memo1.Lines := OpenDialog1.Files と書いてファイルのパスをMemoに書き込んでいるのですが
二回目にファイルを読み込むと最初に読み込んだファイルのパスがすべて消えてしまい
そこに新しくパスが書き込まれてしまいます
最初に読み込んだパスの最後尾に続けて文字列を書き込むにはどういったコードを書けばいいのでしょうか?
255デフォルトの名無しさん:2005/05/21(土) 02:03:38
PrintWindow APIについて。
隠れたウィンドウのキャプも出来るらしく調べてるのですが
↓のコードでも不可のようなのでMSDNを参考に弄ったりはしてるものの
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_21272659.html
APIあまり理解してないのか下手なのか今のところうまくいかない模様。
当方XPでAltTab(Powertoy)も動くことから環境制限はない…と思います。
DelphiMLやFDELPHIのログでも見当たらなかったのですがもしかして駄目ってことはまずないですよね…
Delphiでうまく動かす方法ご存知の方いらっしゃいますでしょうか?

MSDN-Windows XP の視覚スタイルおよび PrintWindow を Windows アプリケーションで使用する
ttp://www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.asp
MSDN-PrintWindow
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_6qpj.asp
VBsample
ttp://www.mentalis.org/apilist/5474182B9FF59F9FC97856E69B9E9442.html

当たり前のことだったりしてorz
256デフォルトの名無しさん:2005/05/21(土) 02:13:26
>>254
opendialog1.Execute;
Memo1.Lines.Add(opendialog1.FileName);

では?
257254:2005/05/21(土) 02:28:29
>>256
あ、addでよかったんですね…ありがとうございます
解決しました
258デフォルトの名無しさん:2005/05/21(土) 15:57:38
DirectXのX形式のデータを作れる関数やライブラリ、クラスってありませんか?
259デフォルトの名無しさん:2005/05/21(土) 22:13:40
論理積について質問です。 恐ろしく初歩的な質問で申し訳ないのですが…
procedure 〜
begin
if A=B and C=D and D=E then
begin F:=G
end
else
begin showmessage('*****');
end;
end;
としたときに、何故かF:=GとShowmessageが両方実行されてしまいます。
加えて、A=BであってC<>Dであっても、F:=Gが実行されてしまいます。

これは文法が間違っているのか、あるいは他の部分が間違っているのか、
ご教授ください。
260デフォルトの名無しさん:2005/05/21(土) 22:21:20
それでコンパイラに怒られてないのか?
少なくともオレの環境だと
if (A = B) and (C = D) and (D = E) then
としないと駄目だ
あと、一応試したがちゃんと期待通りの動作をする
文法ではなくコードに問題があるんじゃないか?
261デフォルトの名無しさん:2005/05/21(土) 22:24:16
F:=G は本当は実行されていない、に100モナー。
262デフォルトの名無しさん:2005/05/21(土) 22:24:26
俺も括弧で括らないと怒られる。
263デフォルトの名無しさん:2005/05/21(土) 22:32:30
TListBoxを使っているのですがTListViewにあるOnChangeイベントみたいにTListBoxのアイテムの移動を通知することはできないでしょうか?
264デフォルトの名無しさん:2005/05/21(土) 22:33:57
>>263
分からないけどTListViewだと駄目な理由って何かあるの?w
265259:2005/05/21(土) 22:34:58
Personal6ですが、括弧なしでも怒られません。
F:=Gも実行されています。
試しに同じ場所に判り易いShowmessageとか入れても、両方実行されます。

if A=B and C=D and D=E の方は、むしろ条件が一つでも満たされれば実行されるような感じ。
or じゃなくてand なのに…。

やっぱりコードが悪いんですかね?
ここでいうAやBやCなどに入ってると、動作がおかしくなる型条件などはありますか?
266263:2005/05/21(土) 22:35:40
アイテムの移動→選択アイテムの変更
すいません。こうでないと表現が正しくないですね。
267デフォルトの名無しさん:2005/05/21(土) 22:38:20
>>265
その部分がコメントになってるんじゃないのか
if error! A=B and C=D and D=E
とかやってコンパイルエラー出るか?
268デフォルトの名無しさん:2005/05/21(土) 22:38:32
>>259
ちょっとコード晒してみろ
269263:2005/05/21(土) 22:40:02
>>264
TListViewのカラムの領域って消せない物かと思っていましたが消せるんですね。
ありがとうございました。
270デフォルトの名無しさん:2005/05/21(土) 22:55:30
if A=B and C=D and D=E then は

× if (A=B) and (C=D) and (D=E) then
○ if A=(B and C)=(D and D)=E then

になってるとか。
271デフォルトの名無しさん:2005/05/21(土) 22:59:31
>>259
それだと
A = (B and C) = (D and D) = E
と解釈される。
=が左結合だったか右結合だったか忘れたけど、
AとEのどっちかが論理型だったら文法的には正しいとみなされそうだな。
272デフォルトの名無しさん:2005/05/21(土) 23:00:28
ヘルプ↓
@, not1 位(最高)
*, /, div, mod, and, shl, shr, as2 位
+, -, or, xor3 位
=, <>, <, >, <=, >=, in, is4 位(最低)
一見すると不要と思われる状況でもカッコが必要な場合があります。次に例を示します。
X = Y or X = Z
この式が次のように解釈されることを意図して書かれたものだとしても,
(X = Y) or (X = Z)
カッコがなければ,コンパイラは演算子の優先順位の規則に従って次のように解釈します。
(X = (Y or X)) = Z
このため,Z が論理型でない限り,コンパイル時にエラーが発生します。

checkbox6.Checked:=False;
checkbox7.Checked:=False;
if checkbox1.Checked=checkbox2.Checked and
 checkbox3.Checked=checkbox4.Checked and
 checkbox4.Checked=checkbox5.Checked
then begin
 checkbox6.Checked:=True;
end else begin
 checkbox7.Checked:=True;
273259:2005/05/21(土) 23:01:48
procedure TForm1.CellClick(X, Y: integer);
begin
cell[X,Y] := not cell[X,Y];
//上
if Y-1 >= 0 then
cell[X,Y-1] := not cell[X,Y-1];
//下
if Y+1 <= 4 then
cell[X,Y+1] := not cell[X,Y+1];
//左
if X-1 >= 0 then
cell[X-1,Y] := not cell[X-1,Y];
//右
if X+1 <= 4 then
cell[X+1,Y] := not cell[X+1,Y];

if (cel[0,0] = True) and (cell[0,1] = True) and (cell[0,2] = True) and (cell[0,3] = True) and
(cell[0,4] = True) and (cell[1,0] = True) and   (中略)
(cell[4,3] = True) and (cell[4,4] = True) then
ShowMessage('****');
StringGrid1.Visible := False;
StringGrid1.Enabled := False;
end;
(var cell:array[0..4,0..4] of Boolean)←グローバル
(一部ですけど)問題の部分はこんなかんじです。所謂ライツアウトってゲームを作ってみてるわけです。
クリア後のイベントのはずが、ワンクリックで実行とかわけわかめ。
上の書き込みの例で何故かF:=GとShowmessageが両方実行されてしまうというのは別の関数ですので除外して考えていただきたい…。
274デフォルトの名無しさん:2005/05/21(土) 23:08:22
if (cel[0,0] = True) (略) then
ShowMessage('****');     ←これと
StringGrid1.Visible := False; ←これが同時に実行されるって事?
StringGrid1.Enabled := False;
end;

if...thenの後はbegin...end;でくくらないと一番上の条件(ShowMessage)しか
処理に入らないよ。
275デフォルトの名無しさん:2005/05/21(土) 23:17:11
(cel[0,0] = True)はcell[0,0]だけでいいだろ
276デフォルトの名無しさん:2005/05/22(日) 00:57:40
>>258
DirectXのヘルプ見る限りではあるよ。
277259:2005/05/22(日) 01:01:11
とりあえず、最初からキレイに書き直してみることにしました。
レスくれたかたありがとうございます。もうちょっと自分でがんばってみることにします。
278デフォルトの名無しさん:2005/05/22(日) 10:53:50
SetWindowsHookEx(WH_KEYBOARD,@HookProc,hInstance,0)
とDLL内に書いているのですがローカルフックしかできません。
グローバルフックを行うためにはどうしたらいいのでしょうか?(Delphi6 personal)
279デフォルトの名無しさん:2005/05/22(日) 11:08:13
280デフォルトの名無しさん:2005/05/22(日) 11:36:10
>>279
参考になりました
ファイルマッピング使うんですね
いろいろと試してみます
281デフォルトの名無しさん:2005/05/22(日) 12:00:47
マウスのポインター速度を変更したいのですけどどうすれば良いですか?
ここのサンプルではうまく変更出来ませんでした。
http://forum.nifty.com/fdelphi/samples/00802.html
よろしくご教授願います。
282デフォルトの名無しさん:2005/05/22(日) 16:01:31
数年前にマウスユーティリティ作ろうとしてネットやレジストリ見て調べたメモがあったので
天才しときますね。実際に正しいかは自前でお願い。

95,98ではコンパネ>マウスより7段階の調節が可能。
速度設定はレジストリに
"MouseSpeed"、"MouseThreshold1"、"MouseThreshold2"
の3つの値で調整、保存される。
----------------------------------------------------
速度       遅             速
----------------------------------------------------
MouseSpeed    0 10  7  4  1  4  4  4
MouseThreshold1  0  0  0  0  0 12  9  6
MouseThreshold2  0  1  1  1  1  2  2  2
----------------------------------------------------

パラメータの内容は不明。
2,0,0で速くなるとも。
3.1時代からwin.iniで設定できたらしい?

2k,XPではコンパネ>マウスより11段階の調節が可能。
レジストリに"MouseSensitivity"という値が追加された。
速度設定はこの値で調整、保存される

----------------------------------------------------
速度       遅           速
----------------------------------------------------
MouseSensitivity  1  2  4  6 … 18 20
----------------------------------------------------

283282の続き:2005/05/22(日) 16:05:27
2k,XPでは加速度?の設定が追加された。
2kでは"なし"、"小"、"中"、"大"の4段階
XPでは"精度を高める"の有効、無効の2段階
----------------------------------------------------
OS        2k       |XP
----------------------------------------------------
加速?      無 小 中 大  | 無 高
----------------------------------------------------
MouseSpeed    0  1  2  2  |  0  1
MouseThreshold1  0  7  4  4  |  0  6
MouseThreshold2  0  0 12  6  |  0 10
----------------------------------------------------

パラメータの意味は"MouseSpeed"で変わる。
MouseSpeedが
0の時:加速しない。
1の時:しきい値1を超えると移動量が倍になる。
2の時:しきい値1を超えると倍に、しきい値2を超えると
4倍になる。

補)
マウスウェアを入れている場合は上述の設定を無効化して
独自に管理される場合がある。

以上。自分での結果と海外サイトの混ざってるので穴もあるかも。
ところでPrintWindowやっぱ無理ですかねぇ。
284デフォルトの名無しさん:2005/05/22(日) 16:27:33
>>179
> 多倍長整数ユニット拾ってくるとか。どこにあるか知らないけど
 多倍長整数ユニットなら「コンピュータアルゴリズム事典」(奥村晴彦著 技術評論社)
のP157以下を少し改造したものが
 http://www.vector.co.jp/soft/win95/personal/se066024.html
のソースにある。
285281:2005/05/22(日) 19:37:52
>>282
情報ありがとうございました。
つーか、かなり面倒だなぁ...。
286デフォルトの名無しさん:2005/05/22(日) 20:33:48
SystemParametersInfo

>>283
PrintWindow使って何が駄目なのか書いてないのでスルーしていたわけだが。
つーかDCをメッセージで投げるだけだろ。
287デフォルトの名無しさん:2005/05/22(日) 20:59:41
>>283
var
wnd: HWND;
dc: HDC;
bmp: TBitmap;

begin

wnd := GetDesktopWindow;
bmp := TBitmap.Create;
bmp.Height := Screen.Height;
bmp.Width := Screen.Width;
bmp.PixelFormat := pf24bit;

dc := bmp.Canvas.Handle;
PrintWindow(wnd, dc, 0);
Image1.Picture.Assign(bmp);
bmp.free;

end;
とかではbmpが受け取ってくれないみたいで空白になります。
色々弄ってはいるんですが未だ正しい方法がわからずじまい。
MSDNのサンプル見て同じように書いてみたりしたものの駄目みたいで・・・
どう書けば正常に結果を返してもらえるのか恥ずかしいことにほとほとわからない状態です。
288デフォルトの名無しさん:2005/05/23(月) 00:10:19
 自分の作成したアプリから外部アプリを呼び出したとき、自作のソフトを常に
外部アプリの背面にする(自作アプリにフォーカスを移しても外部アプリが消え
ないようにする)にはどうしたらいいのでしょう?
289デフォルトの名無しさん:2005/05/23(月) 00:31:08
>>288
WM_WINDOWPOSCHANGINGで。

procedure TForm1.WMWindowPosChanging(var m: TWMWindowPosChanging);
begin
  inherited;
  if not IsIconic(そのアプリのウィンドウハンドル) then m.WindowPos.hwndInsertAfter := そのアプリのウィンドウハンドル;
end;
290デフォルトの名無しさん:2005/05/23(月) 00:53:17
自己解決しました。ご迷惑おかけしました・・・
GetDesktopWindowが駄目だったみたい。
291デフォルトの名無しさん:2005/05/23(月) 16:50:50
コントロールをそのまま印刷するには、どうしますか?
292デフォルトの名無しさん:2005/05/23(月) 16:55:18
TWebBrowserで今表示しているサイトをmhtで保存させるにはどうすればいいのでしょうか
できればダイアログなどを出さず保存したいのですが
DelphiのバージョンはPersonal6です
293デフォルトの名無しさん:2005/05/23(月) 16:56:30
>>291
Form1.Print;
294デフォルトの名無しさん:2005/05/23(月) 17:41:17
>>289
 サンクス。
 もしユーザーに外部アプリを登録させるようなソフトだと
FApliName がたとえば 'D:\MyTools\Editor\K2Editor.exe' の場合

procedure TForm1.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
var
 Wnd: HWnd;
begin
 inherited;
 if AnsiPos('K2EDITOR.EXE',AnsiUpperCase(FApliName)) then
  Wnd := FindWindow('TK2EditMain', nil)
 else if AnsiPos ・・・・・・・
 ・・・・・・・
 ・・・・・・・
 
 if not IsIconic(Wnd) then //ウィンドウがアイコン化されているかどうか
  Msg.WindowPos.hwndInsertAfter := Wnd;
end;
というような感じかなあ?
295デフォルトの名無しさん:2005/05/23(月) 17:51:55
クラス名と exe の名前は無関係でしょ。
自分で起動するんだからスレッドIDからたどって見つける。
296デフォルトの名無しさん:2005/05/23(月) 17:52:42
processID だった。失礼
297デフォルトの名無しさん:2005/05/23(月) 18:05:27
TImageのCanvasでDrawやStretchDrawをやった後、
その画像をクリアする方法を教えて下さいでつ。
298デフォルトの名無しさん:2005/05/23(月) 18:43:42
サンクス>>293
FormにはPrintメソッドがあるんですね。
TImageの見たままを印刷するにはどうしたら良いですか?
299デフォルトの名無しさん:2005/05/23(月) 18:52:36
>>298
Printer
300298:2005/05/23(月) 19:08:20
>>299
ふつーにコーディングしる!、ということでつか。

ところで、ネットで見かけたのですが、
TImageのCanvasは実態がTBitmapというのは本当ですか?
Bitmapを印刷する関数みたいなのは作ったんですが、
TImage.CanvasをTBitmapにキャストすれば良いのかなぁ?
301298:2005/05/23(月) 19:14:42
TImage.Canvasを代入するとコケました。

TImageのTBitmap取得方法きぼんゆ。
302298:2005/05/23(月) 19:18:48
Image1.Picture.Graphic
がTBitmapですた。

>>297 もヨロ
303デフォルトの名無しさん:2005/05/23(月) 20:37:47
>>302
初期化(というかクリアは)TImage.Picture = Nil
代入はなんとなくだけどAssigneを使ったほうが良いような気がする
304デフォルトの名無しさん:2005/05/23(月) 20:41:35
塗りつぶせば?
305デフォルトの名無しさん:2005/05/23(月) 22:00:44
> TImage.CanvasをTBitmapにキャストすれば良いのかなぁ?

クラスとか型とか、少し勉強してから質問してください。
306デフォルトの名無しさん:2005/05/24(火) 08:47:26
TToolbar使ってますが、
FormをスクロールするとToolbarが画面から消えます。

Toolbarって画面の上固定じゃないのか...
どうしよう
307デフォルトの名無しさん:2005/05/24(火) 08:59:34
>>303
代入でおk、ですた。
Assignってクリアじゃなくて、生成のような気がして...
308デフォルトの名無しさん:2005/05/24(火) 10:23:16
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
309デフォルトの名無しさん:2005/05/24(火) 10:23:21
>>306
TScrollBox
310デフォルトの名無しさん:2005/05/24(火) 10:42:39
>>307
書き方が悪かった
イメージの初期化はNilを代入でOK
Assignを書いたのはコピーなら代入よりこれを使ったほうがいいから
311デフォルトの名無しさん:2005/05/24(火) 12:07:17
>>310
代入も内部でAssignしてるだけだよ
312デフォルトの名無しさん:2005/05/24(火) 13:18:58
Assignも内部で代入してるだけだよ
313デフォルトの名無しさん:2005/05/24(火) 13:36:27
どんどん混乱していく>>307であった。
314デフォルトの名無しさん:2005/05/24(火) 13:42:18
スクラップ&ビルドより、単純に塗りつぶした方が地球にやさしい
315デフォルトの名無しさん:2005/05/24(火) 13:58:24
Image1,Image2をつけてButton1に↓をコピペして実行。
--------------------------
//Image1を白く塗りつぶす
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height));

Form1.Refresh;sleep(1000);//見やすくするため再描画+1秒待機

//Image2にImage1のイメージを代入
Image2.Picture.Assign(Image1.Picture);

Form1.Refresh;sleep(1000);//見やすくするため再描画+1秒待機

//Image1を消去
Image1.Picture.Assign(nil);
--------------------------
Imageに描くときはImage.Canvasでおk。出し入れする時はImage.Picture。ファイルのbmpやjpgもPictureに入る。
ただしPictureにjpgが入ってる時はImage.Canvasでは描けない。
デフォルトで持ってるImage.Picture.Bitmap.Canvasにアクセスするようなものだが
JpegImage(Image.Picture.JpegImage)は編集するCanvasを持たないから。
316デフォルトの名無しさん:2005/05/24(火) 14:54:26

ディレクトリの中のファイル名を順番に出力したいのですが、
どうしたらいいでしょか?
317デフォルトの名無しさん:2005/05/24(火) 15:14:23
>>316
ファイルリスボックスを貼り付けて不可視にする。
ディレクトリプロパティに表示したいフォルダのパスを入れる。
アイテムズプロパティにアクセスして表示する。
318デフォルトの名無しさん:2005/05/24(火) 15:43:19
TStringListやFindFirstを知らない頃は
Visible:=FalseにしたTListBoxやTFileListBoxを
画面に置いてやりとりしてたなあ〜
319デフォルトの名無しさん:2005/05/24(火) 15:44:53
>>316
1.列挙する
2.ソートする
3.出力する
320デフォルトの名無しさん:2005/05/24(火) 21:11:09
faArchive$00000020
アーカイブファイルってどんなファイルですか?
321320:2005/05/24(火) 21:13:47
ぐぐって解決しました。(土下座
322デフォルトの名無しさん:2005/05/25(水) 00:49:53
http://register.borland.co.jp/regist/delphipersonal/delphipersonal.dll/
ここで、メールアドレス送信したんですが、
一体何日ぐらいで返事が、届くものなんでしょうか?
登録キーを入力する画面より先に進めずにいます。心配です。
323デフォルトの名無しさん:2005/05/25(水) 01:15:13
>>322
すぐに届く
324デフォルトの名無しさん:2005/05/25(水) 01:36:20
>>323
ありがとうございました。おかげさまで無事キーを得ることができました。
レスがなければ、あと数日待ってたかも知れません。ありがとうございました。
325デフォルトの名無しさん:2005/05/25(水) 18:04:04
すみません。質問させてください。
ファイルをダウンロードする際、レジューム機能をつけたいんですけど、何か参考になる本やサイトはありませんか?
326デフォルトの名無しさん:2005/05/25(水) 18:15:56
rfc
327デフォルトの名無しさん:2005/05/25(水) 19:27:48
RFC2068とか
328デフォルトの名無しさん:2005/05/25(水) 19:34:26
せめて2616にしとけ
329デフォルトの名無しさん:2005/05/25(水) 23:19:38
firefoxのソース
330デフォルトの名無しさん:2005/05/25(水) 23:20:16
irvine
331デフォルトの名無しさん:2005/05/26(木) 03:28:03
例えば、'notepad.exe' から 'C:\WINDOWS\notepad.exe' という
フルパスを導きだしたいのですが、
ExpandFileName はカレントフォルダをベースに、相対→絶対変換ですよね?
そうではなく、%PATH% の中から探したいのですが、
こういった場合は自分でゴリゴリ書くしかないんでしょうか?
それとも何か便利な関数はありますでしょうか?
ご教授ください。よろしくお願いします。
332デフォルトの名無しさん:2005/05/26(木) 03:31:09
>>331

よく分からないけど、'notepad.exe' が複数あったらどーするの?
333332:2005/05/26(木) 03:34:31
>>331
失敬。よく読んでなかった。
334デフォルトの名無しさん:2005/05/26(木) 03:44:18
>>331
SearchPathかな?
335デフォルトの名無しさん:2005/05/26(木) 14:10:04
質問です。
新規にwindowsのログインユーザーを作成したのですが、
Delphiを立ち上げると今までのライブラリパスやエディタ環境
全て吹っ飛んでしまいました。
この場合、再度環境の設定をやり直すしかないのでしょうか?
旧ユーザーでログインしていた際に使用されていたDelphiの環境設定の
ファイル等が存在すればそれを再利用すれば設定は簡単そうに思えるの
ですが、そのような事は可能なのでしょうか?
宜しくお願いします。
336デフォルトの名無しさん:2005/05/26(木) 14:16:05
>>335
まずやってみてから質問しれ。
337335:2005/05/26(木) 14:24:06
>>336
一応レジストリと、ユーザーを変更してるんでC:\Documents and Settingsの中身全てに
それらしい設定情報がないか探してみたのですが見つからなくて・・・・・・。
やはり一から設定し直すしかないのでしょうか・・・・。
338デフォルトの名無しさん:2005/05/26(木) 14:53:28
新規にwindowsのログインユーザーを作成した場合、
既存のDelphi環境は引き継いでくれません。
ので、既存のユーザー上でDelphi関連のレジストリデータを
ファイルに書き出しておいて、新規ユーザーに移り、
そこでさっきのファイル(.reg)を起動すればOK。
339デフォルトの名無しさん:2005/05/26(木) 15:05:00
>>338
ありがとうございます。早速試してみます。
340335:2005/05/26(木) 15:22:04
>>338
無事解決致しました!ありがとうございました。
341331:2005/05/26(木) 19:05:58
>>334
キター! 欲しかった関数そのものです!
あなたはエスパーさんですか?
ありがとうございました。m(_ _)m
342デフォルトの名無しさん:2005/05/26(木) 20:39:39
Delphi2005proを購入したのですが、
複数列の一覧表で
「項目名の押下で並べ変え」
「CTRLキー+マウスクリックで任意の複数行選択」
をゆくゆくは実現したいのですが、
最適のコンポーネントは何をチョイスすればいいでしょうか?
今まではTstringList+StringGridでやってたのですが
何かと制限がありまして。。。

343デフォルトの名無しさん:2005/05/26(木) 20:52:51
listview
344デフォルトの名無しさん:2005/05/26(木) 21:09:22
普通にTListViewじゃないの?
345デフォルトの名無しさん:2005/05/27(金) 01:15:39
>>343-344
2005ではTtableやDBgridなどという
データの取りまわしが楽そうなコンポーネントが
あるのですが(実際使ったことないので憶測です。)
やはり、TlistViewの方がいいのでしょうか?
346デフォルトの名無しさん:2005/05/27(金) 01:17:13
>>345
提示されたんだから、後は自分で決めるのが良いと思うんだが。
ダメだったら、他のを考えたら?
347デフォルトの名無しさん:2005/05/27(金) 01:28:26
>>345
Table, DBGridはデータベースに繋がってるコンポだからDB使うならあり。
ただし使い勝手はStringGridと変わらない。
それ以外の一般的な用途にはListView。
348デフォルトの名無しさん:2005/05/27(金) 07:28:16
>>343-347
回答ありがとうございます。
Listviewでできるとこまでやってみます。
ダメなら他も考えます。

345の発言は
http://www.borland.co.jp/qanda/delphi/d0005075.html
を見て、ん?と思ったからでした。Tableって外部データベースに
繋げないと使えないんですか?
349デフォルトの名無しさん:2005/05/27(金) 10:48:27
ちょっと教えていただきたいのですが

delphiで関数の別名とかって定義できませんかね?

function a(p: integer): boolean;

type
b = a: function;

みたいな感じで・・・
delphiは6です。
350デフォルトの名無しさん:2005/05/27(金) 10:54:47
type TAFunction = function(p: Integer): Boolean;
var b: TAFunction = a;
351349:2005/05/27(金) 10:57:51
>350
うお!即レスどうもありがとうございます。
できました!!
ホント助かりました。
352デフォルトの名無しさん:2005/05/27(金) 13:15:33
C:\fooをfile:///c:/fooに変換する関数ってないの?
353デフォルトの名無しさん:2005/05/27(金) 14:30:50
>>352
s := ' C:\foo';
r := 'file:///' + StringReplace(s, '\', '/', [rfReplaceAll]);
354デフォルトの名無しさん:2005/05/27(金) 15:16:01
クラスの配列ってどう定義するんですか??
てきとうにやってみても動きません

クラスの配列使ったやさしいプログラムがあれば教えて下さい
355デフォルトの名無しさん:2005/05/27(金) 15:49:42
正確に言うと定義は出きます
type
TAho = class(TObject)
nenrei :Integer;
seibetu:Integer:
private
pablic
end;

var Aho:array [0..100] of TAho;

implime...

procedure ahomaker(i:Integer);
var
j:Integer;
begin
if i=0 then
for j:=0 to 200 do
begin
Aho[j].nenrei:=1;
Aho[j].seibetu:=1;
end;
end;


これでボタン作ってAho makerを作動させると止まります。
356デフォルトの名無しさん:2005/05/27(金) 15:53:02
for j:=0 to 200 do
begin
Aho[j] := TAho.Create;   ←
Aho[j].nenrei:=1;
Aho[j].seibetu:=1;
end;
357デフォルトの名無しさん:2005/05/27(金) 16:06:46
type
TAho = class(TObject)
nenrei :Integer;
seibetu:Integer;
private
public
end;
var
Form1: TForm1;
Aho:array [0..100] of TAho;
implementation
procedure ahomaker(i:Integer);
var
j:Integer;
begin
if i=0 then
for j:=0 to 200 do
begin
Aho[j].Create;
Aho[j].nenrei:=1;
Aho[j].seibetu:=1;
end;
end;
{$R *.xfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ahomaker(0);
end;
end.
やっぱり動きません。。。。。
358デフォルトの名無しさん:2005/05/27(金) 16:07:27
var Aho:array [0..100] of TAho;
           ~~~
for j:=0 to 200 do
       ~~~
359デフォルトの名無しさん:2005/05/27(金) 16:09:23
>>356では

Aho[j] := TAho.Create;
って書いてあるのに、なんで

Aho[j].Create;
に勝手に変えるの??
360デフォルトの名無しさん:2005/05/27(金) 16:10:56
あ、動きました、ありがとうございます
361デフォルトの名無しさん:2005/05/27(金) 16:12:52
ああ、俺は何おやってるんだ
ちょっと最近ブルー続きでどつぼ嵌まってます
首つって来ます、ありがとうございましたOTL
362デフォルトの名無しさん:2005/05/27(金) 17:29:35
古いdelphi(5以前のver)ってどこで手に入りますか?
363デフォルトの名無しさん:2005/05/27(金) 17:44:17
ヤフオク
364デフォルトの名無しさん:2005/05/27(金) 21:59:38
金曜の夜になんなんですが、ちょっと質問です。ControlBar上にActionToolBarをいくつか
置いときます。
で、CustomizeDlgでいくつかのActionToolBarを非表示に変更してからActionManagerを
SaveToFileで保存してアプリを終了します。
で、アプリ起動すると、フォームのOnCreateでLoadFromFileしてるんですが、
非表示にしたActionToolBarが元に戻ってしまっています。
なんででしょう。osはwinXP,delphi7です。
365デフォルトの名無しさん:2005/05/28(土) 04:47:40
Delphi7 にて Form1 と Form2 を作り、両方自動生成するようにして、
Form1.OnShow から Form2.Show をするようにしました。

この Form2 を常に手前にしたいと考え、オブジェクトインスペクタ上で
FormStyle を fsStayOnTop に設定したのですが、
何故か常に手前に表示されませんでした。

そこで、SetWindowPos API を使って Form2.OnShow や Form2.OnActivate で
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
と書いてみましたが、やはり常に手前に来ませんでした。(SetWindowLong による WS_EX_TOPMOST も試しました)

これは何故なんでしょうか? 解決法をご教授ください。
何か基本的な事を見落としているのかとも思うのですが…
366デフォルトの名無しさん:2005/05/28(土) 08:20:19
>>365
Form2.showmodal;
じゃ駄目?よくダイアログに使われる。ただしその間Form1は入力を受け付けない、だったかな。
367デフォルトの名無しさん:2005/05/28(土) 09:19:52
>>365
べつにForm2.ShowしなくてもForm2.Visibleを最初からTrueにしとけばえんでない。
368デフォルトの名無しさん:2005/05/28(土) 10:22:27
>>365
メインフォームでならいけるから Form2でなくてForm1でTOP_MOSTするように仕様を作れない?
369デフォルトの名無しさん:2005/05/28(土) 10:33:57
>>367で良くないか?
370デフォルトの名無しさん:2005/05/28(土) 11:02:09
>>369
367は単に From2.SHowが必要なくなるといっていりうだけで365の希望のTOP_MOSTにならない
371デフォルトの名無しさん:2005/05/28(土) 11:20:16
>>365
ttp://www.asahi-net.or.jp/~HA3T-NKMR/tips003.htm
の様に Form2を作る
Form1で TForm2.CreateOwnedForm(Application, Form1);
の様にForm2を作成するとOK
Form2はプロジェクトオプションで「自動作成の対象」ではなく「選択可能なフォーム」とする。
372371:2005/05/28(土) 11:24:36
Form2では
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
をしておくこと
373デフォルトの名無しさん:2005/05/28(土) 11:25:58
おかしいな。367の言う通りにすれば俺の環境(Delphi6Per)で出来るんだがな。
374デフォルトの名無しさん:2005/05/28(土) 11:36:24
>>373
同じアプリ内ならTOP_MOSTは有効だが、いったん他のソフトにフォーカスを当てても
そのままTOP_MOSTを維持している?
375373:2005/05/28(土) 11:46:49
気のせいでした(^0^)v
376スレ違いだけど・・・:2005/05/28(土) 13:32:32
 俺の使っているフリーウェア、調べてみたら過半数が Delphi(ウィンドウクラス名だけ
で判断しているので C/C++Builder 製もあるかもしれない)で作られていた。マイナーコ
ンパイラとしては大したもんじゃなかろうか。ちなみにVBとHSPで作成されたものが1つず
つ、後はおそらくVisual C/C++Builder 製だろう。
 皆さんはどうかな?
377デフォルトの名無しさん:2005/05/28(土) 13:36:04
雑談はスレ違い
378365:2005/05/28(土) 14:46:55
皆様お答え有難うございました。
>>371 の方法で上手く行きました。完璧です。
サブフォームは複数あり、かつそのフォームの中で設定を読み込んで TOP_MOST を設定する機構だったので、
モーダルや、メインフォームから TOP_MOST というのは出来なかったのです…
出来るだけシンプルにしようとしてしまい、私の記述不足で、
お手数をかけてしまい、すいませんでした。m(_ _)m
379デフォルトの名無しさん:2005/05/28(土) 17:06:39
makeint64(hi, lo: integer): int64みたいな関数は標準でありますか?
380デフォルトの名無しさん:2005/05/28(土) 18:45:34
381デフォルトの名無しさん:2005/05/28(土) 18:46:35
MakeLParamってなかったけ
382デフォルトの名無しさん:2005/05/28(土) 19:07:43
LParam は32ビット
383デフォルトの名無しさん:2005/05/28(土) 21:36:13
tmemoとかのpopupmenuで既存の機能を生かしたまま項目を追加できますか?
384デフォルトの名無しさん:2005/05/28(土) 22:02:18
できるけど、WINAPI叩くことになる。
385デフォルトの名無しさん:2005/05/28(土) 23:12:57
>>379

あるわけないだろ。 makeint64(123,-1) をどうしたいわけ?
386デフォルトの名無しさん:2005/05/28(土) 23:22:25
>>385
makewordみたいにしたいんだろ

Int64Rec でも使って自分で作ればいいんでないの?
387デフォルトの名無しさん:2005/05/29(日) 01:49:57
integer は富豪つき
388デフォルトの名無しさん:2005/05/29(日) 02:13:13
MakeInt64(123, -1) = $0000007BFFFFFFFF
としたいのでは?
389デフォルトの名無しさん:2005/05/29(日) 02:15:53
MakeInt64(Hi, Lo: Cardinal): Int64 じゃだめなん?
390デフォルトの名無しさん:2005/05/29(日) 03:04:28
Int64も富豪つき
391デフォルトの名無しさん:2005/05/29(日) 03:09:28
TLongInteger
392デフォルトの名無しさん:2005/05/29(日) 03:23:48
>>389が要は>>386のInt64recなんじゃない?後は手作業。
ここで>>385みたいな言い方勘違い杉。
393デフォルトの名無しさん:2005/05/29(日) 09:40:00
勘違いというなら実装みせろ
394デフォルトの名無しさん:2005/05/29(日) 10:30:57
簡潔にやりたいことを言うと「マウスホイールを回したときに、
マウスカーソルの直下にあるコントロールをスクロールさせたい」
のですが・・・

Form1にMemo1, Memo2を配置して縦スクロールバーを出しておきます。
何もコーディングしないと、Memo1,2をホイールを使ってスクロールするには、
まずクリックなどでフォーカスを当ててからホイールを回さないといけません。
これをフォーカスを移動せずに(あるいは自動でフォーカスを当て)
マウスカーソルの下にあるMemoをスクロールさせたい、ということです。

TForm1でMouseWheelHandlerをoverrideしてこんなコードを書きました。

procedure TForm1.MouseWheelHandler(var Message: TMessage);
var
TargetControl: TControl;
begin
TargetControl := Self.ControlAtPos(ScreenToClient(Mouse.CursorPos), True, True);

if TargetControl <> nil then
begin
TWinControl(TargetControl).SetFocus;
end;

inherited MouseWheelHandler(Message);
end;

Memo1にフォーカスのある状態でMemo2の上でスクロールすると、1回目のスクロールではMemo1がスクロールし、
2回目のスクロール以降にMemo2がスクロールします。
(即座にフォーカスが移らないためだと思います)

改良案、または全く別の実装法はありませんでしょうか?
395デフォルトの名無しさん:2005/05/29(日) 11:17:57
>>394
こういう使い勝手の問題はアプリ側で組み込むのはやめてWIndows標準にしておいたほうが良いですよ。
使う人によって好みが違うので。
上記のような動作が好みならそのような動作をさせるマウス制御ソフトがあるのでそれを使えばよいです。
ttp://www.vector.co.jp/soft/winnt/util/se311994.html
ttp://toshi.pobox.ne.jp/software/wplus.html

ZWheelは横スクロールにも対応している。
396デフォルトの名無しさん:2005/05/29(日) 12:00:58
>>393
そのトイレ我慢してるの人のせいにするみたいな言い方どうにかなりませんか?
テンプレ嫁。
397デフォルトの名無しさん:2005/05/29(日) 12:35:12
Applicationに送られるメッセージを処理したいのですが
Application.OnMessageではSendMessageされたメッセージは拾えないようなのです
(なんでこんな仕様なんだろ?通過するメッセージ数が半端じゃないから?)

なんとかSendMessageされたメッセージも拾う方法は無いでしょうか?
398デフォルトの名無しさん:2005/05/29(日) 13:32:41
>>397
ローカルフックで拾える
399デフォルトの名無しさん:2005/05/29(日) 13:46:06
>>397
    { Private 宣言 }
  public
    function HookProc(var Message: TMessage): Boolean;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.HookMainWindow(HookProc);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.UnhookMainWindow(HookProc);
end;
400デフォルトの名無しさん:2005/05/29(日) 13:46:25
続き


function TForm1.HookProc(var Message: TMessage): Boolean;
begin
  if (Message.Msg = WM_APP) then ShowMessage('received!');
  result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendMessage(Application.Handle,WM_APP,123,456);
end;
401デフォルトの名無しさん:2005/05/29(日) 13:58:24
Applicaitonウィンドウのことか。アプリ全体のSendMessageメッセージを拾いたいのかとオモタ。
じゃローカルフックじゃなくていいね
402397:2005/05/29(日) 14:19:47
>>398-401
なるほど。こんなに簡単に・・。
恐れ入りました。
403394:2005/05/29(日) 14:38:23
>>395
その指摘はまことに正しく、反論のしようがないんですが、
それでも実装したいと言うことでお願いします・・・

ということはこれはWindowsの仕様なんですね。
VCLかもと思っていたんですが。
404デフォルトの名無しさん:2005/05/29(日) 14:50:41
>>403
ん〜じゃあ、ローカルフックでホイールのメッセージ奪い取って処理するとか。
OSの仕様である以上正攻法ではいかんわな
405デフォルトの名無しさん:2005/05/29(日) 15:32:25
WM_MOUSEWHEELはPostされるようだから、さっきの質問者とは逆にApplication.OnMessageが役に立つ鴨
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
 control: TControl;
begin
 if Msg.message = WM_MOUSEWHEEL then
 begin
  control := FindDragTarget(Point(LoWord(Msg.lParam), HiWord(Msg.lParam)), False);
  if control <> nil then
  begin
   control.Perform(WM_MOUSEWHEEL, Msg.wParam, Msg.lParam);
   Handled := True;
  end;
 end;
end;
406395:2005/05/29(日) 16:06:05
>>403
>ということはこれはWindowsの仕様なんですね。
Windowsの仕様というか・・・メッセージの処理ルーチンの中でやろうとしているからうまくいかない。
405さんの言うようにポスト処理されているので >>405 のように入り口で処理すればOKのハズ
407デフォルトの名無しさん:2005/05/29(日) 16:06:35
自身を一旦終了させ、すぐにまた自動で再起動する方法はありますか?
batファイルを使用してみたんですが、上手く行きません。他に方法はありますか?
408デフォルトの名無しさん:2005/05/29(日) 16:09:59
ShellExecute(0, PChar(ParamStr(0)), ry
Halt(0);
409デフォルトの名無しさん:2005/05/29(日) 16:15:45
>>408
ありがとうございます。
Mutexを使って二重起動を防止してるせいなのか、そのコードだと終了後に起動出来ませんでした。。
410394:2005/05/29(日) 16:15:53
>>405のコードで期待通りの動作になりました。
サンクスです。
411デフォルトの名無しさん:2005/05/29(日) 16:21:56
>>409
引数に/rebootでも渡したら
412デフォルトの名無しさん:2005/05/29(日) 16:25:28
>>411
出来ましたw ありがとうございます。
413デフォルトの名無しさん:2005/05/29(日) 19:35:38
> Mutexを使って二重起動を防止してるせいなのか、

Mutex 殺して自分を起動後、終了
414デフォルトの名無しさん:2005/05/29(日) 20:37:19
ソフトの起動を監視して一時的に
待たせて表示させたいのですが頓挫してます。
フックでWM_CREATEをとらえるとこまでは出来ましたが・・・
今のところ思いついたのは
sleep(1000)入れてみる。→やぱり駄目
SetWindowLongで非表示にしてみる。→一瞬表示される
あるとしたらやはりAPIでキチンとプロセスを一時中断させる方法しかないのでしょうか。
415デフォルトの名無しさん:2005/05/29(日) 22:22:06
キチンとしたくない訳を教えて長大
416デフォルトの名無しさん:2005/05/29(日) 22:53:29
AのフォルダにあるファイルをBのフォルダに移動させたいのですが
どうプログラムを書けばいいのでしょうか
417デフォルトの名無しさん:2005/05/29(日) 23:03:10
>>415
したくないわけじゃなくて
APIとかでの挙動の制御に詳しくないんで
正攻法なりクリアする方法なりを知りません。
418デフォルトの名無しさん:2005/05/29(日) 23:08:45
>>416
MoveFile

>>417
知らないからと別の方法を探してたら何時までたっても分らないままだろ。
そもそも正攻法も正攻法じゃないやり方も知らないんじゃん。
419デフォルトの名無しさん:2005/05/29(日) 23:19:14
例えばカーソルを監視したくてもローカルでは他の領域は無理。
Timerを使えばできないわけではないけど、グローバルフックという常套手段を使えば
目的はクリアできます。
そんな感じの詳しい方のヒントとか欲しかったんです。
420デフォルトの名無しさん:2005/05/30(月) 02:04:13
Delphi+mysqlでのデータベースプログラ民具の方法がわかりません
解説されているサイトか書籍をご存知なら教えていただけませんか
421デフォルトの名無しさん:2005/05/30(月) 02:53:09
>>417
>知らないからと別の方法を探してたら何時までたっても分らないままだろ。
>そもそも正攻法も正攻法じゃないやり方も知らないんじゃん。
どうしようもないくらい正論だなw
422デフォルトの名無しさん:2005/05/30(月) 05:08:51
今日からDelphiマスターしようとしているオイラは負け組ですか?
423デフォルトの名無しさん:2005/05/30(月) 05:10:09
>>422
「マスター」とか気軽に言ってるあたりが負け組。
424デフォルトの名無しさん:2005/05/30(月) 05:28:40
「マスター」の何がいけないんでしょうか。
論理的にお答えください。
425423:2005/05/30(月) 06:09:33
>>424
論理的に答える以前にたった23文字の文の趣旨すら理解していらっしゃらない
ようなので答える必要性を感じません。
426デフォルトの名無しさん:2005/05/30(月) 06:17:40
何かを"マスター"する事は難しいと思う。「マスターした」とか
言っている奴に限ってその気になっているだけだったりするよな。

>423はそれを遠まわしに言ってるんだと思われ。
427デフォルトの名無しさん:2005/05/30(月) 08:04:26
雑談はこちらで↓
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
428デフォルトの名無しさん:2005/05/30(月) 09:44:12
>>422
.NETがWin32を完全にリプレースするのはかなり先だし
趣味かつクライアント限定ならいいんじゃないの。
ただコミュニティが崩壊して揚げ足取りのチャンスばっかりうかがってる
出がらしのカスばっかり残ってるけどスルーしとけば無問題。
429デフォルトの名無しさん:2005/05/30(月) 10:07:06
Delphi6使用です。
QuickReportで、以下のデータを担当者毎に改ページして出力しています。
│担当者│取引先│金額│

ここで、改ページする単位毎に
頁数の表記を[現在頁/全体頁]と出力したいのですが、可能なのでしょうか?
430デフォルトの名無しさん:2005/05/30(月) 10:30:02
うはww
ここはそろいも揃ってバカだなw
質問に答えられないならそういえばいいじゃんww
431デフォルトの名無しさん:2005/05/30(月) 11:04:27
DelphiとVBでどちらが優れているのでしょうか?
聞いた話では、VBは完全なオブジェクト指向言語でGenericプログラミングもできるそうです。
Delphiもそうなんですか?
432デフォルトの名無しさん:2005/05/30(月) 11:17:33
VB と C# のどちらが優れているのか、教えてくれたら答えてあげる > 431
433デフォルトの名無しさん:2005/05/30(月) 11:36:40
基地外はスルーしろ
434デフォルトの名無しさん:2005/05/30(月) 12:05:08
Delphiにきまってんじゃん
VBはもう終わりですから
435デフォルトの名無しさん:2005/05/30(月) 12:30:18
Delphiにはジェネリクスがありません。VBに負けてます。
436デフォルトの名無しさん:2005/05/30(月) 12:31:13
DelphiってTObjectにぶち込むしかねーんだろ?だっせー。wwwwwwwwwwwwwwwwwwwwwwww
437デフォルトの名無しさん:2005/05/30(月) 13:10:53
仕事なら、いかにお金を儲けられるかです。
趣味なら、いかに楽しいかです。
従って、言語は関係ありません。
438デフォルトの名無しさん:2005/05/30(月) 13:28:25
>DelphiってTObjectにぶち込むしかねーんだろ?
そんな事はないよ。
439デフォルトの名無しさん:2005/05/30(月) 13:33:25
>>430
>>431
>>435
>>436
巣にお帰り。
440デフォルトの名無しさん:2005/05/30(月) 14:05:16
441デフォルトの名無しさん:2005/05/30(月) 14:35:02
>>419
Googleで検索
>>420
Amazonで検索
>>429
発売元に聞け
442デフォルトの名無しさん:2005/05/30(月) 15:55:58
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
443デフォルトの名無しさん:2005/05/31(火) 00:57:11
Formの位置を終了時に保存すると最大化してたらモニターサイズになっちゃうね。
みんなどうしてる?
444デフォルトの名無しさん:2005/05/31(火) 01:11:11
>>443
俺だったら
1.起動時にモニタサイズを取得
2.モニタサイズになっていたらデフォルトのサイズで真ん中に表示する
ようにすると思う。
445デフォルトの名無しさん:2005/05/31(火) 01:12:00
>>443
それは質問ですか?

オレは「TWindowPlacement」、「GetWindowPlacement」を
使ってるけど。
446デフォルトの名無しさん:2005/05/31(火) 01:18:12
>>424
マスターベーションは一人よがりになりがち。
使う人がいてこそのソフトウェアと言う事を忘れないで。
447デフォルトの名無しさん:2005/05/31(火) 01:21:21
今までは443氏っぽいのとか
モニタサイズの時は保存しないようにしてたw
GetWindowPlacementって便利そうだね。
ありがd
448デフォルトの名無しさん:2005/05/31(火) 01:23:04
間違えた。
443じゃなくて444氏の方法ね。
449デフォルトの名無しさん:2005/05/31(火) 01:55:13
フォルダをメモコンポーネントにドロップしたら
そのドロップしたフォルダの中のファイルのフルパスを全てメモに書き出したいんですが
どんなコードを書けばいいでしょうか
Delphiのバージョンは6のPersonalです
450デフォルトの名無しさん:2005/05/31(火) 02:18:18
WMDropFiles
451デフォルトの名無しさん:2005/05/31(火) 02:25:34
hoge : string;←これをプロジェクト内のユニット全てで使いたい時は
どこに宣言すれば良いのでしょうか。初歩的な質問ですみません。
452デフォルトの名無しさん:2005/05/31(火) 02:29:54
"implementation"ってヤツの上に書けば良い

unit Unit1;

interface

var
 Hoge: String; // ← ココ

implementation
453デフォルトの名無しさん:2005/05/31(火) 02:34:55
>>449
ShellAPI、WM_DROPFILES、DragQueryFile、DragAcceptFiles
あたりを検索してみてください。
454451:2005/05/31(火) 02:36:36
>>452
即レスありがとうございます!うまくできました!
455デフォルトの名無しさん:2005/05/31(火) 07:20:38
複数の静止画像(png, jpeg, pgm 等)から動画を生成するにはどうすればよいのでしょうか?
456デフォルトの名無しさん:2005/05/31(火) 08:45:42
>>449
http://lupin.client.jp/delphi/
の、
エクスプローラーからファイル名をドラッグ&ドロップで取得
にある
457デフォルトの名無しさん:2005/05/31(火) 08:50:25
458デフォルトの名無しさん:2005/05/31(火) 08:55:29
>>449
usesに ShellApi を追加。 Pirivate エリアに

procedure ReceiveDropFiles(var Msg: TWMDropFiles); Message Wm_DropFiles;

を追加。implementation エリアに

procedure TForm1.ReceiveDropFiles(var Msg: TWMDropFiles);
const
MaxLength = 1024;
var
Files, i: Integer;
FileName: array[0..(MaxLength+10)] of Char;
begin
with Msg do
begin
Files := DragQueryFile(Drop, $FFFFFFFF, nil, 0);
for i := 0 to Files - 1 do
begin
DragQueryFile(Drop, i, FileName, MaxLength);
if Memo1.Lines.IndexOf(FileName) = -1 then
Memo1.Lines.Add(FileName);
end;
DragFinish(Drop);
end;
end;

を追加。Memoを乗せているフォームの OnCreate に

DragAcceptFiles(Handle, True);

を追加。ドロップの度に追加されるのが嫌なら、ReceiveDropFiles手続きの最初に「Memo1.Clear」を入れる事。これはTStlingListで有効なのでListBoxとかにも使える。
459デフォルトの名無しさん:2005/05/31(火) 09:53:05
Memo 以外にドロップされたくない
460デフォルトの名無しさん:2005/05/31(火) 10:12:13
他のアプリケーションのアイコンを変えるにはどうすればいいですか?
461デフォルトの名無しさん:2005/05/31(火) 14:33:03
>>460
どうなるか、なら分かります。
・・・アプリ作者が悲しみます。
462デフォルトの名無しさん:2005/05/31(火) 15:05:53
>>461
確かにその人が一生懸命書いたアイコンだったら悲しむかもしれませんね・・・
でもEXEのアイコンチェンジャーみたいなのを作りたいんですよ。どうにかなりませんか・・・?
463デフォルトの名無しさん:2005/05/31(火) 15:10:44
>>460
自作のDelphiアプリで他のEXEファイルのリソースを変更するプログラムを組みたいという意味?
それとも単に他のアプリのアイコンが気に食わないから変更したいということ?
464463:2005/05/31(火) 15:14:58
ちょっと遅かった・・・
ttp://www.wilsonc.demon.co.uk/delphi.htm
にDelphi5/6/7/2005それぞれに対応したリソースコンポがあるよ。
そこそこ難易度高し・・・
465デフォルトの名無しさん:2005/05/31(火) 15:20:56
>>463
前者ですね。

>>464
英語ですか・・・ちょっと頑張ってみます。
466デフォルトの名無しさん:2005/05/31(火) 15:54:15
超低レベルかどうかわかりませんが質問です。
TOleContainerにワード文書を挿入して編集するプログラムを作成しているんですが、
最初の呼び出した時はワード文書を編集できます。
が、他にフォーカスが移動するとワードが編集できなくなってしまいます。
これってプロパティか何かで制御して常に編集できる状態にできないんですかね?
467デフォルトの名無しさん:2005/05/31(火) 16:24:20
>>455
Flashでもいいけど、より汎用性が高いのは
VideoForWindowsあたりでaviに圧縮エンコードすることかな。
確か、そんなことができるコンポーネントがあったはず。

かりになくても、自分でエンコード・クラス作るのは
そんなに難しくないよ。
468デフォルトの名無しさん:2005/05/31(火) 18:12:06
Delphi6で作成したソースをDelphi2005で修正無しであつかえますか?
469デフォルトの名無しさん:2005/05/31(火) 18:40:39
TImageのビットマップのビットレートを落とすにはどうしたら良いですか?
470デフォルトの名無しさん:2005/05/31(火) 18:53:03
>>469
TImage.Picture.Bitmap.BitRate:=???;
471デフォルトの名無しさん:2005/05/31(火) 19:54:15
ビットマップのビットレートってなに?
472デフォルトの名無しさん:2005/05/31(火) 20:12:50
Bitrateなんてあるの?俺も修行不足だな。
ビットレートとはあまり言わないかも。

色深数のことならPixelFormatでヘルプを調べるといいよ。
bmp := TBitmap.Create;
bmp.PixelFormat := pf24bit;
bmp.Height := bmp2;
bmp.Width := bmp2;
bmp.Assign(bmp2);
bmp.PixelFormat := pf8bit;
とかやれば8bitに減色されないかな?
473質問:2005/05/31(火) 20:28:40
EAccessViolationクラスの例外を生成しました。
アドレス00D5399Bでアドレス1C010ED5に対する書き込み違反が起きました。

との警告が出たのですが、何が原因でこの警告が出たのかわかりません。
どなたか教えてください。
474デフォルトの名無しさん:2005/05/31(火) 20:35:48
解放もしくは確保していないメモリに書き込んだ。

GetMemで確保した範囲を超えて書き込んだとか。
475デフォルトの名無しさん:2005/05/31(火) 20:38:42
>>474
ありがとうございました。
それを元に原因を探してみます。
476デフォルトの名無しさん:2005/05/31(火) 23:32:18
Canvas.TextOutを使って文字を描画すると、
文字の下のイメージが消えてしまいます。
なんとか文字の下のイメージはそのままに文字を描画する方法はないでしょうか?
477デフォルトの名無しさん:2005/05/31(火) 23:38:30
>>476
Canvas.Brush.Style := bsClear;
478476:2005/05/31(火) 23:42:33
>>477
うわぁ恥ずかしい。
ヘルプ見て単純に白抜きになるんだと思ってました。
こんなつまらないことに答えていただきありがとうございます。
479デフォルトの名無しさん:2005/06/01(水) 12:51:16
TImageで、画像が読み込まれているか確かめるにはどのような手段が良いでしょうか。
480479:2005/06/01(水) 12:54:06
すいません。適切なプロパティ(Empty)がありました。
481デフォルトの名無しさん:2005/06/01(水) 12:59:48
if Image1.Picture.Graphic <> nil then
ShowMessage('画像有り')
else
ShowMessage('画像無し')
482479:2005/06/01(水) 13:05:55
>>481
なるほど〜。それでいこうと思います。ありがとうございました。
483デフォルトの名無しさん:2005/06/01(水) 17:44:24
一日考えましたが、ダメでした。
TIcon.Lordfromfileでicoファイルを読み込んだあとどうすればいいか分かりません。
と言うか、他のプログラムのリソース云々が分かりません。 自身のリソースしか弄れないんですが・・
484デフォルトの名無しさん:2005/06/01(水) 17:48:32
>>483
よく英語版を日本語版にする奴いるだろ?
それと同じようにできると思うよ。
485デフォルトの名無しさん:2005/06/01(水) 17:54:36
>>484
ResourceHacker とかですよね? でも仕組みが全く分からないんですよ
486デフォルトの名無しさん:2005/06/01(水) 18:13:19
>>485
そこまで知っててまったくわからんなんてありえんだろ
487デフォルトの名無しさん:2005/06/01(水) 18:20:54
Win32 APIではリソースを読み込む方しか見つからないな。
ふつうにファイル開いて加工するしかないんじゃないかな?
488464:2005/06/01(水) 19:36:02
だからそれが出来るコンポを紹介したんだけどなあ
EXEファイルのPEヘッダの構造も理解しないといけないので
「くだすれ」のレベルではないです
489487:2005/06/01(水) 19:51:58
>>488
リンク先まで読んでなかった、スマソ
英語だからとかレスがあったので長文でリソースについて
解説してあるのかと思った。

つーか、コンポーネントの配布元が英語でもクラス名とかプロパティの名前で
だいたい使い方分かるよね・・・
ロシア語でもコードだけ拾ってヒントになったりすることもあるし
490デフォルトの名無しさん:2005/06/01(水) 20:00:23
まぁURL晒してもらったんだからある程度読まないと駄目だよな。
491デフォルトの名無しさん:2005/06/01(水) 20:14:28
禿同。
自力で調査したり英語読んだり出来ない低能はDelphiなんて使って欲しくないね。
質が下がるから。
煽り抜きでまじVBかC#やるといいよ。
答える側にも我慢の限界ってものがあるわけで
あまり安易なノリで質問して欲しくないんだよ。
質問するならまずは関連しそうなヘルプを熟読して
さらにソースの検索かけて、さらにGoogleで最低10回はキーワードを変えて試してみて
それでも駄目なら初めてここで聞く位の努力をしてもらいたい。
492464:2005/06/01(水) 20:15:47
ちなみにResourceHackerに相当するPE Resource Explorer/XN ResourceEditorというアプリも同じページにソース付であります。
興味のある方はどうぞ
493デフォルトの名無しさん:2005/06/01(水) 21:16:20
UTF-8の文字列をShift-JISに変換するにはどうしたらよいでしょうか?
494デフォルトの名無しさん:2005/06/01(水) 21:19:05
495デフォルトの名無しさん:2005/06/01(水) 22:00:54
ファイルを読み込んで、ディスク上のファイルには変更を加えずに、メモリー内でそれを別のアプリケーションに渡す事を考えているのですが、
例えば音楽ファイルを読み込んで、それを編集しつつ音楽プレイヤーに送るようなフィルターのようなソフトって難しいでしょうか?
496デフォルトの名無しさん:2005/06/01(水) 22:23:06
>>495
ファイルから読み込む。
メモリ上で編集する。
編集したデータを一時ファイルに書き出す。
クリエイトプロセスかシェルエクスキュートで一時ファイルを引数として目的のアプリを起動。
こんな流れではダメなのか。
497デフォルトの名無しさん:2005/06/01(水) 22:26:31
>>495
他のアプリから見れるってことはRAMディスクみたいなもんだから
相方も自作でないと難しいんでない?
普通にTempファイルをコピーして作る方が楽だし今時HDDもはやいし。
498デフォルトの名無しさん:2005/06/01(水) 22:29:15
ハンドルって何ですか?
499デフォルトの名無しさん:2005/06/01(水) 22:34:10
>>495
直接の答えは知らんけど
各プレイヤーのプラグインとして実装するのが手っ取り早いんじゃないの。
あとは自分でプレイヤー作るとか。そうすればバッファいじり放題。
500デフォルトの名無しさん:2005/06/01(水) 22:41:30
>>498
 クルマの方向操縦の輪。ステアリングともいう。
 ドアの把手という意味もある。
501デフォルトの名無しさん:2005/06/01(水) 22:54:13
>>495
大げさだがTCPなどで実装すれば理論上あらゆるアプリケーションと通信できるが…
502デフォルトの名無しさん:2005/06/01(水) 23:05:16
>>496
>>497
大きなファイルの場合だと時間がかかってしまうかな?と思いまして・・
でもそれが一番楽に出来そうですね。

>>499
自分で作ったとして他のプレイヤー以上の操作性とか機能を作る自信が・・・
センスも無いしorz

>>501
処理したのをストリーミングで配信みたいな感じですかね?
難しそうだけど、理想に一番近いかも
503デフォルトの名無しさん:2005/06/01(水) 23:05:26
>>495
つーか、DirectShowのフィルタがまさにそれだろ。
自分でフィルタ書いて、フィルタグラフ構築の時にそのフィルタを追加して構築する。

だが、フィルタを作るのはそこらのソフトを作るのより何十倍もむずいと思うぞ。
504デフォルトの名無しさん:2005/06/01(水) 23:40:59
すみません、おしえてください!
イベントを動的にセットする方法なんですけど、
仮に
Procedure AAA(Sender: TObject)
procedure BBB(Sender: TObject)

と2つメソッドを作っておいて、実行時に、
Button1.OnClick := AAA;
で1つ目のイベントは登録されるのですが、

C#で言うところの、
Button1.OnClick += AAA;
Button1.OnClick += BBB;
で両方ともイベントを登録できるみたいな事できないでしょうか?

なぜ、わざわざ2つメソッドをつくる必要があるかというと、
AAAはフォーム上にある十数個のコンポーネント共通の処理で、
BBBは1つのコンポーネントのみの処理だから分けているんです。
そうすれば、実際コードも見やすいと思うんですよ。。。


ちなみに、C#の方法をDelphiでやろうと思い、
Button1.OnClick := AAA;
Button1.OnClick := Button1.OnClick + BBB;
とするとコンパイルエラーでした。(そりゃそうですね。。。)

どなたか教えてください
505504:2005/06/01(水) 23:42:30
訂正です!

>C#で言うところの、
>Button1.OnClick += AAA;
>Button1.OnClick += BBB;
> .......................
>で両方とも「メソッド」を登録できるみたいな事できないでしょうか?

でした!
506504:2005/06/01(水) 23:46:12
なんどもすみません!!
>C#で言うところの、
>Button1.OnClick += new EventHandler(AAA);
>Button1.OnClick += new EventHandler(BBB);
>で両方とも「メソッド」を登録できるみたいな事できないでしょうか?

です!なんども訂正してすみません!
507デフォルトの名無しさん:2005/06/01(水) 23:46:13
無理。マルチキャストはできまへん。
508デフォルトの名無しさん:2005/06/01(水) 23:57:37
>>507

これをマルチキャストっていうんですね〜。そういえば、去年MSDNみてたら書いていたような気が・・。 orz

改めて調べたら、やっぱり無理っぽいですね。
でも、自分Delphi7使いですが、 Delphi8は対応?? [Delphi-ML:81054] Delphi 8 の言語拡張

いずれにしても、1つのメソッド内で、クラスの型と名前で個別を特定してのゴリ押ししか無さそうですね。
いままで、Delphiでマルチキャストをする程の物を作ってなかったので、今回、勉強になりました。
ありがとうです!
509Delフサギコ ◆A6VzDeLphI :2005/06/02(木) 01:24:00
|,,∧    .NETのDelphiなら
|゚Д゚彡  できんじゃねーの?
|⊂ミ   
| ミ Borland - Delphi for .NET コンパイラプレビュー
|`J  http://www.borland.co.jp/delphi/papers/dh7_comp/dh7_comp5.html

procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
 Include( Button2.Click ,MyButton1_Click);
 Include( Button2.Click ,MyButton2_Click);
end;
procedure TWinForm.Button2_Click(sender: System.Object; e: System.EventArgs);
begin
 MessageBox.Show('Button2_Click' , 'Caption');
end;
procedure TWinForm.MyButton1_Click(sender: System.Object; e: System.EventArgs);
begin
 MessageBox.Show('MyButton1_Click!' , 'Caption');
end;
procedure TWinForm.MyButton2_Click(sender: System.Object; e: System.EventArgs);
begin
 MessageBox.Show('MyButton2_Click!' , 'Caption');
end;
510デフォルトの名無しさん:2005/06/02(木) 07:19:24
ここはハイレベルなスレですね
511デフォルトの名無しさん:2005/06/02(木) 07:21:21
ハンドルって何ですか?
512デフォルトの名無しさん:2005/06/02(木) 08:00:23
韓国ブームのことです
513デフォルトの名無しさん:2005/06/02(木) 08:00:31
過去ログも読めない人は救済不可能です。放置してください。
514デフォルトの名無しさん:2005/06/02(木) 08:25:32
ハンドル
(3)プログラミングで、ポインタへのポインタのこと。
515デフォルトの名無しさん:2005/06/02(木) 09:02:37
>>511
Windows上でウィンドウを管理するための(ややこしい・・)識別番号
516デフォルトの名無しさん:2005/06/02(木) 09:18:14
inno setupでアイコンを
全ユーザーのスタートメニューに追加するか
カレントユーザーのスタートメニューだけに追加するか
を選択式にすることはできますか?
517デフォルトの名無しさん:2005/06/02(木) 09:27:56
ソースあるんだから自分で書き直せ
518デフォルトの名無しさん:2005/06/02(木) 09:36:30
最近そうゆう機能付きのインストーラーが多いので
innoにもついてるのかなと思いまして・・・
AlwaysUsePersonalGroup
という指定は見つけたのですがどうすれば選択式にできるのかが分からなくて。
519デフォルトの名無しさん:2005/06/02(木) 09:37:32
>>518
http://www.geocities.jp/mystral_kk/iskb.htm
ここあたりで探してみるとか
520516:2005/06/02(木) 09:42:07
>>519
ありがとうございます。
そこは既に見てたのですがないみたいでした。
多分英語の情報はあるんでしょうけどうまく探せないです・・・
521デフォルトの名無しさん:2005/06/02(木) 09:45:38
まあ俺もinno setupなんて今はじめて知ったわけだし
http://www.google.co.jp/search?hl=ja&q=inno+setup&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
で役に立ちそうなサイト片っ端から見ていくしかないんじゃないの?

金有るならインストールシールド
522デフォルトの名無しさん:2005/06/02(木) 09:58:18
innoは大体何でも出来ますよ。





調べるのがメンドイだけで。
523デフォルトの名無しさん:2005/06/02(木) 10:03:39
>>516
[Tasks]と[Icons]セクション使えばできそうじゃない。
524デフォルトの名無しさん:2005/06/02(木) 10:13:31
>金有るならインストールシールド

inno使い出してからインストールシールドの性能の悪さとかにヘキエキ。
innoは誤動作しないし便利。
唯一の欠点はANSIでフォルダなんかにアクセスするから、
ANSIの言語設定が壊れたWindowsではフォルダアクセス失敗する。
なんて、当たり前か。
525デフォルトの名無しさん:2005/06/02(木) 10:22:31
陰嚢?
526デフォルトの名無しさん:2005/06/02(木) 10:32:37
>>524
俺が使ったことあるのは5年以上前のバージョンだったけど
あの頃はスクリプト記述がメンドイ分細かなところまで制御できたぞ
今は違うのかな
527516:2005/06/02(木) 10:33:47
みなさんありがとうございます。

>>521
拙作のフリーソフトなんでインストールシールドは大げさかなと・・・

>>522
禿同です。

>>523
その辺でできそうですよね・・・
528516:2005/06/02(木) 11:40:49
http://news.jrsoftware.org/news/innosetup/msg44040.html
このMLのスレがそれなのかな・・・ふぅ
529デフォルトの名無しさん:2005/06/02(木) 11:43:38
そこで翻訳サイトですよ
530516:2005/06/02(木) 13:32:27
できたっぽいです。メッセージはmsiを参考にしますた。
SelectTasksLabel2の翻訳が何か違う感じ(翻訳者さんゴメソ)がしたのでついでに修正を。

[Languages]
Name: en; MessagesFile: "compiler:Default.isl"
Name: jp; MessagesFile: "compiler:Languages\Japanese.isl"
[Icons]
Name: "{code:GetGroupPath}\My Programs"; Filename: "{app}\project1.exe"
[Messages]
jp.SelectTasksLabel2=[name] インストールの追加オプションを選択して「次へ」をクリックしてください。
[CustomMessages]
en.InstallforAllUsers=&Everyone
en.InstallforCurUsers=Just &me
en.InstallforGroupDisc=Install for yourself, or for anyone who uses this computer.
jp.InstallforAllUsers=すべてのユーザー(&E)
jp.InstallforCurUsers=このユーザーのみ(&M)
jp.InstallforGroupDisc=現在のユーザー用か、またはすべてのユーザー用にインストールします。
[Tasks]
Name: InstallforAllUsers; Description: "{cm:InstallforAllUsers}"; GroupDescription: "{cm:InstallforGroupDisc}"; Flags: exclusive;
Name: InstallforCurUsers; Description: "{cm:InstallforCurUsers}"; GroupDescription: "{cm:InstallforGroupDisc}"; Flags: exclusive unchecked;
[Code]
function GetGroupPath(Param: String): String;
begin
if IsTaskSelected('InstallforAllUsers') then
Result := ExpandConstant('{commonprograms}\{groupname}')
else
Result := ExpandConstant('{userprograms}\{groupname}')
end;
531デフォルトの名無しさん:2005/06/02(木) 14:09:10
>>530
[Icons]
Name: "{userprograms}\{groupname}\My Program"; Filename: "{app}\project1.exe"; Tasks: InstallforCurUsers
Name: "{commonprograms}\{groupname}\My Program"; Filename: "{app}\project1.exe"; Tasks: InstallforAllUsers

これだけじゃダメなの?試してないけど・・・
532516:2005/06/02(木) 15:04:25
>>531
せっかくなんでinno作者(ですよね?)のコードを取り入れてみますた。
ttp://news.jrsoftware.org/news/innosetup/msg30399.html
533デフォルトの名無しさん:2005/06/02(木) 16:27:16
集合型の変数をテキストファイルに保存したいんですが、

http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=41

上にあるIntegerへのキャストはDelphi 6ではコンパイルエラーになってしまいます。
コンパイルオプションを変更してスルーする方法はあるかもしれないですが、
そういう手を使わずにやる方法はないでしょうか?
534デフォルトの名無しさん:2005/06/02(木) 16:55:02
>>533
集合型で定義している要素数によってキャストは変わります。
8個以内は Byte
16個以内は Word or Smallint
32個以内は Dword or Integer
535デフォルトの名無しさん:2005/06/02(木) 16:56:05
ウチもDelphi6 Personalだけど
>>533のリンク先にあるソースコンパイルできたよ
536533:2005/06/02(木) 19:38:31
サンクス
>>534さんの通りにByteキャストで通りました。

>>535
すいません、確認不足でした。
リンク先のコードはコンパイルできました。
が、こちらのテストコードでは集合の要素となる列挙型の定義を型の定義を
TDbit = 0..25;  ではなく
TDbit = (hoge, foo, bar ... ) としていたので
コンパイルエラーが出たようです

ありがとうございました
537デフォルトの名無しさん:2005/06/03(金) 00:10:57
オマイらどうやってdelphiそんなに出来るようになりますたか?
本読んだ?
それとも実際に自分の作りたいプログラム作成?
538デフォルトの名無しさん:2005/06/03(金) 00:18:41
実際にプログラムを作りながら勉強しましょう系の本を読む

適当に改造したりしてDelphiに慣れる

簡単な入門書を読む

Delphiを色々触ってみる

詳しい解説書を読む

漏れの場合
539デフォルトの名無しさん:2005/06/03(金) 00:20:01
>>537
俺は後者
540デフォルトの名無しさん:2005/06/03(金) 00:21:54
オレは基本的には後者だな
文法をある程度理解したら後は実践あるのみ
入門書とかのサンプルなんて、作っても全然面白くなかった
541デフォルトの名無しさん:2005/06/03(金) 00:25:13
やっぱり自分の興味のある物作った方が、やる気も吸収力も断然良いよね。
入門書だと、必要な事は全部書いてあるから、「調べる」事が覚えられない。
542デフォルトの名無しさん:2005/06/03(金) 00:29:26
〜入門な本
→ゲーム
→ツール
→ネットのTips漁る
→Delphiヘルプ、Win32APIヘルプ、MSDN等々を引くことが多くなる
→コンポーネントつくったりしてる
543デフォルトの名無しさん:2005/06/03(金) 09:58:00
Photoshop7.01やCSで作ったBitmapが読み込めないのは既出ですか。
544デフォルトの名無しさん:2005/06/03(金) 10:22:13
>>543
その読み込めないBitmapをうPしてみて
545デフォルトの名無しさん:2005/06/03(金) 10:32:40
Delphi7なんですけど、プロジェクトマネージャのツリーをソートする方法って無いんでしょうか。
546デフォルトの名無しさん:2005/06/03(金) 10:36:25
>>545
アルファベット順に自動ソートされないか?
あるいはdprファイルを直接開いて順番かえるとか
547デフォルトの名無しさん:2005/06/03(金) 10:39:35
>>544
こんなんでいいかな。
http://up.isp.2ch.net/up/56cadbeff22a.zip
548デフォルトの名無しさん:2005/06/03(金) 10:44:57
>>547
いんぽ
549デフォルトの名無しさん:2005/06/03(金) 10:46:03
つーかフルカラー32bitのbmpかよ
550デフォルトの名無しさん:2005/06/03(金) 10:52:19
そうでもないか、、、4チャンネルというのがよくわからんが
551543:2005/06/03(金) 10:54:51
ビット数には関係なく読み込めません。
552デフォルトの名無しさん:2005/06/03(金) 11:01:46
>>546
Delphi6では自動でソートされましたが、Delphi7ではソートされないようです。
dprの順序変更しかないすかね・・。
553デフォルトの名無しさん:2005/06/03(金) 11:02:53
ついでに、コード入力中に出る一覧(プロパティとか)の順序も、どうも定義順のような・・。
なんでソートされていないんだろう。
554デフォルトの名無しさん:2005/06/03(金) 11:07:39
>>551
アプリでBMPに多少の「方言」が付くことがあるんじゃないかな
バイナリエディタとBMPのフォーマットを見比べれば分かると思うけど
1バイトでもフォーマットに反していればDelphiはBMPとして認識しないだろう
555544:2005/06/03(金) 11:09:00
ほんとですね・・・知らなかった
TNkDIBで読んでみたらOKでした。
とりあえず 'bmp'の処理もnkdibでさせるというのはどうでしょう
OpenPictureDialog等でもサポートさせたい場合は
nkdib.pasのInitializationで dib を登録しているところに同じように 'bmp'も追加してあげればよいです
556デフォルトの名無しさん:2005/06/03(金) 13:17:33
> 1バイトでもフォーマットに反していればDelphiはBMPとして認識しないだろう

いやいや、Delphi の TBitmap が手抜きしてるんだよ。
557デフォルトの名無しさん:2005/06/03(金) 13:23:12
XMLパーサーありませんか?
558デフォルトの名無しさん:2005/06/03(金) 14:29:53
559デフォルトの名無しさん:2005/06/03(金) 19:02:20
560デフォルトの名無しさん:2005/06/03(金) 19:27:38
キモはAPIだから言語には依存しないんじゃない?
561デフォルトの名無しさん:2005/06/03(金) 19:54:34
フォルダ内のアイコンの位置を取得・設定することってできますか?
562デフォルトの名無しさん:2005/06/03(金) 19:58:20
>>561
何そのアイコンの位置って。
563デフォルトの名無しさん:2005/06/03(金) 20:02:10
エクスプローラ上のファイル/フォルダのアイコンの表示位置?
564デフォルトの名無しさん:2005/06/03(金) 20:09:49
>>563
はい。
565デフォルトの名無しさん:2005/06/03(金) 21:20:07
>>561>>564
マルチ氏ね。
566デフォルトの名無しさん:2005/06/03(金) 21:38:49
マルチ氏ってなんです?
567ななしへたぐらま ◆XcB18Bks.Y :2005/06/03(金) 22:52:21
>>534
細かいことですがintegerは避けてLongWordとしたほうがよいでしょう.

Delphiではintegerは32ビット環境では32ビット整数ですが,
Delphi初代の16ビット環境では16ビット整数です.
今後出るであろう64ビット版では64ビット整数になることは十分に考えられます.
(cardinalも同様です)

またそうならなかったとしても扱うデータの長さが明確に決まっているときは
それが一目でわかるようにしておくのが得策です.

#ちなみに本来のPascalではintegerは16ビット整数みたいです.
568デフォルトの名無しさん:2005/06/03(金) 23:13:23
String型配列内の、ある文字列が存在するIndexを得たいのですが方法がわかりません
posじゃできませんか
569デフォルトの名無しさん:2005/06/03(金) 23:17:49
>>568
Stringの配列ではなくてTStringListに入れてIndexOfを使えば。
570デフォルトの名無しさん:2005/06/03(金) 23:18:05
>>568
TStringList を使った方がいいと思うけど…
普通に考えれば StrArray を string 型配列、見つけたい文字列を Sub として

for i := Low(StrArray) to High(StrArray) do
 if AnsiPos(Sub, StrArray[i]) <> 0 then
 begin
  // i が Sub を持つ文字列のインデックス
 end;
571デフォルトの名無しさん:2005/06/03(金) 23:25:54
 ちょっと必要があってメインフォームの TreeView のデータをサブフォームの
TreeView にコピーしてそこから改めてデータを(この場合文字列)をとる必要があって以
下のようにしたのですが OK ボタンをクリックした場合はうまくいくのですが、サブフォ
ームの TreeView をクリックしたとき、エンターキーを押したときうまくいきません。
 ChildForm には Ok ボタンと Cancel ボタンを貼り付けそれぞれの ModalResult に
mrOk と mrCancel を設定してあります。

 ChildTree.Items.Assign(Form1.TreeView1.Items);
 ChildTree.Items[i].Data := Form1.TreeView1.Items[i]; という関係
572デフォルトの名無しさん:2005/06/03(金) 23:26:15
>>568
AnsiIndexStr / AnsiIndexText
573571& ◆6HGqJl7TD6 :2005/06/03(金) 23:27:19
class function TChildForm.Execute(var S:string): Boolean;
var
 Node: TTreeNode;
begin
 Result := False;
 with TChildForm.Create(Application) do
 begin
  try
   if ShowModal = mrOk then
   begin
    Result := True;
    Node := TTreeNode(ChildTree.Selected.Data);
    S := TNodeData(Node.Data).ItemStr; //TNodeDataは独自のクラス
   end;
  finally
   Free;
  end;
 end;
end;
574デフォルトの名無しさん:2005/06/03(金) 23:27:31
あーごめん。部分文字列なのかな。
575571続き:2005/06/03(金) 23:27:51
procedure TChildForm.FormKeyPress(Sender: TObject; var Key: Char);
begin//これがダメ
 if key = Chr(27) then
 begin
  key := Chr(0);
  ModalResult := mrCancel;
  Close;
 end else if key = Chr(13) then
 begin
  key := Chr(0);
  ModalResult := mrOk;//メインフォームでこれが反映されない
  Close;
 end
end;

procedure TChildForm.ChildTreeDblClick(Sender: TObject);
begin//これもダメ
 ModalResult := mrOk;//メインフォームでこれが反映されない
 Close;
end;
576デフォルトの名無しさん:2005/06/03(金) 23:31:49
とりあえずマジックナンバーはやめようよ
577デフォルトの名無しさん:2005/06/03(金) 23:44:52
>>571
ModalResult設定したあとCloseしてるからだよ。ModalResultは設定するだけでフォーム閉じるよ。
578デフォルトの名無しさん:2005/06/03(金) 23:50:29
>>569>>570>>572
AnsiIndexTextで解決しましたありがとう
579571:2005/06/04(土) 00:14:23
>>577
 おお、そうなんだ。サンクス!
580デフォルトの名無しさん:2005/06/04(土) 00:29:36
>>567
> 今後出るであろう64ビット版では64ビット整数になることは十分に考えられます.

いや、32ビットのままです。
581デフォルトの名無しさん:2005/06/04(土) 00:48:38
アプリが起動した瞬間から時間をカウントして
ちゃんと時計みたいに表示させたいんですが
どうプログラムを書けばいいのでしょうか?
582デフォルトの名無しさん:2005/06/04(土) 00:59:59
時間はカウントするものではありません。ストップウォッチと時計とは別の機能。
どっち?
583デフォルトの名無しさん:2005/06/04(土) 01:07:14
GetTickCountの差でミリ秒を取得
584581:2005/06/04(土) 01:36:09
>>583
できました。
ありがとうございます。
585デフォルトの名無しさん:2005/06/04(土) 04:05:47
カウントアップの危険。Now の差を推奨
586デフォルトの名無しさん:2005/06/04(土) 04:52:23
TabNode.Tabs('色を変えられないか')
タブコントロールのタブの文字列の色を変えられないでしょうか?
TabNode.Font.Color := clBlue;
ではだめでした。
587デフォルトの名無しさん:2005/06/04(土) 08:46:55
iTuneの様なフォームにしたいんですが・・・
588デフォルトの名無しさん:2005/06/04(土) 10:18:37
>>586

OwnerDraw を True にして

procedure TForm1.TabControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  with TabControl1.Canvas do
  begin
    Font.Color := clRed;
    TextOut(Rect.Left+5, Rect.Top+5, TabControl1.Tabs[TabIndex]);
  end;
end;
589デフォルトの名無しさん:2005/06/04(土) 18:01:27
>>587
釣りかな?
マジレスしておくと、iTuneの様にではなくて、何をどうしたいのかを具体的に書き出してみるといいよ。
そうすれば自力で実装できることと調べればわかりそうなこととどこから調べたらいいのかわからないことがはっきりする。

590586:2005/06/04(土) 18:19:18
>>588
 ありがとう。うまくいきました。
591デフォルトの名無しさん:2005/06/04(土) 18:25:28
すいません
フォームにButtonをおいてKeyDownイベントに

procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ShowMessage('押されたよ');
end;

を記述したんですが
カーソルキー押下したときはイベントが発生しないのですがそんなもん何でしょうか?

<(_ _)>
592591:2005/06/04(土) 18:29:10
今、ふと思ったのですが・・・
Buttonのコントロールってカーソルキーで移動できるんですね
なのでカーソルキーを押したときはイベントが発生しないのでしょうか
593デフォルトの名無しさん:2005/06/04(土) 18:31:29
594デフォルトの名無しさん:2005/06/04(土) 18:32:32
Formで受け取ってif ActiveControl=Button1 thenで処理するとか
595593:2005/06/04(土) 18:35:11
596591:2005/06/04(土) 18:57:24
ありがとうございます

593のページはちょっと難しいです
WM_KEYDOWNのメッセージがButtonコントロールまで、とどかないみたいですね
これは直接WM_KEYDOWNのメッセージをとって・・・・処理なのかな

やりたかったことは
EditとかComboboxとかのコントロールの移動をカーソルキーで移動させたかったのです
EditやComboboxはうまくいったのですがFormにPanelを2つ置いて1つにはEditとComboboxを置いて
もう一つのPanelにButtonを置いてみてカーソルキーで移動させるとButtonのところで次のコントロール
にカーソルキー移動しなくなりました


594
の方法もよくわからないですけどActiveControlってのでHelpを引きながら考えてみます

595のホープページでPanelがでてきたので おぉーーと思ったんですけど
なんのことか理解できないです

あぁわからないことだらけ _(_ _)ゞ
597591:2005/06/04(土) 18:58:41
すみません
ありがとうございました
598ななしへたぐらま ◆XcB18Bks.Y :2005/06/04(土) 20:26:15
>>553
[Ctrl]+[Space]で出てくるやつならこれを右クリックしてみてください.
(昔niftyで見た情報の受け売りですが)

>>580
あららそうなんですか.情報ありがとうございます.

>>591,592,596
●アクションリストを使う方法.

・フォームにアクションリストコンポを置いてダブルクリック.
・ダイアログが出てくるので[Insert]キーかダイアログ上部左端の追加ボタンを押す.
・アクションオブジェクトが追加されるのでオブジェクトインスペクタで…
 ・Nameプロパティを適当な名前に変える(ここでは"DownKeyAction"とした)
 ・ShortCutプロパティに Down をセット
 ・OnExecuteをダブルクリックしてイベントハンドラを記述.以下は例.

procedure TForm1.DownKeyActionExecute(Sender: TObject);
begin
 { Button1にフォーカスがあるときだけ処理を行う }
 if ActiveControl = Button1 then
  ShowMessage('↓キーが押されたぜ!');
end;
599デフォルトの名無しさん:2005/06/04(土) 20:46:13
ボタンやチェックボックスにフォーカスが残らないようにするにはどうしたらよいですか?

ボタンクリックなどのイベントが走った後に
ActiveControl := nilの状態にしたいのです。
600ななしへたぐらま ◆XcB18Bks.Y :2005/06/04(土) 21:37:33
>>599
どこにもフォーカスが残らないとまずいので
(キーボードで操作しているユーザーは困ると思う)
Edit1.SetFocus とか,ComboBox1.SetFocus とかでほかのコンポにフォーカスを移しては?
601599:2005/06/04(土) 21:43:31
>>600
ああ、なるほど。すごい説得力です。
そうかキーボードユーザーとかまで考えてなかった。
どおりでプロパティでフォーカスが残らない設定にできないわけだ・・。
602デフォルトの名無しさん:2005/06/05(日) 00:35:30
PaintBoxに描画されているものを、保存する方法は無いのでしょうか?
603デフォルトの名無しさん:2005/06/05(日) 00:58:41
>>602
TPaintBox.CanvasがあるんだからTBitmapにでもコピーして保存すればいいだけじゃ?
604デフォルトの名無しさん:2005/06/05(日) 00:58:48
>>602
TBitmap作って、Canvas間でCopyRectしてSaveToFile
605デフォルトの名無しさん:2005/06/05(日) 02:29:41
PaintBoxではなくて、TBitmapへ描画すれば良いのでは?
606デフォルトの名無しさん:2005/06/05(日) 11:53:04
CommandExec(Command: String; Stdin, Stdout, Stderr: TStrings);
くらい簡単なライブラリないっすか?
607デフォルトの名無しさん:2005/06/05(日) 12:13:02
ある
608デフォルトの名無しさん:2005/06/05(日) 17:45:35
DelphiXのTDirectDrawOverlay使ってるんだけど、
CUP使用率がいやに高いんだけど。

PaintBoxにDivX動画出力時:20〜30%
オーバーレイ使用時:60%〜
縮小を伴うとき:〜100%(コマ落ち発生)

まあ、自分のRGB->YUV変換のコードがダメなのはいいとして、
縮小したとき、なんでCPU使用率が上がるんだろう?
あれってビデオカード内で処理されるんじゃなかったっけ?

TDirectDrawOverlayの使い方って、どこかに出てないでしょうか?
609デフォルトの名無しさん:2005/06/05(日) 18:30:32
改行コードで区切られた文字列のx番目の文字列を返す関数ってありますか?
要するにTStringList.Strings[x]と同じようなものなんですけど

CmdLineとかで結局需要がありそうだからあるかなーと思って探してみたものの見当たらない。
ないなら自分で作るつもりですが、Delphi付属のルーチンが既にあるなら
そっちの方が性能がいいだろうと思いまして
610デフォルトの名無しさん:2005/06/05(日) 18:37:20
>>609
普通にTStringList.Textに代入ってのは駄目なん?
611デフォルトの名無しさん:2005/06/05(日) 18:40:35
>>608
DelってDirectShowつかえんの?
612609:2005/06/05(日) 18:47:39
>>610
文字列1個取り出したいだけなんで
わざわざTStringListまで持ち出すのはなんか仰々しいというか大げさというか
613デフォルトの名無しさん:2005/06/05(日) 18:49:36
>>612
じゃあ無理。x, x+1の座標自前で検索して間を切り出すしかない
614デフォルトの名無しさん:2005/06/05(日) 19:07:45
 TStringListがいやなら作ればいいのじゃないかな。
 改行コード、全角文字、半角文字をチェックするだけでいいから大して
手間もかからない。
615デフォルトの名無しさん:2005/06/05(日) 19:35:54
>>612
TStringListのソースみりゃいいやん
616デフォルトの名無しさん:2005/06/05(日) 19:37:09
最近の子は標準or他作の関数がないとプログラム組めんの?
617デフォルトの名無しさん:2005/06/05(日) 19:41:09
自分で作るけど、既にあるなら使うって言ってるじゃん。
618デフォルトの名無しさん:2005/06/05(日) 19:42:31
標準の関数の一覧リストとかリファレンスマニュアルとかどこにあるの?
619デフォルトの名無しさん:2005/06/05(日) 21:16:58
探してる時間に自作した方が早いかも(笑)
620608:2005/06/05(日) 21:24:22
>>611
使えるんじゃないの? 結構有名なDSPackってあるし。


ただ、ここではDirectDrawなんだが・・・

DelphiXって開発終了だから、資料がなくて困る。
TDirectDrawOverlayの使い方については、
同梱のHelpを含めて、使い方がまったく書かれてない。

ただ、堀さんが以前、TMpegEncでDelphiXのオーバーレイと
DirectSoundは使ってるって言ってたから、使い方次第では
正常に動作すると思うんだけど。

ここ1、2週間、この問題で頭が煮詰まってしまった・・・
621デフォルトの名無しさん:2005/06/05(日) 22:55:44
ヘルプ->VCLリファレンス->ルーチン一覧(カテゴリ別)
をまづは見ろ
というのはFAQだな
622デフォルトの名無しさん:2005/06/05(日) 23:42:02
画面の行き来や検索がバカみたいに面倒なんだけど、それ。
他の言語みたいにオンラインのマニュアルないの? アホらしくてやってられないよ。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/
http://www.python.jp/doc/release/lib/lib.html
http://www.ruby-doc.org/core/
623デフォルトの名無しさん:2005/06/05(日) 23:44:46
ハイ次。
624602:2005/06/06(月) 00:17:33
>>603
保存することが出来ました。
ありがとうございます。
625602:2005/06/06(月) 00:18:40
>>604-605
失礼しました。
ありがとうございます。
626デフォルトの名無しさん:2005/06/06(月) 14:15:54
データベースの日付型項目をTDBEditを使って入力しているのですが、
2006/13/32 といった変な日付を入力するとDelphiのエラーが出て
プログラムが終了してしまいます。

変な日付が入力された時は、再入力させたいのですが、
どうすればよいのでしょうか

超初心者ですが、よろしくおねがいします。
627デフォルトの名無しさん:2005/06/06(月) 14:53:22
>>626
try〜exceptで例外を拾って再入力を促すメッセージ表示すればいいんじゃないの
628デフォルトの名無しさん:2005/06/06(月) 15:40:33
>>627

どのイベントに書けばいいか、わからないです
(´・ω・`)ごめんなさい
629デフォルトの名無しさん:2005/06/06(月) 15:54:13
onChangeかonExitかな
630デフォルトの名無しさん:2005/06/06(月) 16:23:55
>>629

ありがとうございます、エラーでなくなりました。
これから、エラーが出た時に、どうするか色々と勉強してみます。
631626:2005/06/06(月) 17:03:09
何度もすいません
エラーが出なくなったのですが、エラーチェックのタイミングを
入力→Tabキー→(このタイミングでチェック)→次の項目
としたいのですが

OnChangeイベントでは、1文字入力ごとにイベントが発生してしまい
OnExitでは、チェックの前にDelphiのエラーが表示されます
「'2005/05/41'は日付または時刻ではありません 」

どうすればいいでしょうか (つ∀`)
632デフォルトの名無しさん:2005/06/06(月) 17:58:06
>>631
直接TDBEditに入力するのではなくて、TDBEditの上に普通のTEditを表示して
入力された文字が正しいかコードでチェックしてからDBコンポーネントに渡すようにしたらどう?
633デフォルトの名無しさん:2005/06/06(月) 19:01:12
OnValidateイベントを使え
634デフォルトの名無しさん:2005/06/06(月) 20:22:34
TListBoxで特定の文字列を含むアイテムを自動で選択したいのですがどうすれば良いのでしょうか。
例えば「hoge1,hoge2,hoge3の3つの文字列を全て含む場合そのアイテムを選択する」という風にしたい
のですが。どうかよろしくお願い致しますm(_ _;)m
635デフォルトの名無しさん:2005/06/06(月) 20:42:17
>>634
procedure TForm1.Button1Click(Sender: TObject);
var
 i : Integer;
begin
 for i := 0 to ListBox1.Count do
 begin
  if (pos('hoge1',ListBox1.Items[i])<>0)
   and
   (pos('hoge2',ListBox1.Items[i])<>0)
   and
   (pos('hoge3',ListBox1.Items[i])<>0)
  then ListBox1.Selected[i] := True;
 end
end;
こんな感じかな。どういう実装をしたいのかが今ひとつ不明なのではずしているかもしれません。
636デフォルトの名無しさん:2005/06/06(月) 20:44:03
とりあえずPosはやめとけ
AnsiPosにしとけ
637デフォルトの名無しさん:2005/06/06(月) 21:28:12
グラフとか使うにはどうするんですか?
638デフォルトの名無しさん:2005/06/06(月) 21:32:45
Use The 'TCart' !
639634:2005/06/06(月) 21:35:53
なるほど(゚_゚;)ありがとうございます。
640デフォルトの名無しさん:2005/06/06(月) 22:11:08
TChartじゃないの?と言ってみるテスト
641631,626:2005/06/06(月) 22:59:30
>>632 >>633
OnValidateイベントをようやく発見できました

とりあえず、イベントのタイミングを調べるため
ShowMessage('通ったよ');
と書いてみたのですが、
日付のエラーの時は、Delphiのエラーが先に表示されました
( ´Д⊂

642ななしへたぐらま ◆XcB18Bks.Y :2005/06/06(月) 23:25:50
>>635
× for i := 0 to ListBox1.Count do
○ for i := 0 to ListBox1.Count - 1 do
単なる書き忘れだと思いますが重要ですので.
643634:2005/06/06(月) 23:33:04
>>642
わざわざありがとうございますm(_ _)m
一応その部分は修正して利用させていただいておりました(^^)v
644デフォルトの名無しさん:2005/06/06(月) 23:41:41
>>640
いちばんやすくTChart使えるのはいくらですか??
645デフォルトの名無しさん:2005/06/07(火) 02:29:04
このスレでいいのかわかりませんけど、質問します。

Cでいうところの__DATE__マクロに相当する機能ってないですか?
コンパイルした日付をexeに埋め込んでくれるような機能です。

PEヘッダにコンパイル日時のフィールドがあるんですが、Delphi6でコンパイルした
ものは、一定値($2a425e19)が埋め込まれてしまうようです。
bcb6では、コンパイル日時がちゃんと入るんですが。
646デフォルトの名無しさん:2005/06/07(火) 02:52:11
>>644
MSChartを頑張って使えばいいと思うよ
647デフォルトの名無しさん:2005/06/07(火) 04:12:37
{$IFDEF WIN32} や {$APPTYPE CONSOLE} ってなに?
せめて名称だけでも分からないと調べようがない orz
648デフォルトの名無しさん:2005/06/07(火) 04:16:10
じゃあ コンパイラ指令 で調べな
649デフォルトの名無しさん:2005/06/07(火) 04:39:19
>>647
え・・?
650デフォルトの名無しさん:2005/06/07(火) 10:20:39
間隔ツールバーの使い方を教えて下さい
「ボタン1」 「ボタン2」
これを
「ボタン1」「ボタン2」
とピッタリくっつけたいときは、どうすればいいですか?
651デフォルトの名無しさん:2005/06/07(火) 10:32:48
できない
652デフォルトの名無しさん:2005/06/07(火) 10:53:19
安定、安定でない両方でそれなりにチューニングされたソートライブラリがあったら教えてください。
653デフォルトの名無しさん:2005/06/07(火) 10:56:19
BCB/STL
654デフォルトの名無しさん:2005/06/07(火) 11:07:45
Delphiで使える物をお願いします
655デフォルトの名無しさん:2005/06/07(火) 12:56:03
デルファイってどこでダウンロードするの?
無料なの? 使い方のお勧めサイトあります?

おねがいします。
656デフォルトの名無しさん:2005/06/07(火) 13:17:50
657デフォルトの名無しさん:2005/06/07(火) 13:30:55
次のデルファイはいつ出るファイ?
658デフォルトの名無しさん:2005/06/07(火) 13:41:23
実行するとTPopupMenuのCaptionの後ろに()でアルファベットが
ついてウザイんですけどこれってどうやって消すのでしょうか?
659デフォルトの名無しさん:2005/06/07(火) 13:42:53
>>658
Auto・・グフッ・・・
660658:2005/06/07(火) 13:54:00
>>659
TPopupMenuのAutoHotKeysをmaManualにするんですね!
追加した個別メニューのそれを変えても変化なかったもんで
とまどってしましました。ありがとうございました!
661デフォルトの名無しさん:2005/06/07(火) 15:27:42
662デフォルトの名無しさん:2005/06/07(火) 16:54:55
>>656 有難うございました

デルファイ初めてダウソしてインスコしたんだけど
デスクトップにもスタートのとこにもなんも出ないよ

どこにデルファイのプログラム入ってんですか?
あと段階的に教えてくれてるサイトもキボンヌ
663デフォルトの名無しさん:2005/06/07(火) 17:55:42
まず、パソコンについて学ぶべきでは?
664デフォルトの名無しさん:2005/06/07(火) 17:57:09
スーパーハカーに対してなんてことを
665デフォルトの名無しさん:2005/06/07(火) 18:24:40
>>662
シー コロン エンマーク プログラムファイルズ エンマーク ボーランド エンマーク デルファイロク くらいにはいっているはずなんだが。
666デフォルトの名無しさん:2005/06/07(火) 18:28:01
/usr/local/borland/delphi6/bin/じゃ?
667デフォルトの名無しさん:2005/06/07(火) 18:31:48
コンパイルコマンドを勉強かな。

$ ls
 test.pas

$ dcc test.pas
 
$ chmod 777 test

$ test
 hellow Delphi World!

という感じ。
668デフォルトの名無しさん:2005/06/07(火) 18:33:43
雑談とネタはフサスレで
669デフォルトの名無しさん:2005/06/07(火) 18:47:37
Opendialogでディレクトリ指定ってどうやるのでしょうか?
開いてしまうんですけど。。
670デフォルトの名無しさん:2005/06/07(火) 18:48:59
>>669
プロパティを見てください。
671デフォルトの名無しさん:2005/06/07(火) 18:58:29
フォルダを開きたいって意味じゃないのか?
その場合、SHBrowseForFolderを使えば良い
APIが嫌ならFolderDialogでググレばコンポが見つかる
672デフォルトの名無しさん:2005/06/07(火) 19:21:30
>>662
スタートメニューにショートカットがあると思うが・・・
実体はProgram Files\Borland\Delphi6\Bin\Delphi32.exeかな(たぶん)

> あと段階的に教えてくれてるサイトもキボンヌ
http://onigiri.s3.xrea.com:8080/delphi/index.php?cmd=read&page=%A5%EA%A5%F3%A5%AF%2F%A4%BD%A4%CE%A3%B1#content_1_6
673669:2005/06/07(火) 19:31:05
すみません。Ver書くの忘れてました。DELPHI2005です。
>>670
プロパティのどこですか?optionsのどれかですか?

>>671
SHBrowseForFolderでググってみます。
正直。。もっと簡単にはできないんですよね?


674デフォルトの名無しさん:2005/06/07(火) 19:32:46
>>673
GoogleでTSelectFolderDialogを検索汁
675669:2005/06/07(火) 20:33:45
>>673
ありがとうございます。まさにこういうのが欲しかったんです!
ってダウンロードしたんだけど、2005非対応みたい??
readmeにコンポーネントのインストールって書いてあるけど
2005にはコンポーネントのインポートしかみあたらないんですよね。。
で、聞いてくるファイルもpasじゃなくてdllだったりして
全然わかりません(笑)パッケージとかはdpkってファイルで
できるみたいですけど。どなたか教えてください。
676デフォルトの名無しさん:2005/06/07(火) 20:38:22
2005 つかうのが悪い
677デフォルトの名無しさん:2005/06/07(火) 20:40:39
簡単なのキボンならSelectDirectoryでいいんでない
678デフォルトの名無しさん:2005/06/07(火) 20:41:44
うんだなぁー
679デフォルトの名無しさん:2005/06/07(火) 21:23:40
>>675
Delphi2005のコンポーネントのインストールについては
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/CompInstall.htm
680669:2005/06/07(火) 21:23:44
>>676>>678
うう。2005は購入しちゃダメだったの?(+_+)
>>677
OpenDialogっぽいのがよかったんです。実は
ofAllowMultiSelecにして任意のファイルとフォルダを
tstringで取得できたらなーと思ってたので。
README呼んだ限りではTSelectFolderDialogが
近かった気がするんだけどなー。あきらめます。。。
681デフォルトの名無しさん:2005/06/07(火) 21:27:32
作りたいもののイメージが固まってるなら自作ですよ。
Delphiはそれができる言語です。
682デフォルトの名無しさん:2005/06/07(火) 21:48:35
>>681
自作できるならここで聞かないでしょ。
683デフォルトの名無しさん:2005/06/07(火) 21:49:05
> 任意のファイルとフォルダをtstringで取得できたらなーと思ってたので。

TOpenDialog で何が不足なの?
684デフォルトの名無しさん:2005/06/07(火) 21:49:42
function FileCtrl.SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;

685デフォルトの名無しさん:2005/06/07(火) 22:07:21
>>680
ドライブコンボボックスとディレクトリリストボックスあたりで自作したほうがわかりやすいんじゃないか?
686669:2005/06/07(火) 22:13:19
>>681
イメージは固まってるんだけどもがいてまーす(笑)

>>683
ファイルは取得できるけどディレクトリが取得できなくないですか?
たとえば、1つのディレクトリを選択したいんだけどボタン押すと
選択されないで開いちゃうんですよね。

>>684
SelectDirectryですよね???

2005でのコンポーネント作成について調べて見ます。。
687デフォルトの名無しさん:2005/06/07(火) 22:18:36
>>686
ShellListView使えば良くない?
688デフォルトの名無しさん:2005/06/07(火) 22:19:37
>>686
OpenDialogで選択されたファイルにExtractFilePathかけるんだっけ?
漏れは経験無いけど、そうやってディレクトリ選択ダイアログに代用してる人が居るって聞いたことがあるよ。
689デフォルトの名無しさん:2005/06/07(火) 22:19:43
ThreadからVCLコンポーネントを使う場合は、スレッドのローカルで生成したとしても
Synchronizeを使用するという話ですが、VCLコンポーネントっていうのは具体的に
何を指すんでしょうか?コンポーネントパレットにあるもの?それともクラスすべて?

例えば、TStringListとかTBitmapとかは、使う時にSynchronizeする必要は
あるんでしょうか?
690デフォルトの名無しさん:2005/06/07(火) 22:26:40
そのスレッドだけでつかうんならSynchronizeする必要ない。
メッセージ処理が必要ないものは Synchronize しても意味無いし。
691デフォルトの名無しさん:2005/06/07(火) 22:30:30
メインスレッドや他のスレッドからアクセスされる可能性がゼロでないなら Synchronizeする必要がある。
また、例えば TStringList を Form1.Memo1.Lines.Assign() などで使う場合は、そのときだけ
Synchronizeするばいい。要は、他スレッドに割り込むときは、どんな場合も Synchronizeする必要がある。
692デフォルトの名無しさん:2005/06/07(火) 22:32:53
ListViewを弄りたいと思い、SendMessageでLVM_***系のメッセージを送ろうとしたんですが、
未定義の識別子 : 'LVM_***'
とでてきます。

usesに何か足りないんだと思いますが、何が足りないんでしょうか?
693デフォルトの名無しさん:2005/06/07(火) 22:34:26
uses
CommCtrl;
694デフォルトの名無しさん:2005/06/07(火) 22:35:57
Grep の使い方を覚えてソースや *.int を見る習慣を付けるといろいろ便利だよ
695デフォルトの名無しさん:2005/06/07(火) 22:37:30
今ならDel6perの人でもただでClasses.pasダウンロードできるよ。
696デフォルトの名無しさん:2005/06/07(火) 22:38:03
>>693
できました。
CommCtrlだったんですね。
Messagesだと思ってました。
697デフォルトの名無しさん:2005/06/07(火) 22:38:39
そうなんだよな(笑)
パッチにソースが付くなんて某らしくておもしろい
698デフォルトの名無しさん:2005/06/07(火) 22:45:21
>>690>>691
レスどもです。
すると、俺が挙げた例以外でも、VCLコンポーネントだろうとメッセージ処理の絡まないプロパティとかであれば
Synchronizeしなくても実は問題ないって事ですかね?
699デフォルトの名無しさん:2005/06/07(火) 22:54:34
> メッセージ処理の絡まないプロパティとかであれば

これ、絡むかどうか見極めるのは結構面倒だけど、確信できるならそのとおり
700デフォルトの名無しさん:2005/06/07(火) 22:55:28
追記

そのプロパティーには他スレッドはアクセスしない、という条件がつくけど
701デフォルトの名無しさん:2005/06/07(火) 22:56:40
メッセージ処理は直接関係ねーだろ
702669:2005/06/07(火) 23:01:05
>>687
ShellListViewでhelp検索しても何もでてこないけど
あとで調べてみます!

不評の2005で
新規作成-パッケージ
プロジェクトに追加で
ttp://hp.vector.co.jp/authors/VA029585/VCL/SelectFolder/index.html
からダウンロードしたPasファイルを指定。
プロジェクトマネージャーの右クリックでインストール
ツールオプション-ライブラリパスにダウンロードしたフォルダを指定
DELPHIを再起動(保存しなくてもいいみたい)
とやったらコンポーネント(dialogにいるよ)追加できました!
こういう使い方は作者さんに言わなきゃ怒られるのかなー?
で、、、
ふつーに動いたけどshowmodalで表示したフォーム上では
ダイアログがでてこないよー(笑)
でもできたので皆さんありがとです![解決]
703デフォルトの名無しさん:2005/06/07(火) 23:04:29
> メッセージ処理は直接関係ねーだろ

そうだね。Synchronize がメッセージ処理を同期する、という意味では、アクセス相手が
メッセージ処理をするかどうかは関係あるけど。
704デフォルトの名無しさん:2005/06/07(火) 23:07:24
Synchronizeの使いどころとは関係ねーだろ
705デフォルトの名無しさん:2005/06/08(水) 05:19:43
>>704
で、Synchronizeの使いどころとは関係あるのは何?
706デフォルトの名無しさん:2005/06/08(水) 15:06:16
Opendialogについて教えてください。
InitialDirプロパティて指定した場所から、移動
出来ないようにしたいのですがどうしたら良いですか?

707デフォルトの名無しさん:2005/06/08(水) 18:11:54
それは難しい。自前でダイアログ作ったほうが簡単
708デフォルトの名無しさん:2005/06/08(水) 18:18:22
FileListBoxもあるでよ
709デフォルトの名無しさん:2005/06/08(水) 18:48:36
学校の課題なんですけど、Delphiで西暦を入力して夏季と冬季のオリンピックを求めるプログラムはどういう風に作るんですか?
教えてください。
710デフォルトの名無しさん:2005/06/08(水) 19:07:45
煽りでもなんでもなく >>709 の文章の意味がわからないんですが
711デフォルトの名無しさん:2005/06/08(水) 19:09:46
>>709
宿題スレ池。それから仕様が意味不明なんでまずは日本語でアルゴリズムを書き出してみろ。
712デフォルトの名無しさん:2005/06/08(水) 20:02:21
オリンピック開催年のルールがさっぱり分からないのだが
4で割り切れたら・・・余りが出たら・・・みたいな話なんじゃないか。
713デフォルトの名無しさん:2005/06/08(水) 20:09:54
閏年とか米大統領選とか。
714デフォルトの名無しさん:2005/06/08(水) 20:23:05
4で割り切れる年は閏年
100で割り切れる年は閏年ではない
ただし400で割り切れる年は閏年
((X mod 4 = 0) and (X mod 100 <> 0)) or (X mod 400 = 0)
715デフォルトの名無しさん:2005/06/08(水) 20:49:17
というものの、夏季オリンピック(一般にいうオリンピック)は4で割り切れる年のはず。
冬は間の年だっけ?
716デフォルトの名無しさん:2005/06/08(水) 21:03:25
宿題スレ逝きます
すいませんでした。
717デフォルトの名無しさん:2005/06/08(水) 23:01:06
 TFileStreamを使ってファイルを開くとき、すでに開いているファイルは開かないように
するにはどうしたらいいのでしょう? ヘルプに
 fmShareExclusive  ほかからの読み書きを禁止するとあるので
 ReadF := TFileStream.Create(FName, fmOpenRead or fmShareExclusive);
としてみましたがいくつでも開いてしまいます。

「TFileStream 排他制御」でぐぐったらここの過去スレが出てきましたが、読めませんで
した(^^;)。
718デフォルトの名無しさん:2005/06/08(水) 23:15:14
ヘルプより

fmShareExclusive他のアプリケーションはファイルを開くことができない

fmShareDenyWrite他のアプリケーションは読み出し用にファイルを開くことはできるが,書き込み用に開くことはできない
fmShareDenyRead他のアプリケーションは書き込み用にファイルを開くことはできるが,読み出し用に開くことはできない
719デフォルトの名無しさん:2005/06/08(水) 23:19:19
>>717
今、実際に試してみたけど2つ目からちゃんとEOpenErrorになったぞ。
720デフォルトの名無しさん:2005/06/08(水) 23:45:39
自アプリから複数開いてたりして
721デフォルトの名無しさん:2005/06/08(水) 23:58:37
Delphiはグラフをエクセルのように簡単に作れますか?
722デフォルトの名無しさん:2005/06/09(木) 00:02:07
>>721
簡単にグラフを作れるようにするのがDelphiの役目では?
723デフォルトの名無しさん:2005/06/09(木) 00:05:53
(´・∀・`) ヘー
724721:2005/06/09(木) 00:11:28
>>722
ほんとですか〜。
データベースソフトを作ろうと思っててVBにしようかと思ったらVBはグラフ作る
のは激しくムズイらしく、しかしDelphiは学習するのにデータベースの参考書ないし
でかれこれどちらにしようか半年も悩んでいます…。
725デフォルトの名無しさん:2005/06/09(木) 00:17:10
>Delphiは学習するのにデータベースの参考書ないし

ホントか?腐るぐらいあったような気がするけど
726デフォルトの名無しさん:2005/06/09(木) 00:23:39
727ああ、そうなんです:2005/06/09(木) 00:32:36
>>720
 いや、そうなんです。
 自作のアプリで2つ以上開きたくないのです。これを防ぐにはどうしたらいいのでしょう?
728デフォルトの名無しさん:2005/06/09(木) 00:53:07
どっかにフラグたてておいたらいいじゃん。自分で開く前にそれみて倒れてたら開く、と。
729デフォルトの名無しさん:2005/06/09(木) 00:53:17
>>727
多重起動禁止にする。
730721:2005/06/09(木) 00:53:59
あとACCESS使っているのでその延長線上でVBがいいかなと・・・。
しかしDelphiよさそうですねー。
こりゃ一からDelphiについて調べなおそうかな。
731デフォルトの名無しさん:2005/06/09(木) 00:55:30
半年悩んだんなら、あと半年待ってからにしたほうがいいよ。Delphi どうなるかわからんし。
732デフォルトの名無しさん:2005/06/09(木) 01:04:14
>>717,727
何回も読み直していろいろやってみたが、やっぱり意味がわからない。
どういうこと?

自作アプリAでファイルCを開く
自作アプリBでファイルCを開く←これを禁止したい

こういう意味にとったがfmShareExclusiveを設定してればやっぱり2つ目はエラーになるよ?
733デフォルトの名無しさん:2005/06/09(木) 01:11:18
自作アプリAでファイルCを複数回開く ってんじゃないの?
734デフォルトの名無しさん:2005/06/09(木) 01:12:13
自アプリ内の操作なら変数使えば
幾らでも制御できそうなものだが、何か問題でもあるのだろうか
735721:2005/06/09(木) 01:20:37
やっぱVBかあ。
736デフォルトの名無しさん:2005/06/09(木) 01:32:12
結論が出たようなので、次↓
737デフォルトの名無しさん:2005/06/09(木) 01:53:49
>>733,734
 頭悪くてすいません
 まず自作アプリはSDIです。
 最初起動してhoge.datを開きます。
 次にもう一つ自作アプリを起動してhoge.datを開こうとしても開けないようにしたいのです。
> 自アプリ内の操作なら変数使えば
 タブ型アプリなら確かに変数を使って簡単にできると思いますけど普通のSDIだとど
うしていいかわからないのです。
 ウィンドウキャプションにファイル名を表示さているので後に開いたウィンドウから先
に開いたウィンドウキャプションにアクセスする方法がわかればできると思うのですが。
738デフォルトの名無しさん:2005/06/09(木) 01:58:37
ReadF.Freeで解放した後は、他のプロセスでも開けますよ?
739デフォルトの名無しさん:2005/06/09(木) 02:00:47
>>737
ものすごく姑息な解決策を教えてあげよう。
最初にhoge.datを開いたアプリが目印を残す。
例えばflag.txtを作るだけでいい。
二番目以降に起動したアプリは if not FileExists('flag.txt') then AssignFile(F, 'hoge.dat'); とする。

最初にhoge.datを開いたアプリが終了するときはflag.txtを掃除しておくこと。
740デフォルトの名無しさん:2005/06/09(木) 02:23:58
>>739
> ものすごく姑息な解決策を教えてあげよう。
 ま、単なる目印だからそれで十分だと思いますが、あちこち捜しまくってもう少しましな方法を見つけました。
function IsMyFileOpen(FName: string): Boolean;
var
 aCaption: string;
 Wnd: HWND;
begin
 aCaption:= AnsiUpperCase(FName);
 Wnd := FindWindow('TMyForm', PChar(aCaption));
 Result := Wnd > 0;
end;
741デフォルトの名無しさん:2005/06/09(木) 02:32:05
オリンピックは単純に4年毎なのでは?
742デフォルトの名無しさん:2005/06/09(木) 03:22:43
俺も思ったけどレスの内容見て俺が変なのか?と思った
743デフォルトの名無しさん:2005/06/09(木) 03:57:40
mod 4 がゼロになる、って論理を試す簡単な宿題。騒ぐほどのことはない
744デフォルトの名無しさん:2005/06/09(木) 04:02:16
fmShareExclusive で解決のようだが? 自作アプリでも、ヘルプの言う「他のアプリケーション」だわな
745デフォルトの名無しさん:2005/06/09(木) 04:03:42
FileStream を Free しないでずっとファイルを握ってたらいいんじゃないの
746デフォルトの名無しさん:2005/06/09(木) 06:51:32
相変わらず悪夢のように回答レベルの低いスレだな
747デフォルトの名無しさん:2005/06/09(木) 07:35:08
お前程じゃないんで次↓
748デフォルトの名無しさん:2005/06/09(木) 08:50:06
オリンピックは昔、夏季と冬季が同じ年だった。
749デフォルトの名無しさん:2005/06/09(木) 09:07:41
クライアントに保存してあるクッキー情報を取得したいのですが
どうすればいいのでしょうか?
プログラムで、自分のPC内に保存されているクッキー情報を
取得したいんです・・・
Response を使えば出来るのかと思っていろいろやってみましたが
よくわかりませんでした。
750デフォルトの名無しさん:2005/06/09(木) 11:37:12
TCustomWebDispatcher.WebRequest.Cookie
751デフォルトの名無しさん:2005/06/09(木) 12:48:32
>>750
ヒントありがとう・・・いろいろやってみたけど
取得してあるクッキー情報から直接取得出来るのだろうか
なんか、出来なさそうなんだけど(漏れには敷居が高いのかも)
752デフォルトの名無しさん:2005/06/09(木) 18:46:35
オリンピックは、やっぱ過去の開催年は
データとして保持してないと駄目だな。
modで簡単に得られるもんじゃない(4年毎とは限らない)。

最近では冬大会が,1992年、1994年と2年間しか間隔がない。
753デフォルトの名無しさん:2005/06/09(木) 18:51:43
スレ違い
754ななしへたぐらま ◆XcB18Bks.Y :2005/06/09(木) 19:36:11
>>737
・複数の文書を扱うアプリを作りたい
・それぞれの文書は独立したフォームに表示させる
・アプリ全体で使うデータがありhoge.datというファイルに保存している.

ということでしたら,同じアプリをいくつも起動するのではなくて,
ひとつのアプリで複数の文書フォームを表示させるほうがよいと思います.

1. アプリ全体の情報は文書フォームから分離してデータモジュールに格納する.
2. 文書フォームから別の文書フォームを開くようにする
3. 同じアプリを二重起動しようとしたらあとから起動した方は終了させて
 元のアプリは新しい文書フォームを開く.


1. は文書に特有の処理以外はすべてデータモジュールに移し,
 文書フォームのuses節にこのデータモジュールを定義したユニットを追加.
 (文書フォームで[ファイル]→[ユニットを使う]が楽)

2. は文書フォームの名前が DocForm だとしたら TDocForm.Create(Application) .
 ただしDelphiでは最初に開いたフォームがメインフォームとなり
 最初に開いた文書フォームを閉じるとアプリケーションが終わってしまうので,
 ダミーのフォームを用意します.
 ダミーフォームのOnActivateイベントに ShowWindow(Handle, SW_HIDE) と書いてこのフォームが表示されないようにします.
 そしてこのフォームをメインフォームに指定します.
 また文書フォームのVisibleをTrueにします.
 (これで起動時に文書フォーム1個だけが表示されます)

3. はやり方がわからないのでほかの方にお任せします.
755デフォルトの名無しさん:2005/06/09(木) 20:53:47
フラグの論理演算なんですけど
変数に特定のフラグが含まれているならその特定のフラグを削除し
変数に特定にフラグが含まれて居ないならなにもしない。って演算はどうやるんですか?
今のところは

if (変数 and 特定のフラグ)=特定のフラグ then
変数 := 変数 xor 特定のフラグ;

って書いてるんですけど
もっと簡単に済ませられませんか?
756デフォルトの名無しさん:2005/06/09(木) 20:59:22
>>755
要するにフラグを落としたいってこと?
変数 := 変数 and not(特定のフラグ) じゃなくて?
757デフォルトの名無しさん:2005/06/09(木) 20:59:54
flags := flags and not flag
758755:2005/06/09(木) 21:03:15
>>756
おおお、ありがとうございます。
まさにそれです。
手持ちの本の論理演算のところを見ても、フラグ落とし?は載ってなかったのです。
助かりました。
759デフォルトの名無しさん:2005/06/09(木) 23:07:40
異常終了したとき送られるメッセージってあるんでしょうか?
それをフックしたいのですが。
760デフォルトの名無しさん:2005/06/09(木) 23:23:11
あるとして、どこに送られると思う?
761デフォルトの名無しさん:2005/06/09(木) 23:31:44
>>749
WininetのFindFirstUrlCacheEntryで出来ませんか?
的はずれだったら無視してください。
762デフォルトの名無しさん:2005/06/09(木) 23:32:52
コンソール?
763デフォルトの名無しさん:2005/06/10(金) 00:24:23
TObjectListの挙動で困ってる。

自作クラスを作って、オブジェクトリストにAddしたあとで、
そのうちのひとつを取り出すときに、メモリリークが起きているらしい

自作クラス→TObject、 TObject→自作クラス って相互変換する
個所が多くて、そこがうまくいかない クロスキャストってやつだろうか
機能的にはうまくいっているのに、メモリ使用量がガンガンあがっていく
764デフォルトの名無しさん:2005/06/10(金) 00:26:15
イマイチ意味がわからないがOwnsObjectsの話じゃなくて?
765デフォルトの名無しさん:2005/06/10(金) 00:26:46
>>763
で、それは質問なの?
766デフォルトの名無しさん:2005/06/10(金) 00:28:17
チラシの裏だろう
767デフォルトの名無しさん:2005/06/10(金) 00:46:50
自作クラスをTObjectListにAddすると、自動的にTObjectにキャストされるね

今度はこの配列からひとつ取り出して、TObjectから自作クラスへキャストしなおす

これを繰り返すとどんどんメモリリークするのが不思議
もちろんメモリリークをどうやって押さえればいいのか、というのが質問
768デフォルトの名無しさん:2005/06/10(金) 00:48:16
もっと言うならば、「正しいTObjectList型からの取り出し方がわからない」ということ。
Addの逆をしたいわけだよ。
769デフォルトの名無しさん:2005/06/10(金) 00:48:28
キャストは関係ないだろ
770デフォルトの名無しさん:2005/06/10(金) 00:50:01
「メモリリークをどうやって押さえればいいのですか?」
と書かない理由は?
771デフォルトの名無しさん:2005/06/10(金) 00:54:58
>>770
>>767で書いたよ
772デフォルトの名無しさん:2005/06/10(金) 00:56:14
そんなことってあるのか
773デフォルトの名無しさん:2005/06/10(金) 00:56:23
>>771
「礼儀」って言葉、知ってる?
774デフォルトの名無しさん:2005/06/10(金) 00:57:39
>767
ライブラリよりも自分のコードを疑うべし
最小限の再現コードを作ってそれでも起きるなら晒せ
775デフォルトの名無しさん:2005/06/10(金) 00:59:42
>>770,773
消えていいよお前。
776デフォルトの名無しさん:2005/06/10(金) 01:06:00
777デフォルトの名無しさん:2005/06/10(金) 01:28:56
create 済みの変数にキャストして代入してるとか? (笑)

TObjectList のソース見る限り、出し入れでリークするところなんかないぞ。
778デフォルトの名無しさん:2005/06/10(金) 01:39:58
デストラクタがvirtualになっていないないため、
上位クラスのデストラクタが呼ばれていないのでは?


779デフォルトの名無しさん:2005/06/10(金) 01:41:39
違う、下位クラスだ。 TObject.Destroyのみが実行されているのかも。
780デフォルトの名無しさん:2005/06/10(金) 02:34:16
みんな優しいなw
781デフォルトの名無しさん:2005/06/10(金) 02:40:38
Destroy は元々virtualだから、TObjectのインスタンスを作らない限り
TObject.Destroy なんて呼べないでしょ。Freeだけど。
TObject にキャストしても virtual なら、ちゃんとインスタンスの型にあったメソッドが呼ばれる。
(てかこうじゃないと、Template Method パターンとか使えないしね)

メモリリークするのは、ただ単に自作クラスのデストラクタで、解放していないものがあるだけ。
もしくは、そもそも自作クラスのインスタンスを解放していないだけ。
782デフォルトの名無しさん:2005/06/10(金) 02:50:45
最後の1文に40ペソ
783デフォルトの名無しさん:2005/06/10(金) 05:30:56
>>763みたいな奴に答えてやる必要ないと思うんだ
おまえら優しいな
784デフォルトの名無しさん:2005/06/10(金) 06:25:48
相変わらず悪夢のように回答レベルの低いスレだな
785デフォルトの名無しさん:2005/06/10(金) 07:58:58
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
786デフォルトの名無しさん:2005/06/10(金) 10:19:08
超低レベルはいいんだが、そもそも日本語が意味不明なのとか、他人とのコミュニケーション能力を
著しく欠いてるのとか、最低限の礼儀も知らないのとか、はプログラミング以前の問題だよなぁー

某掲示板も最近はそんなのばかり・・・
787デフォルトの名無しさん:2005/06/10(金) 10:44:47
スルーすればいいだけの話。
788デフォルトの名無しさん:2005/06/10(金) 11:37:24
答える能力がないバカは出てこなくていいよ。
789デフォルトの名無しさん:2005/06/10(金) 11:38:55
2chで礼儀礼儀言ってるやつはキチガイだと思う。
790デフォルトの名無しさん:2005/06/10(金) 11:47:18
初心者には難しすぎる高尚な議論はこちらで
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
791デフォルトの名無しさん:2005/06/10(金) 12:34:19
どこかのサイトは
れいぎをしらにない連中のあつまりってきいたきがする。

礼儀をしらないものに礼儀論をしても馬の耳に念仏

20歳すぎると人格の矯正は困難・・・
792デフォルトの名無しさん:2005/06/10(金) 12:42:48
>>788-789
消えていいよお前ら。
793デフォルトの名無しさん:2005/06/10(金) 13:17:35
↑おまえが消えろアフォ
794デフォルトの名無しさん:2005/06/10(金) 13:43:13
あれ?もう夏休み入ったのか??
795デフォルトの名無しさん:2005/06/10(金) 13:56:06
いえ、爆竹休みです。
796デフォルトの名無しさん:2005/06/10(金) 14:00:12
>>793
やっぱ無礼だと気持ちわるいだろ
797デフォルトの名無しさん:2005/06/10(金) 14:32:46
やっぱり育ちって技術力より大事だよな
798デフォルトの名無しさん:2005/06/10(金) 14:34:33
でもものすごい技術持った人ってどっかおかしい人が多いけどな
799デフォルトの名無しさん:2005/06/10(金) 16:58:44
スピーカーのVolumeを簡単に調整する方法は無いでしょうか?

今はmixerSetControlDetailsで調整しているのですが、これだと
特定のマシンではきちんと動作するけど他のマシンでは動作しない状況が多々あり
困ってます。

もしありましたら教えてください。
800デフォルトの名無しさん:2005/06/10(金) 17:10:55
コンポーネント作成に関することなんですがヒントをください。
1.作りたいものは複合コンポーネント(TLabelとTEditを複合したTLabeledEdit等)。
2.作成するのはTEditが3つくっついたもの。TCustomControl上に作成。THogeControlとする。
3.内部でTEdit.OnChange:=HogeChange;といったように各コントロールにイベントを設定する。
4.このコンポーネントは各コントロール(TEdit)にアクセスするためのプロパティがある。

上記のような状態でコンポーネントユーザがTHogeControl.EditA.OnChange:=HogeAChange;と
した場合、3でコンポーネント作者の設定したイベントが無効化されます。
これを回避する方法はどのような手法がありますでしょうか?

以上よろしくおねがいします。

開発環境:Delphi7〜
801デフォルトの名無しさん:2005/06/10(金) 17:36:06
自分が礼儀ができてないヤツほど礼儀にうるさいものだな
802デフォルトの名無しさん:2005/06/10(金) 17:47:56
>>800

複合コンポで EditA で TEdit にまるまるアクセスできてしまうのが問題。
ちゃんと隠蔽してユーザは勝手にイベントハンドラを設定できないようにする。
803デフォルトの名無しさん:2005/06/10(金) 18:36:02
超初心者質問スレと聞いてやってきました。
stringからcharへ変換するにはどうすればいいのでしょうか?
804デフォルトの名無しさん:2005/06/10(金) 18:40:36
変換の意味がわからないが、stringに添字を付ければ1文字アクセスできます
805800:2005/06/10(金) 19:49:03
>>802
出来る限りユーザにはTEditのイベントハンドラ、プロパティはDelphi標準の物を使用してほしいのです。
こういった要望をみたすことは不可能なのでしょうか?
TEdit.OnChange:=HogeChange;の部分をフック?でメッセージをキャッチし
処理したいと考えましたがその方法がわからず(出来るかどうかも)途方にくれています。
806デフォルトの名無しさん:2005/06/10(金) 19:56:26
>>803
if Length(s) >= 1 then c := s[1]
807デフォルトの名無しさん:2005/06/10(金) 20:01:12
>>805
procedure TCustomEdit.Change; // protected dynamic method
begin
inherited Changed;
if Assigned(FOnChange) then FOnChange(Self);
end;
あたりをoverrideしてみるとか
808デフォルトの名無しさん:2005/06/10(金) 20:32:06
Delphi6ってWineで動く?
809釣られ坊主:2005/06/10(金) 21:10:27
> stringからcharへ変換するにはどうすればいいのでしょうか?
 俺、知らな〜い!
  stringをPCharへキャストするということなら>>740あたりが参考になるんじゃないの。

810デフォルトの名無しさん:2005/06/10(金) 22:00:45
>>808
動かない!!ときっぱり言ってみる。
wineは
noteadが動く程度
あまりの遅さに絶句。
まともにwinあぷりも動かないんだから
ちなみに仕様上、OSはXPとかNTは動かない。
9.x系が入っているフォルダを指定してやっとnotepadが動く程度。

しかも、バージョンによっては全くWineそのものがエラーを出して動かない。
動くバージョンを発掘から開始っていう探検の始まり始まり
うちの動作確認とれているのはっと・・・・
OS起動しなおすのが面倒なので省略 (笑

っていうか Win上でDelphi動かしなさい
811デフォルトの名無しさん:2005/06/10(金) 22:04:03
>>808
Kylixじゃだめなん?
812デフォルトの名無しさん:2005/06/10(金) 22:13:32
すみませんがどなたか>>799もよろしくお願いします。
813デフォルトの名無しさん:2005/06/10(金) 22:15:39
>>805
>出来る限りユーザにはTEditのイベントハンドラ、プロパティはDelphi標準の物を使用してほしいのです。
>こういった要望をみたすことは不可能なのでしょうか?

言ってることが矛盾してる。ユーザには好きに代入させておいて、それを阻止したい? おかしいとは思わないの?
814デフォルトの名無しさん:2005/06/10(金) 22:24:39
質問も理解してないのに中途半端なレス付けるやつ増えたよな・・
ツリー形式の掲示板じゃないんだから無駄レスつけるとグングン回答率が下がるんだよ。

基本的にわかる質問にだけ答えりゃいいんだよ。
質問の仕方が悪いなら誰もレスつけないだけ
誰もあなたに答えてもらいたいなんていってない。

あと念のために、
また「質問者のくせに〜」とか荒れないように言っとくけど漏れ800じゃないから
815デフォルトの名無しさん:2005/06/10(金) 22:40:49
>無駄レス
例) >>814
816デフォルトの名無しさん:2005/06/10(金) 22:46:05
>>800=814
質問者のくせに〜
817デフォルトの名無しさん:2005/06/10(金) 23:16:33
これがDel厨クォリティ
818sage:2005/06/10(金) 23:31:16
なんかこのスレみてたらワクワクしてきた!!
俺も今日からDelphiするぜ!!
みんなよろしくな!!
819デフォルトの名無しさん:2005/06/10(金) 23:51:08
簡単かどうかはともかくそれ系の開発したことないから
その情報で経験則ではわからない。すまんね。
今日昨日窓杜で紹介されてた音量ソフトの
作者さんのサイトにそれ系のコンポと情報があったはず。
それで手続きの中身とか参考にならない?
820デフォルトの名無しさん:2005/06/11(土) 00:19:26
>>810
はぁ?

ttp://sidenet.ddo.jp/winetips/compat.html

2k とヅアルブートしてるんで system32 をパチってるが、かーなり色んなもの動いてますが?
それに、最近は DLL も結構不要になってるし、2D メインのエロゲなら高確率で動くっぽい
どれもが完璧な動作するとは言えないがな

ほんとバカばっかりだな、ここ
821デフォルトの名無しさん:2005/06/11(土) 00:19:57
>>807
なるほど・・・。
TEditを直に使わずTEditをTMyEditで継承し必要な部分をoverrideする。
そしてそれを組み込むのですね。
早速試してみたいと思います。

>>813
>言ってることが矛盾してる。ユーザには好きに代入させておいて、それを阻止したい? おかしいとは思わないの?
阻止したいのではありません。言葉が足りなかくて申し訳ありません。
いいたかった事はTHogeControlの内部でTEdit.OnChange:=HogeChange;等と書いた場合
プロパティでそれぞれEditA,EditB,EditCとpublicで公開したときに
使用ユーザがTHogeControl.EditA.OnChange:=FooChange;とした場合にHogeChangeが
無視されるのを防ぎたかったのです。
阻止したいのはユーザの代入ではなく、代入されたことにより内部で設定した手続きが
無効になるのを防ぎたかったのです。
822デフォルトの名無しさん:2005/06/11(土) 00:55:50
くだれないゲームが
動くといっているアホがいる
WineはWinのファイルがないと動かないってことしらんのか? 説明書読め
WindowsマシンでLinuxを起動してわざわざその上でゲームして喜ぶのもがいるのが滑稽

ほんとばかだな
823デフォルトの名無しさん:2005/06/11(土) 02:28:20
それは話が逸れてる。
今Vineを知った自分が言えた義理じゃないがw
GDIには結構対応してるってことじゃないの?(曖昧な表現ですまない)
だからゲームやウィンドウ内で帰結するプログラムには強いとか。
対極にあたるExplorerを動かすのが難しいらしいあたりそう感じる。
で、公式サイト見るとDelphiアプリ対応の修正は加えてるみたいだが、Delphi自体を使えるかは
情報見つけらんなかった。でもDelphiってpascal純正だから普通には動くんじゃw
自分レベル低くてすまんねぇ。
824デフォルトの名無しさん:2005/06/11(土) 02:55:21
> くだれないゲームが
アチャー (つ∀`)

> WineはWinのファイルがないと動かない
Winのファイルって何だよw
つか、全く不要とは書いてねーだろ、真性バカw

> WindowsマシンでLinuxを起動してわざわざその上でゲームして
はい?
ツッコミどころ満載だけど、とりあえずWindowsマシンって何ですかw

> ほんとばかだな
>>822

ちなみに、マウント外して、.wine をリネームして $wine notepad.exe したらちゃんと起動しましたよ?
確認してないから自信はないけど、最近は dll なしでもかなり起動すると思った
>>810 の時点で情報古すぎなのはミエミエだったが

>>823
DirextX も、サポートされていると思った。
XWine だかという派生ソフトもあったし

バカに付き合うとその人もバカに見える法則 orz
……スレ違いスマソ。誤った情報は正しておきたかった。
825デフォルトの名無しさん:2005/06/11(土) 03:11:15
>>824
ツッコミに無理があるな。特に誤字脱字で揚げ足取ってるあたり必死に見える。
826デフォルトの名無しさん:2005/06/11(土) 05:04:55
わざわざ噛み付く辺りガキだよな
827デフォルトの名無しさん:2005/06/11(土) 05:30:08
>>825
揚げ足取っておきながら自分でも誤字ってる品。
もうアフォかと。
828デフォルトの名無しさん:2005/06/11(土) 06:41:17
リナックスの人ってどうしてこう喧嘩腰というか挑発するような書き方するんだ。
古い情報を正すのでも、今はこうなっているとだけ書けばいいのであって、貶める言葉を書く必要はない。
そもそも専用板があるんだからそっちでやってくれないかな。
829デフォルトの名無しさん:2005/06/11(土) 07:17:54
>>803
char(String)のことか?
830デフォルトの名無しさん:2005/06/11(土) 07:19:14
ウィンドウズの人って、無知なくせに堂々と誤った発言をし続けたり、
不明瞭な自分専用の用語で使っていても、恥しくもない上に自信満々な人が多いですよね。

すごくかっこいい。
831デフォルトの名無しさん:2005/06/11(土) 09:55:47
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/

犬厨はこっちでやれ
832デフォルトの名無しさん:2005/06/11(土) 11:17:47
>>808
そんなバグだらけのDelphiの古いversionを使うより
FreePascalをお勧めします。
DelphiのVCLと互換性も少しあるようです。

コンパイラはここでゲット
http://www.freepascal.org/

IDEはここからゲット
http://www.freepascal.org/links.html

いろいろなOSで動作する
無料で強力なpascal言語です。
833デフォルトの名無しさん:2005/06/11(土) 11:30:38
ごめん。D6up2+3が一番安定してる十分と思ってる。
834デフォルトの名無しさん:2005/06/11(土) 13:50:40
初心者相手に威張り腐るやつは例外なく無能。
835デフォルトの名無しさん:2005/06/11(土) 13:52:16
>>814 同意。読解力がないなら出てこなけりゃいいのにね。
836デフォルトの名無しさん:2005/06/11(土) 16:14:38
人を無能呼ばわりするヤツは例外なく無能。エスパーじゃないと質問の意味さえ
分からないような質問して「読解力がない」とかいうのは逆ギレ。
837デフォルトの名無しさん:2005/06/11(土) 18:04:50
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
838デフォルトの名無しさん:2005/06/11(土) 18:33:35
うわ、DELPHIってこんなにひどいのか。他の使おうっと。
839いまだDelphi5:2005/06/11(土) 20:46:37
 K2Editor の作者が今度ソース公開してくれたのだけど、ドキュメントの中に
> Delphi Ver.5 の comctrls.pas にバグがあり、Delphi Ver.5 版では
> comctrls.pas にパッチを当てて開発していました。
というのがあったけど、どんな問題があるのでしょうか。
840デフォルトの名無しさん:2005/06/11(土) 22:05:07
841今もDelphi2使っています:2005/06/11(土) 22:21:34
>>838
そんなことないよ
バージョンアップしないでずっと使えるし
安くて、いい言語だよ
842デフォルトの名無しさん:2005/06/11(土) 23:52:46
>>838
巣にお帰り。
843デフォルトの名無しさん:2005/06/11(土) 23:59:25
>>841
今でも3.1とか使ってる人けっこういそうだよね。
844デフォルトの名無しさん:2005/06/12(日) 00:24:41
3.1関連の仕事を請けたのは5年位前が最後かな。
845デフォルトの名無しさん:2005/06/12(日) 03:02:41
自分自身をFreeするにはどうすればよいのでしょうか?

btnA: TButton;
procedure btnAOnClick;
begin
 btnA.Free;
end;
とすると、稀に例外が飛んできます。
846デフォルトの名無しさん:2005/06/12(日) 03:14:26
>>845
その部分のコードはたぶん問題ない。
Freeした後にそことは別の箇所でbrnAを参照しちゃってんじゃないの。
とりあえずbtnA := nil;して参照箇所を探してアクセスしないようにしてみるとか。

可能ならbtnA.Visible := False; で非表示にするのが無難だと思うけどね。
847デフォルトの名無しさん:2005/06/12(日) 03:42:28
フォルダ名を取得するにはどうすればいいのでしょうか?
例えばD:\hogeの中にいくつかフォルダがあるとして、
D:\hogeの下にあるフォルダの名前だけ取得したいんです。
848845:2005/06/12(日) 04:15:28
>>846
>とりあえずbtnA := nil;して参照箇所を探してアクセスしないようにしてみるとか。
上記を記述して参照するときもif Assigned(btnA) then btnA.Click;としているのですが

速いPCで実行すると問題なし。
遅いPCで実行するとbtnA.Freeの後に例外が飛んでくる。
といった結果になりました。

そこでPostMessageで非同期でやってみようと思いやってみると、うまくいきました。
う〜ん、何が原因なんだろう??
自分自身をFreeするときは「特別な処理が必要だ」とどこかで見た気がしましたが、勘違いだったかな?
849デフォルトの名無しさん:2005/06/12(日) 04:25:39
動的に作成したコントロールは、バージョンによっては動的に自分のイベントハンドラで
削除すると例外がでる。Free を PostMessage() で非同期化すると問題ない。
850デフォルトの名無しさん:2005/06/12(日) 04:33:36
>>847
FindFirst
FindNext
FindClose
851デフォルトの名無しさん:2005/06/12(日) 09:32:16
>>847
TShellListViewのソースのIsFolder関数のところが参考になるんじゃないかな。
852デフォルトの名無しさん:2005/06/12(日) 10:53:28
delpji内蔵の関数とかを見るには無料のではダメなんですか?
853デフォルトの名無しさん:2005/06/12(日) 11:08:09
>>852
まぁね。今ならClasses.pasだけは無料でダウンロードできるけど

でも、それを差し引いてもBorlandは気前がよすぎると思うけどな。(というかバカかと)
これほどの開発環境を無料って・・いくらシェア拡大を狙ったとしてもやりすぎ。
しかもPersonal版の制限なんてDB関係とシェアソフト禁止ぐらいだし
趣味でやる分には製品版買わないよな・・。
854デフォルトの名無しさん:2005/06/12(日) 11:27:29
>>853
もともと教育機関言語。

MSがアカデミックが異常なほど安い。
教育機関でそっちにながれる・・・
 → 講義に利用されなくなる
 → pascalのシェアが格段におちる。
 → ユーザーが次第に減る。
 → 存在が忘れられる。
 → 商売がなりたたなくなる。

ただにする
教えやすいので
教育機関でそっちにながれる・・・
 → pascalのユーザーが増える。
 → pascal好きが徐々に増える。
 → 物好きが物足りなくて上位へバージョンアップする。
 → 商売が維持できる。

MS防衛策+先行投資みたいなものだよ
855デフォルトの名無しさん:2005/06/12(日) 11:45:12
その割には詰めが甘い
856デフォルトの名無しさん:2005/06/12(日) 11:48:38
>>853
>>854
いい加減こっちでやれって言ってんだろ
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
857デフォルトの名無しさん:2005/06/12(日) 11:57:15
初心者向けの話じゃないな。
858デフォルトの名無しさん:2005/06/12(日) 12:19:42
>>854
でも結局アカデミックを仕掛けたのって元房ランドのOH!NOじゃないの?
つまり・・・・
859デフォルトの名無しさん:2005/06/12(日) 12:39:35
資本力には勝てないってことだ
860デフォルトの名無しさん:2005/06/12(日) 17:45:12
フリーにしても流行らない、それがDelphi
861デフォルトの名無しさん:2005/06/12(日) 18:13:01
だが、それがいい
862デフォルトの名無しさん:2005/06/12(日) 18:18:02
>>846
間違い。

>>845
ボタンのOnClickイベントの時にFreeしているのだと思われるが、この時呼び出し元のコードでは
まだ自分自身のフィールドにアクセスする可能性が残っている状態にある。(というかアクセスする)
で、たまたまFreeしたときそのメモリ領域が無効化されていない状態だと、AVが発生しない。

てかトレースすりゃすぐわかるだろ。
863デフォルトの名無しさん:2005/06/12(日) 18:25:18
Del6だとアクセスしないな
864デフォルトの名無しさん:2005/06/12(日) 19:06:54
delphi6personal使ってます。ワークスペースが二つあるMDIアプリケーション
を作りたいのですがどうすればいいのでしょうか?
TSplitterでできると思ったんですがコンポーネントを配置してないと強制的に端に来てしまう
のでどうやら無理みたいです。何かいい方法ありますでしょうか?
865デフォルトの名無しさん:2005/06/12(日) 19:26:43
>>864
どうしてもMDI(親フォームの中に子フォームが複数ある)でないといけないの?
今風のインターフェースだと、パネルを二つ用意してスプリッタで仕切ると言うのが主流だと思うけど。
866864:2005/06/12(日) 20:02:17
>>865
特にMDIにこだわりはないんですが、たとえばDonutのようなタブブラウザの
ワークスペースが二つあるようなソフトってその方法で作れるのでしょうか?

タブで複数のドキュメントを管理する方法っていったらMDIしか頭になかったので、
それ以外でつくれるなら何でもいいです。
867デフォルトの名無しさん:2005/06/12(日) 20:36:00
>>866
Donutと言うのは使ったことがないのではずしているかもしれませんが、
タブによるページの切り替えをやりたいのなら、Win32コンポーネントパレットにあるTPageControlが使いやすいと思います。
言葉尻を捕らえてあれこれいうつもりではありませんが、タブブラウザのようなインターフェースとMDIというのは違うものです。
MDIというのは、ちょっと前のエクセルやワードのようなインターフェースのことをさします。
868デフォルトの名無しさん:2005/06/12(日) 20:39:35
テキストエディタやブラウザをダブルクリックしたときに単語を選択することが出来ますが
文字列の位置から単語を取得したいのですが、どのようにやれば出来ますでしょうか?
869デフォルトの名無しさん:2005/06/12(日) 20:47:42
>>868
1、ダブルクリックされた位置を取得。
2、ダブルクリックされた位置にある一文字を取得。
3、2の場所から文字列を前後に検索して半角もしくは全角スペースを探す。
4、スペースが見つかったらスペースからスペースを1単語として判断して選択状態にする。
連続した日本語文字列で3をやるためにはそれなりの辞書が必要かも。あるいは助詞で判断するか。
870デフォルトの名無しさん:2005/06/12(日) 21:03:13
mathを使うのがいやだったから
ヘルプファイル
Power(Base, Ex) = Exp(Ex * Ln(Base))

違う値がかえってくる・・・
変だなと。 mathのソースをみると・・・・
まにうけた俺がばかだった。。。

アセンブリわからないので。
整数乗のときは、Resultにforでかけつづけることにした。

うそ情報ながしうやがって、 ひとこと 精度が・・・
とかいてくれてていたら
きがついたものを・・・

坊のあほ。
871864:2005/06/12(日) 23:07:18
>>867
MDIでやらなくてもTPageControlでタブによる切り替えができるんですね。
DonutがMDIみたいなのでタブブラウザ=MDIみたいな図式が出来上がってました。

>>865>>867
お二人ともありがとうございました。
872デフォルトの名無しさん:2005/06/12(日) 23:36:30
>>862
>てかトレースすりゃすぐわかるだろ。
この現象で以前悩んだがトレースするのは厳しいぞ。
このコード書いた時点で「なんかやばいかもなー」なんて思っても
実行してみると「あ、うごいた」ってことで放置。
何度かやってみると数十回に一度あるかどうかの確立でAV。
しかもDelphi5〜2005でも同じ現象、実行するマシンによって再現もまちまちだからな。

そりゃそうと、これの解決方法はPostMessageでやるのがベストなのか?
原因はなんとなくわかるが、解決方法がPostMessageでいいのか未だによくわからん。
873デフォルトの名無しさん:2005/06/12(日) 23:46:34
PostMessageが定石。
874デフォルトの名無しさん:2005/06/12(日) 23:58:05
>>873
そうか、サンクス。これで安心出来るよ。
875デフォルトの名無しさん:2005/06/13(月) 01:27:20
スカパー!加入してるか?
876デフォルトの名無しさん:2005/06/13(月) 10:51:04
VCLSkinのDemoを使っていると、フォームのキャプションに「Vclskin Demo」と表示されますよね。
自由にフォームのキャプションを変える方法はありますか? それか、無料のスキン搭載コンポーネントはあるのでしょうか?
877デフォルトの名無しさん:2005/06/13(月) 11:03:40
なんか、定期的に同一人物の書き込みを見かけるな。
少しは自分でやれよ。
878デフォルトの名無しさん:2005/06/13(月) 11:29:32
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
879デフォルトの名無しさん:2005/06/13(月) 18:24:45
>>876
FormのDCハンドルを取得。
SystemParamInfoでキャプションバーの高さを取得
Canvas.TextOutでキャプションに好きな文字列を描画。(CanvasのブラシはbsSolidな)
880デフォルトの名無しさん:2005/06/13(月) 19:10:30
そういうのってライセンスに違反しないのか?
881デフォルトの名無しさん:2005/06/13(月) 20:01:49
微妙にスレの趣旨とずれてそうな質問なんですけど
とあるアプリのウィンドウクラス名がTApplicationなので
どうもBorland開発環境製だなと思うのですが
これがDelphi製なのかそれとも他のC++Builderとかなのか判別する方法ってありますか?
882デフォルトの名無しさん:2005/06/13(月) 20:35:52
よく知らんが、エディタで開いて delphi を検索してみるとか
883デフォルトの名無しさん:2005/06/13(月) 20:45:46
Delphiは両方含まれるから"Borland C++"のほうがいいで
884881:2005/06/13(月) 21:02:07
うーん。バイナリエディタで検索してみましたがヒットしません。
というか読める文字列はお約束の「This program must be run under Win32」ぐらいです。
exeのサイズを減らす圧縮ツールでも使ってるのかな・・。
885デフォルトの名無しさん:2005/06/13(月) 21:05:54
>>881
作者に聞く
886デフォルトの名無しさん:2005/06/13(月) 21:06:08
>>884
そうなんでない?
普通読める文字入りまくりだから。
887デフォルトの名無しさん:2005/06/13(月) 21:23:38
>>884
いったいなんて言うアプリだ。
ひょっとして俺の作ったソフトじゃねえか(w
888デフォルトの名無しさん:2005/06/13(月) 21:31:37
Winny2だったりしてw
だったらBCBだが。
889デフォルトの名無しさん:2005/06/13(月) 21:32:54
>>884
 ま た お 前 か
890デフォルトの名無しさん:2005/06/13(月) 21:33:56
圧縮してる点もあってるな
891デフォルトの名無しさん:2005/06/14(火) 00:03:24
王様げぇむしようぜ!
892デフォルトの名無しさん:2005/06/14(火) 00:44:52
 動的に生成したコンポもフォームを閉じれば廃棄されると思うのですが、ごく稀に

 モジュール 'HOGE.EXE' のアドレス ××××× でアドレス ××××× に対する読み
込み違反がおきました。

が発生することがあります。やはり明示的に廃棄するべきなんでしょうか?
893デフォルトの名無しさん:2005/06/14(火) 00:52:48
Formを閉じるというより、Ownerが破棄された時に子Componentも破棄される

それで、そのエラーだが、恐らく自動的に解放されたはずの
インスタンス参照用変数を参照してしまっているんじゃないか?
自動解放ではnilは割り当てられないからAssignedでのチェックも無意味だぞ
894デフォルトの名無しさん:2005/06/14(火) 13:57:14
ファイルのプロパティ画面を表示したくて
Win32Check(32<=ShellExecute(Application.Handle, 'properties', 'c:\test.txt', nil, nil, sw_show));
というコードを実行しても関連付けがないと怒られます。
何がいけないのでしょうか。c:\test.txtというファイルはちゃんと存在しています。
c:\windowsに変更しても同様のエラーが出ます。
895デフォルトの名無しさん:2005/06/14(火) 14:01:06
ShellExecuteExにしたらうまくいきました。うーむ・・・
896デフォルトの名無しさん:2005/06/14(火) 14:13:59
DELPHIってメモリ管理がダルすぎ。ガベージコレクション実装しろよ。
897デフォルトの名無しさん:2005/06/14(火) 14:18:28
delphi.netに実装されてるよ馬鹿
898デフォルトの名無しさん:2005/06/14(火) 14:41:48
ドドネトの話じゃねーんだよ馬鹿
899デフォルトの名無しさん:2005/06/14(火) 14:42:42
玄人同士の高度な議論は別スレで
900デフォルトの名無しさん:2005/06/14(火) 14:43:07
初心者はドドネトしかわからないから┐(´〜`;)┌
901デフォルトの名無しさん:2005/06/14(火) 14:45:12
TComponent派生にすれば自動で後始末してくれるお
902デフォルトの名無しさん:2005/06/14(火) 14:52:37
ガベコレ自体が初心者向け機能だよな
903デフォルトの名無しさん:2005/06/14(火) 15:53:02
ガベコレ自体は悪くないが、
我部凝れしか無いのは困る。
904デフォルトの名無しさん:2005/06/14(火) 15:55:03
>>881
最近見かけないけど、DelphiのDFMロード用ツールがあって、
それでプロジェクトファイルまで復元できたらDelphi、
出来なかったらBCBと判定できたYO!
905デフォルトの名無しさん:2005/06/14(火) 16:01:06
お前ら凄いですね。
906デフォルトの名無しさん:2005/06/14(火) 17:29:53
何話してるのかさっぱりわからん
ここ超初心者スレだよな?
907デフォルトの名無しさん:2005/06/14(火) 18:00:08
Delphi製かどうか知りたいんだろ
ソフトのどのパーツにもClassの名称があって特にDelphiはT〜が標準だから
その手のツールで見るとすぐわかる。
 ※飛龍さんのClassFinderが使いやすいかもしれない。
が、BCB(C++Builder)も同じようにT〜とか表示されるから区別しにくい。
Exescope(であってるかな?)みたいな調べものツールで
BCBソフトを開けないことで結果的に区別できたということ。かな?

ちなみにプログラムの圧縮についてはUPXとかで検索してみること。
HDD上やDLサイズ上でexeのサイズ節約のメリットがあるけどソフトが軽くなるわけではい。

ガーベージコレクションとはメモリ管理をある程度OS-プログラム側で受け持ってくれること。
逐一開放とか気にしなくて良いから開放忘れが減る。大体そんなかんじで
908デフォルトの名無しさん:2005/06/14(火) 19:27:26
古いバージョンのUPXはDelやBCBのEXE圧縮すると100%死亡していた…
909デフォルトの名無しさん:2005/06/14(火) 19:40:26
5年前から使ってて大丈夫だけどいつの話だ?昭和?
910デフォルトの名無しさん:2005/06/14(火) 20:37:37
>909
UPX1.21と、Del4orBCB5のEXEを組み合わせると、
できあがるEXEが使用不能だった。
911デフォルトの名無しさん:2005/06/14(火) 20:59:04
>>910
圧縮オプションでいらんとこまで圧縮するとそうなる。
912デフォルトの名無しさん:2005/06/15(水) 02:26:39
やっとくだすれっぽい内容になってきたな。
913デフォルトの名無しさん:2005/06/15(水) 03:41:34
Delphi2005を使っています。

DirectsoundのSetFrequencyを使うとある程度簡単に周波数を指定した音を再生できると
ネットで調べて分かったのですが、どうしてもコードが分かりません。
どなたかどんなコードになるのか教えていただけないでしょうか?
あるいはどこかにサンプルコードがあったら教えてください。

Delphi-MLなどを色々と調べたのですが、ぐぐっても英語や中国のサイトばかりで何も
見つかりませんでした。
914デフォルトの名無しさん:2005/06/15(水) 08:06:04
>>913
http://www-fu.magma.ne.jp/~hayase/dddd/whats.html
ここにDelphiでDirectXを比較的カンタンに扱えるライブラリがあるよ
915デフォルトの名無しさん:2005/06/15(水) 15:23:39
デルヒー難しいです・・・
916デフォルトの名無しさん:2005/06/15(水) 15:49:39
デルファイの本売ってなさ杉だし、高いから本とか買いたくないんだけど
ネットで勉強してゲーム(マリオみたいな)つくれるようになる?
マイナー言語だって聞いたけど、ここまでとは・・(・c_・` )

ヴィジュアルベーシックは初心者には遠い言語になったそうだし
これしかないと思っております。
よろー
917デフォルトの名無しさん:2005/06/15(水) 15:58:56
>>916
なるでしょ。ネットでちょっとした構文を覚えて
ゲーム用のライブラリの使い方を覚えれば御しまい。

ゲーム関係なら、このあたりかな。
http://gamdev.org/w/?%5B%5BDelphi%A4%DE%A4%C8%A4%E1%5D%5D
918デフォルトの名無しさん:2005/06/15(水) 16:00:56
919デフォルトの名無しさん:2005/06/15(水) 16:47:04
>>916
やる気も無く最初っから人にたよりすぎてるおまえは、
これ以上、人間としてのスキルアップはのぞめません。

かえれ。
920デフォルトの名無しさん:2005/06/15(水) 16:51:42
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
921デフォルトの名無しさん:2005/06/15(水) 16:54:17
>>920
賛同します!
922デフォルトの名無しさん:2005/06/15(水) 17:48:19
Memo1の内容をStreamで保存したいんだけど、
Abstractエラー!って怒られます。
どうしたらいいでしょう。

procedure TForm1.Button1Click(Sender: TObject);
var stream:Tstream;
begin
try
stream:=Tstream.Create;
//try
Memo1.Lines.SaveToStream(stream);
//except
//end;
finally
stream.Free;
end;
end;
923デフォルトの名無しさん:2005/06/15(水) 17:49:26
TFileStream, TMemoryStreamのどっちかにしろ。
924デフォルトの名無しさん:2005/06/15(水) 18:01:52
とりあえずInside Windowsを購読することを薦める・・・たかった。
コラムを再編集して別冊にしたりいい雑誌です・・・だった。
925デフォルトの名無しさん:2005/06/15(水) 18:04:04
>>916
まったくの初心者なら、デルファイ2時代の本でも結構参考になる。
根本のところが大きく変わっていないから。
ネットオークションとか古本屋を当たるもの手だよ。
俺も今はデルファイ6ENTを使っているけど、デル2時代の本が結構参考になったりする。
926922:2005/06/15(水) 18:15:40
>>923
ありがとうございます。確かにエラーはでなくなったのですが
最終的にはTstream型を要するコンポーネントに使用したいので
Tstreamで実現することはできないでしょうか?
927デフォルトの名無しさん:2005/06/15(水) 18:21:03
TStream は抽象クラス。TFileStream も TMemoryStream もその下位クラスだから
代入可能。OOP をもすこし勉強すべし。
928デフォルトの名無しさん:2005/06/15(水) 18:22:42
>>926
TStreamは両クラスを統一的に扱うための抽象クラスなので
var stream: TStream;
stream := TFileStream.Create or TMemoryStream.Create

Memo1.Lines.SaveToStream(stream); <- Memo1はどちらのクラスに書き込んでいるかは感知しない

という使い方が出来ます。
このあたりはオブジェクト指向プログラミングの肝なので
いずれ勉強することになると思います。
929デフォルトの名無しさん:2005/06/15(水) 19:13:50
>>916 たしかにそうだね。CやJavaはあってもDelphiはまったくない。
大規模書店でもない。どこにもない!
930デフォルトの名無しさん:2005/06/15(水) 19:27:08
>>924
今本棚見たらInsideWindowsが4冊だけ残ってた。
ほとんど持ってたんだが、どこいったんだろ。
931デフォルトの名無しさん:2005/06/15(水) 19:39:43
amazonで検索してみたけど
2002,3年以降はあまり出版されてないみたい。知らなかった(汗
買い漁った=手持ちはほとんど2000年前後ですね。D5〜7あたり。栄枯盛衰・・・orz

あと、プログラム関連、学術書(学〜院)関連は
普通の古本屋には買い取れないジャンルだそうです。
プログラマーにとっては欲しい古本は沢山あると思うんですが
マイナー且つ古い情報になるので売れない&場所をとる筆頭だとか。
932デフォルトの名無しさん:2005/06/15(水) 19:45:05
楽天の本屋で色々買ってるけど品揃えは結構いい気がする
933デフォルトの名無しさん:2005/06/15(水) 19:47:15
マイナーであることはつらい。
そこでメジャーに移籍するか、または、マニアに変身するかが分かれ目。

Del厨は言うまでもなく後者なわけだが・・・・・
934デフォルトの名無しさん:2005/06/15(水) 19:51:26
またこの流れか・・・
935デフォルトの名無しさん:2005/06/15(水) 19:54:18
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/

はい誘導
936デフォルトの名無しさん:2005/06/15(水) 20:00:05
アプリケーションのアイコンをDelphiの元々のアイコンに戻したいんですが
アイコンが見つかりません。
どこにあるんですか?
937デフォルトの名無しさん:2005/06/15(水) 20:08:28
>>936
それ俺もはまったw
ダミーのプロジェクト作って*.resから取り出すとか。
938デフォルトの名無しさん:2005/06/15(水) 20:16:28
>>937
おお、なるほど。*.resに入ってることすら知りませんでした。

おっしゃる通りにダミーのプロジェクト作って
それのresファイルと置き換えたら元のアイコンに戻りました。
ありがとうございました。
939デフォルトの名無しさん:2005/06/15(水) 20:18:16
おれ:どこって中だよ 中 

きみ:えっ
おれ:ほら 中だよ

きみ:えっ ^_^;;;
おれ:だから中だって
きみ:えええっ ^_^;;;
おれ:だから中だって
きみ:えええっ ^_^;;;
おれ:だから中だって \BIN\DELPHI32.EXE
きみ:えええっ ^_^;;;
940デフォルトの名無しさん:2005/06/15(水) 20:47:15
DelphiかどうかはリソースのRCDATA見れば分かる。
941デフォルトの名無しさん:2005/06/15(水) 21:15:26
TQueryコンポーネントのFilterプロパティで
kana Like '%ABC%'
といった絞り込みを行いたいのですが、
「この操作は行えません」とDelphiのエラーが表示されます。

他の項目(日付など)では問題なくFilterできました。

どうすればよいのでしょうか?
942デフォルトの名無しさん:2005/06/15(水) 22:55:47
>>941
フィルタ式はSQLじゃないから、
kana = '*ABC*'だよ〜ん。
943デフォルトの名無しさん:2005/06/16(木) 00:42:46
>このスレッドは、他のスレッドでは書き込めない超低レベル、
>もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
>Delphi使いが優しくコメントを返しますが、
>お礼はDelphiの布教と初心者の救済をお願いします。

度々これ出るけど、これって技術的に解らない(説明できない)って意味じゃないのか?
少なくとも日本語書けないような奴や調べようともしていない奴の言い訳に使われるのは
激しく違う気がする。
944デフォルトの名無しさん:2005/06/16(木) 00:46:55
とりあえず、>>763みたいのは問題外だな。
945デフォルトの名無しさん:2005/06/16(木) 01:39:48
そんなのいちいち蒸し返すやつほど問題外。
946デフォルトの名無しさん:2005/06/16(木) 04:25:18
お前らおちけつ
947デフォルトの名無しさん:2005/06/16(木) 04:40:20
俺も最近 Delphi 始めてみたんだけど、文献が無くて辛いし面倒すぎ。
>>622 に禿同だったんが、次のレスみてかなり萎えた。
Delphi6 Personal が無料といわれても、その後のイメージが悪過ぎる。

ちょっとしたことを調べるだけでも、かなり手間と金が掛かる気がする。
俺は Delphi でやりたいことがあるのでコツコツと続けているが、
こんな状態では、新規参入する人なんて殆ど居ないんじゃなかろうかと思った。
948デフォルトの名無しさん:2005/06/16(木) 05:54:17
なぜオンラインでなければならないのか、さっぱり分からん。
WinHelpで十分だろ。

> ちょっとしたことを調べるだけでも、かなり手間と金が掛かる気がする。
気がするだけでしょ。いいかげんな事言わないの。

こっちにおいで、ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
949デフォルトの名無しさん:2005/06/16(木) 09:04:44
>>984
言いたいことは分かるけどね……それは既に熟練した結果なんじゃない?
ちょうど、今 WideFormat 使ってで変換したくなって、適当に使ってみたら実パラメータが足りないと怒られた。

Delphi6 Personal 付属のヘルプ
 function WideFormat(const Format: WideString; const Args: array of const): WideString;

で、具体的にはどう使うのだ?
例文無いし、付属のヘルプはリンク切れしてる (よくある)

WideFormat delphi で Google検索
http://www.google.com/search?q=WideFormat+delphi&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official

日本語限定で3件ヒット 1件リンク切れ
生きた2つリンクも実際に行ってみれば分かると思うが、全く無意味 orz

で、次は英語で漁るとして、それで駄目ならどうやって調べたものかな……と。
適当にソース漁りまくるか、本買うしか思い付かない。
こんな馬鹿みたいに単純なことをしたいだけなんけど。

まぁ、俺の調べ方が変なのかもしれないが、初心者なんてこんなものですよ。
というか、毎度毎度こんな状態ばっかりで萎えまくり、なんか良い本ないですか?


[ちらしの裏]
って、投稿する寸前に、似た別の変換関数で検索することに思い付いたら解決した orz
printf に似た利用方法な関数で、第1引数 は'%s' 第2引数は [変数] と指定すれば良いのか?
付属ヘルプだけで、どうこれに辿り付けば良いのか分からないですよ orz
こんなことか可能になるだけで 30分以上浪費しましたとさ
他の言語では、こんな酷い状態に陥りまくったことはないんだけど
950デフォルトの名無しさん:2005/06/16(木) 09:05:43
>>943
そういうのも構わないというのが、このスレの主旨だったはず。
「こいつには回答したくねー」と思うならスルーすればよし。回答する義務はないんだし。
951デフォルトの名無しさん:2005/06/16(木) 09:10:49
>>949
Format関数にたどり着ければなぁ・・・。
952デフォルトの名無しさん:2005/06/16(木) 09:27:08
>>949
日本語限定というのが、おかしいですね。
そのGoogle検索でも、すでに大量にヒットしているじゃないですか。
英語が分からなくても、コードをみれば「適当に」分かるのでは?

付属ヘルプもリンク切れしていないようですし。
初心者すれで聞けば、すぐ回答がつく事ですし
何を求めているのか良く分かりません。

完璧を求めるなら、ソース付のPro版をお勧めします。
953デフォルトの名無しさん:2005/06/16(木) 09:39:53
> 他の言語では、こんな酷い状態に陥りまくったことはないんだけど
何と比較しているのか良く分からんが
他の言語は金を出してもソースがついて来ないからな。

つか、適当に使って、上手く行かないって逆切れしている>>949って・・・
954デフォルトの名無しさん:2005/06/16(木) 09:40:45
>>949
ヘルプのリンク切れであれこれ悩んで長文書く間に
お気軽にWideFormatってなんだと聞いてくれればいいのに。



# 気持ちはわかるがこのスレでそういう物言いをすると
# おにいさんたちが嬉々として寄ってくるので正直もう少し言葉遣いを考えてくれ。
# このスレの平和と安定の為に・・・
955デフォルトの名無しさん:2005/06/16(木) 09:51:18
いまから、Delphi入門は正直おすすめしない。
956デフォルトの名無しさん:2005/06/16(木) 09:58:13
そうそうWIN32対応のLonghornがリリースされるもんね。
957デフォルトの名無しさん:2005/06/16(木) 10:07:56
最近プログラマにも、安定した公務員が一番、みたいなやつが増えてきたな。
958デフォルトの名無しさん:2005/06/16(木) 10:09:50
そろそろこっちにおいで、ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
959デフォルトの名無しさん:2005/06/16(木) 11:27:32
タダにしても流行しない、それがDelphiクオリティ
960デフォルトの名無しさん:2005/06/16(木) 14:17:07
ファイルの更新日時を秒単位まで正確に取得したいのですが、奇数秒が偶数に切り上げられてしまいます。
Delphiでファイルの更新時刻を正確に取得するにはどうしたらいいんでしょうか。
調べてみたところ、ファイルシステムがFAT32だと、奇数秒が切り上げられるというファイルシステム上の
制限があるらしいのですが、私の使用している端末はNTFSです。

テストに使用した関数は、
・FileAge→FileDateToDateTime
・FileGetDate→FileDateToDateTime
・(FindFirst→)SearchRec.Time→FileDateToDateTime
です。すべて同じように奇数秒が偶数に切り上げられます。

OSはWindowsXP SP1
DelphiはDelphi7 Enterprise
です。
よろしくお願いします。
961デフォルトの名無しさん:2005/06/16(木) 14:54:52
GetFileTime API
962デフォルトの名無しさん:2005/06/16(木) 15:41:19
内部でDOS形式に変換してるから必ず2秒きざみになる
NTFS専用ならばSearchRec.FindData.ftLastWriteTimeを
FileTimeToSystemTimeで変換しる
>>961使う場合のやり方は>>961に聞け
963960:2005/06/16(木) 15:48:37
>>961
私ももうちょっと調べてみましたが、Delphiから呼ばれるAPIは
・FileAge→FindFirstFileA
・FileGetDate→GetFileTime
・(FindFirst→)SearchRec.Time→FindFirstFileA
となっていました。
GetFileTime APIは、FileGetDateから呼ばれているようですね。
FATの最終更新時刻の分解能は 2 秒で、NTFSでは1秒(?)なので、
FileGetDateで正しく取得できるはずなんですけどねえ...
964デフォルトの名無しさん:2005/06/16(木) 15:53:24
>>963
FileTimeToDosDateTimeを見落としてる
965デフォルトの名無しさん:2005/06/16(木) 15:54:33
>>963
ごめん、>>962はFileTimeToLocalFileTimeしてからFileTimeToSystemTimeだ
966デフォルトの名無しさん:2005/06/16(木) 16:08:30
皆さんありがとうございます。なんとかできました。
SearchRec.FindData.ftLastWriteTime→FileTimeToLocalFileTime→FileTimeToSystemTime→SystemTimeToDateTime
とすればうまく取得できますね。
こんな感じになりました。

function GetFileUpdTime(sFileName: String): TDateTime;
var
SearchRec: TsearchRec;
LocalTime: TFileTime;
SysTime: SYSTEMTIME;
begin
FindFirst(sFileName, faAnyFile, SearchRec);
try
FileTimeToLocalFileTime(SearchRec.FindData.ftLastWriteTime, LocalTime);
FileTimeToSystemTime(LocalTime, SysTime);
result := SystemTimeToDateTime(SysTime);
finally
FindClose(SearchRec);
end;
end;
967960:2005/06/16(木) 16:31:28
966=960です。

FileAgeやFileGetDateでは、内部でFileTimeToLocalFileTime→FileTimeToDosDateTime
と変換しているため、秒が切り上げられてしまうんですね。
というわけで、GetFileTime(API)→FileTimeToLocalFileTime→FileTimeToSystemTime→SystemTimeToDateTime
でもうまくいきました。
ところでなぜ、DelphiではFileTimeToSystemTimeを使わずに、FileTimeToDosDateTimeを使っているのでしょうか?
FileTimeToSystemTimeがWin95/98に対応している以上、FATでも問題あるじゃないですよね?
968デフォルトの名無しさん:2005/06/16(木) 16:49:06
>>967
WindowsAPIのヘルプにFATは2秒単位だと書いてあるが?
互換性という意味ではDOS形式にするのが正しい罠
ただ、プラットフォームで切り分けれとも思うけどさ
969デフォルトの名無しさん:2005/06/16(木) 17:01:54
D1からの名残かもね。
970960:2005/06/16(木) 17:35:54
>>968
互換性ですか。分解能が高くなる分には問題ないような気はしますが、もし互換性のためであれば、
やっぱりNTFSとFATの両方に対応した新しい関数も用意して欲しいものですね。
971ななしへたぐらま ◆XcB18Bks.Y :2005/06/16(木) 17:43:51
>>892
フォームを閉じただけではフォームは廃棄されず,そのコンポも廃棄されません.
閉じるときに廃棄したい場合はOnCloseイベントでAction に caFree を代入します.

>>929
もう5年くらい前ですが東京・新宿の紀伊國屋書店にDelphi関連書籍がほとんど無くて参ったことがありました.
近場の書店の方が揃っていたという.
(※近年,某魔法メガネ君の本で有名になった八王子駅前の某書店)

>>948
Delphiのヘルプは駄目なのは事実ですけどね.
J Builderの成功例をまねて普及のために無料版をばらまくなら
初心者がしっかり学べるドキュメントを残さなければいけなかったのですが….
972デフォルトの名無しさん:2005/06/16(木) 17:44:11
>解能が高くなる分には問題ないような
偶数しか入ってこないはず、と思い込んでるソフトもあるんじゃないかな?
973デフォルトの名無しさん:2005/06/16(木) 19:33:12
> J Builderの成功例をまねて普及のために無料版をばらまくなら
> 初心者がしっかり学べるドキュメントを残さなければいけなかったのですが….

personal では作れないチュートリアルとかがあって、まだ修正されてないし、
もうそのときからドキュメントに関してはアキラメ。よって、ユーザ拡大もアキラメ。
先細りは自業自得だわな
974デフォルトの名無しさん:2005/06/16(木) 19:57:53
パーソナルの登録で
「登録の最終確認のメールを xxxxx@xxxxxx に送信しました」
って出てから2日待ってもメールが来ないのは俺だけ?
もちろんメアドが間違ってるなんてオチじゃないよ。
975デフォルトの名無しさん:2005/06/16(木) 19:58:10
>>973
もう暗くなったよ。巣にお帰り。
976デフォルトの名無しさん:2005/06/16(木) 20:29:26
一定時間コンピュータがアイドル状態になったら
イベントが起きるようなコンポーネントかAPIってあります?
スクリーンセーバーみたいなことをやりたいんですが、
TApplication.OnIdle はメインスレッドが暇になったときにガンガン呼ばれるようで、
目的に合致しません。

Delphi 2005使ってます。
977デフォルトの名無しさん:2005/06/16(木) 20:51:08
>>976
OnIdle イベント
アプリケーションがアイドル状態になったときに一度だけ呼び出され,
Done プロパティが False に設定されない限り再び呼び出されることはありません。
Delphi6のヘルプより。
978976:2005/06/16(木) 21:04:27
>>977
Done := True; すればいいのではないか、ということでしょうか?

アイドル状態の説明が不十分だったのでちゃんとしておきます。
私がやりたいのは、一定時間マウスやキーボードをいじらずに
放置しておいた場合、イベントを発生させるということです。

TApplication.OnIdleは、処理すべきウィンドウメッセージがなくなったりすると
Done := True としてもミリ秒単位で発生するので向いていないようです。

よろしくお願いします。
979デフォルトの名無しさん:2005/06/16(木) 21:11:30
GetLastInputInfo
980976:2005/06/16(木) 21:24:19
>>979
ありがとうございます。
そのキーワードで検索したらDelphi-MLが出てきました。
お恥ずかしい限りです。
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=079021
981デフォルトの名無しさん:2005/06/17(金) 04:34:35
Pasclソースの整形ツールってありますか?
982デフォルトの名無しさん:2005/06/17(金) 08:52:42
983デフォルトの名無しさん:2005/06/17(金) 08:55:22
984デフォルトの名無しさん:2005/06/17(金) 10:30:40
八王子駅前って、くまざわ書店?
985デフォルトの名無しさん:2005/06/17(金) 10:38:07
986ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 16:52:47
レスしたいところですが,もうすぐ1000なのでテンプレ作ってみたです.

すれたい:くだすれDelphi(超初心者用)その25

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

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

<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
----------
(続く)
987ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 16:56:14
988ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 16:56:37
989ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 18:43:13
コメントが抜けておりました.問題点等ありましたらご指摘下さい.
特になければこのテンプレでスレ立てにトライしてみます.


以下,1レス消費してしまったので.
>>975 >>973の指摘は正しいと思います.ヘルプのリンク切れってぶっちゃけあ(ry
>>984 そうです.ここ数ヶ月は理工書売り場に行っていませんが,多分今でもおいてあると思います.
990デフォルトの名無しさん:2005/06/17(金) 18:49:09
雑談・喧嘩はフサフサスレへっていれておいたら?
991デフォルトの名無しさん:2005/06/17(金) 19:07:50
喧嘩って書くとかどが立つから、「雑談・討論」はフサスレへかな。
992デフォルトの名無しさん:2005/06/17(金) 19:25:26
random(10)
とすると
かなり数値が偏るんですが
対処法は無いでしょうか?
993デフォルトの名無しさん:2005/06/17(金) 19:27:46
random初期化関数無かったっけ?
994デフォルトの名無しさん:2005/06/17(金) 19:31:33
ランドミゼ
995デフォルトの名無しさん:2005/06/17(金) 19:34:29
つうか初期化の話じゃないし
ttp://tobysoft.net/wiki/index.php?Delphi%2FMersenne%20Twister
996ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 20:29:31
>>990-991を考慮してスレ立てにトライします.
997ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 20:38:10
建てました.

くだすれDelphi(超初心者用)その25
http://pc8.2ch.net/test/read.cgi/tech/1119008091/

以後の質問は上記スレでおねがいします.

>>992
起動時にRandomize手続きを実行していますか?
998デフォルトの名無しさん:2005/06/18(土) 00:46:11
>>997
乙です。
999デフォルトの名無しさん:2005/06/18(土) 00:46:42
999
1000デフォルトの名無しさん:2005/06/18(土) 00:47:14
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。