5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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

<その他>
BorlandHomePage
http://www.borland.com/jp/
DelWiki避難所
http://wiki.s54.xrea.com/delphi/
BDN(BorlandDeveloperNetwork)※英語
http://bdn.borland.com/delphi/

#過去スレは>>2-10のどこかに


2 :デフォルトの名無しさん:2006/06/24(土) 18:57:20
過去スレ
01:http://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
02:http://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
03:http://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
04:http://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
05:http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
06:http://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
07:http://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
08:http://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
09:http://pc5.2ch.net/test/read.cgi/tech/1071294733/
10:http://pc5.2ch.net/test/read.cgi/tech/1074523803/
11:http://pc5.2ch.net/test/read.cgi/tech/1076609666/
12:http://pc5.2ch.net/test/read.cgi/tech/1076610073/
13:http://pc5.2ch.net/test/read.cgi/tech/1081003641/
14:http://pc5.2ch.net/test/read.cgi/tech/1085239007/
15:http://pc5.2ch.net/test/read.cgi/tech/1087823906/


3 :デフォルトの名無しさん:2006/06/24(土) 18:58:33
16:ttp://pc5.2ch.net/test/read.cgi/tech/1089779142/
17:ttp://pc5.2ch.net/test/read.cgi/tech/1091671391/
18:ttp://pc5.2ch.net/test/read.cgi/tech/1093996761/
19:ttp://pc5.2ch.net/test/read.cgi/tech/1097454588/
20:ttp://pc5.2ch.net/test/read.cgi/tech/1101530485/
21:ttp://pc5.2ch.net/test/read.cgi/tech/1104511938/
22:ttp://pc5.2ch.net/test/read.cgi/tech/1107332482/
23:ttp://pc8.2ch.net/test/read.cgi/tech/1110470895/
24:ttp://pc8.2ch.net/test/read.cgi/tech/1115581376/
25:ttp://pc8.2ch.net/test/read.cgi/tech/1119008091/
27:ttp://pc8.2ch.net/test/read.cgi/tech/1126590039/
28:ttp://pc8.2ch.net/test/read.cgi/tech/1131168199/
29:ttp://pc8.2ch.net/test/read.cgi/tech/1135866929/
30:ttp://pc8.2ch.net/test/read.cgi/tech/1138370150/
31:ttp://pc8.2ch.net/test/read.cgi/tech/1142594051/
32:ttp://pc8.2ch.net/test/read.cgi/tech/1145267913/

4 :デフォルトの名無しさん:2006/06/24(土) 19:17:00
次スレは無しって話だったろうが・・・

5 :デフォルトの名無しさん:2006/06/24(土) 19:29:14
>>1
スレ立て乙!

6 :デフォルトの名無しさん:2006/06/24(土) 19:58:33
>>1
乙〜

7 :デフォルトの名無しさん:2006/06/24(土) 20:10:48
Delphiに関係してる雑談および関係してない雑談については以下で

バカボンのDelphi不買談話室その28
http://pc8.2ch.net/test/read.cgi/tech/1134668922/

8 :デフォルトの名無しさん:2006/06/24(土) 20:48:58
>>4
気軽に質問できるところがなくなるじゃん・・・

9 :デフォルトの名無しさん:2006/06/24(土) 22:17:33
>>8
相手にするなって

10 :デフォルトの名無しさん:2006/06/24(土) 23:52:17
新スレたったところで早速質問です。

255文字を超える文字列定数を使うにはどうすればよいですか?
具体的には下のようなことがしたいです。

str: string;

str := 'ああ・・・(255文字以上の文字)・・・ああ';

11 :デフォルトの名無しさん:2006/06/25(日) 00:07:35
>>10
str := '(200文字)'+'(200文字)';

12 :デフォルトの名無しさん:2006/06/25(日) 00:10:53
>10
仕様です。Delphiでは出来ません。

13 :10:2006/06/25(日) 00:12:47
>>11-12
わかりました。

どうもありがとうございます。

14 :デフォルトの名無しさん:2006/06/25(日) 00:13:56
>10
一行で書かないで、数行に書けばOK。
なお、長大な文字列はresourcestringで宣言しておいた方が無難。
処理が少し早くなる。




15 :10:2006/06/25(日) 00:50:49
>>14
そんなものがあるとは・・・delphiも奥が深いですなぁ

16 :デフォルトの名無しさん:2006/06/25(日) 00:55:45
いやおぬしの知識が浅いだけ・・・

17 :デフォルトの名無しさん:2006/06/25(日) 04:15:08
久しぶりにDelphi6使ってるんですが、
Object, 文字列Method, 引数を渡して文字列Methodを実行する
Javaのinvokeみたいなのってありませんか?

18 :デフォルトの名無しさん:2006/06/25(日) 04:27:17
http://forum.nifty.com/fdelphi/samples/01177.html

19 :デフォルトの名無しさん:2006/06/25(日) 04:38:08
>>17
ネイティブアプリでその手の処理を必要とする設計自体
なんか間違ってる気がするが、たまたまDelphiは出来てしまう

メソッドのシグネチャが固定ならpublishedに置いておいて
TObject.MethodAddressの結果をTMethodに詰めて
自前のprocedure(...) of object型にキャストして呼ぶ

シグネチャも可変なら、TypInfo.pas(Personalでも宣言部は見えた筈)と格闘する。

interfaceでやりたいなら、dispinterfaceとIInvokableとやり方が2つあるが、
前者ならCOMオブジェクトとして作ってVariantに詰めれば
スクリプト言語の型無しオブジェクトみたいにふつーの呼びだし構文で直接呼べる。ただしCOMの知識が必要。
後者(IInvokable)はやることはTObjectのとほぼ同じ。TypInfoと格闘。

20 :デフォルトの名無しさん:2006/06/25(日) 04:39:49
>>18
これでやっと進みます。
ありがとうございました。

21 :デフォルトの名無しさん:2006/06/25(日) 04:54:50
>>19
ありがとうございます、参考にさせていただきます。

>ネイティブアプリでその手の処理を必要とする設計自体
>なんか間違ってる気がするが
そう言われてしまうとそれまでなんですが・・・


22 :デフォルトの名無しさん:2006/06/25(日) 06:21:08
パス付きの圧縮ファイルが作れるコンポ-ネントってありませんか?

23 :デフォルトの名無しさん:2006/06/25(日) 06:28:47
unlha32.dllでもunzip32.dllでも好きなのをどうぞ。

24 :デフォルトの名無しさん:2006/06/26(月) 16:26:05
comettrees.pasてどこにあるか知っていませんか?


25 :デフォルトの名無しさん:2006/06/26(月) 16:58:46
知っていません。

26 :デフォルトの名無しさん:2006/06/26(月) 18:52:46
グローバルIPを取得するにはどうすればいいのでしょうか?

27 :デフォルトの名無しさん:2006/06/26(月) 19:20:57
外に置いてあるサーバに接続して教えてもらうしかない。
自力で知るのは不可能。

28 :デフォルトの名無しさん:2006/06/26(月) 19:22:06
UPnP

29 :デフォルトの名無しさん:2006/06/26(月) 23:18:51
D7でDBGRIDで編集するときに最下行の編集が終わった後の自動的な行の追加を禁止したいのですが
どうすればいいですか。


30 :デフォルトの名無しさん:2006/06/27(火) 07:56:49
自動的な行の追加を禁止する。

31 :デフォルトの名無しさん:2006/06/27(火) 16:17:10
string型は255文字を超える文字列は代入できないんですか!?

Delphi使い始めて日が浅いんですけど、ベテランのかたは255文字を超える文字列はどんな変数に格納してるんですか?

32 :デフォルトの名無しさん:2006/06/27(火) 16:29:08
>string型は255文字を超える文字列は代入できないんですか!?
それ、ShortString型。
String型は
2ギガ代入できるはず。

33 :デフォルトの名無しさん:2006/06/27(火) 17:44:18
>>31
>>10

34 :デフォルトの名無しさん:2006/06/27(火) 18:09:19
リテラルの代入と一般の代入は違うでしょ。

35 :デフォルトの名無しさん:2006/06/27(火) 20:33:52
文字列「定数」なわけだ。

36 :デフォルトの名無しさん:2006/06/27(火) 21:53:53
リテラルは何で制限あるんだろ・・・

37 :デフォルトの名無しさん:2006/06/27(火) 21:57:04
>>36
ソースの一行に2ギガバイトの文字列書かれても困るからじゃないか?w

38 :デフォルトの名無しさん:2006/06/28(水) 00:53:17
今日配列の勉強をし始めたのですが、分からないことがあります。

var
test : array[1..3] of integer;
begin
label1.caption := inttostr(test[1]);
end;

と記載すると、label1には1244704という数字が表示されます。
本当は「1」とだけ表示させたかったのですが、どうすればいいでしょうか?
また、1244704はどこから出てきた数字なのでしょうか?

39 :デフォルトの名無しさん:2006/06/28(水) 01:23:41
確保したメモリ領域にたまたまあった数値がそのまま出力されている。
自分で初期化しないといけない。
あるいは const を使う

40 :デフォルトの名無しさん:2006/06/28(水) 03:33:15
>>36
Delphi1の頃の名残なのかも。

41 :デフォルトの名無しさん:2006/06/28(水) 06:01:55
メソッド名; virtual;

メソッド名; virtual; abstract;

の違いがイマイチよくわかりません。
自分なりに試した結果、virtual; abstract;はimplementation以下がなくてもおkってことが判明したんですが、この他に違いがあるんでしょうか?

42 :デフォルトの名無しさん:2006/06/28(水) 07:13:32
abstractは抽象メソッドていうんだ
派生クラスでは必ずabstractなメソッドを継承しなければならない
逆を言えば、そのクラスの派生クラスは
必ずそのabstractなメソッドを持っているてことだ

43 :デフォルトの名無しさん:2006/06/28(水) 07:34:08
メソッドは Delphi コンポーネント内で abstract として宣言されることがあります。VCL と CLX で一般に抽象メソッドが現れるのは,TCustomGrid のように名前が「Custom」で始まるクラスです。下位クラスの派生専用という意味で,そのようなクラス自体が抽象になります。

抽象メンバーが入っているクラスのインスタンスオブジェクトは作成できますが,これはお勧めできません。抽象メンバーを呼び出すと,EAbstractError 例外が生成されます。

abstract 指令の用途は,下位コンポーネントでの明示と定義が必要なクラスの各部を示すことです。これを使った場合,コンポーネントの開発者は下位クラスに抽象メンバーを再宣言してからでないと,クラスの実際のインスタンスを作成できません。

44 :41:2006/06/28(水) 08:57:52
@abstractメソッドは必ず継承しなくてはならない。
それと、Aabstractメソッドのあるクラスはそのままインスタンスをつくっちゃいけない。

てことでおkですか?
>>43のヘルプは読んだんですけど、初参には言葉足らずでわかりにくい・・
Delphi本がすくないので(地方者だす)苦労してまつ。

45 :デフォルトの名無しさん:2006/06/28(水) 10:10:45
×@abstractメソッドは必ず継承しなくてはならない
○@abstractメソッドは必ずオーバーライドしなくてはならない

46 :デフォルトの名無しさん:2006/06/28(水) 10:58:48
>>44-45
OKなはず

47 :デフォルトの名無しさん:2006/06/28(水) 19:30:35
便乗で質問、抽象メソッドってどういうときに使えばいいんでつか?
使い道がよくわからないので自分で作ったことがないのですが。

48 :デフォルトの名無しさん:2006/06/28(水) 20:20:42
クラスの階層は、普通、機能の共通化・抽象化から具体化に向かう物。

たとえば、昆虫クラスを作るとして、足が6本、羽が4枚、体節が3つ、とかは
すべての昆虫に共通。これらの特徴を表す性質を抽象クラスとして整理し、
abstract なメソッドにしておけば、カブトムシクラス、はえクラス、
コオロギクラスなどをその基本クラスから派生することにより、むりやり abstract
なメソッドを実装させる事ができる。共通のメソッドが実装されている事が保証され、
昆虫クラスの基本クラスとして、あるメソッドで受け取っても、それがカブトムシなのか
コオロギなのか、はえなのか、にかかわらず、飛んだりはねたり出来る。これを多態性
という。

49 :デフォルトの名無しさん:2006/06/28(水) 21:07:22
多態性(ポリモーフィズム)については、Javaの初心者向け解説書読むと分かりやすいかもね

50 :デフォルトの名無しさん:2006/06/29(木) 02:38:40
中傷メソッドなんていらないのでは?
空の仮想関数を定義すればいいだけ。

51 :41:2006/06/29(木) 06:53:48
>>50
implementation以下が短くて済むんじゃないですか?

52 :デフォルトの名無しさん:2006/06/29(木) 08:04:00
タスクトレイのアイコンにマウスを乗せると、「音量」とかヒントが出ると思うのですが、
タスクトレイのヒントの一覧を取得する方法ってありませんか?

53 :デフォルトの名無しさん:2006/06/29(木) 08:42:22
いい加減な解説するので、間違ってたら指摘よろ。

円を描画するクラスTEnと四角形を描画するクラスTShikakuを考える。
描画するにはByougaメソッドを使う。

var
En: TEn;
Shikaku: TShikaku

En := TEn.Create;
Shikaku := TShikaku.Create;
En.Byouga;
Shikaku.Byouga;

円も四角形も図形の一種と考え、汎用図形クラスTZukeiを作る。
しかしTZukeiは汎用であるためByougaメソッド自体は何もできない。
そこでvirtual; abstractで抽象メソッドにしてガワだけ作っておく。
TEn、TShikakuはTZukeiから派生させByougaメソッドをオーバーライドし
それぞれの図形を描画するように実装しておく。
TZukei型の変数には派生したTEnやTShikakuのインスタンスを代入できるから
以下のようにすればインスタンスを代入した後は何のインスタンスか考慮せずに
それぞれの図形を描画できる。

var
Zukei: array [0..1] of TZukei;

Zukei[0] := TEn.Create;
Zukei[1] := TShikaku.Create;
for i := 0 to 1 do
begin
Zukei[i].Byouga; //インスタンスの中身を気にせずともそれぞれの図形を描画
end;

54 :デフォルトの名無しさん:2006/06/29(木) 11:13:53
> 空の仮想関数を定義すればいいだけ。

機能的にはそうだけど、上位クラスの実装者と下位クラスのそれが一致するとは限らず、
「おまいら、派生したら必ず override しろよ! 」という強制が生ずるのは abstract
の特徴と言えるよ。

55 :デフォルトの名無しさん:2006/06/29(木) 11:16:16
抽象クラスのインスタンスを作った時点でコンパイラの警告が出たっけ?
出るなら完璧なんだが・・

56 :デフォルトの名無しさん:2006/06/29(木) 12:40:07
2005 以降なら
TMyclass = class abstract

57 :デフォルトの名無しさん:2006/06/29(木) 16:53:22
>>38
vbワールドからやってきた人ですか?
vbはそんなこと気にしなくていいからね。
だからvb最高ー!

58 :デフォルトの名無しさん:2006/06/29(木) 19:32:57
ヒント:抽象クラスのインスタンスは作ることは出来ないが、
    抽象クラス型の変数に継承クラスのインスタンスを代入することは出来る。

59 :デフォルトの名無しさん:2006/06/29(木) 20:01:38
ま、一般に上位クラスの変数に下位クラスのインスタンスは代入可。
逆は不可。これってかなり重要。

60 :デフォルトの名無しさん:2006/06/29(木) 20:47:04
単純型のイメージと正逆だからなぁ。
だからOOPは地獄だぜフゥ(略

61 :デフォルトの名無しさん:2006/06/29(木) 22:37:54
VBってクラスとか継承あるの?
弄ったことないからわからない。

62 :デフォルトの名無しさん:2006/06/29(木) 23:26:24
VB/VBAはOOP風だが不完全。継承は無し
VB.netはVBというより.netの機能としてOOPが可能。故に言語を超えて派生できたりする。

63 :デフォルトの名無しさん:2006/06/30(金) 02:04:10
bmpまたはjpgをpngに変換したいのですがどうすればできるのでしょうか?

64 :デフォルトの名無しさん:2006/06/30(金) 03:37:34
方法はいろいろあります


65 :デフォルトの名無しさん:2006/06/30(金) 04:00:18
>>64
いじわる
プニュ( ´∀`)σ)Д`)

66 :デフォルトの名無しさん:2006/06/30(金) 05:01:41
いじわるしてる訳ではありません。逆です。

私はあなたの好みを知りませんので
数多の方法のなかで私が選んだものが
的確にあなた好みの方法に一致している
とは限らないですから。



67 :デフォルトの名無しさん:2006/06/30(金) 05:37:46
TJpegImage TPngImage

68 :デフォルトの名無しさん:2006/06/30(金) 05:39:04
bmpからjpgに変換する時のように
TJpegImageにBitmapファイルをassignして吐き出すくらい簡単にできる方法があるならそれが一番良いのですが・・・

69 :デフォルトの名無しさん:2006/06/30(金) 08:17:56
TPngObjectとかTPNGImageでぐぐってコンポーネント探せ

70 :デフォルトの名無しさん:2006/06/30(金) 09:31:43
こんなところで質問してるんだから、「好み」とかの問題ではなく、
もっとも簡単に解決する方法を回答すべきだろよ。
いちいち質問者の「好み」を聞いてからでないと回答するつもりがないなら
レス書くなよ。

71 :デフォルトの名無しさん:2006/06/30(金) 09:51:02
回答者の質に不満ならC#スレ逝けよ
ウンコが臭いと嘆いてもどうにもならないだろ

72 :デフォルトの名無しさん:2006/06/30(金) 10:05:27
>>71 私はあなたの好みを知りませんので不満ならC#スレにいってください。

73 :デフォルトの名無しさん:2006/06/30(金) 12:39:31
C#への誘導レスかよ。

何通りもあるっていっても何十種類もあるわけじゃないだろ?
簡単なの2つくらいあげてやればいいのに。

74 :74その1:2006/06/30(金) 18:26:09
教えてください。
  ボタン1を押したら「b1(←editの名前)×c1(←editの名前)の結果をLabel1に表示」
  ボタン2を押したら「b2(←editの名前)×c2(←editの名前)の結果をLabel2に表示」
  (ボタン3以降も同様の処理)
という計算をさせたくて、試しに下記のように記載しました。
「procedure keisan」の定義中の「b(x)」の書き方でエラーになってしまいます。
xはbutton1で代入した値で(例えば下記の場合「b1.text」となって欲しい)のですが、
どのように記載すればエラーにならないでしょうか?
ちなみにエラー内容は「未定義の識別子:'b'」です。
よろしくお願いします。


75 :74その2:2006/06/30(金) 18:28:42
a1: TEdit;
b1: TEdit;
Label1: TLabel;
a2: TEdit;
b2: TEdit;
  Label2: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
public
x : integer;
y : integer;
procedure keisan;
end;
       (中略)
procedure TForm1.Button1Click(Sender: TObject);
begin
   x := 1;
keisan;
end;
procedure TForm1.keisan;
begin
y := strtoint(b(x).text) * strtoint(c(x).text);  ←ここのb(x)がエラー
label(x).Caption := inttostr(y);
end;

76 :デフォルトの名無しさん:2006/06/30(金) 18:33:24
y := strtoint(tbutton(findcomponent(b+inttostr(x))).text) * strtoint(tbutton(findcomponent(c+inttostr(x))).text);
コンパイルしてないから動くかどうかはわからん

77 :デフォルトの名無しさん:2006/06/30(金) 18:34:46
全然違った
y := strtoint(tedit(findcomponent('b'+inttostr(x))).text) * strtoint(tedit(findcomponent('c'+inttostr(x))).text);


78 :74:2006/06/30(金) 19:00:22
>>77 どうもありがとうございます!b(x)の部分は無事クリアしました(´∀`*)

あと、もうひとつ教えていただけないでしょうか?
今度は >>75 の下から2行目「label(x)・・・」がうまくいきません。
「(tbutton(findcomponent(b+inttostr(x))).text)」の部分は
まだ勉強してなくて理解できなの所なのですが、そこを無理やり
labelバージョンに書き換えてみたけれど、やっぱりダメでした・・・(・ω・`)


79 :デフォルトの名無しさん:2006/06/30(金) 19:22:24
labelバージョンに書き換えるだけでできるよ
>>77が書いてくれてる
 tedit(findcomponent('b'+inttostr(x))).text
の意味を調べてみればわかる

80 :74:2006/06/30(金) 21:47:36
>>79 ヤターできたよ(*´ω`*)えらく時間掛かったけど。

81 :デフォルトの名無しさん:2006/06/30(金) 22:00:09
ヒントをもとに自分で調べて解決へもっていけたか
素晴らしいぞ74

82 :デフォルトの名無しさん:2006/06/30(金) 23:55:09
Delphi6を使っているのですが
いつの間にかimplementationの上のvarで宣言した
変数の値が消えてしまいます(参照出来ない)
どのようにすれば内容を保持しておけるでしょうか

83 :デフォルトの名無しさん:2006/07/01(土) 00:09:00
ログを取る。

84 :デフォルトの名無しさん:2006/07/01(土) 00:30:15
消えるってすごいな
俺は経験した事ないぽ

85 :デフォルトの名無しさん:2006/07/01(土) 01:15:59
値が消えても参照出来るよ。意味不明で気のせいだから気にするな。

86 :デフォルトの名無しさん:2006/07/01(土) 01:29:56
>>82 あなたのバグ。

87 :82:2006/07/01(土) 07:47:11
タイマーで実行される関数で暫くするとエラーが起こって、そのときの変数の値が 参照できません となるのですが…
取り合えずもう一度ソースを見直しておきます

88 :デフォルトの名無しさん:2006/07/01(土) 12:52:11
>>68
TGraphic派生のなら
できるよ

89 :デフォルトの名無しさん:2006/07/01(土) 13:37:30
てか、>>69 でそれは終わってる。

90 :デフォルトの名無しさん:2006/07/01(土) 18:54:57
外部の実行ファイルを起動して
その数秒後に終了させたいのですがどのようにすればよいのでしょう?

現在わかっていることは起動はWinExec()
終了は???というところまでです。

宜しくお願いします。

91 :デフォルトの名無しさん:2006/07/01(土) 19:25:04
93 :ひよこ名無しさん :2006/03/28(火) 02:03:32 0

別に竹石圭佑がゲイでもホモでもどーでもいいだろ。関わらずに無視すりゃ良いだけだし。
大体、ほっとけば勝手に犯罪起こして、また逮捕されて社会から消えるような野郎だしな。

92 :デフォルトの名無しさん:2006/07/01(土) 20:13:18
'○○県○○市○○町xxxx番地 , 株式会社△△'
みたいな文字列があるばあいに、”,”カンマの前後で文字を
切り分けて取り出すにはどうしたらいいでしょうか?

vbでいうところの
x = mid(strData, 1, instr(strData, delimier) - 1 )
y = mid(strData, instr(strData, delimier) + 1 )
みたいなことなんですけど。

ちなみに、文字列は1バイト文字2バイト文字混在です。
posとかAnsiPosとかMisStrとか調べたんですけど、
MBCSとSBCSの関係かうまくできないんです。
全然別のアプローチしたほうがいいんでしょうか?

delphiかじりだした厨が早くも根を上げそうなんです。
助けてw

93 :92:2006/07/01(土) 20:16:08
ああ、vbもmidの第3引数は文字数だから書き方が違うや。
スマン、そこんとこは生暖かくスルーしてくださいw


94 :デフォルトの名無しさん:2006/07/01(土) 20:18:40
stringlist.commatext

95 :デフォルトの名無しさん:2006/07/01(土) 20:22:27
VBやってたんならおとなしくAnsiPosとCopyでもしとけ

96 :92:2006/07/01(土) 20:54:13
できたお!
ありがとう。


97 :デフォルトの名無しさん:2006/07/01(土) 21:04:41
>87
参照できません、がデバッガ上の話ならとりあえず最適化をOFFにしてみな。
ってかエスパーはまれにしかいないので、そうでない平凡な人間にもわかるように書け。

98 :デフォルトの名無しさん:2006/07/02(日) 03:07:06
>>90
前スレでも言ったけど、だいたいはWM_QUITを送れば終ると思うのだが。

99 :デフォルトの名無しさん:2006/07/02(日) 04:23:58
WinExec() 使ってるようじゃ、ポストするウィンドウハンドル捕まえるのも
難しそうだね。普通に CreateProcess() TerminateProcess() ならウィンドウ
がないプロセスでも終了できるんだが。

100 :デフォルトの名無しさん:2006/07/02(日) 11:36:04
>>92
VBだったら、そういうときはSplitを使わないか?

101 :デフォルトの名無しさん:2006/07/02(日) 13:31:11
いや、そこはStringReplaceだろう。

102 :デフォルトの名無しさん:2006/07/02(日) 13:53:19
StringReplaceネタはもう終わったんだよ
空気嫁

103 :デフォルトの名無しさん:2006/07/02(日) 16:25:31
いい加減StringReplaceウザイ

こうですか?わかりません!

104 :デフォルトの名無しさん:2006/07/02(日) 16:45:10
orの使い方がよくわかりません。

procedure TForm1.Button1Click(Sender: TObject);
begin
  if strtoint(Edit1.Text) = 1 or 2 then
    showmessage('1か2です');
  end;
end.

こういうのはCase文で書くしかないのでしょうか?

105 :デフォルトの名無しさん:2006/07/02(日) 17:00:29
それじゃ駄目だ
if (StrToInt(...) = 1) or (StrToInt(...) = 1) then

106 :104:2006/07/02(日) 17:07:19
>>105
なるほど! 式ごとカッコで入れるんですね。ありがとうございました。

107 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/07/02(日) 18:25:23
>>90
>>99
http://delfusa.main.jp/ExeControl/

列挙して終了するコード仕上げておいたので、どうぞ。

強制終了か、自然終了か、
単独か、全部か、

で、プログラム分けてます。





108 :デフォルトの名無しさん:2006/07/02(日) 19:57:06
>>107
返信ありがとうございます。
ExeTerminate
ExeTerminateMult
WindowClose
WindowCloseMulti
とありますが、どれが強制終了、自然終了、単独、全部なのでしょう?

上から
強制終了
自然終了
単独終了
全部終了
といった認識でよろしいでしょうか?

109 :デフォルトの名無しさん:2006/07/02(日) 20:00:36
単強
全強
単自
全自

110 :デフォルトの名無しさん:2006/07/02(日) 20:01:09
>>104-105
StrToIntを2回も実行するのは無駄なのでcaseのほうがいいよ

111 :デフォルトの名無しさん:2006/07/02(日) 20:02:51
if StrToInt(Edit1.Text) in [1, 2] then

112 :デフォルトの名無しさん:2006/07/02(日) 20:10:33
>>111
正解

113 :デフォルトの名無しさん:2006/07/02(日) 23:34:51
>>109
ありがとう。

114 :デフォルトの名無しさん:2006/07/04(火) 01:10:36
課題なのですが

乱数を生成して 正方形 と 円(四分円)の面積を比較することにより,
    円周率 π の近似値を求める方法がある。
    以下は,この方法に関する問いである。

(1) 乱数によって定まる点の分布の状況を PaintBox 上に図示せよ。

(2) 円周率 π の近似値を計算せよ。

という問題が出されました
取っ掛かりからわからないという初心者ぶりです
ご教授願えませんでしょうか


115 :デフォルトの名無しさん:2006/07/04(火) 01:12:20
http://pc8.2ch.net/test/read.cgi/tech/1136994325/

116 :114:2006/07/04(火) 01:21:39
すみません専用板があったんですね。
そっちで聞いてみます。

117 :デフォルトの名無しさん:2006/07/04(火) 03:01:15
Windows起動や終了時、ログオン、ログオフの時に飛んでくるメッセージは何になるのでしょうか?

118 :デフォルトの名無しさん:2006/07/04(火) 03:08:53
Delphi 関係ない。こっちで聞いたら?

http://pc8.2ch.net/test/read.cgi/tech/1151501925/l50

119 :デフォルトの名無しさん:2006/07/04(火) 03:10:10
>>118
行って来ます(:;´.(Θ).`;:)

120 :デフォルトの名無しさん:2006/07/04(火) 09:34:13
TDateTimePickerでShowCheckboxをTrueにして、アップダウンで数値を変更すると
フォーカスがCheckboxに移ってしまい連続で変更できません、どなたかフォーカスが
Checkboxに移らない方法を知りませんか?

121 :デフォルトの名無しさん:2006/07/04(火) 16:31:32
msVoice, msSE: TMemoryStream;

msVoice := TMemoryStream.Create;
msSE := TMemoryStream.Create;

で、
sndPlaySound(msVoice.Memory,SND_MEMORY or SND_ASYNC);
の再生中に
sndPlaySound(msSE.Memory,SND_MEMORY or SND_ASYNC);
を鳴らすとmsVoiceが止まってしまいます。ある程度、予想してたんですが…

声を鳴らしているときに「バシッ」とか音を出したかったんですが、waveを合成して出すのって、DirectSound使うしかないんですか?
ちょっとDirectXまでわかりません。



122 :デフォルトの名無しさん:2006/07/04(火) 19:22:30
>>121
DDSD を使えば割と簡単にできた気がする。

123 :デフォルトの名無しさん:2006/07/04(火) 19:32:02
>>122
やっぱ、他人様のコンポのお世話になるしかなさそうですね…
Delphi+DirectSoundの初心者でもわかるサイトを探してたんですが、適当なのがなくって…

ありがとうございます。

124 :デフォルトの名無しさん:2006/07/04(火) 22:06:13
SSL認証のサイトで一箇所だけindyでgetできないページあります。
I/Oエラー 103 ってどうゆう意味でしょうか。
アドレスをコピペしてプラウザで開くことが出来るのに、なぜindyは
エラーを返すんでしょう。


125 :デフォルトの名無しさん:2006/07/04(火) 22:09:33
×どうゆう
○どういう

126 :デフォルトの名無しさん:2006/07/04(火) 22:15:43
>>125
すみません。
[I/Oエラー 103] とは、どういう意味でしょうか。

127 :デフォルトの名無しさん:2006/07/04(火) 22:49:37
他の端末で作ったdelphiファイルセット(dprとかpasとか)をそのまま
別の端末にもってきてからdprファイルを開いたところ、dprファイルに
「unit1 in ***(前の端末のパス)」となっていて、開けませんでした。

最初に作った端末内のパスまで書かなくても、同一フォルダ内にある
unit.pasを名前だけから探してくるのは無理なのでしょうか?

128 :127:2006/07/04(火) 22:55:48
今再度別の名前でプロジェクトを保存したら、今度は問題なく開けました。
ちょっと調子が悪かっただけかもしれません。
お騒がせしてすみませんでした。

129 :デフォルトの名無しさん:2006/07/04(火) 22:55:54
そこは相対パスでいいはず。
っていうか、IDEに任せれば相対パスになるはずなんだけどなあ・・・?

130 :デフォルトの名無しさん:2006/07/04(火) 22:57:00
インクルードの設定するか、プロジェクトファイルに書けばいける。

131 :デフォルトの名無しさん:2006/07/04(火) 22:58:12
インクルード?

132 :127:2006/07/04(火) 23:44:00
皆さんレスありがとうございます。
さっき開けなくて今は開けるようになった理由がはっきりわかりません。
ごちゃごちゃ何か作業をしてたらいつのまにかファイルが開けていたので、
最初の原因の見立て(初心者が見立てるも何もないですが…)から違っていたかもしれません。

今は携帯から書き込んでいるので、見づらかったらすみません。

133 :デフォルトの名無しさん:2006/07/05(水) 21:01:18
MSゴシックなどの等倍フォントを使用しているコントロールで
フォントサイズを自由に変更できるようにしておいて、
フォントサイズが変更されるとそれに併せて
コントロールのサイズを変更させようとしたのですがうまくいきません。

TCanvas.TextWidthを試してみたのですが
'i'にすると他の半角文字のサイズより小さすぎる値が、
'%'にすると大きすぎる値が帰ってきてうまく半角1文字の大きさが習得できませんでした。

等倍フォントでの半角1文字の幅を取得する方法はないのでしょうか?

134 :デフォルトの名無しさん:2006/07/05(水) 21:42:08
なぜ実際に描かれているテキストで幅を取得しないの?

135 :デフォルトの名無しさん:2006/07/05(水) 23:05:57
TCanvasのフォントがMSPゴシックだったとかのオチはアリ?

136 :デフォルトの名無しさん:2006/07/06(木) 08:11:52
>>133
GetTextMetricsを使って使用フォントの平均幅を使ってみれば?


137 :デフォルトの名無しさん:2006/07/06(木) 12:15:16
>>134

kwsk

138 :デフォルトの名無しさん:2006/07/06(木) 20:18:50
TUnko = record
 age : integer;
 smell : integer;
 name : string;
end;

Unko : array[1..1000] of TUnko;


こういうレコードを一気に初期化する方法ってありますか?


139 :デフォルトの名無しさん:2006/07/06(木) 20:32:39
>>138
ZeroMemory ?

140 :デフォルトの名無しさん:2006/07/06(木) 20:37:32
>>139
詳しく

141 :デフォルトの名無しさん:2006/07/06(木) 20:45:13
>>138
stringをShortStringに変えてZeroMemoryか
ZeroMemory&Initialize

142 :138:2006/07/06(木) 21:01:46
回りくどいから
classにします


143 :デフォルトの名無しさん:2006/07/06(木) 22:27:31
回りくどいから
StringReplaceにします

144 :デフォルトの名無しさん:2006/07/06(木) 22:36:28
>>138
特定の値で(例えば、age=100とかで)、初期化する方法はないはず
constで初期値定義して、forでまわして代入かな

145 :デフォルトの名無しさん:2006/07/06(木) 23:50:53
senderをヘルプで見ると、imagelistと書かれていますが、
button1click(Sender : Tobject); のSenderはどういう意味ですか?

146 :デフォルトの名無しさん:2006/07/07(金) 00:01:10
イベントハンドラのSender引数は、そのイベントを発行したオブジェクト。
TButton.OnClick なら 押されたボタン。

147 :デフォルトの名無しさん:2006/07/07(金) 12:00:36
タスクトレイでバルーンヘルプだすコンポ作ってるんだけど
WinXP SP 1 or SP 2でバルーンヘルプの
タイムアウトで閉じないバグはどうやって回避してる?

148 :Indy10嫌い:2006/07/07(金) 15:53:38
ちょいと質問いたします。
Delphi7 + Indy10(IdTCPServerとIdTCPClient)でMOゲームの基礎を組んでいるのですが、
どうも挙動不審なので、IndyはやめてTCPServerとTCPClientで組もうと思っています。
今回お教えいただきたいのは、サーバーの実装に関してデス。
いろいろ考えましたが、OnAcceptイベント内で無限ループを回すくらいしか思いつきませんでした。
この方法で何か問題はありますでしょうか。なければこの方法で実装したいと思います。
あと、できればIndyのOnExecuteイベントのような使い方をしたいので、
他に良い方法をご存知の方おられましたらアドバイスお願いします。


149 :デフォルトの名無しさん:2006/07/07(金) 16:00:24
OnAcceptイベント内でスレッドを作ってスレッドのExecuteに
IndeyのOnExecuteイベントの内容を書いたらどうだろう

150 :デフォルトの名無しさん:2006/07/07(金) 16:04:34
TFormにいっぱいイベントハンドラとかつけてコーディングしてますが、
これを一気にTFrameに変えるにはどうしたらよいですか?

151 :Indy10嫌い:2006/07/07(金) 16:37:35
>>149
回答ありがとうございます。
それも考えてみましたが、コンポ側で1クライアントごとにスレッドが作られているようなので、
スレッドの無駄遣いになると思ってやめました。
もしかしたらコンポで作られたスレッドのExecuteでOnAcceptが呼ばれているのかな?、
と思ってVCLのソースをみたらスバリその通りでした(^^;
スレ汚し&駄文大変失礼しましたm(_ _)m

152 :デフォルトの名無しさん:2006/07/07(金) 16:50:18
ショートカットの設定に実行時の大きさがあります。
その値はそれぞれ通常のウインドウ、最小化、最大化となっていますが、
これをDelphiで作ったアプリケーションで設定をキャッチするにはどのようにすれあよいのでしょうか?

153 :デフォルトの名無しさん:2006/07/07(金) 17:10:31
>>150
ごめnFrame使ったことない
>>152
試してないけど
Application.MainForm.WindowState



154 :デフォルトの名無しさん:2006/07/07(金) 19:08:36
質問です。TMediaPlayer を使って mp3 を再生させています。安定して再生
できていたのですが、最近になって以下のエラーが発生するようになりました。
EMCIDeviceError クラスの例外を生成しました。
'指定されたデバイスが開かれていないか、または MCI で認識されません。'

心当たりのある方はお願いします。(WinXP + D7 です)

155 :デフォルトの名無しさん:2006/07/07(金) 20:07:03
delphiの話題じゃない

XP mp3 でググれ


156 :デフォルトの名無しさん:2006/07/07(金) 21:11:54
>>153
遅くなりました。
メインフォームのOnCreateに下記のように記述しましたが
AVが出てしまいました。

if Application.MainForm.WindowState = wsMinimized then
ShowMessage('Mini');

そこでSelf.WindowStateでもやってみたもの例外こそでませんが
検知できませんでした。

何かよい方法はないものでしょうか?

157 :デフォルトの名無しさん:2006/07/07(金) 21:32:01
>>150
pasとdfm開いて、TFormをTFrameに書き換える
dfmの先頭のobjectをinheritedに変える
IDEで開き、プロパティがないと言われたら全部無視してから保存
TFormにしかないイベントがあったらシラネ

>>152
var si: STARTUPINFO;
begin
GetStartupInfo(si);
if (si.dwFlags and STARTF_USESHOWWINDOW) <> 0 then
case si.wShowWindow of
SW_SHOWMAXIMIZED: ShowMessage('Maximized');
SW_SHOWMINNOACTIVE: ShowMessage('Minimized');
end;
end;

158 :デフォルトの名無しさん:2006/07/07(金) 21:41:14
>>157
ビンゴです!
ありがとうございました。

159 :デフォルトの名無しさん:2006/07/07(金) 21:41:56
>>152
System.CmdShow 変数

160 :デフォルトの名無しさん:2006/07/07(金) 22:17:12
Delphi6Personalから直接扱えるXMLパーサって何があるんですか?

161 :デフォルトの名無しさん:2006/07/07(金) 22:39:47
MSXML

162 :デフォルトの名無しさん:2006/07/07(金) 23:37:37
>>147
タイマーか何かのタイミングで、空文字列をセットするとバルーンヘルプが閉じるとか?

163 :デフォルトの名無しさん:2006/07/07(金) 23:40:46
>>156
なにを検知したいのですか?
ここ良く解からない。

164 :163:2006/07/07(金) 23:42:10
あ! 自分がどういう状態で表示されるかを知りたいのか。

165 :デフォルトの名無しさん:2006/07/08(土) 00:39:53
自前のアプリケーションを超えてKeyを押したいのですが
どのようなことを調べればよいのでしょうか?

たとえばCtrl+Alt+Deleteを押すとタスクマネージャーが起動されます。
これをF9などを押した時にCtrl+Alt+Deleteを押されたことにしてタスクマネージャーを起動させたいのです。

166 :デフォルトの名無しさん:2006/07/08(土) 00:58:27
Ctrl+Alt+Deleteはシステム用なので使えない。
それ以外ならkeybd_eventでキー操作のエミュレートが可能。
タスクマネージャ立ち上げるだけならShellExecuteで"taskman.exe"を起動すれば立ち上がる。


167 :|Д゚彡 ◆A6VzDeLphI :2006/07/08(土) 01:31:05
HotKeyだろ。>>165-166

168 :デフォルトの名無しさん:2006/07/08(土) 01:54:02
HotKey で F9 になにか割り当てたら、
DelphiでF9が使えなくなるよ!


169 :デフォルトの名無しさん:2006/07/08(土) 02:32:44
Delphiのエディタでは、文字と文字の間にカーソルを入れて文字を打つと
後の文字が消えてしまうのですが、どうしてですか?

170 :デフォルトの名無しさん:2006/07/08(土) 03:21:02
上書きモードだから。
Insertキーを押せば挿入モードになる。

171 :デフォルトの名無しさん:2006/07/08(土) 03:26:54
>>170
どうもありがとうございました!!

172 :デフォルトの名無しさん:2006/07/08(土) 05:07:15
ここはパソコン初心者板かよ

173 :デフォルトの名無しさん:2006/07/08(土) 16:40:42
グラフィックのプログラムで、F9で実行しても実行画面が出てこないのですが、
どうすれば良いのでしょうか?

174 :デフォルトの名無しさん:2006/07/08(土) 17:15:43
グラフィックじゃないプログラムではちゃんと出るのか?

175 :173:2006/07/08(土) 17:33:28
コンソールアプリケーションのプログラムは実行できるんですが・・

176 :デフォルトの名無しさん:2006/07/08(土) 17:39:44
空のプロジェクトなら実行できるのか?

177 :173:2006/07/08(土) 17:47:45
>>176
空のプロジェクトとは具体的にどうすればいいのでしょうか?

178 :デフォルトの名無しさん:2006/07/08(土) 17:55:35
>>177
Delphi起動→メニューバー→[ファイル]→[新規作成]→[アプリケーション]

179 :デフォルトの名無しさん:2006/07/08(土) 17:57:43
グラフィックのプログラムって何かと思った

180 :173:2006/07/08(土) 18:11:06
>>176
実行できるようになりました!!どうしてさっきまで実行できなかったのでしょうか?

181 :デフォルトの名無しさん:2006/07/08(土) 18:20:56
シラネーヨw

182 :デフォルトの名無しさん:2006/07/08(土) 19:14:15
エスパー勢ぞろいだな。このスレ

183 :デフォルトの名無しさん:2006/07/09(日) 01:17:21
>>160
俺はOpenXML使ってる。
重いけど(他と比較してじゃないからなんとも言えんが)

184 :デフォルトの名無しさん:2006/07/09(日) 01:18:41
>>160
追記

類似品が一杯あるが、これね
OpenXML
http://www.philo.de/xml/

こことか参考になるよ
http://www.teppi.com/Components/Article/xdom_0010

185 :デフォルトの名無しさん:2006/07/09(日) 01:23:36
>>160
追加追記

ここにもいくつか出てるので引用
http://lowlife.jp/nobonobo/wiki/delphidexml.ht

> DelphiでXMLを利用するには、
>
> -TClientDataSetを使う。
> -OpenXMLの日本語版XDOMJを使う。
> -MSXMLのActiveXを使う。
> -simdesignのXmlDocumentsを使う。
> -JVCLのなかのTJvSimpleXml(JEDIプロジェクト)
>
> 等がありますね。TJvSimpleXmlが簡単で使い勝手がよかった。(他のDLLが不要なので)
> TClientDataSetはProfessional版以上で使えます。
ml

186 :デフォルトの名無しさん:2006/07/09(日) 22:29:42
集合型の変数に現在何個の要素が含まれているか知りたいときはどうすればいいのでしょうか?

187 :デフォルトの名無しさん:2006/07/09(日) 22:35:07
ループ回して各要素について含まれているか調べる。

188 :デフォルトの名無しさん:2006/07/09(日) 22:55:23
シフトしていって各ビットが立っているか調べる、とか
>>187のほうが読みやすいコードになるが

189 :デフォルトの名無しさん:2006/07/09(日) 23:03:19
>>186
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa15.html#Q2

190 :デフォルトの名無しさん:2006/07/09(日) 23:26:29
RaveReportsで日本語を表示しようとすると行の右端がおかしくなって
しまう場合があります。2万円以下で日本語OKなreportツールってないですか?


191 :デフォルトの名無しさん:2006/07/09(日) 23:39:18
ACCESSとかExcelとか。

192 :デフォルトの名無しさん:2006/07/10(月) 05:10:37
Win2000とかXPってスレッドの上限いくつ?

193 :デフォルトの名無しさん:2006/07/10(月) 05:53:57
255
だと勝手に思ってるけどどうなんだろう

194 :デフォルトの名無しさん:2006/07/10(月) 09:04:09
正規表現で任意のn文字ってある?

195 :デフォルトの名無しさん:2006/07/10(月) 10:57:12
{n}
か?Delphi関係ない気が

196 :デフォルトの名無しさん:2006/07/10(月) 22:17:25
Cのu_longってDWord(LongWord)だよね?
なんで検索するとLongIntでヒットするの?

もしかして私が間違ってます?

197 :デフォルトの名無しさん:2006/07/10(月) 23:04:42
しらねーよ。

198 :デフォルトの名無しさん:2006/07/10(月) 23:11:11
>>196
たしかにたくさんあるよな
他にもいろいろね

ちなみにDWordが正解

199 :デフォルトの名無しさん:2006/07/10(月) 23:12:57
LongWord だろ。DWord は API 用のエイリアス

200 :デフォルトの名無しさん:2006/07/10(月) 23:24:47
>>199
ならどっちでもいいんじゃないの?
何か変わる?

201 :デフォルトの名無しさん:2006/07/10(月) 23:32:03
別名より本名が正解でしょ。

202 :デフォルトの名無しさん:2006/07/11(火) 01:02:44
コンパイルすれば同じだし。

API使う場合はDWORD、他ではLongWordと利用目的で使い分けたらいいのでは

少なくとも俺はそうしてる(趣味PGでは)

203 :デフォルトの名無しさん:2006/07/11(火) 01:59:11
indyちゃん使ったことがある人に質問。
これさ、一部にメモリーリークあるよね。
やっぱ、あの部分はコメントはずしてる?
それともICS等の他のコンポ使ってるの?

204 :デフォルトの名無しさん:2006/07/11(火) 02:47:30
メモリリークは確認してないけど、
NNTPのモジュール使ったらバグとかRFC中途準拠とかで困ったな
あんまり使われてないだろうから、適当に実装したままだったと思われ

indyスレあったと思うのでそちらで

205 :デフォルトの名無しさん:2006/07/11(火) 02:48:16
http://pc8.2ch.net/test/read.cgi/tech/1093654251/

206 :デフォルトの名無しさん:2006/07/11(火) 04:52:51
初心者です。

クラスをCreateしてFreeしなかったら、メモリリークが起きるっていうのはわかりました。
ベテランの人たちはメモリリークが起きてるかどうかをどうやってしらべてるんですか?

207 :デフォルトの名無しさん:2006/07/11(火) 05:01:04
明らかに分かるリークならタスクマネージャでも分かる


208 :デフォルトの名無しさん:2006/07/11(火) 06:00:46
メモリマネージャをオーバーライドして、確保した回数と解放した回数を比較するとか。

209 :sage:2006/07/11(火) 07:03:09
ReportMemoryLeaksOnShutdown := True;

210 :デフォルトの名無しさん:2006/07/11(火) 09:54:17
>>196
DelphiのWinSock.pasみてみるとLongintになってるな。
なんじゃこりゃ。

211 :デフォルトの名無しさん:2006/07/11(火) 11:44:30
>>206
MemCheck
http://v.mahon.free.fr/pro/freeware/memcheck/

212 :デフォルトの名無しさん:2006/07/11(火) 13:32:20
でもDelphiってガベージコレクトあるよね?

213 :デフォルトの名無しさん:2006/07/11(火) 13:46:15
ない

214 :デフォルトの名無しさん:2006/07/11(火) 15:20:37
>>209を探してたらこういうの見つけました。
ReportMemoryLeaksOnShutdown := DebugHook <> 0;

変数 := 変数 <> 0 ;
代入式になっているみたいですが、どういう処理をしているのでしょうか?


215 :デフォルトの名無しさん:2006/07/11(火) 15:55:22
DebugHookが0ならReportMemoryLeaksOnShutdownがFalseに
0じゃないならTrueとなる

216 :デフォルトの名無しさん:2006/07/11(火) 15:58:04
True False ってどこで判断してるの?

217 :デフォルトの名無しさん:2006/07/11(火) 16:04:03
>DebugHook <> 0;
この式じゃまいか

218 :デフォルトの名無しさん:2006/07/11(火) 16:04:26
変数 <> 0 が論理式だから true または false を返す、と。

219 :デフォルトの名無しさん:2006/07/11(火) 16:17:07
ありがとうございます。
以下の式の使い方が正しいかを教えて下さい。

foo := hoge <> 0;

if (foo = true) then begin
 siki := A ;
else
 siki := B;
end;
 

220 :デフォルトの名無しさん:2006/07/11(火) 16:26:51
何を持って正しいとするのかが理解出来ないが
hogeがInteger型、fooがBoolean型、sikiが文字列型とするならば
たぶん正しいと思われる

221 :デフォルトの名無しさん:2006/07/11(火) 16:59:03
sikiはstringとは限らず、A,Bと同じ型ならintegerでもbooleanでもいいと思う

222 :デフォルトの名無しさん:2006/07/11(火) 17:03:56
var
a: boolean;
b: integer;
begin
a := true;
if a then b:=1 else b:=2;
showmessage(inttostr(b));
end;

b:=1 else b:=2の部分がもっと短くできた気がするんだけど・・・

223 :デフォルトの名無しさん:2006/07/11(火) 17:42:15
b = a?1:2;

224 :デフォルトの名無しさん:2006/07/11(火) 17:44:49
>>223
それCじゃね?
Pascalで使えるっけ?

225 :デフォルトの名無しさん:2006/07/11(火) 17:46:25
b := IfThen(a, 1, 2);

226 :デフォルトの名無しさん:2006/07/11(火) 22:14:29
>>225は、
uses 節に Math を追加

227 :デフォルトの名無しさん:2006/07/12(水) 17:37:07
3月222日、とかありえない日付を入れたら「そんな日付ありません」みたいな
文章を返すためにif day<=32 thenを入れてみたけど、これでは
28(29)日までしか無い2月とか、その他31日の月と30日の区別ができない
のですが、どうすればいいのですか?

228 :デフォルトの名無しさん:2006/07/12(水) 17:40:41
>>227
StrToDateでもStrToDateDefでも好きなのどうぞ。

229 :デフォルトの名無しさん:2006/07/12(水) 22:52:45
IsValidDateほにゃららって関数を使うか上の変換関数で変換してみて
例外を捕捉するかのどちらかだな。

230 :デフォルトの名無しさん:2006/07/12(水) 22:56:28
やり方がいろいろあると目移りして駄目だ
高級言語はこれだから嫌い

231 :デフォルトの名無しさん:2006/07/12(水) 23:03:00
WinSocket2のヘッダをDelphi用にコンバートしたのどっかにない?

232 :デフォルトの名無しさん:2006/07/12(水) 23:10:56
すまん。JEDIの中にあった。

233 :デフォルトの名無しさん:2006/07/13(木) 00:04:34
よろしくお願いします。Delphi 6 PersonalをWindowsXP SP2で使っています。

Delphi 6でXPスタイルに対応するために、

1. http://www.delphi-gems.com/ThemeManager.php
  ここでWindows XP Theme ManagerとWindows XP manifest resourceをダウンロード

2.. Windows XP Theme Managerをインストール

3. Windows XP manifest resourceを解凍して、出てきたwinXP.resをパスの通ったフォルダに入れる

4. プログラム内のimplementationに {$R WinXP.res} と追加

以上のことを行い、いまのところ無事XPスタイルに対応できてるみたいですが、
何か間違ってるところや、他にやるべきことなどはありますでしょうか?


234 :デフォルトの名無しさん:2006/07/13(木) 00:42:28
http://www.tntware.com/delphicontrols/unicode/
こういうの使わないと文字入力が変になるかな
過去スレで既出のオートコンプリートとかのバグが未修正みたいだけど


235 :デフォルトの名無しさん:2006/07/13(木) 01:05:35
自作関数や自作手続きって一番最初に書かないとだめなの?

C言語だとmainプログラムの後に自作関数を書いても良かったんだけど・・・

236 :デフォルトの名無しさん:2006/07/13(木) 01:11:10
げ、JEDI微妙に古くて結構抜けてるよ・・・。
結局自分で書くはめになるのかozr

>>235
一番最初ってどこだよ。
もっとくわしくかけ!

237 :デフォルトの名無しさん:2006/07/13(木) 01:13:51
別に何処に書いても構わんけど、前方参照はできんよ

238 :デフォルトの名無しさん:2006/07/13(木) 01:26:03
>>233
では、実際にプログラム使ってみて何か問題が露見しているのか?
あるなら報告しる。無いならもうやることはない。

239 :デフォルトの名無しさん:2006/07/13(木) 05:26:08
たぶんお前には聞いていないと思う。

240 :デフォルトの名無しさん:2006/07/13(木) 05:50:41
>>235
プロジェクトファイル(*.dpr)なら、メインより上に書かないと駄目。

241 :デフォルトの名無しさん:2006/07/13(木) 08:24:19
>>239
トンマ

242 :デフォルトの名無しさん:2006/07/13(木) 10:16:51
Type
 TSE = record
  Name: string[20];
  Age:  integer;
  Gengo: array[0..5] of string[10];
 end;

として、
const
 SE: array[0..20] of TSE = (
 (Name: 'ほげ山'; Age: 36;
 // ↑ これらは入るんですが、
    ・
    ・
 Gengo[0]: 'C++';
 Gengo[1]: 'Pascal';

のように言語の配列にconstで入れられなくて困っています。
どういう書式にすればいいんでしょうか?

243 :デフォルトの名無しさん:2006/07/13(木) 10:22:56
型付き定数でヘルプ検索

244 :デフォルトの名無しさん:2006/07/13(木) 10:24:53
const GENGO: array[0..1] of string = ('C++', 'Pascal();

245 :デフォルトの名無しさん:2006/07/13(木) 10:37:42
>>244

>const GENGO: array[0..1] of string = ('C++', 'Pascal();

これだとエラーが出るようなんですが、
 SE: array[0..20] of TSE = (
 (Name: 'ほげ山'; Age: 36;
  Gengo: ('C++','Pascal','','','')
  ・
  ・
=じゃなくて:だと通ってくれるようです。

 … 大丈夫ですよね?

246 :デフォルトの名無しさん:2006/07/13(木) 11:47:57
おk

247 :デフォルトの名無しさん:2006/07/14(金) 17:35:35
type
ULONG_PTR = LongWord;
size_t = ULONG_PTR;
int = Integer;

type
LPADDRINFO = ^addrinfo;
addrinfo = record
ai_flags: int;
ai_family: int;
ai_socktype: int;
ai_protocol: int;
ai_addrlen: size_t;
ai_canonname: PChar;
ai_addr: PSockAddr;
ai_next: LPADDRINFO;
end;
TAddrInfo = addrinfo;
PAddrInfo = LPADDRINFO;

var
hints, res_hints: PAddrInfo;
WSAData: TWSAData;
begin
WSAStartup(MakeWord(2, 0), WSAData);

New(hints);
hints^.ai_family := AF_INET;
hints^.ai_socktype := SOCK_STREAM;

//getaddrinfo(PChar('127.0.0.1'), nil, nil, res_hints);//これだとOK
getaddrinfo(PChar('127.0.0.1'), nil, nil, res_hints);//addrinfo使うとEAI_FAILが出てくる

248 :274:2006/07/14(金) 17:38:20
上記のソースでaddrinfo使うとEAI_FAIL(障害発生だぜベイベー)が返ってくるのですが
何がよくないのでしょうか?
さっきからこれで2時間も悩んでる・・・。

249 :247:2006/07/14(金) 17:42:50
getaddrinfo(PChar('127.0.0.1'), nil, nil, res_hints);//addrinfo使うとEAI_FAILが出てくる
これは
getaddrinfo(PChar('127.0.0.1'), nil, hints, res_hints);//addrinfo使うとEAI_FAILが出てくる
こうでしたね。
てんぱってすみません。

250 :デフォルトの名無しさん:2006/07/14(金) 18:17:43
VB 2005
・最新の.NET Framework 2.0に対応
・最新のUI・ジェネリックプログラミングにも対応
・驚きのIDE無償化

Delphi 2005
・未だに.NET 1.1(笑)
・あまりの出来の悪さに世界中で不買運動勃発(笑)
・驚愕のIDE事業売却、しかも未だに売り手見つからず(爆笑)

251 :デフォルトの名無しさん:2006/07/14(金) 18:26:45
>売り手見つからず
>売り手見つからず
>売り手見つからず
>売り手見つからず
>売り手見つからず

252 :デフォルトの名無しさん:2006/07/14(金) 18:37:57
へぇ、VB2005って無償なんだ
まあ触らんけどな

253 :デフォルトの名無しさん:2006/07/14(金) 19:49:14
>>247

よう分からんが

New(res_hints);

が無いからじゃ・・・

254 :デフォルトの名無しさん:2006/07/14(金) 21:59:23
>>253
書いてみましたが結果は変りませんでした。
FillMemoryで初期化したりしてみても結果は変らず。
う〜ん、なんでだろ。

255 :デフォルトの名無しさん:2006/07/14(金) 22:24:29
MSDN の例文と比較すると

hints^.ai_protocol = IPPROTO_TCP;

がないのと、第二パラメータ

'27015’

がないこと。

普通はレコード型のポインタが必要なときは New() Dispose() を使わずに、
ローカル変数にレコード型を設定して、そのアドレスを @ で渡す。

それから文字列リテラルは、PChar と互換なので、キャストしなくてよい。

レコード型の初期化は FillChar() で行う。


256 :デフォルトの名無しさん:2006/07/14(金) 23:24:16
>>255
ばっちりでした!
ありがとうございます。

問題だった点は
>普通はレコード型のポインタが必要なときは New() Dispose() を使わずに、
>ローカル変数にレコード型を設定して、そのアドレスを @ で渡す。
これでした。

後学の為に幾つか質問させてください。
レコード型の初期化なんですが、FillCharのほかにもZeroMemory、FillMemoryとありますが
これらは以下のような認識でよいのでしょうか?
ZeroMemory - 0で初期化専用
FillMemory = FillChar = 汎用初期化

257 :デフォルトの名無しさん:2006/07/14(金) 23:49:10
FileCreate();でファイルが作成されるまで次の処理に進みたくないのですが
どのようにすればよいのでしょうか?

私は以下のようしてみましたが、上手くいきませんでした。
h := FileCreate(Path);
WaitForSingleObject(h, INFINITE);
FileClose(h);

258 :デフォルトの名無しさん:2006/07/14(金) 23:50:43
そう。API を使うより、ライブラリの関数を使う方がパフォーマンスも
再利用性もいいはず。ゼロクリアは FillChar() 使用を推奨。

259 :257:2006/07/15(土) 00:20:24
ごめんなさい。
他のミスで勘違いしてました。
忘れてください。

260 :デフォルトの名無しさん:2006/07/15(土) 14:35:10
Delphi 6 Personalを使っています。

Edit1.Textなどに入っているURLをIEに開かせたいんですが、どのようにやれば出来ますか?

261 :デフォルトの名無しさん:2006/07/15(土) 14:58:04
WEBサイトを呼び出したい
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200606/06060014.txt

262 :デフォルトの名無しさん:2006/07/15(土) 15:16:38
TExcelApplication等のコンポーネントを使ってExcel2000以降のExcelのバージョンで
動作するようにプログラムするにはどうしたらいいのでしょうか。
開発環境はD7とExcel2003なのですがExcel2000しかないマシンだとうまく動きません。





263 :デフォルトの名無しさん:2006/07/15(土) 15:18:41
かなり初心者な質問かもしれませんが、
StringGridで指定のセルを選択したいわけです。
単純に
 StringGrid1.Col := x StringGrid1.Row := y
ってすればいーわけですが、なぜかずれてしまいます。
たとえば、Col := 3 Row := 3 にすると、
OnSelectCellイベントであがってくるのは ACol := 3 ARow := 1 です。
なぜでしょうか...。
これがうまくいかなかったので、StringGrid1.Selectionにつっこむと
うまくいくようになります。
けど、スクロールバーがついて行かないんですよね。
せっかく選択されてるのに、選択されてるセルがみえないってことになります。
どうでしょうか?
バージョンはDelphi6 Personalです。

264 :デフォルトの名無しさん:2006/07/15(土) 17:10:15
ttp://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/vcl/StringGrid.htm

こういう事  じゃないよねぇ

265 :デフォルトの名無しさん:2006/07/15(土) 18:06:24
ちょっと教えてください。

delphiからQuickTime APIを使う
コンポーネントってありません?

ケータイ用に動画をエンコードしたいなって
思ってるんで・・・

よろしくお願いします。

266 :デフォルトの名無しさん:2006/07/15(土) 18:32:45
タイプライブラリのインポートとかで無理かいな

267 :デフォルトの名無しさん:2006/07/15(土) 20:16:38
C言語で「構造体」にあたるのが
Delphiの「クラス」なんですか?

268 :デフォルトの名無しさん:2006/07/15(土) 20:17:27
Cの構造体に当たるのはDelphiのレコード。
Cにクラスの概念は無い。

269 :デフォルトの名無しさん:2006/07/15(土) 21:55:29
あれ、、、本当だ。
フィールドしかもたないクラスはレコード型と同じという認識でいいのかな?

270 :デフォルトの名無しさん:2006/07/15(土) 22:06:27
メモリマップの構造上はそうかもしれんが、
決して正しい認識ではないし、安全じゃないとオモ。

271 :デフォルトの名無しさん:2006/07/15(土) 22:22:42
DelphiはPascal

272 :デフォルトの名無しさん:2006/07/15(土) 22:33:16
ステップ実行の方法を教えてください。

procedure TForm1.FormCreate(Sender: TObject);
begin
label1.Caption := 'ラベル1まで実行'; ←@
label2.Caption := 'ラベル2まで実行'; ←A
label3.Caption := 'ラベル3まで実行'; ←B
end;

@Aの行の左端に赤いチェックをつけて、実行→ステップ実行を押しても
unit1の隣にproject1のタブが追加されるだけで実行画面には進めません。
どうすればいつものような実行画面に進めるでしょうか?よろしくお願いします。

273 :デフォルトの名無しさん:2006/07/15(土) 22:38:56
「ステップ実行」ではなく「実行」する

274 :デフォルトの名無しさん:2006/07/15(土) 22:40:40
TForm1.FormCreateが呼ばれてないんじゃないの?

275 :272」:2006/07/15(土) 22:44:28
書き方が分かりにくかったですが、私がやりたかったのは、
いつものように実行すると「ラベル1まで実行

276 :272:2006/07/15(土) 22:47:03
書き方が分かりにくかったですが、私がやりたかったのは、
いつものように実行すると
「ラベル1まで実行」「ラベル2まで実行」「ラベル3まで実行」
と表示されるところを
「ラベル1まで実行」「ラベル2まで実行」
までしか表示されないようにしたかったのです。

アプリケーションの新規作成をしてからフォーム1をダブルクリックして、
そこに272の処理を書きました。その他には特に何も書いていません・・・。

277 :デフォルトの名無しさん:2006/07/15(土) 22:57:19
ラベル3〜の行を消すなりコメントアウトするなり

278 :272:2006/07/15(土) 23:36:47
276の書き方がまた間接的だったので悪かったです。
「ステップ実行」という確認動作自体をやりたかったのです。
「ステップ実行がされる=276の"やりたかったこと"が実行される」
と思っていました。
私がステップ実行ってあんまり分かってなかったのかもしれません。
もう一度参考書見てみます。

279 :デフォルトの名無しさん:2006/07/16(日) 00:23:02
1_処理中断させたい所にブレークポイントを設定
2_実行
3_(1)で設定した地点で中断される
4_ステップ実行で1stepごと実行

すまん、適当に書いた

280 :デフォルトの名無しさん:2006/07/16(日) 01:35:28
他言語からきますた。ざっとDelphiのヘルプをながめてるとこですが、ちょっとひっかかるところが。

値パラメータと変数パラメータのとこなんですが

/* 以下ヘルプより
function DoubleByValue(X: Integer): Integer; // X は値パラメータ
begin
X := X * 2;
Result := X;
end;
function DoubleByRef(var X: Integer): Integer; // X は変数パラメータ
begin
X := X * 2;
Result := X;
end;

どちらの関数も返す結果は同じですが,渡される変数の値を変更できるのは 2 番目の DoubleByRef 関数だけです。
一方,変数パラメータはコピーではなくポインタのような働きをします。
                              ~~~~~~
関数または手続きの本体部分でパラメータに加えた変更は,プログラムの実行が呼び出し側に戻り,パラメータ名自体がスコープ外になっても失われません。

*/

ポインタの「ような」働きっていうヤツが気になるんですが、あくまで参照元の値も変更されるってだけのことで(いわば参照渡し風)裏でピュアな参照渡しをしてるわけではないということですか?
C++なんかだと参照渡しの方が速いわけですが、Delphiでもスピードを稼ぎたければポインタで渡すように書くもんなんですかね?

281 :デフォルトの名無しさん:2006/07/16(日) 01:54:57
いえ、ピュアな参照渡しです。
レコードや配列を渡す際にもconstやvarを使えば高速に渡せます。

282 :デフォルトの名無しさん:2006/07/16(日) 01:57:48
上に便乗して質問

@procedure TForm1.Button1Click(Sender: TObject);
var a,b:String;
begin
a:='Delphi';
b:=MyFunc(a);
Label1.Caption:=b;
end;

Aprocedure TForm1.Button2Click(Sender: TObject);
var a,b:String;
begin
a:='Delphi';
MyProc(a,b);
Label1.Caption:=b;
end;

Procedure Myproc(x:string;var y:string);
begin
y:=x;
end;

Function Myfunc(x:string):string;
begin
result:=x;
end;

これって全く同じ動作するけど、どっちでも実行速度とか変わらないの?
これみたいに短い文はいいけど大きくなってくるとFuncつかったほうがいいとかProcつかったほうがいいとかあるんですか?

283 :280:2006/07/16(日) 02:02:58
>>281
ふーん。うまく出来てるんですね。
初心者でも使いやすいわけだ…

284 :デフォルトの名無しさん:2006/07/16(日) 02:13:09
関数の方は値のコピーが1回多く、手続きの方はポインタのコピーが1回多い事になる。
文字列のコピーはポインタのコピーなのでこの場合は同じだが、
返す値が大きければ手続きのほうが早くなる・・・カナ?

>>283
Delphiは(それともPascalは?ベースのパスカルはあんまり知らん・・・)ポインタの概念が余り表に出ないのが
Delphiを分かりやすくしてるひとつの特徴だからね。

その代わり変数(定数)引数はCみたくNULLを渡しづらいけど。

285 :デフォルトの名無しさん:2006/07/16(日) 02:13:57
×返す値が大きければ
○返す値のバイト数が大きければ

ゴメ

286 :デフォルトの名無しさん:2006/07/16(日) 04:16:08
便乗して質問

>レコードや配列を渡す際にもconstやvarを使えば高速に渡せます。

constも参照渡し?参照元を変えられないからピュアな参照渡しとも違うような…

287 :デフォルトの名無しさん:2006/07/16(日) 04:40:40
>>286
普通に参照渡し。
代入できないのはコンパイラが怒るだけ。
試しに参照して逆参照して代入すれば呼び出し元でも値が変化してる。

procedure T(const v: TPoint);
begin
PPoint(@v)^.Y := 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
p: TPoint;
begin
p := Point(1, 100);
T(p);
Caption := IntToStr(p.X) + ' ' + IntToStr(p.Y);
end;

但し、Integer みたいな小さな型だとコンパイラが勝手に値渡し扱いにする模様。

288 :デフォルトの名無しさん:2006/07/16(日) 05:08:30
>>287
それconstの意味が無いじゃん・・・

289 :デフォルトの名無しさん:2006/07/16(日) 05:28:43
既製のDelphi製のアプリケーションを、Delphiで制御したいのですが、
TListViewのハンドル値(Microsoft Spy++で調べた値)から
新規のTListViewオブジェクトを生成出来ませんか?

ダメもとで
ListView1を設置して、ListView1.Handle = (ハンドル値)
を試してみましたが、
[エラー] Unit1.pas(31): 読み込み専用プロパティに書き込むことはできません
と、ごもっともなお叱りを受けました。

290 :デフォルトの名無しさん:2006/07/16(日) 05:44:04
まず君はHandleが何かを学ぶべきだ

291 :デフォルトの名無しさん:2006/07/16(日) 09:00:40
独自形式で自作ソフトのデータを読み書きしたいのですが(photoshopならpsdなど)、
普通にごりごりとテキストを解析してやるしかないのでしょうか?
SQLみたいに早く検索したりできる方法ってありますか?

292 :デフォルトの名無しさん:2006/07/16(日) 09:17:08
ソフト次第。
そいういうソフトが読み書きするAPI類を提供しているなら比較的簡単だが、
そうでなければ自分で解析するしかない。

読み込みだけで良ければSusieのプラグインを流用すれば済むと思うけど。

293 :デフォルトの名無しさん:2006/07/16(日) 10:34:53
>>290
詳しくは知らないですが、
Windowsが管理してる全ウィンドウのユニークなIDですよね。

294 :デフォルトの名無しさん:2006/07/16(日) 10:38:40
ユニークなIDを代入してどうする (笑

295 :デフォルトの名無しさん:2006/07/16(日) 10:53:56
しかも他プロセスのウィンドウだろ。

296 :289=293:2006/07/16(日) 11:17:00
>>294
私も無理だろうなーとは思いました。

ウィンドウ(TListViewのインスタンス)は既に存在するわけですから、
オブジェクト自体は生成しないで、そのウィンドウへの参照だけを取得したいので、
コードで表現すると

MyListView: ListView;
MyListView := ListView.Create(ウィンドウハンドル値);

みたいなことをしたいんです。(こんなコンストラクタはありませんが)

このコンストラクタを呼ぶと、オブジェクトを新規生成する代わりに、
ハンドル値から勝手に参照(MyListView)を作ってくれて、以降MyListViewに対して
メソッドを呼んだら自在にそのウィンドウを操作できる、というようなイメージです。

そんな便利な機能はないにしても、これと似たようなことが実現できれば
多少面倒くさい方法でも良いので。

297 :289:2006/07/16(日) 11:19:01
MyListView: TListView;
MyListView := TListView.Create(ウィンドウハンドル値);
の間違いでした。

298 :Delフサギコ ◆A6VzDeLphI :2006/07/16(日) 11:25:12
          _________
  ∧,,∧    / 
 ミ,,゚Д゚彡 <  お見事>>287さん
  ミ つつヾ  \
〜ミ  ミ. パチパチ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U

299 :Delフサギコ ◆A6VzDeLphI :2006/07/16(日) 11:29:01
           _____________
   ∧,,∧    /APIだけでやれば
  ミ,,゚Д゚彡 < できるんちゃう?
   U  つ   \>>296
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ 
VCLじゃないWindowに対して
VCLのコントロールでの制御をしようとしても
無理でしょう。


300 :デフォルトの名無しさん:2006/07/16(日) 11:37:41
> APIだけでやればできるんちゃう?

単にウィンドウハンドルをつかってコントロールを制御するだけのラッパーを
つくるだけだよね。他プロセスでも SendMessage() だから制御部分のコードは
いっしょだし。あ、でも文字列やレコード型のやりとりは共有メモリつかわないと
だめだからすこし面倒かな。

301 :デフォルトの名無しさん:2006/07/16(日) 11:40:17
イベントに相当する部分はグローバルフックが必要だからさらに面倒。
うーむ、出来なくはないけどめんどくさいな

302 :289:2006/07/16(日) 12:03:18
>>299
SendMessage関数で制御するという意味でよろしいでしょうか。
そのアプローチでは、メッセージの仕様がわからずに困っています。

#最初はMicrosoft Spy++でメッセージを解析すれば、SendMessage API関数のみで何とかなると思ってましたが、
#Microsoft Spy++ではVCLコントロールに対して送られるメッセージの表示に対応しておらず、
#殆どのメッセージが"ユーザー定義"メッセージで、パラメータもただの数値でしかわからず、
#各メッセージの機能、wParam, lParamの意味がわかりませんでした。

そこで次のアプローチを考えました。
■VCL対応のメッセージ解析ツールを探す
■VCLのソースコードを読む
TListViewのソースコードって読めるのでしょうか。
インストールディレクトリをgrepしてみても見つかりませんでした。ちょっと自分で探してみます。

>>300-301
イベントを取る必要は(自分の用途では)ないので、もう少し楽かと思います。

303 :デフォルトの名無しさん:2006/07/16(日) 12:19:54
仮想リストビューとかでないTListViewなら、CommCtrl.pasに書いてるはずの
LVM_INSERTCOLUMNとかのメッセージを普通に送れば操作できるんじゃないの。
Del6パーソナルでもこのソースは見れるから、これの名前から目当ての機能を探してみて
メッセージのパラメータについてはメッセージ名で検索すれば出てくるだろうし。

304 :デフォルトの名無しさん:2006/07/16(日) 12:39:48
素直にWinAPIを勉強するのが一番早い
VCLは基本的にはWinAPIのラッパーなんだから、
289が見たところで何も理解出来ない可能性が非常に高い

305 :289:2006/07/16(日) 12:46:34
>>303
見つかりました!
Spy++上でキャプチャしたメッセージIDとソース上のメッセージIDがちゃんと一致しているみたいです。
あとはひたすら分析頑張ろうと思います。

皆さんありがとうございました。

306 :デフォルトの名無しさん:2006/07/16(日) 13:02:54 ?
1〜100までの乱数を取得し、取得した値を1〜10までの配列に格納したいんですが

randmize;
r=rand
a[0]:=r
a[1]:=r



みたいに書くと、確かに乱数格納されるんですが全ての配列に同じ値が灰ってしまいます。
配列にうまくバラバラの値を入れる方法ってどうすれば良いんですか? 

307 :デフォルトの名無しさん:2006/07/16(日) 13:10:59
オレなら
1-100までの数を配列なりTListなりに保存
適当にシャッフル
配列に格納

308 :デフォルトの名無しさん:2006/07/16(日) 13:40:31
>>306
randmize とか rand って関数はヘルプにはなかったが、
自作関数か? まあいいや

なんか変数の仕組みが分かってないみたいだな。
r=rand; の時点で rand の結果が r にコピーされる。
つまり乱数が生成されるのは一度きりなのでそうなるのです。


309 :デフォルトの名無しさん:2006/07/16(日) 13:42:32 ?
それ(・∀・)イイ!!!シャッフルってどうやるんですか?

310 :デフォルトの名無しさん:2006/07/16(日) 13:44:24 ?
>>308
めんどかったので適当にコード書いてみただけです(^^:)
やっぱそういうことですよね。初期化してやってみても何かうまくいかないんです

311 :デフォルトの名無しさん:2006/07/16(日) 14:08:54
シャッフルのアルゴリズムによって偏りが出たりするから、
乱数生成の研究するのじゃなければライブラリ使った方がよいと思われ。

答えを書くと、
a[0] := rand;
a[1] := rand;
...
てなかんじで毎回 rand を呼び出す

312 :デフォルトの名無しさん:2006/07/16(日) 15:12:58
偏りのないアルゴリズムを使えばいいやんけw
検索すればすぐに見つかるんだし。

313 :デフォルトの名無しさん:2006/07/16(日) 15:27:20 ?
乱数の範囲指定のやり方がわからなくて困っているのですが
-10〜10の範囲で整数型で乱数を生成ってどうやればいいんでしょう?

314 :デフォルトの名無しさん:2006/07/16(日) 15:30:02
-10〜10の範囲で整数は何個ある?
1〜任意の整数 の乱数の出し方は知ってる?

315 :デフォルトの名無しさん:2006/07/16(日) 15:35:04 ?
20個・・ですか?
1〜任意の整数は例えば10個出したいならrandom(10)ですよね?

316 :デフォルトの名無しさん:2006/07/16(日) 15:44:29
>>315
小学校の時に使った算数タイルを出してこいw

317 :デフォルトの名無しさん:2006/07/16(日) 15:45:44
+10すれば
0〜20
なのでrandom(21)-10

318 :デフォルトの名無しさん:2006/07/16(日) 16:06:21 ?
>>317
すげー!ってか俺がしょぼすぎ・・・orz
みんあありがと!

319 :デフォルトの名無しさん:2006/07/16(日) 16:25:19
ゆとり教育の成果が身近に感じられるスレはここですか

320 :デフォルトの名無しさん:2006/07/16(日) 16:31:47
>>302
> イベントを取る必要は(自分の用途では)ないので、もう少し楽かと思います。

イベントを取らなくても、SendMessage() でのレコード型や文字列のやりとりには共有メモリは必須。

321 :デフォルトの名無しさん:2006/07/16(日) 16:55:51
QuickRepを使って印刷プレビューを表示させたとき、
最小化・最大化ボタンを表示させないようにするには
どうすればいいでしょうか?
環境はDelphi5です。

322 :デフォルトの名無しさん:2006/07/16(日) 19:59:21
>>292
ありがとうございます。
テキストデータが主なので、自分で解析するしかないようですね。
検索するにも検索の仕方がわからない問題だったので助かりました。

323 :デフォルトの名無しさん:2006/07/16(日) 20:07:01
INI/YAML/XMLのライブラリ使ったり
TFileStream.Write/ReadComponentでオブジェクトをデータとして保存・読み出しするとかすれば
バカ正直にテキスト解析する必要もなかったりするが。

324 :デフォルトの名無しさん:2006/07/17(月) 09:07:10
16数を10真数に変換するにはどうしたらよいのでしょう。

たとえば
エディット1に「255」入力するとエディット2に「FF」と出力されるようなプログラム作りたいんですが。

a:=255;
IntToSTR(a)
だったら255しか表示されませんよね

325 :デフォルトの名無しさん:2006/07/17(月) 09:26:32
>>324
IntToHex

326 :デフォルトの名無しさん:2006/07/17(月) 16:08:40
Delphi 6 Personalをインストールする時にできる、
C:\Program Files\Borland Delphi Personal Installer
このフォルダって必要でしょうか?

プログラム本体は
C:\Program Files\Borland\Delphi6
にありそうなので、前記のフォルダは消そうかと思うんですが。

327 :デフォルトの名無しさん:2006/07/17(月) 16:12:40
そういうのは無闇にいじるな
Delphiに限らず、正常にアンインストールできなくなったりしたら嫌じゃん

328 :デフォルトの名無しさん:2006/07/17(月) 16:50:21
>>326
なぜ消そうとするよ

329 :デフォルトの名無しさん:2006/07/17(月) 18:03:35
http://www.google.co.jp/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-17,GGGL:ja&q=Borland+Delphi+Personal+Installer+

330 :デフォルトの名無しさん:2006/07/17(月) 20:10:43
>>326-327

消す前にそのフォルダを別の場所に移動してみる

アンインストールしてみる

正常にアンインストール出来ればそのフォルダは不要である

もう一度インストールする

移動したフォルダと新しいフォルダを両方消す


331 :デフォルトの名無しさん:2006/07/17(月) 20:12:52

正常にアンインストール出来なかったときは
移動しておいたフォルダを元の場所に戻しておく


ただしそれでアンインストール出来るようになるかどうかは不明



332 :デフォルトの名無しさん:2006/07/17(月) 21:14:07
>>326
そのフォルダはフォルダ名から言ってインストーラがそのままコピーされてるだけと推測。
復元インストールの時などに再度ダウンロードするのが苦にならないなら消していいんじゃない?

333 :デフォルトの名無しさん:2006/07/17(月) 21:24:19
>>326
別に消しても夢問題だよ
オレ消しちまったけど困ったことないし

334 :デフォルトの名無しさん:2006/07/17(月) 23:31:54
そもそも消す意味が分からない

335 :デフォルトの名無しさん:2006/07/18(火) 03:15:29
質問です。
Editに数字を入力する場合は、入力した数字全てが表示されますが、小数点以下3桁まで表示
といった事は、どのようにすればよろしいのでしょうか?
よろしくお願いします。

336 :デフォルトの名無しさん:2006/07/18(火) 03:23:28
FormatFloat

337 :デフォルトの名無しさん:2006/07/18(火) 06:02:18
>>336
FormatFloat('#0.000',StrToFloat(Edit1.Text));
で表示できると思ったのですが、表示されません。
イベントはOnCreateにしています。
何度もお聞きしてすいませんが、よろしくお願いします。

338 :デフォルトの名無しさん:2006/07/18(火) 06:22:50
>>336
すいません!自己解決しました。
Edit1.Text:=FormatFloat('#0.000',StrToFloat(Edit1.Text));
で良かったですね。
しかし、このイベントを複数のEditで行うには、1行ずつ書かなくては
ならないのでしょうか?
一度に複数のEditの表示形式変更は出来ませんか?

339 :デフォルトの名無しさん:2006/07/18(火) 06:34:57
つ Sender

340 :デフォルトの名無しさん:2006/07/18(火) 07:00:21
>>339
何度もすいませんでした。
TEdit(Sender).Text:=FormatFloat('#0.000',StrToFloat(TEdit(Sender).Text));
で出来るんですね。
なにぶん初心者でして・・・(言い訳)
ありがとうございました。

341 :デフォルトの名無しさん:2006/07/18(火) 11:18:51
初心者用スレで初心者ですも何もないな
不要なことは言わないのが一番

342 :デフォルトの名無しさん:2006/07/18(火) 11:54:02
不要なことは言わないのが一番

343 :デフォルトの名無しさん:2006/07/18(火) 13:20:29
俺delphi極めたら結婚しようと思うんだ…

344 :デフォルトの名無しさん:2006/07/18(火) 13:27:25
よろしくお願いします。 Delphi 6 Personalです。
自作関数の中からテキストボックス内のテキストを参照することはできないでしょうか?

procedure hogeCheck(strE1 : String); //自作関数
begin
if strE1 = 'hoge';
showmessage('ほげです');
end;

procedure TForm1.Button1Click(Sender: TObject); //ボタンクリック
begin
hogeCheck(Edit1.Text);
end;

Edit1.Textを、引数として渡すのではなく、関数の中で if Edit1.Text = 'hoge'; みたいにできそうな気がするんですが。

345 :デフォルトの名無しさん:2006/07/18(火) 13:29:42
hogeCheckをTForm1クラスの中に入れちゃえばいいじゃない

346 :デフォルトの名無しさん:2006/07/18(火) 13:31:29
Form1.Edit1.Text = 'hoge';

347 :デフォルトの名無しさん:2006/07/18(火) 13:33:07
なるほど! やってみます。ありがとうございました。

348 :デフォルトの名無しさん:2006/07/18(火) 15:54:15
引数を ed : TEdit にするだけ。これだと単独の関数でもいいし。

349 :デフォルトの名無しさん:2006/07/18(火) 15:55:51
特定のインスタンスを参照するなら手続きや関数にする意味ないし。

350 :デフォルトの名無しさん:2006/07/18(火) 17:51:33
え?突っ込むところって
>if strE1 = 'hoge';
>if Edit1.Text = 'hoge';
ここじゃないの?

351 :デフォルトの名無しさん:2006/07/18(火) 18:42:41
324 名前: 仕様書無しさん 投稿日: 2006/07/14(金) 22:51:56
Delphiバッカやってる会社に一年いたけど、3、4年目の奴がセッションという言葉すら知らなかったぞ。
経験10年以上の上司も含めて。
大体Webアプリが難しい、判らないという知的障害者みたいな奴もいるが。

あるプログラムで詰まってたから、俺が、それセッションに放り込めばできるでしょ、って教えてあげたら、チンプンカンプンな様子だったけど、
家に帰って一生懸命調べたらしく数日後、上司にセッションでやればいいんじゃないでしょうか、
ってアピールしてた。僕、何でも知ってます、見たいな。お前、プライド無いのかよ。
んで、セッションで書いたんだけど、結局キー名間違えてて俺がバグとってあげた、という立派な落ちまでつけてくれた。

まじ痛々しい。死んでもらいたい。Delphiやってる人ってホント糞だよね。
それでいて自分を「技術者」と思い込んでて訳わからん自意識だけはある。

325 名前: 仕様書無しさん [sage] 投稿日: 2006/07/14(金) 22:54:04
Delphier = ウザイ、キモイ、イタイ。

352 :デフォルトの名無しさん:2006/07/18(火) 18:43:38
hoge1 : Thoge1;
hoge2 : Thoge2;
hoge3 : Thoge3;

Thoge1 Thoge2 Thoge3は全然違うレコードです。

hoge1 hoge2 hoge3 を
同じ配列に入れることできますか?



353 :デフォルトの名無しさん:2006/07/18(火) 20:04:55
同じ配列ってのがどういう意味よ?

354 :デフォルトの名無しさん:2006/07/18(火) 20:33:54
http://www.google.co.jp/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-17,GGGL:ja&q=Delphi+%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E9%85%8D%E5%88%97

355 :デフォルトの名無しさん:2006/07/18(火) 20:40:56
ポインタ噛ませればいける

356 :デフォルトの名無しさん:2006/07/18(火) 21:06:44
>>351
セッションって何?
マジレスキボン

357 :にゃんぽん:2006/07/18(火) 21:11:19
こんにちは。
Delphiを初めて1ヶ月の初心者です。
どうか、Windowのリサイズについてご教授ください。

MDIで画像を表示するプログラムを作成しています。
子画面をマウスドラッグでサイズ変更をしているとき、
マウス移動の間、図形連続的に再描画(縦横比を一定)しようとしています。

FormPaint内でClientWidth とClientheightの設定をしてもうまくいきません。

いい方法がありましたらご教授願います。



358 :デフォルトの名無しさん:2006/07/18(火) 21:15:59
>>356
要はCokkie

359 :デフォルトの名無しさん:2006/07/18(火) 21:34:03
Cookie な。

360 :デフォルトの名無しさん:2006/07/18(火) 21:56:49
>357
よくわからんがとりあえずOnResizeイベントじゃねーの?

361 :にゃんぽん:2006/07/18(火) 22:08:30
>>360
OnResizeはサイズ終了時に呼ばれるので、
ClientWidth とClientheightを設定すると、
再度リサイズされるためか、表示がうまくいきません。

非クライアント領域でウィンドウの辺をつかみながら、
マウスが動して矩形を作っているときに、
縦横比を一定にしたいです。

362 :デフォルトの名無しさん:2006/07/18(火) 22:35:34
WM_SIZE


363 :にゃんぽん:2006/07/18(火) 22:39:43
>>362
WM_SIZEですか。どうもありがとうございます。確かめてみます。
ただ、WM_SIZING中も縦横比一定で描画したいのです。


ところで、下記のPDFにVBでの方法が出ていました。
これをDELPHIで書くとどのようになるのでしょうか。
ご教授頂けたら幸いです。

http://www.gihyo.co.jp/book/2001/400851/4-7741-1166-X.pdf


364 :にゃんぽん:2006/07/18(火) 23:04:50
WM_SIZINGは、マウスの矩形拡大・縮小時にはよばれるでしょうか。

365 :デフォルトの名無しさん:2006/07/18(火) 23:20:46
うぬはいい加減うざいでござる

366 :デフォルトの名無しさん:2006/07/18(火) 23:22:30
>>364
その通りです。

367 :デフォルトの名無しさん:2006/07/18(火) 23:54:47
>>364
何でお前C#相談室スレに同じ質問マルチポストしてるんだよ

368 :デフォルトの名無しさん:2006/07/19(水) 00:46:02
>>367
IndyってSSL使う時DLL使うよね。
作成した実行ファイル以外配布したくない時は
みんなどんなライブラリ使ってるの?
DLL配布なんてしないで、Delphiらしくスマートに配布したい。

369 :デフォルトの名無しさん:2006/07/19(水) 00:46:50
ごめん。
意味も無くアンカー付けてしまった。

370 :デフォルトの名無しさん:2006/07/19(水) 05:21:00
Editに数字を入力するようにしている場合についての質問です。
数字が入力してあるか未入力かを判断する方法は、有るのでしょうか?
未入力の場合は、メッセージを表示、入力してある場合は、計算を続行する。
といった感じにしたいのですが・・・
if〜〜thenで出来るのでしょうが、〜〜をどのようにすればいいか分かりません。
よろしくお願いします。


371 :デフォルトの名無しさん:2006/07/19(水) 05:33:33
try
 strtoint(edit1.text);
except
showmessage('数字入力しろぼけ');

372 :デフォルトの名無しさん:2006/07/19(水) 06:28:14
>371
ソースファイルが見つかりません
ステップ実行してくださいとカ出てきました・・・

373 :デフォルトの名無しさん:2006/07/19(水) 06:48:23
TryStrToInt使え
例外拾うよりもスマート

374 :デフォルトの名無しさん:2006/07/19(水) 09:10:38
>>370
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200210_02100014.html

375 :デフォルトの名無しさん:2006/07/19(水) 11:33:09
StrToIntDef多用してるんですけど、>>371の例の方がいいんでしょうかね?


376 :デフォルトの名無しさん:2006/07/19(水) 11:36:18
パフォーマンスに影響しない限りどーでもいい趣味レベルの話だ。

377 :デフォルトの名無しさん:2006/07/19(水) 12:03:28
配列のリセットおしえて

378 :27:2006/07/19(水) 12:24:00
まだ始めたばかりなので相当馬鹿なことやってると思うけど教えて欲しいです。これは、某所にあった物を改変したコンポの一部です。
{この場所}の部分の(ExeFileName)にEXEのパスを入れてそのファイルのアイコンを表示させたいんです。
でもこのままだと何も表示されません。(ExeFileName)のかわりに('C:\WINDOWS\WINMINE.EXE')とすると表示されるのに・・・
どうすりゃEXEのアイコンが表示されるか教えて欲しいです。用語などに誤りあったらすいません。

procedure TExeIcon.GetIcon;
var
Icon: TIcon;
begin
Icon := TIcon.Create;
try
Icon.Handle := ExtractIcon(HInstance,
PChar(ExeFileName), 0); {この場所}
Height := Icon.Height;
Width := Icon.Width;
Picture.Icon := Icon;
finally
Icon.Free;
end;
end;
{ TExeIcon }
constructor TExeIcon.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
If not (csDesigning In ComponentState) Then //設計中
GetIcon;
Height := 32;
Width := 32;
ExeFileName:='C:\WINDOWS\WINMINE.EXE';
end;

379 :デフォルトの名無しさん:2006/07/19(水) 12:37:26
377です。

a[1] := 325;
a[2] := 332;
a[3] := 234;

この時、全ての要素を0または空にする方法を教えて下さい。

380 :デフォルトの名無しさん:2006/07/19(水) 12:41:24
a[1] := 0;
a[2] := 0;
a[3] := 0;

381 :デフォルトの名無しさん:2006/07/19(水) 12:46:30
377です。

a[1] := 325;
a[2] := 332;
a[3] := 234;

この時、全ての要素を一度に0または空にする方法を教えて下さい。

382 :デフォルトの名無しさん:2006/07/19(水) 12:49:28
a[1] := 0; a[2] := 0; a[3] := 0;

383 :デフォルトの名無しさん:2006/07/19(水) 12:49:29
動的配列なら再生成すれば初期化されるのでは。

384 :デフォルトの名無しさん:2006/07/19(水) 12:50:35
無難なのは、
fillchar(a,sizeof(a[1])*3,0);
を使ったり
Windows APIのZeroMemoryを使ったり。

というか、aが何の配列なのか書けよ

385 :384:2006/07/19(水) 12:51:45
間違いだった

無難のは、
fillchar(a[0],sizeof(a[0])*3,0);

これならaが動的配列でも静的配列でも大丈夫

386 :デフォルトの名無しさん:2006/07/19(水) 13:09:39
>>378
GetIcon;を呼び出した後にExeFileNameに'C:\WINDOWS〜'が・・・もうわかるよな?

387 :デフォルトの名無しさん:2006/07/19(水) 13:10:48
>>385
すげっ  fillchar(a,sizeof(a) ,0); できますた。  

ありがとうございました。 <(_ _)>

388 :デフォルトの名無しさん:2006/07/19(水) 13:13:34
>>381 for ループでゼロ代入することをすすめる

389 :デフォルトの名無しさん:2006/07/19(水) 13:22:43
>>388
それは無理です

390 :デフォルトの名無しさん:2006/07/19(水) 13:28:56
for i := 0 to Length(a) -1 do
 a[i] := 0;

391 :デフォルトの名無しさん:2006/07/19(水) 15:17:56
OpenDialogで、「キャンセルが押された時点」で
開かれているフォルダの取得ってできる?

例:OpenDialogをExecuteして、C:\WINDOWSに移動、キャンセルを押す。この時、C:\WINDOWSを得る

別に、重要じゃないけど、ふとできるのか疑問に思った

392 :デフォルトの名無しさん:2006/07/19(水) 15:25:47
OnFolderChangeイベント内でカレントディレクトリを保持しておいて
ExcuteメソッドがFalseの時にその値を取得すれば出来そう


393 :デフォルトの名無しさん:2006/07/19(水) 15:41:28
キャンセル押したのになぜ取得する必要があるのかと

394 :デフォルトの名無しさん:2006/07/19(水) 15:49:21
>>393
>>342

395 :デフォルトの名無しさん:2006/07/19(水) 16:15:32
絶望的にプログラミングに向いてないやつって、いるよね

396 :デフォルトの名無しさん:2006/07/19(水) 16:16:58
誤爆です

397 :デフォルトの名無しさん:2006/07/19(水) 16:21:17
俺のことかとおもた。

398 :デフォルトの名無しさん:2006/07/19(水) 16:26:39
ごめんなさい(´・ω・

399 :デフォルトの名無しさん:2006/07/19(水) 17:35:02
いやいや俺の事だろう

400 :デフォルトの名無しさん:2006/07/19(水) 18:07:50
死ねよお前ら。俺のことに決まってるだろ

401 :デフォルトの名無しさん:2006/07/19(水) 19:19:08
そうそう、絶対400のことだと思う。

402 :デフォルトの名無しさん:2006/07/19(水) 19:21:42
絶望的にプログラミングに向いてないやつって400のことに決まってるだろが

403 :デフォルトの名無しさん:2006/07/19(水) 19:22:15
つんまんね

404 :デフォルトの名無しさん:2006/07/19(水) 19:29:16
さすが俺も、400にはかなわね。

405 :デフォルトの名無しさん:2006/07/20(木) 09:57:43
400の人気に嫉妬した

406 :デフォルトの名無しさん:2006/07/20(木) 11:58:21
構造体同士が内容が同じかどうかを比較する場合、項目をひとつひとつ比較するしかないんでしょうか?

407 :デフォルトの名無しさん:2006/07/20(木) 13:05:29
Delphi には「構造体」なんかないよ。

408 :デフォルトの名無しさん:2006/07/20(木) 13:10:12
2006ならオペレーター・オーバーロードで=が使える。

409 :デフォルトの名無しさん:2006/07/20(木) 13:14:57
レコードがPacked Recordでかつフィールドに文字列型を含まなければ
CompareMemで比較できるんだが・・・・

410 :デフォルトの名無しさん:2006/07/20(木) 13:35:48
動的配列もだめ

411 :デフォルトの名無しさん:2006/07/20(木) 13:37:27
ま、一般には、ひとつひとつ比較するしかない。と。


412 :デフォルトの名無しさん:2006/07/20(木) 13:48:32
(長い)文字列も動的配列も実体はポインタだからな
CompareMemは同じポインタでもアドレスが違えばFalseを返すから使えない
結局は地道に調べるしかないと

413 :デフォルトの名無しさん:2006/07/20(木) 14:33:09
それより packed の方がよほど制限きつい。これで一般性はなくなる。

414 :デフォルトの名無しさん:2006/07/20(木) 14:40:42
急にスレ密度が低下したと思ったらもう夏休みか

415 :406:2006/07/20(木) 14:41:37
地道に調べます。どうもでした。

416 :デフォルトの名無しさん:2006/07/20(木) 14:55:23
classのplacement newってないの?

417 :286:2006/07/20(木) 17:01:52
すんません、たいしたことじゃないんですけど、気になってて…

procedure ProcHoge(const str: string);

このときのstrって参照渡しになるんですか?
ただ変数が書き換えられないだけでコピー渡しだと思ってるんですが、ボク…

418 :デフォルトの名無しさん:2006/07/20(木) 17:12:33
参照渡しというか、定数パラメータ
ヘルプの定数パラメータで調べてみ

stringをパラメータに渡すとき、値渡しでOKな場合でも、、
値渡しよりconst付けておいた方が高速になるから、普通はconstを付ける。

419 :デフォルトの名無しさん:2006/07/20(木) 17:16:06
varもconstも参照渡しって点では同じ
違いは値を変更できるか出来ないか

420 :デフォルトの名無しさん:2006/07/20(木) 18:16:31
自分と同じファイルを調べるにはどうしたらいいのでしょうか。

たとえば、Project1.exeがC:\hoge\piyo\Project1.exeだった場合
D:\hoge\piyoをFileNameに指定したいんですが。

var FileName:String;

FileName:='c:\hoge\piyo'
だとProject1.exeが別のファイルに動かされたりhoge\piyoの名前が変わったら動かなくなりますよね

421 :デフォルトの名無しさん:2006/07/20(木) 18:21:45
ExtractFilePath(ParamStr(0))

422 :デフォルトの名無しさん:2006/07/20(木) 18:56:56
>421
おお!できました!ありがとうございました

423 :デフォルトの名無しさん:2006/07/20(木) 21:37:25
ExtractFilePath(application.exename);
でも良かったと思う

424 :デフォルトの名無しさん:2006/07/20(木) 21:51:18
>>423
Formsユニットをリンクしなくちゃならないのがネック
まあ、GUIアプリを作るときは関係ないけどね

425 :デフォルトの名無しさん:2006/07/20(木) 22:21:49
TWebBrowserで右クリック時のメニュー表示を制御をしたいのですが、
どうしてもIEの右クリックを行ったときと同等のメニューが表示されてしまいます。
どなたかご教授いただけませんでしょうか?

426 :デフォルトの名無しさん:2006/07/20(木) 22:30:06
ぐぐればすぐわかるしつもんをするな↑

427 :デフォルトの名無しさん:2006/07/20(木) 22:37:07
>>426
afo

428 :デフォルトの名無しさん:2006/07/20(木) 22:47:57
ちょっとした処理をしてすぐに終了するソフトを作っているのですが、FormのOnCreateイベントだけに処理を書き、
Application.Runをコメントアウトしています。つまりCloseを書いていない訳です。
こういうのは邪道でしょうか?普通はどういう風にするんでしょう?

429 :デフォルトの名無しさん:2006/07/20(木) 22:55:24
バックグラウンドで動かしたいの?

430 :デフォルトの名無しさん:2006/07/20(木) 22:58:25
>428
「コンソールアプリケーション」
いわゆるDOS窓用アプリケーション。
[新規作成]-[その他]の中にある。



431 :デフォルトの名無しさん:2006/07/20(木) 23:00:44
ibxを使ってDBGridで編集して登録ボタンを押したらcommit
終了ボタンを押したらcommitしてない変更があったら終了するかどうかメッセージを出す

ということをやりたいのですがcommitしていない変更の有無をどうやって調べたらいいか
教えてください。


432 :428:2006/07/20(木) 23:15:20
>>429
私へですかね?送るからファイルを渡すとちょっとした処理をしてすぐに終了しちゃうソフトです。
>>430
コンソールアプリケーションですか、ちょっとやってみます。

433 :428:2006/07/21(金) 00:19:11
コンソールアプリやってみました。すごいファイルサイズが縮みました。
そしてお約束通り質問です。
内部でShellExecuteする所があるのですが、第一引数のハンドルには何を指定すればいいんでしょうか?

434 :デフォルトの名無しさん:2006/07/21(金) 00:21:41
nil

435 :デフォルトの名無しさん:2006/07/21(金) 00:38:52
Webの懸賞サイトの入力を支援するソフトを自作したいと思っています。
そこで質問ですが、IEのEditみたいなのに名前などを入力するのには、どうすればいいでしょうか?
Delphi 6 PersonalをWin2000で使っています。よろしくお願いします。

436 :デフォルトの名無しさん:2006/07/21(金) 01:52:01
久々にエスパー
たぶんHTTPとかPOSTメソッドとかでググればよい

437 :デフォルトの名無しさん:2006/07/21(金) 02:02:39
Ver7なんですが、
MDI親フォームにWincontrolを張った時に、MDI子フォームよりZ軸が前に来る
んですが、後ろに表示される方法はありませんか?
同じくMDIフォームにラベルを貼って、クリックに応答するようにしているんですが、
上に来るMDI子フォームのEnabled=Falseの時は、表示されているフォームを
通り越してラベルが反応してしまうんですが、これを回避する方法はありませんか?

438 :デフォルトの名無しさん:2006/07/21(金) 06:02:16
Memo1からMemo10までの書き込み内容をクリアしたい場合、
一度に出来るのでしょうか?
それとも以下のように明記する必要があるのでしょうか?

Memo1.Clear;
Memo2.Clear;
Memo3.Clear;

   〃

よろしければ教えてください。

439 :デフォルトの名無しさん:2006/07/21(金) 06:40:53
for i:=1 to 10 do
begin
tmemo(findcomponent('memo'+inttostr(i))).clear;
end;

440 :デフォルトの名無しさん:2006/07/21(金) 09:55:28
>>439
それ繰り返しだよね?
一度にする方法ってないの?

441 :デフォルトの名無しさん:2006/07/21(金) 10:23:58
一度に繰り返すんだよ。

442 :デフォルトの名無しさん:2006/07/21(金) 10:25:41
procedure AllMemoClear;

ちゅう手続きにしてしまえばいいじゃん。複数あるんだからループは必須だろうし。

443 :デフォルトの名無しさん:2006/07/21(金) 12:03:39
APIレベルで見ても、一度に消去するメッセージなんか
ないはずだから、原理的に無理

他の人が答えてるみたいに関数用意するしかないよ

444 :デフォルトの名無しさん:2006/07/21(金) 16:07:23
THoge = packed record
 case Tag: Boolean of
  True: (A: DWORD);
  False: (B, C: WORD);
end;

Tagをフィールドとしてアクセスできるのは何か意味があるんでしょうか?
てっきりTagにはアクセスできないと思っていたらSizeOfしたら5が返ってきたんでびびりました。

THoge = packed record
 Tag: Boolean;
 case Boolean of
  True: (A: DWORD);
  False: (B, C: WORD);
end;

と意味は同じですよね。単にPascalからの互換性の問題?

445 :デフォルトの名無しさん:2006/07/21(金) 22:21:56
Delphiを使用し始めて1ヶ月の新人です。(Ver.7を使用)

計算ソフトを作成したのですが、ファイル保存や開くなどの使用方法が
分かりません。
自作ソフトの場合、拡張子をどのように設定すればよいのでしょうか?
また印刷は、表や、テキスト、BMP等が含まれる場合は、どのような方法があるのでしょうか?
Rave Report や Quick Report 等があるみたいですが、メリットやデメリットが分かりません。
上記事項に関し説明してあるHP等がありましたら紹介して下さい。
よろしくお願いします。


446 :デフォルトの名無しさん:2006/07/21(金) 23:21:49
>ファイル保存や開くなどの使用方法が分かりません。

TMemoのLinesプロパティ、TListBoxのItemsプロパティのようなTStrings型には
SaveToFile,LoadFromFileというそのまんまのメソッドがあるので、
まずそれの扱いから覚えれ。
慣れてきたらコントロールに依存しないTStringListというクラスクラスがあるのでそれを活用すべし。

なお、バイナリデータだったらTMemoryStream,TFileStreamの方が扱いやすい。

447 :デフォルトの名無しさん:2006/07/21(金) 23:34:45
>>435
自アプリにTWebBrowser載っけて、その中のhtmlエレメントに対して読み書きする方法だったらxmldoc使えばできる

448 :デフォルトの名無しさん:2006/07/21(金) 23:48:56
あ、personalだからxmldoc入ってないとか駄レスは勘弁な

449 :デフォルトの名無しさん:2006/07/22(土) 02:43:45
APIだけでアプリケーションを作ってるんですが、
サイズを大きくしたくないためSysUtilsをuseしないでExtractFilePathと同じ働きをする関数を書きました。

function ExtractFilePath(const FileName :String): String;
var
p, pf :PChar;
begin
 p := PChar(FileName);
 pf := PChar(FileName);

 Inc(p, Length(FileName));

 while p^ <> '\' do
 Dec(p);

 SetLength(Result, p - pf + 1);
 Move(pf^, PChar(Result)^, p - pf + 1);
end;

関数はちゃんと動いてくれるのですが、終了後にDelWikiから貰ってきたHeapCheckerに「ヒープ領域が未解放です」と言われてしまいます。
どこが原因なんでしょうか?

450 :デフォルトの名無しさん:2006/07/22(土) 03:05:30
印刷についてですが、Rave Report と Quick Report
のどちらが初心者にとって使用しやすいんでしょうか?

451 :デフォルトの名無しさん:2006/07/22(土) 03:20:35
>>449

原因は分からないが、その関数は '\' = $5c を検出してるので、二バイト文字の
二バイト目が $5c のとき誤動作するよ。あと、FileName が '\' を含まないときは
暴走する。

誤動作例

Label1.Caption := ExtractFilePath('c:\abc\defg\詐欺.txt');

452 :デフォルトの名無しさん:2006/07/22(土) 05:07:58
おれもVCL使わずにAPIベースの作ったことあるけど、途中でSysUtilsくらいええじゃないかという
気になっちまった。
exeを100k以下にしたいなら使えないけどなー

453 :デフォルトの名無しさん:2006/07/22(土) 05:34:48
>>450
Delphi 7 ならQuick Report

Rave Report は日本語対応に難あり。

454 :デフォルトの名無しさん:2006/07/22(土) 09:42:01
すみません、前レス見てvarによる参照渡しをつかいはじめたものですが…

procedure MyProc(var str1, str2: string);

とまとめて記述した場合、参照渡しになるのはStr1だけなんでしょうか?str2も参照渡しになるんでしょうか?
しょうもない質問でごめんなさい・・・

455 :デフォルトの名無しさん:2006/07/22(土) 09:48:37
>>454
何故自分で検証しないの?

456 :デフォルトの名無しさん:2006/07/22(土) 09:54:43
30秒で検証出来る質問すんじゃねぇ

457 :デフォルトの名無しさん:2006/07/22(土) 09:55:51
どっちもvarが適用される

458 :デフォルトの名無しさん:2006/07/22(土) 11:14:59
>>457
ありがとうございます。

459 :デフォルトの名無しさん:2006/07/22(土) 13:19:31
自分で検証できないってことは、教えても意味がない。

460 :デフォルトの名無しさん:2006/07/22(土) 16:08:29
プゲラ
なんだ>>459の態度はwww

初心者相手にテメェはどれだけの使い手だっつーんだよ。
たかだかDelphi使ってる奴らが…

レス見て思わず笑っちまったよ。

461 :デフォルトの名無しさん:2006/07/22(土) 16:21:22
ヒント:夏休み

462 :デフォルトの名無しさん:2006/07/22(土) 16:26:41
というか検証の仕方がわからないから初心者スレで質問してんじゃねぇか?

463 :デフォルトの名無しさん:2006/07/22(土) 17:16:23
じゃあまず検証コードの書き方を質問するべきだったな。

464 :デフォルトの名無しさん:2006/07/22(土) 17:17:29
というかまずヘルプ嫁。

465 :デフォルトの名無しさん:2006/07/22(土) 17:34:31
弱者にゃ強い…  てか?

466 :デフォルトの名無しさん:2006/07/22(土) 17:41:23
当たり前だろwww

467 :デフォルトの名無しさん:2006/07/22(土) 17:48:23
>>459
というか、聞かれた人が嘘をついてたら意味ないから自分で検証できなと・・・

468 :デフォルトの名無しさん:2006/07/22(土) 18:02:54
なるほど、嘘を教えればいいんだな!

469 :デフォルトの名無しさん:2006/07/22(土) 18:17:46
嘘をつくつもりがなくても
なにか間違うかもしれないしな

470 :デフォルトの名無しさん:2006/07/22(土) 19:06:23
自分で検証できなきゃいつまでたっても人に聞かなきゃ何もできないからな。
それにその方が人に聞くより理解早いし。


471 :デフォルトの名無しさん:2006/07/22(土) 19:09:07
なんもかんも自分で検証するよろし

てか

472 :デフォルトの名無しさん:2006/07/22(土) 19:11:57
自分でやってみても判らなかったら聞けばいいじゃん。

473 :デフォルトの名無しさん:2006/07/22(土) 19:12:03
雑談みたいのからでも除々にDelphiに慣れていけばいいんじゃね?
ただでさえユーザー先細りで存続が危ぶまれる言語なのに、人がいつかなくなるぜ。

474 :デフォルトの名無しさん:2006/07/22(土) 19:28:16
ないないwww

475 :デフォルトの名無しさん:2006/07/22(土) 19:38:38
>>474
はたしてそうかな

476 :474:2006/07/22(土) 19:46:32
>>475
スマン、よく考えずに適当にレスしてた。
今後気をつけます。

477 :デフォルトの名無しさん:2006/07/22(土) 20:05:23
なぜ俺が先細りチンコだと分かったんだ

478 :デフォルトの名無しさん:2006/07/22(土) 21:24:05
>>474は何がないと思ったわけ?

479 :デフォルトの名無しさん:2006/07/22(土) 21:56:43
「存続が危ぶまれる言語」の部分

480 :デフォルトの名無しさん:2006/07/22(土) 22:00:50
それこそないない

481 :デフォルトの名無しさん:2006/07/22(土) 22:14:00
>>480
はたしてそうかな

482 :デフォルトの名無しさん:2006/07/22(土) 22:50:10
FormStyle=fsNormalのフォームを複数表示する場合、
メインフォームのみタスクバーに表示されますが、
その他のフォームもタスクバーに表示したい場合は
どのようにすれば良いでしょうか?

483 :449:2006/07/22(土) 23:04:59
>>451
MoveをCopyMemoryに変えたりもしてみましたがリークは直りませんでした。
PCharで扱わないでStringでやってみようと思います。
ありがとうございました。

484 :デフォルトの名無しさん:2006/07/22(土) 23:07:50
存続は結構ヤバいだろ?
てか、2007日本語版は出るのか?

485 :デフォルトの名無しさん:2006/07/22(土) 23:16:56
>>483
そもそもメモリリークの原因は本当にその関数内にあるのか?

486 :デフォルトの名無しさん:2006/07/22(土) 23:45:24
てかその関数内では基本的にリークしない
99.9%他の関数内でリークしている

487 :デフォルトの名無しさん:2006/07/22(土) 23:46:26
あの〜、Tlistのデータをファイルに出力したり、
そのファイルを読み込んでTlistを構築したりって
ことがしたいんですけど、どうやったらいいですか?
いろいろ調べたけど、わからなかった。
スレタイとおりの超初心者なんです。
教えてください。(あま〜いとか言わないでw)

MyList : TList;

New(ARecord);
ARecord^.name := FileRec.Name ;
ARecord^.Time := FileRec.Time;
MyList.Add(ARecord);
みたいににして作ったMyListをファイル出力。
また、そのファイルから後日再度MyListを構築したいんです。

488 :デフォルトの名無しさん:2006/07/23(日) 00:28:44
> 後日再度MyListを構築したいんです。

ポインタはメモリ内のアドレスを格納する変数だよ。その値を後日読み出しても無意味だろ。

489 :デフォルトの名無しさん:2006/07/23(日) 00:46:04
レコードの中身を保存すればいいじゃんw
アホ?w

490 :449:2006/07/23(日) 00:57:13
>>485-486
その関数を使っている部分だけをコメントアウトしたら、
HeapCheckerからは何も言われなかったのでそこだと思ったんですが…

新規に自作関数をMessageBox内で使って表示するだけのものを作って実行してみたら何も言われませんでした。
>>486さんの言うとおり他のところでリークしているようでした。
全然関係ないところの質問をしてしまってすみません。

491 :デフォルトの名無しさん:2006/07/23(日) 01:44:47
>>490
いかにも、他のどこかでメモリ領域を壊しているくさいな。
ポインタ多用してないか?

492 :デフォルトの名無しさん:2006/07/23(日) 01:51:22
QuickReportの使用方法が全く分かりません。
QuickReportでMemoを印刷する場合、DataSetに何か入力するみたいで
すが何を入力して良いかも分かりません。HELPを見ても分かりませんでした。
どなたか簡単な、例を示してくれませんか?
あとQuickReportについて簡単に説明してあるHPは有りませんか?
よろしくお願いします。

493 :デフォルトの名無しさん:2006/07/23(日) 01:57:30
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/db/QReport.htm

494 :デフォルトの名無しさん:2006/07/23(日) 02:13:33
>>490
気にスンナ
くだすれだしな

495 :デフォルトの名無しさん:2006/07/23(日) 02:58:48
>>493
ありがとう御座います。
チョット挑戦して見ます。DB関係は全く使用していなかったため、
苦労しそうですが・・・

496 :デフォルトの名無しさん:2006/07/23(日) 10:28:51
チョットだけか・・・

497 :デフォルトの名無しさん:2006/07/23(日) 10:55:15
苦労が血になる肉になるってか。

498 :デフォルトの名無しさん:2006/07/23(日) 11:00:27
苦労などしてませんわ

499 :デフォルトの名無しさん:2006/07/23(日) 12:43:02
492です。
チョットとゆう言葉は、いけなかったみたいですね。
修正
チョット→出来るまで

最近Delphiを始めたんですが、使用しやすいので
メインをDelphiに変えたんですよ。しかし印刷関係は
他の物に負けている感じがしますね・・・
まだ全然使い切っていないからかもしれないですが。

500 :デフォルトの名無しさん:2006/07/23(日) 12:46:39
> しかし印刷関係は
> 他の物に負けている感じがしますね・・・

そのあたりをどうするかは、各人の企業秘密だから
ネットで聞いても教えてもらえない事が多い。


501 :デフォルトの名無しさん:2006/07/23(日) 13:04:05
リポートツールをバージョンによってころころ変える。

ユーザすくないからドキュメントも少ない。

GUI ビルダ以外には Delphi のメリットはないけど、これが案外大きいんだよね。

502 :デフォルトの名無しさん:2006/07/23(日) 19:18:53
サードパーティに頼らずにちゃんとしたのを最初から出していれば状況違ったかもね。

503 :デフォルトの名無しさん:2006/07/23(日) 20:13:21
印刷関係はツールに頼らず自前でライブラリ作るのがお勧め
変にツール使うと応用が聞かなくて結局後で困る

504 :デフォルトの名無しさん:2006/07/23(日) 20:43:18
GUI関係はツールに頼らず自前でライブラリ作るのがお勧め
変にツール使うと応用が聞かなくて結局後で困る

505 :デフォルトの名無しさん:2006/07/23(日) 20:48:16
単にコピペだけでひねりが何にもねえな。

506 :デフォルトの名無しさん:2006/07/23(日) 21:04:36
VCLが便利だからDEL使ってるヤツが、印刷だけ自作ライブラリ作れってのも
説得力ないなーーーーーーーーーーー

507 :デフォルトの名無しさん:2006/07/23(日) 21:06:40
> サードパーティに頼らずにちゃんとしたのを最初から出していれば状況違ったかもね。

これは Indy にも言える。バージョンによって実装がころころ変わるし。
印刷やネット関係は今やアプリづくりには必須だろうに。某は手抜きするんだよな。

508 :デフォルトの名無しさん:2006/07/23(日) 21:09:27
> GUI ビルダ以外には Delphi のメリットはないけど

これに尽きる。ほかは愚痴言ってショボイのつくるか、金だして買ってくるがよろし。

509 :デフォルトの名無しさん:2006/07/23(日) 23:49:30
TRegExprをつかってjaneのReplaceStr.txtにある$1$3みたいなマッチした文字列での
置換をしたいんだけど、どう書けばいいの?

<>(ID:(.{8}|\?{3}))(0)(●)?(\sBE:\d+-(\s|#+))?$[TAB]$1$3 [PC]$4$5

510 :デフォルトの名無しさん:2006/07/24(月) 07:58:35
>>506
>>507
何でもかんでも某製じゃなきゃやだ、ってのはどうかと思うよ

511 :デフォルトの名無しさん:2006/07/24(月) 10:00:06
GUI 以外では、VCLはライブラリとしてはものすごく貧弱ってことは定説だしね。

512 :デフォルトの名無しさん:2006/07/24(月) 10:17:42
そもそもそういう名前だしなw

513 :デフォルトの名無しさん:2006/07/24(月) 18:51:20
DB周りが一番重宝してるけど...

514 :デフォルトの名無しさん:2006/07/24(月) 21:27:59
ライブラリの充実って・・・
意味和漢ね

515 :デフォルトの名無しさん:2006/07/24(月) 21:58:32
ま、意味和漢ねやつらが使ってるということで。

516 :ななしへたぐらま ◆XcB18Bks.Y :2006/07/24(月) 23:27:37
>>487
たとえばこんな感じで書き出せます.
procedure TForm1.SaveList;
var
 fs: TFileStream;
 i: integer;
begin
 fs := TFileStream.Create(ListFileName, fmCreate);
 try
  for i := 0 to pred(FList.Count) do
   fs.Write(PFileRec(FList[i])^, sizeof(TFileRec));
 finally
  fs.Free;
 end;
end;

ただし,文字列は短い文字列かヌルで終わる文字列に格納しなければなりません.
TNantoka = packed record // ファイルに保存する場合は必ずpacked recoed
 Name: shortstring; // 短い文字列.この場合256バイト使う.最大255バイト格納可能.
 Time: TDateTime;
end;


通常の文字列型(長い文字列)は変数に文字列の場所だけを格納しています.
そのためレコードの中の文字列変数の内容を書き出しても書き出されるのは意味のない整数値です.



517 :デフォルトの名無しさん:2006/07/24(月) 23:59:04
印刷に関する質問です。
下記のソースを実行しますと
文字列は印刷できるのですが
図形の方が印刷されません
ご助言お願いします。

printer.Title:='testprint';
printer.BeginDoc;
printer.Canvas.Brush.Style:=bsClear;
printer.Canvas.TextOut(100,100,'test');
printer.Canvas.Ellipse(100,100,100,100);
printer.EndDoc;

518 :デフォルトの名無しさん:2006/07/25(火) 00:47:17
>>517
大丈夫。ちゃんと印刷されてるよ。








高さ0、幅0の楕円が。

519 :517:2006/07/25(火) 03:41:31
お恥ずかしい限りです(^^;

520 :デフォルトの名無しさん:2006/07/25(火) 07:05:24
文字列のByte数を返す関数って何だっけ?

s: Widestring;

s := 'abc'; //Byte数は6だが

Length(s); //これだと返り値は3でByte数じゃない


521 :デフォルトの名無しさん:2006/07/25(火) 08:35:05
strlen

522 :デフォルトの名無しさん:2006/07/25(火) 08:44:58
>>521
StrLenやってみたけど、期待してたのと違いました。
WidestringでByte数調べるにはLengthで調べた文字数にx2するしかないのかな。

523 :デフォルトの名無しさん:2006/07/25(火) 10:26:51
それでなんの不都合が?

524 :デフォルトの名無しさん:2006/07/25(火) 11:00:18
Length 関数は,文字列 S に格納されている文字数または配列内の要素数を返します。
1 バイト(AnsiString)およびマルチバイト文字列の場合,
Length は文字列によって使用されるバイト数を返します。
Unicode (WideString) 文字列の場合は,バイト数を 2 で割った値が返されます。

ヘルプ読もうとも思わないやつは初心者スレであっても来なくていいと思うよ

525 :デフォルトの名無しさん:2006/07/25(火) 13:14:47
>Length 関数は,文字列 S に格納されている文字数または配列内の要素数を返します。
>1 バイト(AnsiString)およびマルチバイト文字列の場合,
>Length は文字列によって使用されるバイト数を返します。
>Unicode (WideString) 文字列の場合は,バイト数を 2 で割った値が返されます。

俺はこの質問に関係ない初心者だけど、Unicodeとか意味ワカンネ

526 :デフォルトの名無しさん:2006/07/25(火) 13:51:14
それは Delphi と関係ないし、google 先生に訊けばいいよ。

527 :デフォルトの名無しさん:2006/07/25(火) 14:10:25
>>520
stringでもWideStringでも
nSize := Length(s) mod sizeof(s[1]);

528 :デフォルトの名無しさん:2006/07/25(火) 14:15:06
mod かよ?

529 :デフォルトの名無しさん:2006/07/25(火) 14:15:51
>>527 イミフメ

530 :デフォルトの名無しさん:2006/07/25(火) 15:56:23
ByteLength(s: AnsiString);
ByteLength(s: WideString);

上記のような標準関数あった気がしたが勘違いか。

ちなみに.Netじゃこんなやつ。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/012strcount/strcount.html

>>523
いろいろ不便。

>>524
んなことは、わかってる。
だれがLengthのヘルプ引用しろと言ったんだ?

>>527
こうだね。
nSize := Length(s)*SizeOf(s[1]);

531 :デフォルトの名無しさん:2006/07/25(火) 16:02:30
一行で済むことをえらそうに・・・

532 :デフォルトの名無しさん:2006/07/25(火) 16:07:49
>>531
答えられなかった奴がえらそうに。

533 :デフォルトの名無しさん:2006/07/25(火) 16:08:24
質問している側が煽らない

534 :デフォルトの名無しさん:2006/07/25(火) 16:30:39
>>533
すまん。

535 :デフォルトの名無しさん:2006/07/25(火) 17:03:36
掛け算すると、「いろいろ不便」と感じる人がいるのはこのスレですか?

536 :デフォルトの名無しさん:2006/07/25(火) 17:36:02
他人の面倒見るのが好きでもない奴はこのスレ覗かないほうがいいかもな…

537 :デフォルトの名無しさん:2006/07/25(火) 18:37:43
>Unicode (WideString) 文字列の場合は,バイト数を 2 で割った値が返されます。

うーーーーん、おれが不思議なのは、2倍することで解決することをなんで人に訊くのか?
ってことだな。「いろいろ不便」って感じること自体が謎なんだが。

538 :デフォルトの名無しさん:2006/07/25(火) 18:46:56
そういう言い方しかできない奴ってたまにいるよね

539 :デフォルトの名無しさん:2006/07/25(火) 18:50:54
どいつもこいつも釣られるなよ

540 :デフォルトの名無しさん:2006/07/25(火) 18:53:15
もはやアホしか残ってねぇな

>>530のコードは
AnsiString なら 3
WideString なら 6
が返るところがミソ

文字列のByte数求める汎用関数求めてるのに
2倍がどうのこうの煽ってる馬鹿ってなんなんだ?

541 :デフォルトの名無しさん:2006/07/25(火) 19:05:05
>>520読んだのか?
WideStringなら2倍で解決だろボケ

542 :デフォルトの名無しさん:2006/07/25(火) 19:24:45
Length(s) shl 1

543 :デフォルトの名無しさん:2006/07/25(火) 19:44:33
一発で返す関数があるかないかでないってことで終わりだろ。バカばっか

544 :デフォルトの名無しさん:2006/07/25(火) 19:53:09
へー、2倍する関数つくったらいいじゃないの。へんなの

545 :デフォルトの名無しさん:2006/07/25(火) 19:54:43
nSize := Length(s)*SizeOf(s[1]);

これを関数にするとして、どうやって s を受け取るつもりなんだろか?

546 :デフォルトの名無しさん:2006/07/25(火) 19:57:19
「一発で返す関数がある」として、引数がどうなってると考えたのか気になる。

547 :デフォルトの名無しさん:2006/07/25(火) 19:57:30
function ByteLength(const s: String): Integer; overload;
begin
 Result := Length(s);
end;

function ByteLength(const s: WideString): Integer; overload;
begin
 Result := Length(s) * 2;
end;

548 :デフォルトの名無しさん:2006/07/25(火) 19:58:12
そうそう、たんに2倍するだけ。疑問点なんかないよね。

549 :デフォルトの名無しさん:2006/07/25(火) 20:12:08
どうせライブラリ充実厨の質問だろ

550 :デフォルトの名無しさん:2006/07/25(火) 20:28:23
ちょっとまえにも、「一発で返す関数」について質問があったね。
なんでも「一発で返す関数」にこだわるのは初心者にはありがちだけど。

551 :デフォルトの名無しさん:2006/07/25(火) 20:40:58
このスレVCLの貧弱さに話が及ぶとすぐキレるな

552 :デフォルトの名無しさん:2006/07/25(火) 21:04:09
VCL の貧弱さ、っていうか、この前のは貼ってあるTMemo全部クリアする関数だからなぁ
しかもループつかわないで(笑

553 :デフォルトの名無しさん:2006/07/25(火) 21:12:18
文句があるなら、giko さんみたいにライブラリ公開汁
http://delfusa.main.jp/delfusalibrary/index.html

554 :デフォルトの名無しさん:2006/07/25(火) 21:13:40
(誤)giko さん
(正)delfusa さん

失礼。

555 :デフォルトの名無しさん:2006/07/25(火) 21:18:09
そのライブラリに「TMemo全部クリアする関数」なんかあるのか?

556 :デフォルトの名無しさん:2006/07/25(火) 21:20:14
WideString のバイト数を一発で返す関数はあるんだろうな

557 :デフォルトの名無しさん:2006/07/25(火) 22:07:11
>>556

>>547

558 :デフォルトの名無しさん:2006/07/25(火) 22:08:20
ねぇ、二倍にするとかってのは何が問題になってんの?
何が問題なのかがわからない。

559 :デフォルトの名無しさん:2006/07/25(火) 22:09:24
Length('あAあ')
 なら5が返ってきてほしいわけ?

560 :デフォルトの名無しさん:2006/07/25(火) 22:12:29
>>520
ちょ、え?

皆に質問〜

s: Widestring;
s := 'abc'; //Byte数は6だが

半角abc は、3byteなんじゃないの?
Widestring 指定すると、6byteになるの?

561 :デフォルトの名無しさん:2006/07/25(火) 22:14:04
>>560
そうだが何か

562 :デフォルトの名無しさん:2006/07/25(火) 22:14:22
WideString は (というか、Unicodeは) 全ての文字を2バイトで表す。

563 :デフォルトの名無しさん:2006/07/25(火) 22:17:40
それはエンコード方式による

564 :デフォルトの名無しさん:2006/07/25(火) 22:29:12
>>560
じゃあ integer に 1 を代入したら 1 ビットになるんかい?

565 :デフォルトの名無しさん:2006/07/25(火) 23:11:24
>>564
ビット?

566 :560:2006/07/25(火) 23:14:15
>>561
>>562
へぇ、そうなのかぁ知らなかった。

567 :デフォルトの名無しさん:2006/07/25(火) 23:30:22
ビット?

568 :デフォルトの名無しさん:2006/07/25(火) 23:41:56
1 は 1 bit で表せるじゃん。

569 :デフォルトの名無しさん:2006/07/25(火) 23:44:19
ひょっとして1って文字は1バイトだけど数字としては1ビットで扱うって事か?
くだらねええええええええええええ

570 :デフォルトの名無しさん:2006/07/25(火) 23:54:39
ha?

571 :デフォルトの名無しさん:2006/07/26(水) 00:09:59
↓5レス以内にヴビ厨出現

572 :デフォルトの名無しさん:2006/07/26(水) 03:56:08
ヘルプファイルを表示させたく以下の様に記述したのですが、
ヘルプを開くときにチラツキが発生します。
何か問題があるのでしょうか?

procedure TForm1.SearchforHelpOn1Click(Sender: TObject);
begin
Application.HelpFile := 'HELP.HLP';
Application.HelpCommand(HELP_FINDER, 0);
end;

また他の記述方法には、どのような方法があるのでしょうか。

573 :デフォルトの名無しさん:2006/07/26(水) 07:40:24
1バイトは8ビットだお

574 :デフォルトの名無しさん:2006/07/26(水) 09:04:52
代入した値によって変数の型が変わるのか?っていう皮肉だったんだろう。


575 :デフォルトの名無しさん:2006/07/26(水) 09:14:03
バカばっかりだな

576 :デフォルトの名無しさん:2006/07/26(水) 10:01:30
くだすれだしな

577 :デフォルトの名無しさん:2006/07/26(水) 12:36:33
>>562
おまいは、UTF-8をよく勉強しろ

578 :デフォルトの名無しさん:2006/07/26(水) 13:51:41
Delphi の WideString のはなしだろ

579 :デフォルトの名無しさん:2006/07/26(水) 19:49:58
>>1->>578

ヘルプよく嫁

580 :デフォルトの名無しさん:2006/07/26(水) 23:14:34
>>579
スレタイ嫁

581 :デフォルトの名無しさん:2006/07/26(水) 23:28:40
>>580
お前もヘルプ嫁
もう、みんなで嫁

582 :デフォルトの名無しさん:2006/07/26(水) 23:36:42
>>581
コスモを感じる

583 :デフォルトの名無しさん:2006/07/27(木) 08:01:52
まあなんつーか夏だけどもっさり行こうぜ
しかしPG始めたばかりの頃って何でも1つにまとめたくなるんだよな…

584 :デフォルトの名無しさん:2006/07/27(木) 08:20:07
なまじ、VCLはGUIについては、手取り足取りしてくれるものだから
ほかの処理もなにか便利な関数があるに違いない、とか思いこむ傾向が
あるんだよね。

585 :デフォルトの名無しさん:2006/07/27(木) 08:40:14
だからといって無くてもよいことにはならないんだが

精進は怠るな

586 :デフォルトの名無しさん:2006/07/27(木) 08:44:27
誰に言ってるの?

587 :デフォルトの名無しさん:2006/07/27(木) 08:46:53
自分自身にだろ

588 :デフォルトの名無しさん:2006/07/27(木) 08:47:53
なるほど。

589 :デフォルトの名無しさん:2006/07/27(木) 08:53:33
強いコスモを感じる

590 :デフォルトの名無しさん:2006/07/27(木) 09:15:53
強い厨房臭を感じる

591 :デフォルトの名無しさん:2006/07/27(木) 11:04:02
>>590
スレタイ嫁

592 :デフォルトの名無しさん:2006/07/27(木) 13:07:14
モーダルなフォームにいろいろ書かせて、
OKボタンを押した後エラーチェックをしてエラーがあったら
「入力間違ってまつ」みたいなMessageDlg出して
フォームを閉じない、みたいなことがしたいんですけど
これ以上思いつきません。(うまくいかない)

 (判定部)
 if ck = false then
 begin
  MessageDlg('入力間違ってまつ',mtError,[mbYes],0);
  Button1.ModalResult := mrNone;
 end;

実装の方法自体がまずいのか。

593 :デフォルトの名無しさん:2006/07/27(木) 13:22:22
OnClickでやった方が早い

594 :592:2006/07/27(木) 13:25:35
OnClickで似非モーダルフォームを作れない厨なので。

595 :デフォルトの名無しさん:2006/07/27(木) 13:29:08
フォームのonCloseQuerynイベント内に

if 入力エラー有り then
begin
 MessageDlg('入力間違ってますです。。。', mtError, [mbOK], 0);
 CanClose := False;
end

これでフォーム閉じなくなる

596 :デフォルトの名無しさん:2006/07/27(木) 13:30:44
OnCloseQueryでキャンセルするのは?

597 :デフォルトの名無しさん:2006/07/27(木) 13:41:11
VB.NETならプロパティ一発なのにね

598 :592:2006/07/27(木) 13:48:00
>>595-596
ケコーン

ともあれサソクス
onCloseQueryとか使いかたわかんねーけどぉっ!!
(道理でonCloseだけ見ててもヒントがないわけだ)

599 :592:2006/07/27(木) 13:51:40
>>597
あまり持ってるならくれ。貧乏なのでD6Pなのだ。

600 :デフォルトの名無しさん:2006/07/27(木) 13:54:28
OnCloseにはTCloseAction &Actionっていう同じ事できるイベントハンドラの引数があるんだけど。
使い方はヘルプの例の通り。

601 :デフォルトの名無しさん:2006/07/27(木) 13:55:40
ドトネトは貧乏人には使えません。

602 :592:2006/07/27(木) 13:57:58
ガーン

ヘルプも難しいんだよっ!!(逆ギレ)

603 :デフォルトの名無しさん:2006/07/27(木) 13:58:18
onCloseはフォームが閉じた後に呼ばれて
onCloseQueryはフォームを閉じる前に呼ばれる
(閉じる前に問い合わせるからCloseQueryって名前)

604 :デフォルトの名無しさん:2006/07/27(木) 13:59:19
>>595に答え書いてやっただろ
入力エラー有りの部分を直してそのままコピペ汁

605 :デフォルトの名無しさん:2006/07/27(木) 14:01:31
学校の怪談がまったく怖くないんですがVCLのバグですか?

606 :592:2006/07/27(木) 14:06:16
>>604
すいません、コピペでちゃんとすでに動くの確認しました

>>603
知らなかった…

607 :デフォルトの名無しさん:2006/07/27(木) 14:10:31
確か、WM_QUERYなんたらっていう等価のメッセージがあって、
それが綺麗にラップされてるのがonCloseQueryだおね。

>VB.NETならプロパティ一発なのにね

変な作り。
脂肪 m9(^Д^)プギャー!!

608 :デフォルトの名無しさん:2006/07/27(木) 14:27:22
ブビチュウってイベントハンドラ内で外からプロパティいじるコーディングしか出来ないんだね。
ActiveXから進歩してなくてイタス。

609 :デフォルトの名無しさん:2006/07/27(木) 15:43:42
良スレsage

610 :デフォルトの名無しさん:2006/07/27(木) 15:46:06
ま、ヘルプもまともに理解できないほうが痛いけどね

611 :デフォルトの名無しさん:2006/07/27(木) 20:14:14
そういや、フォームを閉じるときにリソースを開放するのはonCloseQuery内が基本というのがあったな。
onCloseが呼ばれない時があるとかなんとか。

612 :デフォルトの名無しさん:2006/07/27(木) 20:19:48
>onCloseが呼ばれない時があるとかなんとか。

はつみみです。

613 :デフォルトの名無しさん:2006/07/27(木) 20:20:07
アプリケーションが起動した状態でWindowsを終了すると
シャットダウン処理でアプリケーションが終了されるけど
onCloseイベントは呼ばれない(onCloseQueryは呼ばれる)

最も、普通はリソースの開放はonDestroy内でやるだろ
これは必ず呼ばれるし

614 :デフォルトの名無しさん:2006/07/28(金) 02:14:28
Delphi6 personalでindy10のIdHTTPを使っていろんなサイトに
アクセスするプログラムを作っているんですけど、
サイトが消えていたりとかしたら、エラーが出てプログラムが止まってしまいます。
エラーが出てもプログラムが止まらないようにするにはどうしたらいいですか?
tryやブレークポイントっていうのも試してみましたが、無理でした。

615 :デフォルトの名無しさん:2006/07/28(金) 02:18:20
>エラーが出てもプログラムが止まらないようにする

エラー状況を調べてエラーの内容に応じてしかるべく動くようにすればいいよ


616 :デフォルトの名無しさん:2006/07/28(金) 02:55:31
デバッグ中にってことか?
エラーをtryexceptでかこって走らせればいいんじゃないの
一度止まるけどもう一回F9押せば続きから動く

617 :デフォルトの名無しさん:2006/07/28(金) 03:37:50
デバッガオプション→言語固有の例外→無視する例外の種類
種類調べるのが面倒なら「Delphi言語の例外で停止」をオフにする

618 :デフォルトの名無しさん:2006/07/28(金) 06:59:13
やっぱりこいつらアホだな。
おまえらIndy使ったことないだろ。
的外れなレスばっかりw

619 :デフォルトの名無しさん:2006/07/28(金) 07:54:04
ソースついてんだろ?

620 :デフォルトの名無しさん:2006/07/28(金) 08:02:58
>>614
>>618がズバリ答えてくれるってさ

621 :デフォルトの名無しさん:2006/07/28(金) 08:29:40
非同期通信のことかな?

622 :デフォルトの名無しさん:2006/07/28(金) 08:33:18
プログラムがとまらないようにプログラムすればいいじゃん。
プログラマだろ?

623 :デフォルトの名無しさん:2006/07/28(金) 10:38:34
exe をエクスプローラからダブルクリックして起動したらいいじゃん。

624 :デフォルトの名無しさん:2006/07/28(金) 17:19:26
夏・・・ だからって理由だけじゃないだろうな

625 :デフォルトの名無しさん:2006/07/28(金) 18:25:47
いまじゃ、厨房専用に近いからな Delphi。しょうがあんめぇ

626 :デフォルトの名無しさん:2006/07/28(金) 18:28:35
ひどいな・・・。

627 :デフォルトの名無しさん:2006/07/28(金) 22:11:46
解決しました。ありがとうございます。

try
IdHTTP1.Get('http://www.yahoo.co.jp/');
except
end;

このようにしてexeファイルをエクスプローラから
起動したらエラーで止まることなく、動かすことができました。
finallyだとエラーで止まるようです。

628 :デフォルトの名無しさん:2006/07/28(金) 22:20:45
それはexceptでエラー拾ってるからだ
finallyはtryが終わった後必ず実行するだけだからエラーは拾えない

629 :デフォルトの名無しさん:2006/07/28(金) 23:05:48
delphian worldって閉鎖しちゃったんですか?

630 :デフォルトの名無しさん:2006/07/28(金) 23:42:59
久々にきたら、人いるねー。
新人さんもいるあたり、まだまだ地味に使われてるのかね

>>288
Delphiのconstは、C++のconstなどとは違うのですよん・・・

>>452
数年前の俺と同じ人がいたw
VCLつかわね!SysUtilsなどいらね!って思ってた時期もありました・・・

>>517-518
ワロタ

631 :デフォルトの名無しさん:2006/07/28(金) 23:44:58
ちょっと基本的な質問

Iniからデータ読み込み、書き出しのタイミングについてです。
読み込みは、FormCreateですよね。
では、書き出しは?

FormCloseに書いているのですが不都合ありますかね・・・
FormDestroyだとエラーが起こったときに、読み出し前に書き込みが起こってしまって
値が初期化されてしまう可能性がありますよね・・・

632 :デフォルトの名無しさん:2006/07/28(金) 23:53:00
別に、OnDestroyでいいと思うが

そんなに気になるなら、OnCloseQueryの中で、
if CanClose then
begin

end;
の中でやればいいじゃん

633 :デフォルトの名無しさん:2006/07/29(土) 00:05:24
読み込みが終わったらフラグを設定するだけでいいような。

634 :ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/07/29(土) 00:42:01
漏れはいつも、>>632さんの位置ですなー。

OnDestroyだと、
常駐アプリの場合
ログオフ時とか、シャットダウン時とかに
微妙に保存されないような気がして。

635 :デフォルトの名無しさん:2006/07/29(土) 01:07:59
> delphian worldって閉鎖しちゃったんですか?

場所変えた見たいだけど、移行完了してないね。大丈夫なのかしら?


636 :デフォルトの名無しさん:2006/07/29(土) 01:15:24
>>634
逆じゃないっけ
Closeだとシャットダウン時に呼ばれなかった木が

637 :デフォルトの名無しさん:2006/07/29(土) 01:18:04
WM_ENDSESSIONはCloseQueryでないと
捕まらないはずだったろ確か

638 :デフォルトの名無しさん:2006/07/29(土) 09:17:12
>>635
なんか、終わりそうだね・・・
念のため全コンポダウンロードしました
557個でした

639 :デフォルトの名無しさん:2006/07/29(土) 12:05:45
>>638
ファイルがおいてあるパスを教えてくれー

640 :デフォルトの名無しさん:2006/07/29(土) 12:25:15
>>639
http://www.delphianworld.com/

641 :デフォルトの名無しさん:2006/07/29(土) 13:03:03
>>635
なんかフィッシング詐欺にでもあったように見える・・・

642 :デフォルトの名無しさん:2006/07/29(土) 16:38:42
どんどんコミュニティーが縮小されていくよね・・・

643 :デフォルトの名無しさん:2006/07/29(土) 17:43:39
Delphi用のYAMLライブラリってどこかありますか?
XMLにうんざりしました

644 :デフォルトの名無しさん:2006/07/29(土) 17:54:45
http://hp.vector.co.jp/authors/VA028375/junkbox/dyayaml.html

645 :デフォルトの名無しさん:2006/07/29(土) 19:06:38
コードテンプレートってのを使ってみようとしたのですが、
テンプレートを作成したものの、テンプレートツリーに表示されません。
また、補完もできていません。

行った手順は、ファイル、新規作成、テンプレートで、
以下のように入力して、
C:\Documents and Settings\(ユーザー名)\Local Settings\Application Data\Borland\BDS\4.0\code_templates\wait_after_console.xml
に保存しました。

<?xml version="1.0" encoding="utf-8" ?>
<codetemplatexmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
version="1.0.0">
<template name="waitafterconsole" invoke="manual">
<description>
コンソールアプリで終了時に待つ
</description>
<author>
ほげ
</author>
<code language="Delphi"><![CDATA[{$WARN SYMBOL_PLATFORM OFF} if DebugHook <> 0 then Readln; {$WARN SYMBOL_PLATFORM ON}]]>
</code>
</template>
</codetemplate>

開発環境は、Delphi2006です。

646 :デフォルトの名無しさん:2006/07/29(土) 19:27:40
>>644
サンクス

使い方わかんねー・・・
マニュアルとかサンプルないし orz

647 :643:2006/07/29(土) 19:33:12
これかっ!これなのか!全然関係ないところに使い方がw
http://hp.vector.co.jp/authors/VA028375/delphi/delphipascal_xx_dynamic_array.html


648 :643:2006/07/29(土) 20:06:42
うまくいかね・・・。
仕様が、先進的過ぎて、
ふつーに、書いたり読んだりできないよ・・・。

649 :デフォルトの名無しさん:2006/07/29(土) 20:20:12
泣くな。無ければ作れ。
フロンティアが待っている。

650 :643:2006/07/29(土) 20:21:29
紹介されたリンク古いのでした
こっちが最新でした。
http://panathenaia.halfmoon.jp/alang/dyayaml.html

でも、使い方が orz

651 :デフォルトの名無しさん:2006/07/29(土) 23:26:49
>>643

なんでXMLが流行ってるのか漏れも不思議だ

言うなれば begin - end を多用する
Ruby や Pascal が流行って
Python が流行らないようなもんか


652 :デフォルトの名無しさん:2006/07/29(土) 23:28:22
使い安さじゃね?

653 :デフォルトの名無しさん:2006/07/29(土) 23:31:26
ベータマックスよりVHSが流行ったしな。
合理性だけじゃないのかもな。

654 :デフォルトの名無しさん:2006/07/29(土) 23:49:11
単にマイクロソフトが流行らそうと騒いでるからマイクロソフターが進んで使ってるんじゃないの・

655 :デフォルトの名無しさん:2006/07/29(土) 23:57:15
XMLは名前が微妙にカッコイイ

656 :デフォルトの名無しさん:2006/07/29(土) 23:57:57
>>631-637
起動時にiniの読み込みに失敗しても、起動されて
各種設定を設定できるのだから、普通に書き込むべき
という考えもある。

各設定毎に、読み込みに成功したか変更した場合にのみ書き込めば良いのか。


657 :デフォルトの名無しさん:2006/07/30(日) 00:02:16
>>654

OfficeはXML化されたね
そのうちレジストリもXMLにしそうで怖い


658 :デフォルトの名無しさん:2006/07/30(日) 01:11:05
154,548,632を200,000,000とか、245,235を300,000というように
整数を切りの良い数字に変換するにはどう処理をすればいいですか?



659 :デフォルトの名無しさん:2006/07/30(日) 01:20:36
2桁目を四捨五入すればいいです。

660 :デフォルトの名無しさん:2006/07/30(日) 01:38:05
>>659
Round関数は小数点切捨てですが、2桁目を四捨五入する
関数が探しても見当たらないのです。

もう少し教えていただけないでしょうか。

661 :デフォルトの名無しさん:2006/07/30(日) 01:49:10
自己レスで失礼します
Shishaで四捨五入できそうです

662 :デフォルトの名無しさん:2006/07/30(日) 04:27:18
四捨五入したい変数に0.5足してroundすればいい

663 :デフォルトの名無しさん:2006/07/30(日) 06:37:41
VB.NETなら関数一発なのにね

664 :デフォルトの名無しさん:2006/07/30(日) 10:02:27
釣れますか?

665 :デフォルトの名無しさん:2006/07/30(日) 11:25:32
d = (int)(log(x)/log(10)) で桁数が分かるから

n = ((int)(x / d)) * d


666 :デフォルトの名無しさん:2006/07/30(日) 11:26:51
ちがった

d = 10 ^ ((int)(log(x)/log(10)))

n = ((int)(x / d)) * d

にしてくれ

すまん

667 :デフォルトの名無しさん:2006/07/30(日) 11:27:56
桁数でわるのか?

668 :デフォルトの名無しさん:2006/07/30(日) 12:39:48
簡易的なスケジュールソフト作っててアラーム昨日を実装したいな
と思ってるんですがDateTimePickerとTimerの使い方がよくわかりません。
DateTimePicker1でユーザーから受け取った時間とTimerのNowメソッドで
得た現在時刻を比べてアラームを鳴らそうかと考えているのですが
どのようにコードを書いたら実現できますか?editだと.Textとかで
読み込めばユーザーが入力した値を読み込めたのですがDateTimePicker1だと
そんなメソッドないような・・・・
具体的にどのように書けば良いのかどなたか教えてください。




669 :デフォルトの名無しさん:2006/07/30(日) 13:02:17
DateTimePickerとかTimer使った簡単なアプリは組んだことあるの?
つかヘルプ見てもその質問?

670 :ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/07/30(日) 13:10:25
まあ、くだすれなんだし。
答えたい人が答えればいいがな。

DateTimePicker1.DateTimeとか
DateTimePicker1.Timeとか
で取得する。

>DateTimePicker1だとそんなメソッドないような・・・・
いやいや、そんなメソッドがないコントロールなんて
存在価値がないのではないかと。

しかも、メソッドじゃなくてプロパティね。




671 :デフォルトの名無しさん:2006/07/30(日) 14:16:48
VBならプロパティで一発なのにね

672 :デフォルトの名無しさん:2006/07/30(日) 15:43:08
釣れますか?

673 :デフォルトの名無しさん:2006/07/30(日) 17:14:03
たぶん、StringReplaceを使うんだよ

674 :デフォルトの名無しさん:2006/07/30(日) 17:51:59
返答ありがとうございます。釣りではなくマジでわからん初心者です。
とりあえず今、

procedure TForm1.Button1Click(Sender: TObject);
var
time:TDateTime;
TempDate1:TDateTime;
begin
Label7.Caption := '';

DateTimePicker1.DateTime:=TempDate1;
time:=TempDate1-now;
label7.Caption:=DateTimeToStr(time);

みたいな感じなんですがうまく動きません。
時間の計算ってどうやるんですか?

675 :デフォルトの名無しさん:2006/07/30(日) 17:55:52
DateTimePicker1.DateTime:=TempDate1;
逆じゃね?

676 :デフォルトの名無しさん:2006/07/30(日) 17:57:33
返答ありがとうございます。釣りではなくマジでわからん初心者です。
とりあえず今、

procedure TForm1.Button1Click(Sender: TObject);
var
time:TDateTime;
TempDate1:TDateTime;
begin
Label7.Caption := '';

DateTimePicker1.DateTime:=TempDate1;
time:=TempDate1-now;
label7.Caption:=DateTimeToStr(time);

みたいな感じなんですがうまく動きません。
時間の計算ってどうやるんですか?

677 :デフォルトの名無しさん:2006/07/30(日) 18:05:31
すみません。間違えて2重投稿してしまいました。

>>675さん
そうですね・・。なんたる初歩的ミス・・・orz
ご指摘感謝です!

とりあえず、今こんな感じなんですが、実パラメータと仮パラメータは
同一じゃないと駄目みたいなエラーが出てコンパイル通りません。

procedure TForm1.Timer1Timer(Sender: TObject);
var
HH,MM,SS:TDateTime;
time:TDateTime;
TempDate1:TDateTime;
begin
TempDate1:=DateTimePicker1.DateTime;
time:=TempDate1-DecodeTime(now,HH,MM,SS);
label7.Caption:=DateTimeToStr(time);
end;

678 :デフォルトの名無しさん:2006/07/30(日) 21:45:10
>>677
HH, MM, SS の型が間違っている
ヘルプ見てよマジで

679 :デフォルトの名無しさん:2006/07/31(月) 00:14:22
何度もすいません。一応

procedure TForm1.Timer1Timer(Sender: TObject);
var
HH,MM,SS:Word;
time:TDateTime;
TempDate1:TDateTime;
begin
TempDate1:=DateTimePicker1.DateTime;
time:=TempDate1-DecodeTime(now,HH,MM,SS);
label7.Caption:=DateTimeToStr(time);
end;

で上記のエラーは無くなったんですが今度は「実パラメータが足りません」
と出ます。デートタイムピッかーでは時刻「時間:分:秒」を取り出している
ので(hh,mm,ss)で合ってると思っていたんですが何か足りないみたいです。
どなたかサンプルコードを書いてくださりませんでしょうか?


680 :デフォルトの名無しさん:2006/07/31(月) 00:23:30
http://plusd.itmedia.co.jp/lifestyle/articles/0604/17/news012_3.html

681 :デフォルトの名無しさん:2006/07/31(月) 03:06:21
ヘルプを見ろと何度(ry

682 :デフォルトの名無しさん:2006/07/31(月) 08:08:24
VBならヘルプ不要なのにね

683 :デフォルトの名無しさん:2006/07/31(月) 09:08:51
VBも不要なのにね

684 :デフォルトの名無しさん:2006/07/31(月) 09:10:40
DecodeTime(DateTimePicker1.Time, Hour, Min, Sec, MSec);


685 :デフォルトの名無しさん:2006/07/31(月) 09:14:38
if FormatDateTime('hh:mm:ss', DateTimePicker1.Time) = FormatDateTime('hh:mm:ss', Now) then
showmessage('おやつの時間です');


686 :デフォルトの名無しさん:2006/07/31(月) 11:58:35
普通は0秒でアラーム出すとして、
Timer1.Interval := 100;
とかして、

procedure TForm1.Timer1Timer(Sender: TObject);
const
bo0: Boolean = False;
begin
Timer1.Enabled := False;
try
if FormatDateTime('s', Now) = '0' then begin
if not bo0 then begin
if FormatDateTime('hh:mm', DateTimePicker1.Time) = FormatDateTime('hh:mm', Now) then
showmessage('時間ですよ');
bo0 := True;
end;
end else begin
bo0 := False;
end;
finally
Timer1.Enabled := True;
end;
end;


687 :デフォルトの名無しさん:2006/07/31(月) 14:16:40
TDBCtrlGridにSpeedButtonまたはButtonを配置したいのですができません。
どうしたらいいですか。
またはTDBCtrlGrid上に配置できるフリーのボタンコンポーネントがあれば教えてください。

688 :デフォルトの名無しさん:2006/07/31(月) 14:29:04
TButtonから派生した自前のコンポーネントを使う
フリーのコンポーネントなら↓
http://hp.vector.co.jp/authors/VA007459/

689 :ななしへたぐらま ◆XcB18Bks.Y :2006/07/31(月) 15:24:37
ほかのボタンが駄目ならパネルコンポから派生しているボタンコンポなら貼り付けられるかもしれません.
(Delphian Worldにあったような気がしますが未確認)

(ControlStyleにcsReplicatableが含まれていないコンポは載せられないようです)

>>684
Delphi 5はヘルプの誤植なぜかDecodeDateの文法が載ってます orz
D6以降は直っているのでしょうか?


690 :デフォルトの名無しさん:2006/07/31(月) 17:12:35
>>688
>>689

ありがとうございました。
いろいろ調べた結果、以下のような感じコンポーネントを作成してでうまくいきました。

public
constructor Create(AOwner: TComponent); override;

constructor TSpeedButtonEx.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csReplicatable];
end;



691 :デフォルトの名無しさん:2006/07/31(月) 20:12:20
ffmpegを使った変換ソフト(音楽向け)を作っています。
変換自体はCreateProcessで出来るようになりました。
しかし、変換の進捗状況が表示されない(できない)のでイマイチ使いづらいです。

コンソールに表示されている文字列(この場合は変換状況)をリアルタイムに取得するにはどうしたらいいのでしょうか?
ご教授お願いします。

692 :デフォルトの名無しさん:2006/07/31(月) 20:27:03
リダイレクトでググル

693 :691:2006/07/31(月) 20:59:05
>>692
http://www.geocities.jp/fjtkt/problems/2004_0013.html
このようなサイトを見つけました。
リンク先にも書いてありますが、変なところに改行が入ってしまいます。
文字列から改行を取り除く方法はないのでしょうか?
質問続きですみませんがご教授ください。

694 :デフォルトの名無しさん:2006/07/31(月) 23:43:11
>>693
StringReplaceでいいじゃない!!

695 :デフォルトの名無しさん:2006/07/31(月) 23:49:37
TStrings互換でTFileSteramと同じように直接ファイルに読み書きできるクラスって有りますか?

696 :デフォルトの名無しさん:2006/08/01(火) 00:01:19
ダイアログメッセージを優先的に前面に表示させたいのですがどうやればいいんですか?

697 :696:2006/08/01(火) 00:34:22
ダイアログボックスではなくメッセージボックスでした。。。
メッセージボックスを最全面に表示させるのに
MB_SETFOREGROUNDというフラグを使えばよさようなんですが
実際のコードの使い方がわかりません。ご存知の方いらっしゃいましたら
教えてください。

698 :デフォルトの名無しさん:2006/08/01(火) 00:51:19
>。。。

このクセやめたら教えてあげる。
キモいから。

699 :デフォルトの名無しさん:2006/08/01(火) 01:07:12
ざわ。。。 ざわ。。。

700 :デフォルトの名無しさん:2006/08/01(火) 03:12:23
>>695 TStringList

701 :デフォルトの名無しさん:2006/08/01(火) 03:22:08
フォーム上でボタンやチェックボックス等にフォーカスがある場合に
キーを押すと、Altキーを一緒に押していなくてもフォーム内のコンポーネントに
割り当てたアクセラレーターキーが応答してしまいます。
この現象を回避するにはどのようにしたら良いのでしょうか?

702 :デフォルトの名無しさん:2006/08/01(火) 04:16:32
まるちゃんか

703 :デフォルトの名無しさん:2006/08/01(火) 18:52:49
>>696
ShowMessage系関数やMessageDlg系関数ではシステムモーダル
のオプションはサポートしていない。MessageBoxAPIを直接呼出し、
スタイルのパラメータにMB_SYSTEMMODALを指定する必要がある。

MessageBox(Self.Handle, 'Hello.', 'Sample', MB_OK or MB_SYSTEMMODAL);


704 :デフォルトの名無しさん:2006/08/01(火) 19:27:22
DBCtrlGridに配置されたコントロール間の移動に上下カーソルキーを使いたいのですが
どうすればいいでしょうか。


705 :デフォルトの名無しさん:2006/08/01(火) 22:08:32
>>704
う〜ん。こんな感じかな。

procedure TForm1.DBCtrlGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_UP: DBCtrlGrid1.DoKey(gkPriorTab);
VK_DOWN: DBCtrlGrid1.DoKey(gkNextTab);
end;
end;


706 :デフォルトの名無しさん:2006/08/01(火) 23:29:51
>>705
ありがとうございます。
うまくいきました。


707 :デフォルトの名無しさん:2006/08/01(火) 23:48:18
Ver7ですが、DBコントロールグリッドにDBLookupControlが貼り付けできません。
Ver5では出来たのですが、エラーを回避する方法はありませんか?


708 :デフォルトの名無しさん:2006/08/02(水) 00:01:20
DBLookupComboBoxの間違いではないかいな?
ControlStyle属性にcsReplicatableを持つものはDBLookupControlからの派生コンポ
DBLookupComboBox、DBLookupListBoxのうちDBLookupComboBoxだけみたいだが。

709 :デフォルトの名無しさん:2006/08/02(水) 16:53:47
8ビットカラーで白より一段階暗い色と言うのは$FEになるんでしょうか?
また、その色を32ビットに変換するにはどのような計算をすれば良いんでしょうか?

710 :デフォルトの名無しさん:2006/08/02(水) 17:09:32
>8ビットカラーで白より一段階暗い色と言うのは$FEになるんでしょうか?

いいえ

>また、その色を32ビットに変換するにはどのような計算をすれば良いんでしょうか?

使いたいグラフィック環境に合わせた計算を行います


711 :デフォルトの名無しさん:2006/08/02(水) 18:26:36
delphiは関係あるのかと小一時間

712 :デフォルトの名無しさん:2006/08/02(水) 18:31:24
くだすれだからいいじゃん

713 :デフォルトの名無しさん:2006/08/02(水) 18:50:23
>>709

LUT

ぐぐれ


714 :デフォルトの名無しさん:2006/08/02(水) 19:01:37
gdスレか('A`)

715 :デフォルトの名無しさん:2006/08/03(木) 03:47:30
何かコンポーネントを追加した時、それを使用してデバッグしてると
そのコンポーネントのソースまでステップ実行されてしまいます。
このように任意のソースをステップ実行されないようにするには、どこで設定すればよいのでしょうか?
Delphiの標準ライブラリはスキップされているので、どこかで設定できると思うのですが
探し当てることが出来ませんでした。

716 :デフォルトの名無しさん:2006/08/03(木) 07:52:17
ヒント:ソースがなければ表示できない

717 :デフォルトの名無しさん:2006/08/03(木) 14:41:41
過疎スレsage

718 :デフォルトの名無しさん:2006/08/03(木) 15:41:41
D7でIBXのIBQueryで sum(FieldA) SUMA と集計したものをクイックレポートで明細行に印刷し
サマリーバンドでQRExprにsum(SUMA)などとやって総合計を印刷しようとしているのですが
Fieldの型がTLargeIntFieldだけ表示されません。
どうすればいいでしょうか。



719 :デフォルトの名無しさん:2006/08/03(木) 17:59:51
StringGrid で、セルを仕切っている線の色を、セル単位で変更できるのでしょうか?
もしできるのであれば、セル単位で変更するにはどうすれば良いのでしょうか?

720 :デフォルトの名無しさん:2006/08/03(木) 19:19:27
仕切ってるんだから、セル単位って意味不明

721 :デフォルトの名無しさん:2006/08/03(木) 19:41:48
719です。 >>720さん、説明不足ですみません。

StringGrid では、セルを仕切る「線」が表示されていますよね。
通常、グレー系の色みたいな感じの「線」で表示されていますが、
その「線」の色や太さ等をセル単位で変更できるのか否か、の質問でした。

722 :デフォルトの名無しさん:2006/08/03(木) 19:48:59
仕切ってる線はどっちのセルにも属してない、ってことでは?

723 :デフォルトの名無しさん:2006/08/03(木) 19:59:56
選択しているセルってこと?

724 :デフォルトの名無しさん:2006/08/03(木) 20:21:48
719です。返事遅くなりまして、申し訳ありません。

>>722 さん、レスありがとうございます。どちらのセルにも属さない、と言うことは、
      この「線」は、プロパティやプログラム中で等で設定できない「仕様」なのですか?
>>723 さん、選択しているセルではありません、セル単位で、セルを仕切る線の色と線の太さを
       プログラム中で変更できるなら、その方法を知りたいという質問です。。


725 :デフォルトの名無しさん:2006/08/03(木) 20:55:23
>719
onDrawなんとかイベントで描画。
コンポ作るのが理想だが、おまえには無理だろう。
StringGridで描画する例はggれ

726 :デフォルトの名無しさん:2006/08/03(木) 21:03:57
OnDrawCell の Rect には仕切り線は入ってない。普通は無理。
そもそも仕切り線はセルに属してないし。

727 :デフォルトの名無しさん:2006/08/03(木) 21:21:37
>>725 さん、 >>726 さん、 レスありがとうございます。

>>725 さん、イベント描画は私には無理です。超初心者なので、無理みたいです。

>>726 さん、セルに属していていないのですね。


・・・勉強不足ですみません。出直してきます・・・。


あ、私にレス下さった皆様の優しさに感謝します。 このスレの皆様に幸ありますように!

728 :デフォルトの名無しさん:2006/08/03(木) 21:55:08
やろうと思えばできないものはない

729 :デフォルトの名無しさん:2006/08/03(木) 21:55:29
今やってみたけど、Rectに入って無くても描画は出来る。
描画するのは無理じゃない。仕切り線をセル毎に描ける。

>726は、Rectの範囲外は描画できないの?

730 :ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/08/03(木) 22:59:11
OnDrawCellで、与えられるRectに対して
LeftとTopを-1
RightとBottomを+1すれば
仕切り線を書きかえる事できるよ。



731 :デフォルトの名無しさん:2006/08/03(木) 22:59:40
>>729
できたのならやり方も書いてあげなよ

732 :ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/08/03(木) 23:02:50
Sourceが長いので、面倒なんだが.....
どこか、いいSource掲載場所はないかい?


733 :ななしへたぐらま ◆XcB18Bks.Y :2006/08/04(金) 00:08:49
>>727
とりあえず作ってみたのでさらす.(1/3)
type
 TForm1 = class(TForm)
 (略)
 private
  function CellExists(aCol, aRow: longint): boolean;
  function IsTargetCell(aCol, aRow: longint): boolean;
 (略)
 end;

// StringGrid1に指定されたセルが存在するならTrue,しないならFalseを返す.
function TForm1.CellExists(aCol, aRow: Integer): boolean;
begin
 Result := (0 <= aCol) and (aCol < StringGrid1.ColCount) and (0 <= aRow) and (aRow < StringGrid1.RowCount);
end;

//☆指定されたセルが周囲の線の色を変えるセルなのかを調べて返す.
function TForm1.IsTargetCell(aCol, aRow: Integer): boolean;
begin
 // 指定されたセルが存在しないなら戻り値をFalseにする
 if not CellExists(aCol, aRow) then
  Result := False
 // そうでなければ…
 else
  // 色を変えるべきなのかどうかを調べて,そうならTrueを,そうじゃないならFalseを戻り値にする.
  // ※ここでは仮にグリッドの桁も行も奇数なら色を変えることにします.
  Result := odd(ACol) and odd(ARow);
end;
(つづく)


734 :ななしへたぐらま ◆XcB18Bks.Y :2006/08/04(金) 00:09:27
(つづき 2/3)
//☆グリッドのセルに描画するイベントハンドラ
// ここではセルの境界線の太さが2以上の場合も考慮して,FillRectメソッドで線を描画します.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
 LineWidth: integer;
begin
 // 固定セルなら何もしないで戻る
 if gdFixed in State then
  exit;
 // グリッドの仕切り線の太さを得る.
 LineWidth := StringGrid1.GridLineWidth;
 // 仕切り線がない場合は何もしないで戻る
 if LineWidth < 1 then
  Exit;
 // 境界線の色を指定する(FillRectメソッドで塗りつぶしに使うのはブラシの色なのでペンではなくブラシの色を指定する)
 StringGrid1.Canvas.Brush.Color := clGreen; // ここでは緑色
 // このセルが枠の色を変える対象なら,セルの右と下の線を描きなおす.
 if IsTargetCell(ACol, ARow) then
 begin
  StringGrid1.Canvas.FillRect(Bounds(Rect.Right, Rect.Top, LineWidth, StringGrid1.RowHeights[ARow]));
  StringGrid1.Canvas.FillRect(Bounds(Rect.Left, Rect.Bottom, StringGrid1.ColWidths[ACol] + LineWidth, LineWidth));
 end;
 // このセルの右のセルが色を変える対象なら,セルの右の線(右下隅を含む)を描きなおす.
 if IsTargetCell(ACol + 1, ARow) then
  StringGrid1.Canvas.FillRect(Bounds(Rect.Right, Rect.Top, LineWidth, StringGrid1.RowHeights[ARow] + LineWidth));
 // このセルの下のセルが色を変える対象なら,セルの下の線(右下隅を含む)を描きなおす.
 if IsTargetCell(ACol, ARow + 1) then
  StringGrid1.Canvas.FillRect(Bounds(Rect.Left, Rect.Bottom, StringGrid1.ColWidths[ACol] + LineWidth, LineWidth));
(つづく)


735 :ななしへたぐらま ◆XcB18Bks.Y :2006/08/04(金) 00:10:20
(つづき 3/3)
 // このセルの右下のセルが色を変える対象なら,セルの右下隅の線(というか点)を描きなおす.
 if IsTargetCell(ACol + 1, ARow + 1) then
  StringGrid1.Canvas.FillRect(Bounds(Rect.Right, Rect.Bottom, LineWidth, LineWidth));
end;

//☆セルのテキスト編集が終わった後に呼ばれるイベントハンドラ
// 編集の後にセルの右と下の線が描きなおされます.このとき,元の線が消されてしまった場合は
// このセルを描きなおします(ここでは面倒なのでグリッド全体を描きなおしています).
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
 ARow: Integer; const Value: String);
begin
 if IsTargetCell(ACol + 1, ARow) or IsTargetCell(ACol, ARow + 1) or IsTargetCell(ACol + 1, ARow + 1) then
  StringGrid1.Invalidate;
end;
(おわり)

もうすぐ終電なのでとりあえず書き逃げ失礼.

736 :デフォルトの名無しさん:2006/08/04(金) 00:25:00
>715
コンポーネントパッケージのプロジェクトオプションのコンパイラ設定で
デバッグ情報を生成しないようにする。

737 :デフォルトの名無しさん:2006/08/04(金) 02:21:46
Rect の外に書ける書けないじゃなくて、特定のセルの周囲の仕切り線のうち、
どの線をそのセルごとに描くか、が問題なんでしょう。例えば、奇数列のセルは太くて
赤い線で、偶数列のセルの線はもっと太くて青い線で、ただし、対角のセルは細くて
黄色で、とかいう仕様は、全部同時に満たせない。

しきり線は文字通り、仕切っている両側のセルに対して対等であるから。


738 :デフォルトの名無しさん:2006/08/04(金) 03:10:39
>>736
レスありがとう。
具体的にはどのようにすればよいのでしょうか?
FastMMを使ってデバッグすると、ステップ実行でFastMM4.pasに移ってしまうので
頭を悩ませています。

739 :デフォルトの名無しさん:2006/08/04(金) 06:25:41
一時的にマウスの右クリック左クリック共にクリックの無効化させるにはどうすればいいのでしょうか?


740 :デフォルトの名無しさん:2006/08/04(金) 07:24:22
クリックされても何もしなければ良い。

741 :デフォルトの名無しさん:2006/08/04(金) 08:00:08
Hook

742 :デフォルトの名無しさん:2006/08/04(金) 10:19:15
くだしつですみません。
文字列に変換する関数で、IntToStr や ColorToString などがありますが、
後ろのスペルが Str になってたり String になってたりで間違えやすいです。
何か法則のようなものがあるものなのでしょうか。

743 :デフォルトの名無しさん:2006/08/04(金) 10:22:06
ない。
DelphiはVB.NETと比べてオブジェクト指向度が低く
クラスにメソッドをぶら下げていない単発関数を思いつきでボコボコ追加していくから
こういう混乱が起こりやすい。

744 :デフォルトの名無しさん:2006/08/04(金) 10:26:12
>>743


745 :デフォルトの名無しさん:2006/08/04(金) 10:32:34
Windowsが次期版になったら、
何が使えないとか、今の時点で分かるとこ教えて

746 :デフォルトの名無しさん:2006/08/04(金) 10:56:34
D7のFormatDateTime関数のヘルプの例に
Caption := FormatDateTime('"The meeting is on " yyyy/m/d," at " hh:mm AM/PM', Now + 0.125);
というのがありますが、なぜ0.125を加えているでしょう?

747 :デフォルトの名無しさん:2006/08/04(金) 11:12:57
>>742
VBなら一発なのにネ

748 :デフォルトの名無しさん:2006/08/04(金) 11:31:36
すみません、FAQかもしれませんが教えてください。

環境 win2K+Delphi6

画像ファイルをTImageで読み込んだ後に
ズームイン、ズームアウトしたいのですが、どうしたらいいでしょうか?



749 :デフォルトの名無しさん:2006/08/04(金) 11:39:59
>>746
今から3時間後って意味じゃね。

750 :デフォルトの名無しさん:2006/08/04(金) 11:41:30
>>748
StretchをTrueにしてHeightとWidthの値を変える。

751 :デフォルトの名無しさん:2006/08/04(金) 12:00:11
>>749
その3時間が地域差なのか夏時間なのか知りたい質問かもね。

752 :748:2006/08/04(金) 12:09:11
>750さま
ありがとうございました。
おかげさまでできました。

素人なので股ご迷惑おかけするかもしれませんが
ご指導ご鞭撻の程をよろしくお願いします

753 :デフォルトの名無しさん:2006/08/04(金) 14:11:50
股ご迷惑

754 :746:2006/08/04(金) 15:12:59
ううっ アホな質問してしまった。忘れてくださいまし。それから
お答えいただいた方ありがとうでした。

755 :デフォルトの名無しさん:2006/08/04(金) 18:17:03
>>754
くだすれだし気にすんな。

756 :デフォルトの名無しさん:2006/08/04(金) 18:55:47
Delphiでスクリーンキャプチャーをし、その画像を保存したいんですが、どのようにすれば出来ますか?
環境は、Win2kSP4、Delphi6Personalです。

757 :デフォルトの名無しさん:2006/08/04(金) 19:26:10
Windows.DesktopDC で画面全体の DC を取得できる。

758 :756:2006/08/04(金) 19:29:47
Windows.DesktopDCとはどのように使うのでしょうか?
そのままGoogleに入れても出てきませんでした。

759 :デフォルトの名無しさん:2006/08/04(金) 19:34:02
ていうか、そんなのあったっけ?

CreateDCで HDC 取得して、取り込めば良い。

760 :デフォルトの名無しさん:2006/08/04(金) 20:07:48
http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N009.html

761 :デフォルトの名無しさん:2006/08/04(金) 20:43:01
VB.NETに嫉妬するDel厨わろす

762 :デフォルトの名無しさん:2006/08/04(金) 22:44:26
>738
FastMMはコンポーネントじゃねぇ。
要はFastMM4.pasをデバッグ情報なしでコンパイルしてその.dcuをリンクするようにする。
たとえばFastMMを使うダミーのプログラムを用意してプロジェクトオプションで
デバッグ情報なしとしてコンパイル。それで生成された.dcuを
C:\Program Files\Borland\Delphi#\Libにコピーする(邪道だが)。もちろん
FastMM4.pasを本番のプロジェクトからはずすこと。プロジェクトカレントに
FastMM4.pasがあったらそっちを使われちゃうからね。

763 :デフォルトの名無しさん:2006/08/04(金) 22:54:47
ソースの頭に突っ込んでおく
{$DEBUGINFO OFF}


764 :デフォルトの名無しさん:2006/08/04(金) 23:31:50
>>762-763
グレイト!
余談だけどFastMMのFullDebugModeってリークしてるソースの位置まではわかないのね。
MemCheckも一緒に活用しろってことかしら?

765 :デフォルトの名無しさん:2006/08/04(金) 23:34:31
719です。返事が遅くなりまして申し訳ありません。
>>729>>730>>733様。 レスと具体的なソースまでありがとうございます。
ただ、まだソースのほうはプログラムで反映する時間がありませんので、
都合ができましたら、試してみます。
あと、>>737様の発言が、私の希望する内容にかなり近いです。
質問厨ですみませんでした。皆様の優しさに感謝します。
本当にありがとうございました。

766 :デフォルトの名無しさん:2006/08/05(土) 00:26:07
>>764
併用できないと思う

767 :デフォルトの名無しさん:2006/08/05(土) 01:34:25
たまに来る「VBなら〜」へのスルーぷりがいいなここ。

768 :デフォルトの名無しさん:2006/08/05(土) 02:39:08
BDS2006を使っています。Win32アプリについて教えてください。

フォームにTListBoxを貼り付け、コンストラクタで

ListBox1.Style:=lbVirtualOwnerDraw;
ListBox1.Count := 1000000;

・・と記述して実行すると、リストボックス上でホイールスクロールができなくなります。
Countを小さくするとホイールスクロールは問題なくできるようです。
100万行以上のデータでホイールスクロールをしたいのですが、この問題を解決する良い方法は無いものでしょうか・・。

769 :デフォルトの名無しさん:2006/08/05(土) 05:50:54
>>768
UIがおかしい。

770 :デフォルトの名無しさん:2006/08/05(土) 08:32:56
OnMouseWheel**でListのTopIndex変えれば?

771 :デフォルトの名無しさん:2006/08/05(土) 08:36:39
>>768
VBならスクロールするのにね

772 :デフォルトの名無しさん:2006/08/05(土) 09:06:10
>>768
マウスがおかしい。

773 :デフォルトの名無しさん:2006/08/05(土) 11:41:42
VBならマウスも必要ないのに。

774 :デフォルトの名無しさん:2006/08/05(土) 11:43:22
できたとしてもリストボックスで100万行から探したくねぇよ・・・

775 :デフォルトの名無しさん:2006/08/05(土) 12:13:46
>>774に激しく同意

776 :デフォルトの名無しさん:2006/08/05(土) 13:35:30
VBなら100万行から探すのも一発なのにね。

777 :デフォルトの名無しさん:2006/08/05(土) 14:01:42
数十万件の項目をインクリメンタルサーチで絞り込んでくソフトなんて普通にあるのに
なにをがんばってるんだこの子らは・・・

778 :デフォルトの名無しさん:2006/08/05(土) 14:08:26
>>777
お前は何を言っているんだ

779 :デフォルトの名無しさん:2006/08/05(土) 14:28:22
>>777
在日は語尾にニダって付けんの忘れるな

780 :デフォルトの名無しさん:2006/08/05(土) 14:59:03
DelphiでjavaのBigDecimalに相当するクラスはありますか?

781 :デフォルトの名無しさん:2006/08/05(土) 15:07:03
String
Currency

782 :デフォルトの名無しさん:2006/08/05(土) 16:05:00
まあ、100万件表示する正当な理由をいくら説明したところで、
解決方法は無いと言うことなんすかね。

783 :デフォルトの名無しさん:2006/08/05(土) 16:41:10
Virtual TreeView は?

784 :デフォルトの名無しさん:2006/08/05(土) 16:54:38
DelphiというかWindowsの問題だろ
試しに1個のフォルダにファイル100万個置いて
エクスプローラーでホイールスクロールさせてみろ

785 :デフォルトの名無しさん:2006/08/05(土) 17:28:24
そもそもの設計がおかしいんだろ。
DB関連とかなら100万件以上レコードがあるテーブルやクエリを表示するようなことなんていくらでもあるが、
全てを文字列にしてListBoxに追加するなんて事は普通しない。

786 :デフォルトの名無しさん:2006/08/05(土) 17:30:54
自分の経験したことのないことに全く想像力の及ばないかわいそうな子

787 :デフォルトの名無しさん:2006/08/05(土) 17:56:44
>>785

ListBox1.Style:=lbVirtualOwnerDraw;

これの意味わかる?

788 :デフォルトの名無しさん:2006/08/05(土) 18:45:27
VBなら意味分からなくても使えるのにね。

789 :デフォルトの名無しさん:2006/08/05(土) 19:24:10
Delphi6を使っています。
クリップボードに画像が保存されていて、 それをImage1に移したいんですが、どのようにすればいいですか。

790 :デフォルトの名無しさん:2006/08/05(土) 19:40:42
uses節にClipbrdを追加してImage1.Picture.Assign(Clipboard);

791 :デフォルトの名無しさん:2006/08/05(土) 19:47:39
VBなら一発なのにね。

792 :789:2006/08/05(土) 19:48:21
>>790
できました。ありがとうございます。

793 :デフォルトの名無しさん:2006/08/05(土) 22:15:24
TWebBrowserで、表示が全て終わったのを知るにはどうしたらよいですか?

794 :デフォルトの名無しさん:2006/08/06(日) 00:29:22
>>763
俺も自分つくったライブラリで、よくそれやるw


795 :デフォルトの名無しさん:2006/08/06(日) 06:46:31
>>767
デルファイ使いには大人が多いからな。

796 :デフォルトの名無しさん:2006/08/06(日) 07:17:16
煽られすぎて耐性ができたのかもな

797 :デフォルトの名無しさん:2006/08/06(日) 11:27:44
他言語のモンですが、Delphiで一行だけの文字列を入力させるダイアログを表示させるのはどうするんですか?
コンポーネントパレットをザッと見たんですが、見つかんない…
ま、コンポーネントにするほどのものでもない物なんですが。
「Delphi  テキストを入力させる ダイアログ」でググっても適当なサイトがみつからず、困っています。

798 :デフォルトの名無しさん:2006/08/06(日) 11:29:42
InputB
InputQ

799 :デフォルトの名無しさん:2006/08/06(日) 11:42:36
>InputQ


800 :デフォルトの名無しさん:2006/08/06(日) 11:47:57
>>798
ありがとう。
InputBoxってのがヘルプで出ました。
多分これです。ありがとう。

801 :デフォルトの名無しさん:2006/08/06(日) 11:57:25
InputQuery

>793
DocumentCompleteとかじゃダメなんか?



802 :793:2006/08/06(日) 12:54:40
>>801
DocumentCompleteが起きても描画が終わってないときがあるんですよね。
まぁ、自分の回線が細いからかもしれませんが。

803 :デフォルトの名無しさん:2006/08/06(日) 14:14:55
描画ってのはさ、文字選択したり、Scrollさせたり、ウィンドウをリサイズとか
でも発生するんだぞ。

描画後に何するんだ?

804 :デフォルトの名無しさん:2006/08/06(日) 14:59:09
VBなら描画なんて問題にならないのにね

805 :デフォルトの名無しさん:2006/08/06(日) 16:04:50
勝手に793のやりたいことを推測すると
文書中の何かの要素(例:<A>〜</A>)を全部抽出したかったりするんだよ。
俺も他言語でやろうとしたが困って放置したなあ。

でもさ、読み込み終了って完璧に実装すんの難しいんだよね。
しかも文書読み込みの終了待ってから実行すると遅いし。
定期的に文書を読み込みまくるしかないのかなあ、って気がする。

806 :805:2006/08/06(日) 16:34:30
ていうか、HTTPを勉強しる。
HTTP通信が終わっても描画が終わらないなら、それは単にPCが遅い。
DelphiでのHTTPリクエストの読み方?シラネ

807 :デフォルトの名無しさん:2006/08/06(日) 16:51:09
たぶんScreenShotを取るみたいな事をやるんだろーな。と推測。

DocumentCompleteで、
begin
 if なんかする準備OK then
 begin
  webbrowser.update; //画面更新するとか待ち時間入れるとか
 ここでなんかする。
 end;
end;

808 :デフォルトの名無しさん:2006/08/06(日) 20:19:42
javascriptで画面を書き換えるタイプのwebページの場合、javascriptが実行される前に
DocumentCompleteイベントが発生したりする。


809 :デフォルトの名無しさん:2006/08/06(日) 22:36:24
Edit1(TEdit)のボーダースタイルをbsNoneにして、まわりを1dotの線で囲んだEditにしたいんですが、実現するのは難しいですか?

810 :デフォルトの名無しさん:2006/08/06(日) 22:51:16
>>809
Ctrl3DをFalseにするだけのとは違うの?境界線の色を替えたいって話。

811 :デフォルトの名無しさん:2006/08/07(月) 01:04:38
>>810
Thx!
できました。
プロパティエディタに無いもんだから解りにくかったです。
素人の辛いところ。

812 :デフォルトの名無しさん:2006/08/07(月) 12:20:37
ないはずはないと思うのだが。

813 :デフォルトの名無しさん:2006/08/07(月) 14:24:06
VBならプロパティエディタから一発だよ。

814 :デフォルトの名無しさん:2006/08/07(月) 14:35:43
>>812
いまD6で見たけど、無い。
下位互換性保持のためにあるので、
普段は使わないという事のようで。

815 :デフォルトの名無しさん:2006/08/07(月) 14:48:47
おかしいよね。同じD6なのに。
http://vipdelphi.run.buttobi.net/cgi-bin/src/vipdelphi0076.jpg

816 :デフォルトの名無しさん:2006/08/07(月) 14:59:22
VBを使わないからこういう勘違いが起こる。

817 :デフォルトの名無しさん:2006/08/07(月) 15:25:54
表示する項目 旧式

818 :デフォルトの名無しさん:2006/08/07(月) 15:56:30
ボタンを押したらカーソル(入力カーソル)をEdit1に持ってくるにはどうしたらいいのでしょうか?


819 :デフォルトの名無しさん:2006/08/07(月) 15:58:14
Edit1.SetFocus

820 :デフォルトの名無しさん:2006/08/07(月) 16:07:50
>819
ありがとうございます。

ボタンを押したらって書いたんですが、
実は一番最初のカーソルがEdit1になるようにしたかったんですが
Procedure Form1.FormCreateに
Edit1.SetFocusと書いたら
「非表示ウィンドにはフォーカスを設定できない」みたいなエラーが起きてしまいました
初期カーソルをEdit1にするにはどうしたらいいでしょうか

何度もすいません

821 :デフォルトの名無しさん:2006/08/07(月) 16:09:54
Edit1.TabOrderを0

822 :デフォルトの名無しさん:2006/08/07(月) 16:54:12
>>820
OnShow

823 :デフォルトの名無しさん:2006/08/07(月) 17:31:59
OnShowはお勧めできない。

824 :デフォルトの名無しさん:2006/08/07(月) 17:52:44
なぜ?

825 :デフォルトの名無しさん:2006/08/07(月) 17:57:08
OnShow ってアプリの起動時以外も呼ばれるんじゃなかったけ。
OnShow := nil; ってすればいいんだけど。

826 :デフォルトの名無しさん:2006/08/07(月) 18:35:00
素直にタブオーダーを最初に持ってくればいいと思うのだが。

827 :デフォルトの名無しさん:2006/08/07(月) 18:39:16
禿同

828 :デフォルトの名無しさん:2006/08/07(月) 18:40:22
てかForm1.ActiveControl := Edit1;

829 :デフォルトの名無しさん:2006/08/07(月) 18:46:37
だからそのコードの実行タイミングのはなしだろ

830 :デフォルトの名無しさん:2006/08/07(月) 18:48:12
ActiveControlはOnCreateでも設計時でも設定できる

831 :デフォルトの名無しさん:2006/08/07(月) 18:57:16
素直にタブオーダーを最初に持ってくればいいと思うのだが。

832 :デフォルトの名無しさん:2006/08/07(月) 19:03:55
2回言うな

2回言うな

833 :デフォルトの名無しさん:2006/08/07(月) 19:04:27
なぜ?

834 :デフォルトの名無しさん:2006/08/07(月) 19:05:34
自分の答えが採用されないとムッキーとなっちゃうんだろ

835 :デフォルトの名無しさん:2006/08/07(月) 19:06:12
素直にタブオーダーを最初に持ってくればいいと思うのだが。


836 :デフォルトの名無しさん:2006/08/07(月) 19:08:01
タブオーダーとフォーカスはまた別の話だけどな。
たまたま重なるケースもなくもないというだけで。

837 :デフォルトの名無しさん:2006/08/07(月) 19:08:22
別にOnShowでいいと思うぞ。

838 :デフォルトの名無しさん:2006/08/07(月) 19:16:35
別にTabOrderかActiveControlでいいと思うぞ。

839 :デフォルトの名無しさん:2006/08/07(月) 19:22:51
>>818はまだか?

840 :デフォルトの名無しさん:2006/08/07(月) 19:27:42
次の質問いいですか?

841 :デフォルトの名無しさん:2006/08/07(月) 19:31:39
禿同

842 :デフォルトの名無しさん:2006/08/07(月) 20:11:52
回答作業員は解答だけしてればいいんだよ。
どれを選ぶかは質問者様が決めればいい事なんだからお前らが心配することではない。
ちょっと詳しいからって付け上がるなよ。

843 :デフォルトの名無しさん:2006/08/07(月) 20:51:27
おまえもな。

844 :デフォルトの名無しさん:2006/08/07(月) 20:52:10
禿同

845 :デフォルトの名無しさん:2006/08/07(月) 20:54:00
質問作業員は質問だけしてればいいんだよ。
どれにどんな回答するかは回答者様が決めればいい事なんだから質問者が心配することではない。
ちょっとアホからって付け上がるなよ。

846 :デフラグさん ◆WaDYW8eWxU :2006/08/07(月) 22:41:03
  [゚д゚] デフラグガカンリョウシマシタ
 /[_]ヽ
  | |
。。。いいいいいかかかがががけけこしすすだだだちっっててでととどど
ななななにはははばばめょよよららるるるれれれんんんアホ上事付作員
問問問回回心業様決答答者者質質質配

847 :デフォルトの名無しさん:2006/08/07(月) 23:00:00
BDS2006です。
TWebBrouserのNavigateメソッドでURLを渡すときに、UTF8の日本語文字列を加えたいのですが、
javascriptのencodeURI、decodeURIに相当する関数はありませんか?

848 :デフォルトの名無しさん:2006/08/07(月) 23:09:02
Navigate2 じゃね。

849 :848:2006/08/07(月) 23:10:56
あ、嘘嘘、忘れてくれ。

850 :デフォルトの名無しさん:2006/08/07(月) 23:13:27
UTF8Encode
UTF8Decode

851 :847:2006/08/08(火) 00:14:35
>>850
どうもです、できました。
出来ればURIに宜しくないコードの文字は、%20のように表記したいのですが、そういった関数はないでしょうか。

852 :デフォルトの名無しさん:2006/08/08(火) 13:16:27
Delphiで、マルチスレッドを詳しく解説している書物を教えていただけませんか?

853 :デフォルトの名無しさん:2006/08/08(火) 14:10:01
一番目の引数に配列を受け取り、二番目の引数に合計、三番目に平均を入れる手続きを作ってみたんですが

procedure TForm1.Button1Click(Sender: TObject);
var
Ar: array[1..5] of integer;
goukei:integer;
heikin:double;
begin
Ar[1]:=2;
Ar[2]:=5;
Ar[3]:=9;
Ar[4]:=6;
Ar[5]:=11;
Sumav(Ar,goukei,heikin);
Label1.Caption:='合計は'+IntTostr(goukei)+' 平均は'+FloatToStr(heikin);
end;

procedure Sumav(a:array of integer;var b:integer;var c:double);
var i:integer;
begin
b:=0;
for i:=1 to 5 do
begin
b:=b+a[i];
end;
c:=b/5;
end;

これをやってもおかしな表示がでてちゃんとできません・・・
何がおかしいのでしょうか

854 :デフォルトの名無しさん:2006/08/08(火) 14:18:49
それじゃ無理だ。この形を使うなら参照渡しにしなきゃできない

855 :デフォルトの名無しさん:2006/08/08(火) 14:32:15
>>853

procedure Sumav(a:array of integer;var b:integer;var c:double);
var i:integer;
begin
b:=0;
for i:=0 to Length(a)-1 do //←
begin
b:=b+a[i];
end;
c:=b/5;
end;

これでどう?

856 :デフォルトの名無しさん:2006/08/08(火) 14:33:00
引数に var をつければ参照渡しになるのでは・・・?
procedure Sumav(a:array of integer;b:integer;c:double);
だったら値渡しになるんだろうけど
procedure Sumav(a:array of integer;var b:integer;var c:double);
これは参照渡しじゃないんでしょうか

857 :デフォルトの名無しさん:2006/08/08(火) 14:34:19
>>852

ない


858 :デフォルトの名無しさん:2006/08/08(火) 14:35:15
>>855

> c:=b/5;

これはそのままか?

859 :デフォルトの名無しさん:2006/08/08(火) 14:38:09
>855
ああー!ちゃんと動きました。
なんとなくなんでi:=1 to 5じゃ動かないかわかったような・・・

860 :デフォルトの名無しさん:2006/08/08(火) 14:40:49
>>859

procedure Sumav(a:array of integer;var b:integer;var c:double);
var i:integer;
begin
b:=0;
for i:=0 to Length(a)-1 do
begin
b:=b+a[i];
end;
c:=b/Length(a);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Ar: array of integer;
goukei:integer;
heikin:double;
begin
SetLength(Ar, 5);
Ar[0]:=2;
Ar[1]:=5;
Ar[2]:=9;
Ar[3]:=6;
Ar[4]:=11;
Sumav(Ar,goukei,heikin);
Label1.Caption:='合計は'+IntTostr(goukei)+' 平均は'+FloatToStr(heikin);
end;

861 :855:2006/08/08(火) 14:46:11
>>858
書き込まれてから気づいた。面倒なのでそのまま。

ついでにlength(a)=0 の時に例外生成とかいるかなと思った。

862 :デフォルトの名無しさん:2006/08/08(火) 14:47:57
BDS2006です。

var
a:TFileStream;
begin
FreeAndNil(a);
end;

これを実行するとアドレス違反が発生するのですが、そういうもんですか?
a.free なら問題ないのでしょうか。

863 :デフォルトの名無しさん:2006/08/08(火) 14:50:49
それはインスタンス作成してないのに Free メソッドをよびだしてるからだろ。

864 :デフォルトの名無しさん:2006/08/08(火) 15:25:51
ヘルプによると、

「オブジェクトが nil の場合でも Free メソッドはエラーにはなりません。このため,オブジェクトが初期化されていない場合に Free メソッドを呼び出してもエラーにはなりません。」

とある。インスタンスを作成していなくてもFreeは呼べる。つまり、a=nilであっても問題ない。
最初の時点で a は nil ではない、無効なポインタなのではないだろうか。

865 :デフォルトの名無しさん:2006/08/08(火) 15:35:32
ローカル変数は初期値不定だから、
グローバル変数やクラスのメンバーと違って、
nilが入っているとは限らない。

というか、その前に使ったスタックの影響をうけまくっているので、
たいてい入っていない。

866 :デフォルトの名無しさん:2006/08/08(火) 15:54:22
クラス変数にしとけば初期値がnilになるんじゃね?

867 :デフォルトの名無しさん:2006/08/08(火) 16:17:21
>インスタンスを作成していなくてもFreeは呼べる。つまり、a=nilであっても問題ない。

二つの文意が一致してません。nil ならエラーにならないのと、
「インスタンスを作成していなくてもFreeは呼べる」のとはまったく違う。

868 :デフォルトの名無しさん:2006/08/08(火) 16:45:56
>>852
http://support.borland.com/entry.jspa?externalID=4360

869 :デフォルトの名無しさん:2006/08/08(火) 19:49:24
FreeAndNilはa.Free; a := nil;と等価(内部動作はちょっと違うけどまあ似たようなもの)
で、Freeみたいなメソッドはコンパイル時にアドレスが確定してるから、
インスタンスを作っていようがいまいが呼び出せる
ただ、メソッドは内部ではprocedure Free(Self: TObject)みたいになってて、
その中でSelfがnilではないか確認した後Destroyを呼んでる
nilではない場合インスタンスが生成されてるものと認識するため、
無効なポインタをDestroyに渡しちゃう
だからアドレス違反が発生する

・・・という認識でよかったでせうか?>識者の人

870 :デフォルトの名無しさん:2006/08/08(火) 22:57:28
Turbo Delphi
http://www.itmedia.co.jp/enterprise/articles/0608/08/news056.html

871 :デフォルトの名無しさん:2006/08/08(火) 22:58:13
>869
だいたいOK。
「Freeのようなメソッド」は「静的メソッド」だけど。

872 :デフォルトの名無しさん:2006/08/08(火) 23:04:20
だいたいってことはどっかダメなん?

873 :デフォルトの名無しさん:2006/08/08(火) 23:42:43
大体ローカル変数にnilセットする意味が判らない。

874 :デフォルトの名無しさん:2006/08/08(火) 23:48:16
ListBoxにTreeViewのOnChange、OnChangingと同等のイベントって無いの?

875 :デフォルトの名無しさん:2006/08/08(火) 23:57:55
自分で確認した方が早いだろ

876 :デフォルトの名無しさん:2006/08/09(水) 00:54:36
Object pascalの参照渡しって
C言語のポインタと同じと考えていいの?

877 :デフォルトの名無しさん:2006/08/09(水) 01:03:56
妙な質問だな

Object Pascalの参照渡しは、Cの参照渡しと同じというのが正しいんじゃないすか

878 :デフォルトの名無しさん:2006/08/09(水) 01:10:53
Cには基本的に値渡ししかないですよ

879 :デフォルトの名無しさん:2006/08/09(水) 01:47:39
参照の値渡しだろ。

880 :デフォルトの名無しさん:2006/08/09(水) 04:11:56
>>878
それをいうと、Delphiでも全て値渡しってことになっちまう

C/C++とDelphiの値渡しうんぬんで注意しないといけないのは、
・クラスオブジェクトは、C++では値渡しだが、Delphiでは参照を渡す
・Delphiの静的配列は、ポインタと互換性がなくて、静的配列同士で代入するときは値渡し。

881 :デフォルトの名無しさん:2006/08/09(水) 05:09:29
イミフメ

882 :デフォルトの名無しさん:2006/08/09(水) 07:52:50
>>881
ゆとり教育世代か

883 :デフォルトの名無しさん:2006/08/09(水) 09:24:39
>>880
言語レベルでの参照渡し(Delphi、C++等)と
テクニックとしての参照渡し(C)は違うよ。分かる?

884 :デフォルトの名無しさん:2006/08/09(水) 09:28:01
ボンクラ

885 :デフォルトの名無しさん:2006/08/09(水) 09:34:12
 __     __       n     _____  _____     ___ ___    ___
 |   |    /  /      / /    /       | /__  __/ [][] _| |_| |__ _| |_
 |   |.   /  /    /⌒ヽ/     /   / ̄ ̄|. l    / /     |    _  | |_  レ'~ ̄|
 |   |  /  /    ( ^ω^ )    /   /.  / /    |  |___      ̄|  | / / /   /| |
 |   |  /  /     ノ/ /  ノ   /    ̄ ̄ /     \__|     |  |  ̄ /_  /  | |_
 |   |. /  /   // / ノ     /   / ̄ ̄ ̄                |_|     |__|   \/
 |   |/  /  ⊂( し'./    /   /  
 |.     /     | ノ'      /   /                     ニュー速VIP
 |    /.     し'      ./   /                  http://ex14.2ch.net/news4vip/
  ̄ ̄ ̄              ̄ ̄

886 :デフォルトの名無しさん:2006/08/09(水) 09:36:39
>テクニックとしての参照渡し(C)は違うよ。分かる?
このスレって重箱の隅に異常に執着するくせに雑な議論する奴大杉

887 :デフォルトの名無しさん:2006/08/09(水) 09:59:06
自分の正当性を押し通す事が大好きなんだろ

888 :デフォルトの名無しさん:2006/08/09(水) 10:03:35
すみません、教えて下さい。

Visible=falseなフォームに置いたActiveXが悪さをして、ActiveXの配置された
フォームをアクティブにし、メインフォームのフォーカスを奪ってしまいます。

ActiveXの配置されたフォームでメッセージをトラップするなどして、フォームが
アクティブにならないようにする方法は無いものでしょうか。

どうぞよろしくお願いします。

889 :デフォルトの名無しさん:2006/08/09(水) 10:13:03
>>886-887
顔真っ赤にしなくてもいいですよ^^;


890 :デフォルトの名無しさん:2006/08/09(水) 10:15:43
このスレって反論できないとすぐに論点すりかえて逃げる奴大杉
さすがDel厨

891 :デフォルトの名無しさん:2006/08/09(水) 10:18:08
>888
「メッセージハンドラのオーバーライド」Help参照
Application.OnMessage
など

892 :デフォルトの名無しさん:2006/08/09(水) 10:26:14
しかぁーし、そんなふうにして使うもんかね、ActiveX

893 :デフォルトの名無しさん:2006/08/09(水) 10:28:15
VCLでActiveXを作るのは簡単だし使うのも簡単だが、
元々ActiveXへのアンチテーゼがVCLだからVCL並みにActiveXを使うことは無理だろ。

894 :デフォルトの名無しさん:2006/08/09(水) 10:29:03
鏡でも見てんのか

895 :デフォルトの名無しさん:2006/08/09(水) 10:30:53
>VCLでActiveXを作るのは簡単だし使うのも簡単だが、
>元々ActiveXへのアンチテーゼがVCLだから

上下の文が矛盾してます。

896 :デフォルトの名無しさん:2006/08/09(水) 10:31:55
>元々ActiveXへのアンチテーゼがVCLだから

はつみみです。


897 :デフォルトの名無しさん:2006/08/09(水) 10:37:37
>>891
ありがとうございます。
もう一つ申し訳ないのですが、フォームをアクティブにさせないようにするには、どのメッセージを無視させるといいのかわかりませんか?


898 :デフォルトの名無しさん:2006/08/09(水) 10:40:31
絶対その使い方、変

899 :デフォルトの名無しさん:2006/08/09(水) 10:44:49
アスペ君いい加減病院逝ってきたら?

900 :デフォルトの名無しさん:2006/08/09(水) 10:45:06
>>元々ActiveXへのアンチテーゼがVCLだから

>はつみみです。

何でこれくらいの話を理解出来ない人が炒るの?
VCLでコンポーネント作成ってするとActiveXコンポーネントじゃなくてVCLコンポが出来るわけでしょ。

>上下の文が矛盾してます。

だけどVCLを使ってActiveXを作れないわけでもない。

901 :デフォルトの名無しさん:2006/08/09(水) 10:59:40
全然アンチテーゼの理由になってねぇじゃん

902 :デフォルトの名無しさん:2006/08/09(水) 11:02:50
>>900 あたまわるう

903 :デフォルトの名無しさん:2006/08/09(水) 11:03:17
>897
ActiveXの配置されたフォーム.Enabled:= Falseにしとく。てのはどうかね?

904 :デフォルトの名無しさん:2006/08/09(水) 11:05:16
背景が分かって無いから理解できないんだろうが、
”WinDNA(終焉)の理想はコンポーネントはCOM”だけども、
コンポーネントをDelphiクラス形式になってるところがアンチテーゼなの。

次に”ドトネト(氏産)の理想はコンポーネントがCOMと違って派生できる、かつ、複数言語”だけども、
ブビ厨が単一言語しか使えず、ブビドトネトとかC丼とかmc++(c++/cliにバージョンうp)とかと、
根も葉もない言語しか無くて理想は高く現実低くとなった。

まだ、Delphi/BCBの方が過去のpascal、C++資産を丸々使えて便利。

905 :897:2006/08/09(水) 11:06:12
>>903
おお、できました!
こんな単純な事で・・目から鱗です。

本当にありがとうございました。

906 :デフォルトの名無しさん:2006/08/09(水) 11:07:01
自分の妄想じゃなくて、某の人が言ってたぐらい言ってくれよ

907 :デフォルトの名無しさん:2006/08/09(水) 11:07:49
Win3.1 のときからVCLがあるんだから、ActiveX のアンチテーゼじゃないよ

908 :デフォルトの名無しさん:2006/08/09(水) 11:08:56
Win3.0のときからAxの前身VBXもOCXもありましたが、何か?

909 :デフォルトの名無しさん:2006/08/09(水) 11:11:59
で ActiveX は Win3.1 にあったのか?

たんなるAPIのラッパだろ、VCLは。ご大層なことを言わないの。
コンポーネントっていっても、たった一つのIDEにインストールできるだけじゃんか。
ActiveX とは比べようがない。

910 :デフォルトの名無しさん:2006/08/09(水) 11:12:50
>ActiveX とは比べようがない。

死滅したAXは最低とする。

911 :デフォルトの名無しさん:2006/08/09(水) 11:13:57
妄言発作はおさまるまで放置

912 :デフォルトの名無しさん:2006/08/09(水) 11:14:21
氏滅の歴史

DDE(Win3.1or3.0 1993)

NET DDE (Win3.1 1994)

埋め込みしたいなぁ...

OLE1.0(DDE使用)

OLE2.0=COM ただし目的はインプレースドキュメント。しかしその背景には本質としてバイナリオブジェクト標準あんどオブジェクト通信の思想あり。この辺で名慮or迷著 InsideOLEあんどIsideOLE2。死者多数。
部品としてVB用のVBX (VB2.0からVB4.0 1995あたり)

COMを使ったOCX (1996あたり)結局コンポーネントビジネスはやんなかったな...
ゲイツがインターネットに熱上げあんどJAVA Appletはやる (1995)

COMつかってActiveX(1996)
だんだんオブジェクトはやってくる。 (UMLなど1997)オブジェクトもでるとしてCOMの宣伝開始 DCOMなどCORBAとがっぷり。この辺でMTSではじめ

マーケティングてきなWindowsDNA 。MTS2.0それなりに使えそう。つか使った。DCOM糞。(1999)

COM+ (Win2000、2000)In-MemoryDBどこいったゴラァ
COM Runtimeの情報漏れ始め (2000〜)

セキュリティ→ファイアーウォールのためCOM全滅。しばらくしてから.NETとしてCOMじゃないものに...

.NET流行らず(〜2006)

WinFX完成(2007)

オブジェクトベースプログラミングにより、OSは関数コールに戻る(2008)
WinFX下位互換へ

913 :デフォルトの名無しさん:2006/08/09(水) 11:15:43
> 死滅したAXは最低とする。

じゃ、アンチテーゼも存在理由がなくなって死滅するな

914 :デフォルトの名無しさん:2006/08/09(水) 11:16:10
>ActiveX とは比べようがない。

M$ってCOMをB$D UNIXで動作させると何年も言ってたが、
結局できずに終ったんだお。

915 :デフォルトの名無しさん:2006/08/09(水) 11:17:02
IEを自分のフォームにぺたぺた貼り付けられるのは、すごいと思った

916 :デフォルトの名無しさん:2006/08/09(水) 11:17:12
>じゃ、アンチテーゼも存在理由がなくなって死滅するな

アンチテーゼ側が勝ったらら旧VBが滅んだんだお。
Delさえ存在しなければもう少しブビチュウが生きながらえたのにね。
カワイソス。

917 :デフォルトの名無しさん:2006/08/09(水) 11:17:41
また発作か

918 :デフォルトの名無しさん:2006/08/09(水) 11:18:00
ああ、VB厨って事にしたいのか

919 :デフォルトの名無しさん:2006/08/09(水) 11:18:41
ブビチュウはせめて質問スレから消えてくれれば良いのにね。
誰も必要としてないお。

920 :デフォルトの名無しさん:2006/08/09(水) 11:21:05
よほどVBのトラウマが深いんだな、元VB厨。こいつはほんとにDel使いなのか?

921 :デフォルトの名無しさん:2006/08/09(水) 11:22:18
ブビ厨がDel使いになった例は非常に多いよ。
この板でも良く見た。
別にいんじゃね?ブビを捨てる事もDelを使うことも。

922 :デフォルトの名無しさん:2006/08/09(水) 11:24:22
> 別にいんじゃね?ブビを捨てる事もDelを使うことも。

いいけど、ここはその場所じゃないし、突然「VB、ドトネト」とか、わめいたり
毎回意味不明のコピペは迷惑。

923 :デフォルトの名無しさん:2006/08/09(水) 11:24:51
ブビを捨ててDelを使うことは良いことだ。
後はブビチュウさえ居なくなってくれれば良いのに。

924 :デフォルトの名無しさん:2006/08/09(水) 11:24:50
VB vs Delphi @夏厨2006
http://pc8.2ch.net/test/read.cgi/tech/1152851763/

925 :デフォルトの名無しさん:2006/08/09(水) 12:17:54
ListBoxで項目に個別の数値をもつ事ってできますか?

926 :デフォルトの名無しさん:2006/08/09(水) 12:29:11
Virtual

927 :デフォルトの名無しさん:2006/08/09(水) 13:36:08
>>925
Itemsの Objectにつっこむ

928 :デフォルトの名無しさん:2006/08/09(水) 13:52:17
>>927
ttp://ps2game.sblo.jp/article/1065359.html

929 :デフォルトの名無しさん:2006/08/09(水) 16:28:15
>>927
いけた!ありがと!

930 :デフォルトの名無しさん:2006/08/09(水) 18:31:47
objWord := CreateOLEObject('Word.Application');
objWddoc := objWord.Documents.Open(FileListBox1.FileName);

ででかいファイルを開き終わるのを待つにはどうすればいいのでつ?

931 :デフォルトの名無しさん:2006/08/09(水) 18:39:44
VBなら待つ必要すらない

932 :デフォルトの名無しさん:2006/08/09(水) 18:45:41
うらやましいな、ブビは性能が低くて。

933 :デフォルトの名無しさん:2006/08/09(水) 18:52:40
だろ?早く乗り換えた方がいいYO!

934 :デフォルトの名無しさん:2006/08/09(水) 19:25:57
>>919

俺はまだ必要

935 :デフォルトの名無しさん:2006/08/11(金) 11:13:18
VB厨の誘惑ktkr

936 :デフォルトの名無しさん:2006/08/11(金) 11:19:07
>人間やめた
>ttp://d.hatena.ne.jp/haruyutaka/20060804/p1
間違っているのはただ一点、他人も自分と同じように悪意を抱いている、
その部分だけだが、彼らはそうでない人間を見たことがないので、
想像すら出来ない。彼らは永久に他人を信じることが出来ず、
自分を守るために悪意を振り撒き、害悪を撒き散らし続ける。



937 :デフォルトの名無しさん:2006/08/11(金) 11:20:59
>こうして害悪でしかない荒らしという存在は生まれる。
>誰に対しても悪意を感じ、それを平気で口にし、
>誰からも相手にされなくても平然として、むしろそれを望んでいる。



938 :デフォルトの名無しさん:2006/08/11(金) 11:26:17
新スレ
http://pc8.2ch.net/test/read.cgi/tech/1155263138/

939 :デフォルトの名無しさん:2006/08/12(土) 07:12:43
ストリングリストが特定の文字列を(アイテムとして)持ってるか、調べたいんですよ。
で、適当なメソッドがないか調べてたらFindメソッドをみつけたんですが、ちょっと問題がありまして、

StringList1.Add('なまず');
StringList1.Add('クラゲ');
StringList1.Add('タコ');
StringList1.Add('イカ');
 ・
 ・
と、あったとして、StringList1.Find('タコ', Int1)とかやるためには、先にStringList1をソートしろってヘルプは言うんですよ。
でも、ボクはStringListに追加された順序を崩したくない(ソートしたくない)んです。

どなたか、SortしなくてもStringListがそのアイテムをもってるか調べられるクールなやり方を教えてください。

940 :デフォルトの名無しさん:2006/08/12(土) 07:22:26
if StringList1.IndexOf('タコ') > -1 then

else

end;


941 :デフォルトの名無しさん:2006/08/12(土) 08:20:06
>>939
一行づつ調べる。

942 :デフォルトの名無しさん:2006/08/12(土) 09:16:42
>>940
なるほど!ありがとうごじゃりまする

943 :デフォルトの名無しさん:2006/08/12(土) 10:51:50
VBなら一発で調べられるのにね

944 :デフォルトの名無しさん:2006/08/12(土) 13:04:01
使用許諾コード取得デキネー
Borlandからメールがコネー

945 :デフォルトの名無しさん:2006/08/12(土) 13:21:00
>>944
最近は審査があるって知ってた?

946 :デフォルトの名無しさん:2006/08/12(土) 13:53:35
そういやVIPのDelphiスレもうやらないの?

947 :デフォルトの名無しさん:2006/08/12(土) 14:27:16
vipperは氏ね

948 :デフォルトの名無しさん:2006/08/12(土) 15:54:37
TMemoのデフォルトのポップアップを表示させない方法ってありますか?
昔、どこかのサイトで見たよーな記憶があったのでググってみたけど、出てこない。

Windows自体の制約で出来ないとか書いてあったのかなぁ…

949 :デフォルトの名無しさん:2006/08/12(土) 16:26:23
Form1の上にTpanelやTPageControlやTMemo等を貼り付け(AlignをalCliantにして)たら、Form1のOnKeyDownにメソッドを書いても受け付けてもらえなくなりました。
どうすればいいんでしょうか?

950 :デフォルトの名無しさん:2006/08/12(土) 16:47:21
>>949
Form1がActiveな状態になってないから受け付けてもらえません
一つ一つのコンポーネントにOnKeyDownメソッドを書けば出来ると思われ

951 :デフォルトの名無しさん:2006/08/12(土) 16:55:45
>>948

空の TPopUpMenu を関連づける。

952 :デフォルトの名無しさん:2006/08/12(土) 16:56:30
KeyPreview

953 :デフォルトの名無しさん:2006/08/12(土) 17:29:35
VBならポップアップしないのにね

954 :デフォルトの名無しさん:2006/08/12(土) 18:07:46
>>951
ありがd♪

955 :949:2006/08/12(土) 18:17:52
>>952
ありがとう。

>>950
気持ちだけ、ありがとう。

956 :デフォルトの名無しさん:2006/08/12(土) 19:04:18
新たに投入するTurbo製品セットには、「Turbo Delphi for Win32」
「Turbo Delphi for .Net」「Turbo C++」「Turbo C#」が含まれるという。
各バージョンには2つのエディションが用意される。無償ダウンロード版の
「Turbo Explorer」と有償版(価格は500ドル以下)の「Turbo Professional」である。
http://www.itmedia.co.jp/enterprise/articles/0608/08/news056.html

957 :デフォルトの名無しさん:2006/08/12(土) 19:53:35
>「Turbo Delphi for Win32」「Turbo Delphi for .Net」
別々に買えってこと?


958 :デフォルトの名無しさん:2006/08/12(土) 21:24:14
個人的に「Turbo Delphi for .Net」は要らないから、別々でおk

959 :デフォルトの名無しさん:2006/08/12(土) 21:32:30
別々に買っても、一つしかインストールできないわな。だってIDEが区別つかないんだもん。

960 :デフォルトの名無しさん:2006/08/12(土) 21:41:23
あと23日で発売ってホントかね?

961 :デフォルトの名無しさん:2006/08/12(土) 21:43:17
DLも同時なのかな
お盆前に出してくれたら思う存分弄れたのに

962 :デフォルトの名無しさん:2006/08/12(土) 23:04:44
C++にVCLはつくのかのう

963 :デフォルトの名無しさん:2006/08/12(土) 23:55:57
TC++は.NET出ないんだ

964 :デフォルトの名無しさん:2006/08/13(日) 00:18:02
BDS をばらばらにして、名前変えただけだかね。BDS にも C++.NET なんかなかったし。

965 :デフォルトの名無しさん:2006/08/14(月) 00:23:17
Del7Perよりは良さそうだな

966 :デフォルトの名無しさん:2006/08/14(月) 01:23:07
やっとD6から乗り換えるときが来たようだな

967 :デフォルトの名無しさん:2006/08/14(月) 03:12:11
VCLソースはついてくるのかなぁ

968 :デフォルトの名無しさん:2006/08/14(月) 08:37:43
教えてください!
例えば、文字列の場合、TStringListを使って、
MyStringList.Add('hoge1');
MyStringList.Add('hoge2');

などとして、必要な要素の数がわからなくても、追加していけば要件を満たす値を集められますが、このようなことををInt型でやりたいと思い、
var
MachIntArray: array of integer;
NumInt: integer;

として、
procedure AddInt(aInt: Integer); // aIntは足す値
begin
 Inc(NumInt);
 SetLenght(MachIntArray, NumInt);
 // と、配列の要素数を一個増やして、

 MachIntArray[NumInt-1] := aInt;
 // 増やしたところにaIntの値を突っ込む
end;

・・のような方法を思いついたんですが、配列に追加するたびにSetLengthで要素数を設定しなおすのは作法的に間違ってるような気がするんですが、
Intを列挙していくって処理はわりとやりそうなので、標準関数であるのかと思ったが、みつけられず、中級以上の人達はどうやって解決してるのか知りたかったのです。

はじめに十分な要素数の配列を確保しておいて、それに代入するのも考えたんですが、溢れるのが怖いし、今のところ方法が考えつかず、困っています。

969 :デフォルトの名無しさん:2006/08/14(月) 09:07:45
TList 使うとか

Integerでいいならキャストすればそのまま入る

970 :デフォルトの名無しさん:2006/08/14(月) 09:30:28
>>969
ありがとうございます。
TListヘルプで見たら、TListはポインタの配列だというので、キャストの意味がちょっとわからなかったんですが、こういうことですか?

var
MachIntArray: TList;

で、
procedure AddInt(aInt: Integer);
var
PInt: ^Integer;
begin
 PInt^ := aInt;
 MachIntArray.Add(PInt);
end;

971 :デフォルトの名無しさん:2006/08/14(月) 09:32:25
>>968
それをラップするクラスをつくるか、邪道だが >>969 の方法。
ラッパーの場合は、10個増えるごとに 内部で SetLength() するとか、
あと、現在の個数を保持するプロパティーとか付ける。あらかじめ個数が
分かってる場合の Capacity とか。簡単。

972 :デフォルトの名無しさん:2006/08/14(月) 09:34:07
ちがう。

MachIntArray.Add(pointer(aInt));

取り出すときは

aInt := integer(MachIntArray[i]);

の感じ。

973 :デフォルトの名無しさん:2006/08/14(月) 09:34:22
MachIntArray.Add(Pointer(aInt));

でよいよ

974 :デフォルトの名無しさん:2006/08/14(月) 09:34:52
ありゃ被った スマソ

975 :デフォルトの名無しさん:2006/08/14(月) 09:39:17
>>972,973
ありがとう!一行で書くのはCoolですね!

>>971,974
ありがとう!

976 :デフォルトの名無しさん:2006/08/14(月) 13:11:58
Delphi7使いです。標準機能でWSDLから作れるSOAP(Webサービス)クライアントは
どうやらDOMを使っているようなのですが、でかいXMLの解析が非常に遅いです。
SAXを使ったクライアントを作る方法ってないでしょうか?

977 :デフォルトの名無しさん:2006/08/14(月) 13:43:08
使った事は無いけど
http://www.destructor.de/xmlparser/index.htm

978 :デフォルトの名無しさん:2006/08/14(月) 13:44:23
> TXmlParser's support of Unicode is currently limited to single-byte character sets

日本語はとおりそうもないね。

979 :デフォルトの名無しさん:2006/08/14(月) 15:56:10
>975
TListの要素はPointer型なので格納可能な値の範囲に注意する必要がある。
とりあえず動けばいいのであればTListで構わないけど、きちんとしておくなら
動的配列(にサポートルーチンを作る)か、TListのソースを参考に同様のクラスを
作ることをお勧めする。

980 :デフォルトの名無しさん:2006/08/14(月) 18:08:29
>格納可能な値の範囲に注意
どゆこと?何だかんだいっても動的配列の方が無難ってこと?

981 :デフォルトの名無しさん:2006/08/14(月) 20:45:36
>>979
Integer も Pointer も 32bits だし、入れるときも出すときもキャストするんだから範囲は問題ではないだろう。

982 :デフォルトの名無しさん:2006/08/14(月) 21:49:01
>981
-1とか入れてみ?

983 :デフォルトの名無しさん:2006/08/14(月) 21:56:24
List:=TList.Create;
List.Add(Pointer(-1));
int:=Integer(List[0]);
ShowMessage(IntToStr(int));
List.Free;

何の問題もないが

984 :デフォルトの名無しさん:2006/08/14(月) 22:57:19
TListは、中身の正体がわかっているなら、32Bit以下のデータなら何を入れても問題ない筈。
でもTObjectListとかTComponentListはダメよ。自動でFreeする機能があるから。

985 :デフォルトの名無しさん:2006/08/14(月) 23:14:19
Pointerにbit以外の制約なんてあるの?
基本的には何でも入れられるのがPointerでしょ?

986 :デフォルトの名無しさん:2006/08/14(月) 23:15:46
>>985
そんな事はない。例えば人を入れようとしても入らない。

987 :デフォルトの名無しさん:2006/08/14(月) 23:22:42
童貞だからな

988 :デフォルトの名無しさん:2006/08/14(月) 23:46:44
>>985
「キャストして代入」と「参照を代入」を混同してはいけない。

989 :デフォルトの名無しさん:2006/08/15(火) 03:33:44
なんか動的配列の位置づけが中途半端なんだよな
せめて総称サポートしてくれれば

990 :デフォルトの名無しさん:2006/08/15(火) 07:15:21
TreeViewの各Node毎にヒントを表示させるには
どのようにしたらよいのでしょうか?
TreeViewのMouseMoveで以下のようにしてみましたが
微妙に動作が違うような気がします。
  Node := TTreeView.GetNodeAt(X, Y);
  if Assigned(Node) then
  begin
    TTreeView.Hint := Node.Text+'HogeHoge';
  end;

991 :デフォルトの名無しさん:2006/08/15(火) 12:31:54
あってるような気がすると思えばおk

992 :デフォルトの名無しさん:2006/08/15(火) 13:04:06
それでもいいけど、Application.OnShowHintでやれば?

993 :デフォルトの名無しさん:2006/08/15(火) 20:46:56
993

994 :デフォルトの名無しさん:2006/08/16(水) 00:43:01
Flashのタイムラインみたいなコンポーネントって無い?

995 :デフォルトの名無しさん:2006/08/16(水) 01:48:40
JEDI VCLにあったような。

996 :デフォルトの名無しさん:2006/08/16(水) 15:40:13
DBGridの特定行の色を変えたくて、金井利美男って人の書いた本のとおりに次のコードを書いてみました。

procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect; DataCol:Integer; Column: TColumn; State:TGridDrawState);

をprivate部に宣言
で、implementationで

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect; DataCol:Integer; Column: TColumn; State:TGridDrawState);
begin
 if (Table1.FieldByName('Age').AsInteger>16) then // 歳が16より高ければclAquaに変えたい
 begin
  DBGrid1.Canvas.Brush.Color := clAqua;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
 end;
end;

と、ほぼ本に書いてある通りに打ち込んだんですけど、色が変わってくれません。
おそらく、DBGrid1DrawColuumnCellを呼んでないせいだと思うんですが、本ではどこで呼べとは書いてなくってそのままコンパイルしてみたんですが。

どうすればいいんでしょうか?

997 :デフォルトの名無しさん:2006/08/16(水) 15:42:32
なんだっけ、ほら、、
プロパティいじるんだよ。

998 :デフォルトの名無しさん:2006/08/16(水) 15:45:34
どのタイミングで呼び出すべきなのか考えれば分かるはず

999 :デフォルトの名無しさん:2006/08/16(水) 15:46:02
あれだよ、ほら、、
プロパティいじるんだよ。

1000 :デフォルトの名無しさん:2006/08/16(水) 15:46:55
終わり

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

211 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)