モナーの *やさしい* Delphi質問スレ Ver.6

このエントリーをはてなブックマークに追加
1Delモナー ◆fPymXWHY

  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
 (    ) .| Delモナーは時に私であり、時には別の人。
 | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 (__)_)  \_________________________

前スレ モナーの *やさしい* Delphi質問スレ Ver.5
http://pc.2ch.net/test/read.cgi/tech/1017803412

>>2-10あたりに関連情報あり
○過去スレ
○関連スレ
○Delphi製品情報
○関連リンク
○質問者へ
○ソース置き場案内
2Delモナー ◆fPymXWHY :02/04/18 21:53
■過去スレ

モナーの *やさしい* Delphi質問スレ Ver.5
http://pc.2ch.net/test/read.cgi/tech/1017803412

モナーの *やさしい* Delphi質問スレ Ver4(HTML化待ち)
http://pc.2ch.net/test/read.cgi/tech/1016467137/

モナーの *やさしい* Delphi質問スレ Ver3(HTML化待ち)
http://pc.2ch.net/test/read.cgi/tech/1014474727/

モナーの *やさしい* Delphi質問スレ Ver2(HTML化待ち)
http://pc.2ch.net/test/read.cgi/tech/1011649179/

モナーの *やさしい* Delphi質問スレ(HTML化済)
http://pc.2ch.net/tech/kako/1003/10031/1003113413.html
3Delモナー ◆fPymXWHY :02/04/18 21:54
■関連スレ
一番上が新しいスレです。書き込みは新しいスレに。

○ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室
Delphi や Borland に関する話題、雑談や質問をしながらマターリくつろごうや
A http://pc.2ch.net/test/read.cgi/tech/1013298748/
@ http://pc.2ch.net/test/read.cgi/tech/1003664165/ (HTML化待ち)
( ゚Д゚)ノ Delギコ猫のプログラミング相談室
DelphiやBorlandに関する雑談や質問しながらみなーで、くつろごうや
part4 http://pc.2ch.net/tech/kako/1002/10024/1002469894.html
part3 http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
part2 http://pc.2ch.net/tech/kako/999/999482946.html
part1 http://piza2.2ch.net/tech/kako/997/997348797.html

○Delphi相談室 現在その3
Delphi関連のTips Q&A はこちらです。
その3 http://pc.2ch.net/test/read.cgi/tech/1010153466/ (HTML化待ち)
その2 http://pc.2ch.net/tech/kako/995/995950803.html
その1 (逝ってしまったようです)
(続く)
4Delモナー ◆fPymXWHY :02/04/18 21:54
■関連スレ(続き)

○***すれ立てるまでもない質問はここで***
どのスレッドに質問したらいいか、わからないときはここで質問してみよう。(略)
第13刷 http://pc.2ch.net/test/read.cgi/tech/1018752281/l50
第12刷 http://pc.2ch.net/test/read.cgi/tech/1016631412/ (HTML化待ち)
第11刷 http://pc.2ch.net/test/read.cgi/tech/1014478527/ (HTML化待ち)
第A刷 http://pc.2ch.net/test/read.cgi/tech/1012536901/ (HTML化待ち)
第9刷 http://pc.2ch.net/test/read.cgi/tech/1010673275/
第8刷 http://pc.2ch.net/test/read.cgi/tech/1008908052/ (HTML化待ち)
第6刷 http://pc.2ch.net/tech/kako/1004/10041/1004183881.html
第5刷 http://pc.2ch.net/tech/kako/1001/10019/1001998049.html
第4刷 http://pc.2ch.net/tech/kako/998/998403891.html
第3刷 http://piza2.2ch.net/tech/kako/993/993933402.html
第2刷 http://piza.2ch.net/tech/kako/990/990082077.html
第1刷 http://piza.2ch.net/tech/kako/975/975576060.html

○Pascal の初心者用の質問・相談所
コンソールのみ。GUI は扱いません。
http://pc.2ch.net/test/read.cgi/tech/1009903617/

○kylix相談室(閑散)
http://pc.2ch.net/test/read.cgi/tech/988815580/ (HTML化待ち)
1 (行方不明)

○Delphiで小さな実行ファイルを作ろう
http://pc.2ch.net/test/read.cgi/tech/1009080085/

○delphiで作られた有名ソフトって何がある?
delphi自身もdelphi?てか、今delphiやってる人へ希望を与えてやって下さい。
http://pc.2ch.net/test/read.cgi/tech/990056026/
5Delモナー ◆fPymXWHY :02/04/18 21:54
■Delphi製品情報

○公式サイト
http://www.borland.co.jp/delphi/

○Delphi 6 Personal
無料でダウンロードできる。持っていない人はこれを機にやってみよう。
ダウンロードするファイルはは59MBあり、またサーバーが重いので注意。
使用者登録が必要。
http://www.borland.co.jp/delphi/personal/

○Delphi 6 アップデート・ダウンロードサービス
最新のアップデートは次の通り。
Personal: Update Pack 2 (2002/3/19)
Professional, Enterprise: Update Pack 2 + 追加アップデート (2002/3/29)
http://www.borland.co.jp/delphi/del6up.html
6Delモナー ◆fPymXWHY :02/04/18 21:54
■関連リンク

ここに貼っておきました。
どんどん追加して構いません。

こちらへ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538

■質問者へ

○ここはDelphiのプログラミングに関する質問スレです。
スレ違いの質問は罵倒されるので、ほかのスレを探してください。

○厨房並みの初心者の質問はOKですが、厨房は質問するな。

○まずは自分で調べてみよう。回答にGoogleの検索結果を貼られないように。
Google http://www.google.com/intl/ja/
2ちゃんねる検索 http://2ken.net/
Delphi-ML検索 http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
7Delモナー ◆fPymXWHY :02/04/18 21:55
■ソース置き場

このスレのソース置き場を作ってみました。
このスレに載せきれないソースはここへどうぞ。
○3000行までOKです。
○ソース書き込み時は等幅に設定してください。インデントが使えます。
○激しく長いソースは、同時にソースファイルを添付しておくと(゚Д゚)ウマーです。
○置くのはソースでなくても構いません。
ファイルのアップローダーとしてもどうぞ。

こちらへ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1017673221


以上。
8Delモナー ◆fPymXWHY :02/04/18 21:56

  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. 前スレが980に行くまでは書き込まないで
 (    ) .| (あるいはsage進行にして)ください。
 | | |  \_________________________
 (__)_)
Win16はpascal呼び出しが主流でしたが、これは神の啓示ですか?
10Delモナー ◆fPymXWHY :02/04/18 22:06
今回こそ書き込みに成功して(゚Д゚)ウマーかと思ったが・・・。

>>4
***すれ立てるまでもない質問はここで***の
第13刷のURL末尾、l50をとるのを忘れた・・・。
|ω・`)つJ 11ゲット

|彡 サッ
12>>1にウォンチュ!:02/04/19 00:07
お疲れ!







ことり。
下げろってんだろゴルァ!!
14デフォルトの名無しさん:02/04/19 00:50
>>13
はい。分かりました。
   @@@@   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (゜д゜@ < あらやだ。マーくん、反抗期?
   ┳⊂ )   \__________
  [[[[|凵ノ⊃
   ◎U□◎ =3 キコキコキコ
16マーくん:02/04/19 00:54
母ちゃん、腹減った。メシ!
>>12
(藁










とでもいうと思ったのか。
18デフォルトの名無しさん:02/04/19 11:33
新スレ出来てたんだ。

前スレの932です。
誰かお答え下さい。
>>18
前スレがまだ生きてるのでそっちに書いておいたよ
20デフォルトの名無しさん:02/04/19 12:10
21Delモナー ◆fPymXWHY :02/04/19 16:21
>>8の再掲です。

  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. 前スレが980に行くまでは書き込まないで
 (    ) .| (あるいはsage進行にして)ください。
 | | |  \_________________________
 (__)_)

くれぐれもよろしくお願いします。
22デフォルトの名無しさん:02/04/19 23:11
>>17
(藁










とでもいうと思ったのか。
23デフォルトの名無しさん:02/04/19 23:59
>1
おおっ! ついにDelphiと同じバージョンになりましたね!









とでもいうと思ったのか。
24まだまだ未知の世界:02/04/20 00:12
今の所↓のように書いてるんですけど、関数内関数を外に書く方法ってないですか?

procedure 処理1;
 procedure 処理2;
 begin
処理2の内容;
 end;
begin
処理1の内容;
end;

↑を↓のようにしたい
procedure 処理1;
begin
処理1の内容;
end;

procedure 処理1.処理2;
begin
処理2の内容;
end;
25デフォルトの名無しさん:02/04/20 00:18
こうだろ、普通は。

procedure 処理2;
begin
 処理2の内容;
end;

procedure 処理1;
begin
 処理1の内容;
 処理2;
end;
>>24
ない。つーかなぜクラスを使わない?
2726:02/04/20 00:21
インスタンス生成/破棄がめんどくさいと思うのなら、
Clipboardユニットを参考にしてみること。
forward
2924:02/04/20 00:47
>>26
ないんですか(^^;
forward宣言とかのテクニックでできないかな〜と思ってたんですが・・・(^^;

>>25
そのように書いていくと数が多くなると
どの処理で使うつもりだったのかとかがごっちゃになって混乱してきます。

>>26-27
実際使用するインスタンスは1つなので
わざわざクラス(型)を用意するのももったいないかな〜とか思ってました。

>Clipboardユニットを参考にしてみること。
早速、覗いて見ますね。
>>26
クラスと関数内関数は用途がちがうのでは・・・
俺の場合、関数内関数ってその部分を再帰処理したい時、
関数内の流れを見やすくしたい時しか使わないけどみんなはどーなのさ。
>>31 同じく。

ただ一度はまったのが、まだ初心者の頃EnumWindowsの
lpEnumFuncに関数内関数のポインタ渡しちゃって、
しかもWin2000での動作テストはうまくいっちゃって、
それで調子こいて完成させたら、Win98で動かしたときに
ブルースクリーンだと(苦藁
最初原因全く分からなかったよ…
おまえらちょっと聞いてください
関数内関数とクラスの動作速度を比較するために、
ほぼ同じ機能を持つクラスと関数を作ってみたんです。


type
 TClassA=class(TObject)
 private
   function Left(AStr:String):String;
   function Right(AStr:String):String;
 public
   function AMain(AStr:String):String;
 end;

{ TClassA }
function TClassA.AMain(AStr: String): String;
begin
  Result := Left(AStr) + Right(AStr);
end;
function TClassA.Left(AStr: String): String;
begin
  Result := Copy(AStr,1,3);
end;
function TClassA.Right(AStr: String): String;
begin
  Result := Copy(AStr, Length(AStr)-3, 3 );
end;


{ FunctionB }
function FunctionB(AStr:String): String;
  function _Left(AStr: String): String;
  begin
    Result := Copy(AStr,1,3);
  end;
  function _Right(AStr: String): String;
  begin
    Result := Copy(AStr, Length(AStr)-3, 3 );
  end;
begin
  Result := _Left(AStr) + _Right(AStr);
end;


そしてこれらを一秒間に何回実行できるか調べたところ、漏れのマシンでは

ClassA=540000
FunctionB=625000

でした。やっぱりクラスはリソースを浪費するので
何が何でもクラス、というは良くないと思われます
procedure a();
var
procedure b();
begin
end;
begin

b();


end;
35デフォルトの名無しさん:02/04/20 15:29
>>33
場合によっては結構重要だな
関数内関数って、べつに高速化のためじゃなくて、
識別子を宣言するとき、スコープは必要最小限にすべし、という
構造化プログラミングの基本理念からあるんじゃないの?
37初心者B  ◆7wLFJFmg :02/04/20 16:10
>>33
プログラムの軽量化に使われると思われ。
重量系アプリは参考にした方がいいかも。
38デフォルトの名無しさん:02/04/20 16:19
関数内関数ってホント便利なんだよね
 でも、asmで関数内関数にすると アドレス間違ってやがんの! プンスカ
( ´∀`)プンスカ!by宍戸留美
関数内関数なんてこの前ギコBASIC見たときに始めて知ったよ。
高速化にも繋がるのか。いい事聞きましたなへらへらへら。
41デフォルトの名無しさん:02/04/20 22:47
適当な数の整数値があるとして、
文字列に変換する時に、0を付け足したいのだが・・・
たとえば、5という1桁の整数値があって
05という文字列にしたいのだがどうすればいいですか?
format
43デフォルトの名無しさん:02/04/20 22:58
>>42
小差行きボンヌ
44デフォルトの名無しさん:02/04/20 22:59
>>42
詳細きぼんぬ
ヘ(略
>>44
Format()
47デフォルトの名無しさん:02/04/20 23:06
>>46
詳細キボンヌ
'0'+IntToStr(5)
49デフォルトの名無しさん:02/04/20 23:24
var 検索も出来ねーのか、このタコ!:string;
begin
検索も出来ねーのか、このタコ!:='0';
検索も出来ねーのか、このタコ!:=検索も出来ねーのか、このタコ!+'5';
ShowMessage( inttostr(検索も出来ねーのか、このタコ!) );
end;
5049:02/04/20 23:25
inttostrしちゃアカンな(藁
>>49
strtointdef
>>41
Format('%2.2d', [aNumber]);
53野球は糞:02/04/20 23:33
野球は糞
>>53
      チャンチャラチャンチャラ      
  (⌒)  /
 (^ @^) -
  (⊃⊂) ヽ
>>53-54
無駄なレスすんな。ハゲ。
57ちょいとひとこと:02/04/21 01:08
>41じゃないけどさ、
以前にヘルプでformat関数について調べてみたことがあるが
あんな内容じゃ全然わからんぞ。

お手数だが>>52のように用例を出してくれるだけでも100倍助かる。
>結果の文字列は指定された桁数以上でなくてはならない。
>指定された桁数より少ないときは,
>結果の文字列の左側にゼロが埋め込まれる
これの何処が分からんのか分からん
5957:02/04/21 01:25
>形式指定子の構文を次に示します。
>"%" [index ":"] ["-"] [width] ["." prec] type

この構文からどうやって>>52を導き出せというのか・・・
その下も読まないとダメよ
>>57
そんぐらい読解できないのも問題ですよ。。。
大体にして「Delphi format関数」で検索かければ
こういう↓まんまの解答が出てくるのにな
ttp://www.borland.co.jp/qanda/delphi/d0000877.html
>60
その下を読んで、とりあえず「type に指定できる値」だけはわかったが
あとはよくわからん。

「引数インデックス指定子」ってなんのことやら、、どこにも解説ないし。
インデックス指定子のことは一番下に詳しく書いてるが。
65デフォルトの名無しさん:02/04/21 01:37
読むのが面倒なくらい詳しく書いてないか?
6657=59=63:02/04/21 01:46
>>64-65
7回真剣に読んでやっとわかった。

それでもやっぱり初心者にいきなり
>"%" [index ":"] ["-"] [width] ["." prec] type
は無理がないか?
以前に調べた時はこの構文を見て挫折したよ。
>>66
ヘルプでわからなければ、もう次は2ちゃんですか?
>>66
まがりなりにもプロも使う開発環境。初心者なんぞ想定しておりません。
>>66
C言語のprintf位は常識として知っておいた方がいいと思う。
>>57で100倍助かると言っていた>>52のような用例もあるはずだが。
7157:02/04/21 02:00
とりあえず「引数インデックス指定子」については
食わず嫌いというか、怠けていたことを認める。
これは本当に申し訳ない。

>>62,67
だから、オレは>>41じゃないってば。

>>68
プロ「も」ってことは初心者の利用も見込んでるんじゃん。

>>69
言ってることはよくわかるが、なんか釈然としないなぁ・・。
( ´∀`) 「使用上の注意をよく読んでお使いください。」
7357:02/04/21 02:06
>70
ヘルプの用例は結果が書いてなかったし、
あの構文がどうしてあんな用例になるのかが理解できなかった。
(まぁ、でも実際にコピペして結果がどうなるかとかいろいろ試してみればよかった、と今では反省してる)
( ´∀`) 「よく読まずに文句をたれると、暇を持て余していた人たちに、
       ( ´D`)つ)´Д`)グリグリ
       されます。
>41-42で解決しているのにここまで伸びるとは...
正直DelphiよりVBかHSP使った方が幸せになれるよ。
>>75
HSPでは幸せになれないと思ふ。
小中学生なら、お友達が増えていいかもしれんが・・・。
77デフォルトの名無しさん:02/04/21 04:53
下記C++コードをDELPHIでコードを書くとどうなるのでしょうか?

long key = (VkKeyScan( VK_SHIFT ) & 0x80000000 ? 0x1000000 : 0) | Msg.wParam;
78デフォルトの名無しさん:02/04/21 05:22
>>77
key := IfThen((VkKeyScan(VK_SHIFT) and $80000000) <> 0, $1000000) or Msg.wParam;
>>77

var
 key: LongInt;
begin
 if (VkKeyScan(Char(VK_SHIFT)) and $80000000) <> 0 then
  key := ($1000000 or Msg.wParam)
 else
  key := (0 or Msg.wParam);
end;
>>78-77
ありがとうございました
>>75
逆に付き合い(フォロー)が良すぎるくらいに思うがね。
煽り負けするなら2ch来るなって感じ。
>>80 あんた、postgresqlのMLでも質問してなかったか?
それとも偽者か、もしくは、ML見てわからんからここで聞いてみたか?
どーでもいいのだが、マルチポストならやめてくれよ、それと、本人ならpostgresqlのMLに
間違って投稿しましたって謝りいれとけよな。
83デフォルトの名無しさん:02/04/21 23:28
>57 :ちょいとひとこと :02/04/21 01:08
>>41じゃないけどさ、
57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

57=41 57=41 57=41 57=41 57=41 

Σ(゚Д゚)
85Delモナー ◆fPymXWHY :02/04/21 23:40
>>73
Formatについて検索してみたらこんなものを発見!
「ヘルプの説明から形式文字列を作成するのは骨が折れます。
例示があると大変助かりますが。」
http://www.nifty.ne.jp/forum/fdelphi/faq/00149.htm

確かにヘルプは分かりにくい。
86デフォルトの名無しさん:02/04/21 23:44
WM_ERASEBKGNDメッセージハンドラで、渡されたデバイスコンテキストを使わずに
元々自分が持ってるCanvasを使って描画するのは問題アリですかナシですか。
まぁ、ヘルプが分かりにくいってのは概ね同意だが…。
別に簡単なもんじゃないし…。
検索すれば、大概は情報出てくるし…。
例も付けてくれてる場合がほとんどだし…。
8886@Ð ë á t h ¹³:02/04/22 00:57
「スレが止まった・・・モナ様怖い・・・」
「板がRuby好きの怒りにあふれておる・・・」
8986:02/04/22 01:45
・゚・(ノД`)・゚・。 2時間経過・・・。
あした起きるとステキな答えが返っているに違いない。今日は寝よう・・・
90デフォルトの名無しさん:02/04/22 01:54
Delphiのヘルプ全般わかりにくい

英語を訳してるんだけど日本語がおかしいところあるし。
( ´D`)つ)´Д`)グリグリ
        ↑
        89
92デフォルトの名無しさん:02/04/22 02:06
RichEdit1に500kbくらいの文字列を貼り付けて
以下のような処理をしようと思ったのですが
固まってしまいます。RichEditで処理できる文字数に制限ってあるのでしょうか?
また解決策などありましたら、教えていただけないでしょうか。

for i := RichEdit1.Lines.Count - 1 downto 0 do
begin
if RichEdit1.Lines[i] = '' then
RichEdit1.Lines.Delete(i);
end;
93デフォルトの名無しさん:02/04/22 02:47
>>92
ものすごいゆっくりだけど動作してたよ。
固まったと思ってもループの中にブレークポイント置けば
そこで停止するはず。
9492:02/04/22 03:07
>>93
レスありがとうございます。
このあとまだfor文を何個か書こうと思ってるのですが
そしたら相当時間かかりそですね。
95鉄拐:02/04/22 03:53
>>94
いくらでも速度を向上させる方法はあるけど、例えば StringListを使ったら?

var
  i:integer;
  wStrList:TStringList;
begin

  wStrList:=TStringList.Create;

  wStrList.Text:=Self.RichEdit1.Text;

  for i:=wStrList.Count-1 downto 0 do
  begin
     if (wStrList.Strings[i]='') then
      wStrList.Delete(i);
  end;

  Self.RichEdit1.Lines.BeginUpdate;
  Self.RichEdit1.Text:=wStrList.Text;
  Self.RichEdit1.Lines.EndUpdate;

  wStrList.Free;

end;
>>95

Text を参照するなら ただの string でいいのでは?
string に読み込んでから、いちいち削除すると再配列に時間がかかるので

前から巡回して、削除する位置をみつけたら、前に見つけた位置の後ろからコピー
して足しこんでいくとよい
>>96 stringで?配列を使うってこと?
たぶん折れもこの場合tstringlistを
使うとおもうけどstringでの処理方法
を具体的におしえてくれませんか?
>>86
渡された デバイスコンテキストを使わないで GetDCを使わないと勿体ないお化けが出ます。

Canvas:TControlCanvasはデバイスコンテキストを持っている訳ではありません
TControl.GetDeviceContext を追いかけると
WM_PAINT以外では GetDCが呼ばれます
VCLはWM_PAINT の中でBeginPaintを使って用意したものをCanvasで利用しています。
OnPaint等で利用しているのはソレです

安全にやるには、この真似をすべきです。
FCanvas.Lock;
  try
  FCanvas.Handle := DC;
   try
・・・・この間で 使うようにする
    finally
   FCanvas.Handle := 0;
   end;
  finally
   FCanvas.Unlock;
end;
100デフォルトの名無しさん:02/04/22 08:27
>>96ではないが…
>>98

str := '';
for i:=0 to StringList.Count-1 do
 if not(i 行目が削除の対象ならば) then
  str := str + StringList[I] + #13#10;

って事なのでは。
文字列の削除をループで行うと N^2 オーダの処理となります

大きな文字列に対しては >>97 の方法を使うべきです

つまり
WINだと #13#10#13#10 という文字を見つけて #13#10 1個に置換
を連続して行うという方法なら N にしか比例しません。
>>100-101
基本的なことでもうしわけないのですが
stringって文字数の上限ないんですか?
103デフォルトの名無しさん:02/04/22 08:43
それよりも…
1) クラス THoge はインターフェイス IAdapter を利用する.
2) インターフェイス IAdapter にはとあるイベントがあり、
そのイベントが発生したら THoge の該当イベントを呼び出したい.

これをどうやって実現するかなんですが、

IAdapter = Interface
 function GetEvent: TMyEvent;
 procedure SetEvent(Value: TMyEvent);
 property OnEvent: TMyEvent read GetEvent write SetEvent;
end;

THoge = class
 property Adapter: IAdapter ... write SetAdapter ;
 procedure DoEvent;
end;

とすると、SetAdapter メソッドで
procedure THoge.SetAdapter(Value: IAdapter);
begin
 if Assigned( Self.Adapter ) then
  if Assigned( Self.Adapter.OnEvent ) then
   Self.Adapter.OnEvent := nil
 if Assigned( Value ) then
  Value.OnEvent := Self.DoEvent;
end;

とするのがセオリーなんでしょうか。
でも、こうすると万が一ユーザーに OnEvent を上書きされてしまうと
困りますよね。
なんか、丁度良いパターンがありそうなのですが。
104デフォルトの名無しさん:02/04/22 08:45
>>102
string 型は 2GB までのテキストを扱えます。
事実上、無制限といっても良いでしょう。



だって、2GBの ○○.txt ってファイルは見たこと無いでしょ。
>>103 OnEventの上書きまで制御したいなら SetOnEventを殺しておけばいいと思うが?
>>100 それでも十分な場合もあるけど、それより高速にしたいなら
SetLength( str , Length(StringList.Text) ); して
n:=0;
for i:=0 to StringList.Count-1 do
 if not(i 行目が削除の対象ならば) then
  StrAdd(str,n, StringList[I] + #13#10);
SetLength(str,n);

でStrAdd
procedure StrAdd(var str:string, var cnt; const astr:string);
var i,len:integer;
begin
len:=Length(astr);
for i:=1 to len do begin
inc(n);
str[n]:=astr[i];
end;
end;
107デフォルトの名無しさん:02/04/22 09:29
「仮想キーコードについてはWIN32.HLPを参照してください」ってヘルプに書いてたのですが、
英語版のWIN32.HLPしかありません。これって日本語版はないのですか?(DEL5)
msdnでplatformSDKを落とす
11086:02/04/22 10:34
>>99 
・゚・(ノД`)・゚・。 起きると本当にステキアンサーが・・・。
         やっぱり、与えられたものを使っとけ!ということなんですね。
         安全な方法まで示していただいてありがとうございます。
111チャチャ:02/04/22 11:32
>>104 *.txtは見たことないが*.logならざらにある。
>>111 どっちにしてもメインメモリにリニアには展開出来なんだから
栞を設定しても、ファイルを閉じてしまうと消えてしまう。
これは仕様なのか?
ブレークポイントなら覚えていてくれるのに。
114ツッコミage:02/04/22 17:20
>>88
ナウシカかよっ!!
>>113
そんなこという人嫌いです
>>115
直らないから仕様って言うんですよ
117113:02/04/22 18:52
>>115
(゚Д゚)ハァ?

>>116
要するにバグなのか?一応Del6Pro(Update2)なのだが。

まあ、ブレークポイントを詳細設定でブレークしないように設定すれば
ブックマークの代わりになるのでとりあえずこれで良しとした。
>>52
'%2.2d'じゃなくて'%.2d'が正当なのでは?
ピリオド『.』が0で埋める指定,2が桁数.
'%2.2d'としたときは最初の2は無視されているだけだと思う.

※ヘルプの d の説明,デフォルトでアキを0埋めるみたいにとれるから不適切じゃないかな.

>>66
プログラミング初心者,特に文系人間には
概念だけ教えられても「はぁ?」ってところはありますよね.
実例を一通り見せてくれないと何がなんだかサパーリ.
ここはそんな方々を救済する場なのね.
(゚Д゚)
浮動小数点型用     :FloatToStrF,FloatFormat
日付型用          :DateTimeFormat、DateTimeToString
整数型用と文字列型用 :Format,FormatBuf
(他にもある)

正直、DelのFormat関数系はわかりにくい。数が多すぎ。
特にVBからの移行組はそう思うだろう。
せっかく関数オーバーロードが使えるようになったのだから、(ある程度)一本化してくれりゃいいのに…
121デフォルトの名無しさん:02/04/22 23:23
関数や手続きの呼び出しにかかる時間を測定したいときなどは
どのコンポーネントを使えばよいのでしょうか?
Turbo Profiler

...ってのは嘘でQueryPerformanceCounter/Frequency Win32API
123デフォルトの名無しさん:02/04/22 23:25
ストップウォッチ!
function TForm1.Button1Click(Sender:TObject);
var
  Time:Cardinal;
  Count:Cardinal;
begin
  Count:=0;
  Time:=GetTickCount+1000;
  
  while GetTickCount < Time do
  begin
    TestFunction;//テスト対象関数
    Inc(Count);
  end;
  
  ShowMessage(IntToStr(Count));
end;

多少問題がある方法だが、厳密な測定が不要な場合はこれでいいでしょう。
>>118
やっぱり突っ込まれたか・・・それでもちゃんと動くから気にしてなかったんだけど
126デフォルトの名無しさん:02/04/22 23:43
>>123
なるほど!て・・
>>124
ありがとうございます。

いろいろ検索してこういののはありましたがエラーが出てしまいました。
http://www.nifty.ne.jp/forum/fdelphi/faq/00020.htm
IndyのTIdHTTP使ってるんだけどGetするとメインスレッドが止まっちゃう。
小さいデータならいいんだけど、5秒以上かかると「ん?」と思っちゃうので
別スレッドで処理したんだけど効果なし。
OnWorkにApplication.ProcessMessages入れても処理が重く感じる。

なんか軽く見せかけるいい方法ないですかね?
>>127
TIDAntiFreezeはどうでしょ?(まだ自分で使ったことはないのですが)
129124:02/04/23 00:03
>>126
漏れの方法は一秒間に何度関数が実行できるかのテストだが、
その方法は関数実行に何msecかかるかのテスト。
つまりその関数の実行に1msecかからないのなら、結果は0になる。
しかもGetTickCountは精度が悪い。(MMSystem.TimeGetTimeは精度こそ高いがGetTickCountと同じ機能。)

そのアプローチで逝くなら122方法がよいと思われ。
procedure TForm1.Button1Click(Sender: TObject);
var
Freq,TimeS,TimeE:Int64;
begin
QueryPerformanceFrequency(Freq);
QueryPerformanceCounter(TimeS);
TestProcedure;//テスト対象関数
QueryPerformanceCounter(TimeE);
ShowMessage( FloatToStr( (TimeE-TimeS)/Freq ) + 'sec' );
end;
130デフォルトの名無しさん:02/04/23 00:39
Formから、スレッド内の変数を操作することは出来ますか?
131教えて君:02/04/23 00:55
動的配列で使える、 UniqueString と同等の手続きってありますか?
お願いします。
132121:02/04/23 01:12
>>129
おお、これはすごい。
出てきた数値も正確っぽい。
ありがとうございます。

他にレス付けてくれた方もありがとうございました。
勉強になりました。
列挙型でいくつかの型が定義されている場合に、
ComboBoxのItemIndexの値を元に、変数にその列挙型の値を
保存したいのだけど.

安易に

変数 := 列挙型(ItemIndex);

と型キャストするもん?なんか気持ち悪くて.
かといって、

case ItemIndex of
Ord(A): 変数 := A;
Ord(B): 変数 := B;
Ord(C): 変数 := C;
・・・
end;

と毎回やるのも冗長な気が.項目数多いと大変だし.

こういう処理のセオリーってなんかありますか?
変数をIntegerで保存すると、あとでその値を判定する際に
マジックナンバーになっちゃったりするのでパスの方向で・・・.
134デフォルトの名無しさん:02/04/23 02:17
FloatToStrFで、FormatにffGeneralを指定したときの
Digitsの役割が分かる人いませんか。
Digitsを変えながらいろんな数値を表示してみたんですが、変化が無いのです。
135デフォルトの名無しさん:02/04/23 02:37
>>133
最初の手法で全く問題ありません。
Delphiは型キャストしやすいように出来ています。
136134:02/04/23 04:06
ムキーッ

  ドカ    ドカ!   ドカーン!
  ( ⌒ )   ((⌒⌒))  ((⌒⌒⌒))
  | | |     | | |     | | | |
 ( ゚д゚)   (( ゚д゚))  ((( ゚д゚)))

ランダムな実数で何百万回試しても、Digitsによる違いが無い!
137デフォルトの名無しさん:02/04/23 04:15
>>133>>135
漏れもこれはいつも悩んで、結局気持ち悪いけど型キャスト使ってた。
でも何度もキャストしてると精神衛生上よくないないんで、

function IntTo列挙型(I:Integer):列挙型;
begin result := 列挙型(I); end;

って関数つくって我慢してます。
138134:02/04/23 04:51
「違いの分かる男」募集。
>>137
どうせ関数にするのなら、範囲チェックを加えてはどうでしょうか?
これだとバグが探しやすくなります。

function IntTo列挙型(I:Integer):列挙型;
begin
 if (Low(列挙型) > I) or (I > High(列挙型)) then
  raise ERangeError.Create('Integer→列挙型の変換エラー');

 result := 列挙型(I);
end;

逆に、単にキャストして返すだけの関数なら、
(Pascal構文ではキャストと関数呼出しの区別がつかないので)
要らない気が。
>>134
ヘルプより
>Digits パラメータには指数部の最小桁数(0 以上 4 以下)を指定する

これ以上のどういう情報が必要?
141デフォルトの名無しさん:02/04/23 11:25
作ったアプリが異常にリソースを消費するのですが...。
起動しただけで20%消費し、ページコントロールのタブシートを
クリックしていくと最大で37%消費します。(子フォームは作成していません)。
デバッグ中にリソースが0になってシステム(WinMe)ごと落ちることもしばしばです。
コンポーネントを使いすぎるとこうなるのでしょうか。
ソースファイルの大きさにも関係ありますか?
>>141
コンポーネントが多いとそんなものです。仕方がありません。
ですが、その話ではさすがにリソース消費量が多すぎると思います。
コンポーネントの動的生成等、節約するコツを覚えた方がいいと思います。

当然ながら、WindowsNT系だとそんな心配はあまりいりませんので
対象OSを変えるのも手です。
>>141 ページコントロールを使うと 見えてないWinコントロールもリソースを消費してしまいます

ページコントロールの切替に応じて、リソースを一時的に返還させる事が出来れば良いのですが
Winコントロールが持っている値の多くは Windowsと通信して得なければいけませんから
それも難しいかもしれませんね

144134:02/04/23 13:34
>>140
その部分、わからないです・・・。予想した動作はあったんですが違いました。
何か1個Digitsで変わる数値の例を教えてもらえないでしょうか。
>>144

>最短の 10 進文字列に変換される+Digits パラメータには指数部の最小桁数(0 以上 4 以下)を指定する
だから、桁数は指定する・・例えば4を指定すれば 1E1は 1E+001 のようになる筈だけど

それよりも最短である事が優先されるから 効果は無いという結論に
ffExponentもDigitsを見てない気がする。
最近のwoodyって日本語が化けないか?
>>147
誤爆でした。m(.。)m
>>147
DebianとDelphiの見間違いですか?
>>149
名前ってより、たまたま開いていたのがdebianスレとココだったんで間違いました。m(..)m
確かに、微妙に見た感じは似てますが・・・。
雑談は、よそでやってくれ!LINUX使いとVB使いは逝ってよし。
152デフォルトの名無しさん:02/04/23 14:44
>>151
Linux使いは仲間に入れてくれよ・・・
ここでコッソリいつも見てるんだから <kylix
>>151
VB使いは理解できるが、LINUXはOSなわけで、
VBとDelphiの比較とは全く違うと思うけDO!!!
154134:02/04/23 15:09
>>145
そう、単純にそれ(指数部の桁数が変わること)を予想していたんですが、変わらないんですよね。
わざわざ値の範囲も指定しているから、意味が無いことはないだろうと思い、いろいろ試してました。

ムキーッ 意味無いのか!?
  ドカ    ドカ!   ドカーン!
  ( ⌒ )   ((⌒⌒))  ((⌒⌒⌒))
  | | |     | | |     | | | |
 ( ゚д゚)   (( ゚д゚))  ((( ゚д゚)))
155134:02/04/23 15:11
>>141
隠れたタブのウィンドウコントロールは非表示にしてCM_RECREATEWNDをPerformすると、
ハンドルを解放してリソースにやさしくなれますよ。
足りないのがGDIリソースなら、また別の工夫が必要Ð ë á t h。
>>151
貴様!Kylix使いを敵に回すつもりか(w
157Delモナー ◆fPymXWHY :02/04/23 18:17
現在Kylixスレが落ちてしまっているので、
このスレでKylixの質問をしてもいいと思われ。
Delphi関連の本が書店にあんまり置いてない・・・
ほとんどC言語とVBばっか。
159デフォルトの名無しさん:02/04/23 21:05
>>158
大須で売ってたYO!
丸善にも売ってた。
どっちかと言えば最近は増えてきた気がするけどな、Del本.
amazon.co.jpに充実してるよ。
ただし立ち読み不可。
162回し者じゃないアルヨ:02/04/23 23:28
インプレスだっけか?の、150のなんちゃらって本、欲しいなぁ。
けっこう、「こーやるのは、こーだ!」って感じで読みやすかった。
立ち読みで暗記してやろうかと思たヨ。
しかし、なんであんなに高いんだか…。
貧乏人には本に3000円以上出すのはためらわれるアルヨ。
163Delフサギコ ◆zE1iiRdQ :02/04/24 00:36
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡< 好きな事に3000円くらいは出した方がいい
  UU""" U U   \_______________
いくら貧乏人でもね

最近、読む暇がイッコもないよ。トホホ
164デフォルトの名無しさん:02/04/24 00:51
あのさ、似たような内容の本が乱立していて、結局どれを読んでも
同じことしか書いていない言語と、
最初に覚えるべき内容が小数の本にきっちり詰まっていて、すぐに
実作業に入れる言語とでどっちを選ぶよ?
独習C#買った。
ハーバート・シルトが独習Delphiを書いてくれれば初心者向け文法解説は一発で済むんだけどなあ。
新しい書き込みがあったのでageます。
Delphiの知識なんてアプリオリに備わってんだから本なぞいらん
168デフォルトの名無しさん:02/04/24 01:07
Memo1.Lines[n]
n行目の文字列を全て選択状態にしたいときは
どうしたらよいのでしょうか?
>>168
Memo1.Select.All(Memo.Lines[n])
SelStart
SelLength
を使う
171デフォルトの名無しさん:02/04/24 01:22
1.どうもGPLだのGNUだのがよく分からない。簡単に言うとどゆことなの?

2.TUIWebBrowserがインストール出来ないので(vclusrがどーのこーの怒られる)、
EmbeddedWbってのをDLしたんだけど、これってくだんのGPLだかGNUなのかな?
>171の1
お前のものは俺のもの
俺のものは俺のもの
>>171
http://hogehoge2001.tripod.co.jp/note-delphi.html
UIWebBrowserは、このサイトの言うとおりに
SHDocVw_TLBに書き直してみたらインストール出来た気がする。
ちなみに、Delphi6Personalです。
>>171
http://piza2.2ch.net/tech/kako/1001/10010/1001035627.html

んで自分の覚えだとrequiresコンパイル指令をてきとーに書き換えた。
SHDocVw_TLBも要るね。
175171:02/04/24 01:36
>>172
うーん。言いたいことは分かる気がする(^^;。よーするに、「これ使ったら
ソース開示しろよ!」ってことなのかな?って勝手に思ってたんだが…違うかな。

>>173
どもです。過去ログ読んで、それ試してみたんです。そこ(SHDocVw_TLB)は
パスしたんですけど、「vclusrが作成出来ない(かな?)」って怒られるんですよ。
トホホ。ま、違うの試したいと思ってますが…。
176171:02/04/24 01:41
>>174
すれ違っちゃいましたね…。

ところで、UIWebBrowserの作者さんのページは作者さんが作ったエディタで
作ってるんですよね。
あの…「なんとも言えない雰囲気」の…。微妙にカラーリングが…。
バックと文字の色と大きさの…。
いえ、別にだからなんだっていうワケじゃないんですが(^^;。
>>176
俺もはじめて行ったときは、クラクラした。
178173:02/04/24 02:08
こんな事でつまずいたの俺くらいだろうけど、ついでだから書いておく。
[フォルダにパスを通すの巻]
コンポーネントを追加する際、コンポーネントの置いてあるフォルダにパスを通して置かないと、
そのコンポーネントを実際に使ってコンパイルする際に何とかが無いとかって怒られます。
パスを通す方法は、メニューの[ツール | 環境オプション]を選択して、
現れたウインドウのライブラリタブを選択、ライブラリパス(B):の右の[...]ボタンを押す。
で、現れたウインドウの真ん中あたりの右端にある[...]を再び押す。
で、コンポーネントの有るフォルダを選択して、あとは[OK]を押していって閉じる。
これでOKです。
と。
Σ(゚Д゚)
180173:02/04/24 02:11
追記!
最後[OK]押す前に[追加]押さなきゃダメです。
>>178
よくわからんが、意気込みは気に入った!
Σ(゚Д゚)
183173:02/04/24 02:15
Σ(゚Д゚)
Σ(´Д`ズガーン
185Delフサギコ ◆zE1iiRdQ :02/04/24 02:34
      
   ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < ・・・・・
   U  つ∀ \____________
 〜ミ  ミ ┴
   ∪''∪ 
  その昔、そちらのHTMLEditorの使い勝手にも
  クラクラきたような気がするです。確か
  >>176-177
186Delフサギコ ◆zE1iiRdQ :02/04/24 02:42
      
   ∧,,∧    />>178そうすると
  ミ,,゚Д゚彡 < コンポーネントをフォルダごとに
   U  つ∀ \管理しようとすると
 〜ミ  ミ ┴   大量のパスを通す事になって鬱になる罠
   ∪''∪ 

その罠を回避するには
Packageを作って、各フォルダあるコンポを追加して
Packageのユニット出力ディレクトリを指定して
そこだけに環境オプのライブラリパスを通せば
沢山のコンポをひとつのライブラリパスで
管理できます。

>>173、みんな通ってきている道だと思われ
>>176
あれって、全然説得力無いような・・・。
宣伝よりむしろマイナスになっているような・・・。
TUIWebbrowser のサイトってどこ?
気になる…
189173:02/04/24 12:29
>>Delフサギコさん
なるほど、そんな方法が有ったんですね。
勉強になったです。
Packageとか作ったこと無かったので思いつかなかった…

>>188
一応誤解の無いように言っておくと、UIWebBrowser自体は、
とても優秀なコンポーネントです。
ガイシュツかもしれぬが聞いてみる
TCustomGrid(とその継承オブジェクト)の
インプレースエディタの替わりにドロップダウンコンボやチェックボックスを利用する方法教えてくれよぉ
191Delフサギコ ◆zE1iiRdQ :02/04/24 13:12
   ∧,,∧    /
  ミ,,゚Д゚彡 < 蛸薬師へ逝ってよし
   ミつ つ゛  \UIWebBrowserはデフォで
 @ミ  ミ      インストしていい感じのコンポです。
   ∪''∪  
 …あのページは...ある意味サイケなセンスがあるかも…
   70年代チックなのだろうか。

>>189さん
がんばってください。相当試行錯誤しました。
いまだに、TGIFImageとか特定のコンポ(どうやらFormを含むコンポ)だけは
コンポーネントフォルダにパスを通さなければならなかたりしたり…
します。
実際に設定するとき、ややこしいトコもあるので
また言ってくださいまセ

>>190さん
DelphianでMOStringGridを見たらいいんでないかしら?
>フサギコ
>MOStringGrid
さっき見たのだがDCUしか付いていない(しかもDel5用まで)
Del6使いなのでソースがないとお手上げだ( TДT) ゴルァ!
193デフォルトの名無しさん:02/04/24 14:35
UIWebbrowser サイトみたけどさー
もう少しデザイナーとしての才能のかけら、いや、
微塵ぐらい見えてもいいんじゃないかしら。
たとえ本職がプログラマでも…
>>193
二年前の折れのページよりはマシ。

そんな事より、Delphiって将来性あるかな?
195デフォルトの名無しさん:02/04/24 15:22
あのう、コンソールアプリで以下のようなコードを書いたのですが、
エラーが発生してしまうのです。
TStringList に 手続き番号および、手続きを登録します。
で、入力された手続き番号に対応する手続きを呼び出すというものなのですが…

{ 手続き番号 }
const ProcID1 = 1;
const ProcID2 = 2;

{ 手続き }
procedure Proc1; begin WriteLn('Proc1 Called.'); end;
procedure Proc2; begin WriteLn('Proc2 Called.'); end;

{ 手続きの型 }
type TProc = procedure;

{ 手続きリスト }
var ProcList:TStringList;

{ リストに手続きを追加 }
procedure AddProc(ID:Integer; Proc:TProc);
begin
ProcList.AddObject( IntToStr(ID), @Proc);
end;

{ 指定番号の手続きを得る }
function GetProc(ID:Integer):TProc;
var
I:Integer;
P:Pointer;
begin
I := ProcList.IndexOf( IntToStr(ID) );
P := ProcList.Objects[I];
Result := TProc( P^ );
end;

{ 1か2を入力すると、対応する手続きを呼び出す }
var
I: Integer;
Proc: procedure;
begin
ProcList := TStringList.Create;
AddProc( ProcID1, Proc1);
AddProc( ProcID2, Proc2);

ReadLn(I);
Proc := GetProc(I);
Proc;
ReadLn;
end.
196デフォルトの名無しさん:02/04/24 15:28
そういえば、
function Hoge: procedure;
と宣言されている場合に

Hoge;

と書いた場合、Hogeによって返された手続きは実行されるのだろうか…
Hogeによって返される手続きが引数を持つ場合は

Hoge;

Hoge(Param);
で違いが生じるけど。

明確にするには、単に Hoge 関数を実行するだけなら
Hoge;

Hogeによって返された手続きを実行したいのならば
Hoge();

と書くしかないのかな。
197デフォルトの名無しさん:02/04/24 15:29
いや Hoge() だと、
"Hogeによって返された 関数()"
ではなく、"Hoge() によって返された関数" になるのか…

とすると、

Hoge()();

とかくのが正しいのかな?
もしくは (Hoge)() とか…
あれ?これだけでも「互換性がありません」といわれる…

type TProc = procedure;

procedure Proc;
begin
 WriteLn( 'PROC CALLED.' );
end;

function GetProc:TProc;
begin
 Result := Proc;
end;

var
 P:TProc;
begin
 P := GetProc;
 P;
 ReadLn;
end.
P := GetProc;

を、

P := GetProc();

としたらコンパイルできた。どうしてだろう…
201無責任だが:02/04/24 15:44
function GetProc:TProc;  のように訳が判らなくなる関数を書かない方がいい やりたいなら

procedure GetProc(var ret:TProc); のようにして retで返すようにする方が判り易いだろう

202デフォルトの名無しさん:02/04/24 15:44
    貴様の将来性は貴様次第
    Delphiの将来性も結局貴様次第>>194

    ̄ ̄ ̄ ̄ ̄ ̄)ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       Å,,,,,Å
      ミ悲Д゚ ミ         γ      γ
.      ミ(゙゙"~H~)            γ
      ミミ|  ||          ......................................
    彡ミ(___)._)         .::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::........
     ~"''"""゛"゛""''・、     ...:::::;;;''        ';;;:::::.......
 ""゛""''""""゛゛""''' "j'   ...::::;;;''            '';;;::::::.........
 :::::ヘ :::::....ヽ :::;;;ノ  ::(  ....::::::;;              '';;;::::::::::.......
 ::  ゝ  :::::......ノ:;;../  ~~^^ ~~~~~^^^~  ~~^^~~~^ ~~~^^~~~~
>>202 つれたよ ケケ!
204194:02/04/24 16:27
>>202
あー、なるほど。レスthx。
205デフォルトの名無しさん:02/04/24 16:28
ラベルコントロールなどで、数値項目をFormatFloatを使用して3桁毎に区切って
表示したのですが、その項目(Caption)をStrToIntで変換して使おうとすると
カンマが邪魔して変換できません。なにか良い方法はございませんでしょうか。
>>205
変換する元の数字使えば?
カンマが邪魔なら
削除すればいい。
それぐらいは思いつくんでないかい?
>>162-163
ちょうど昨日買ってきてたよ。
知ってたところもあるけど、けっこう知らなかったこともいろいろあって
まだまだ初心者な漏れにはいいと思った。
インターネットの章がちょっと寂しすぎる気もするが・・・・。

DelフサギコがDelphi相談室の方で聞いてたFDDのエラーの回避法も載ってたよ(笑
ちなみに、2800円だから、3000円以上出す必要は無いよ(w >>162
209173:02/04/24 19:23
>>191
フサギコさん
なるほど。色々とあるのですね。
とりあえず、色々やってみますです。
210nanasi:02/04/24 20:52
2バイト文字に対応した RightStr ってどうすれば良いですか?

Right('ばかまるだし',3)

とすると、「セし」となってしまします。
「るだし」にしたいのですが。
>>210
そう言う用途ならWideString使えば(・∀・)イイ
212デフォルトの名無しさん:02/04/24 21:39
DirectXインストールできなくて鬱・・・

Delphi6.0を昨日ボーランドからダウソしてインストールしたんだが
とりあえず何をすればいいのかわからん・・・(プログラミングした事無し)
どこかわかりやすいページあったら教えてください。
213デフォルトの名無しさん:02/04/24 21:52
function Right(Str:widestring; Count:Integer):string;
begin
 Result := Copy(Str, Length(Str)-Count+1, MaxInt);
end;
214195:02/04/24 21:59
どなたか >>195 の謎について教えてください…(;´Д`)
{ 指定番号の手続きを得る }
function GetProc(ID:Integer):TProc;
var
I:Integer;
P:Pointer;
begin
I := ProcList.IndexOf( IntToStr(ID) );
P := ProcList.Objects[I];
Result := TProc( P );
end; ↑^がいらないのでは。

216Delフサギコ ◆zE1iiRdQ :02/04/24 22:17
FDDのエラーの回避法も載ってたよ(笑
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< なんですとーーー・
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪   やっぱTips本は
       何冊でも欲すいね。
 エキスパギグの8000円超えはちょっと買わなかったんだけど...


> function RightStr(const AText: string; const ACount: Integer): string;
> begin
> Result := Copy(WideString(AText), Length(WideString(AText)) + 1 - ACount, ACount);
> end;
RightStrはVCLで元々WideString扱いされると思うのだけど。。。
VB互換関数ってことじゃなかったかな?

>>212
本買ってきた方がいいとおもうよ。
217195:02/04/24 22:19
>>215
あああああああ
本当だ…
Pの指す物を TProc と解釈させると言う意味だと思ってました。
そういえば手続き型はポインタであるとヘルプに書いてありましたね。

どうもありがとうです!
218195:02/04/24 22:27
たびたびすみません.

TProc 型を procedure of object にかえると
以下のコードの Proc2 := TProc( P ); の部分でコンパイルエラーが起こるのですが…
なぜなのでしょうか??

type
 TProc = procedure of object;
 THoge = class
  procedure Proc;
 end;

procedure THoge.Proc;
begin
 WriteLn('HELLO');
end;

var
 Test:THoge;
 P:Pointer;
 Proc1, Proc2: TProc;
begin
 Test := THoge.Create;
 Proc1 := Test.Proc;
 P := @Proc1;
 Proc2 := TProc( P );
 Proc2;
 ReadLn;
end.
メソッド型はポインタ型にはキャストできない。
TMethodをヘルプとかで調べると意味がわかるかと。
220デフォルトの名無しさん:02/04/24 22:40
直接出来ないのなら、
TMethodRec = record
 Method:TProc;
end;
PMethodRec = ^TMethodRec;
として、

var
 P :TMethodProc;
 Ptr:Pointer;
 Proc:TProc;
begin
 New(P);
 P^.Method := Hoge.Proc;
 Ptr := P;
 Proc := PMethodRec(Ptr)^.Method;
 Proc;
end.

ではどうだろう…
やってみよっと。
 
221nanasi:02/04/24 22:49
>211,>213

さんくす。素晴らしい。
>>195 結構面白かったですよ(PProc=TProc^ではうまくいかなかったとか・・・)
以下のコードはちゃんと動くと思います
const ProcID1 = 1;
const ProcID2 = 2;
type
 TProc = procedure;
 TProcObject = class
 private
  FProc: TProc;
 public
  constructor Create(aProc: TProc);
  property Proc: TProc read FProc write FProc;
 end;
constructor TProcObject.Create(aProc: TProc);
begin
 FProc:=aProc;
end;
procedure Proc1; begin WriteLn('Proc1 Called.'); end;
procedure Proc2; begin WriteLn('Proc2 Called.'); end;
procedure AddProc(ProcList: TStringList; ID:Integer; Proc:TProc);
var
 ProcObject: TProcObject;
begin
 ProcObject:=TProcObject.Create(Proc);
 ProcList.AddObject( IntToStr(ID), ProcObject);
end;
function GetProc(ProcList: TStringList; ID:Integer):TProc;
var
 I:Integer;
begin
 I := ProcList.IndexOf( IntToStr(ID) );
 Result:= TProcObject(ProcList.Objects[I]).Proc
end;
procedure ReleaseProcList(aProcList: TStringList);
var
i: Integer;
begin
for i:=0 to aProcList.Count-1 do
 aProcList.Objects[i].Free;
aProcList.Free;
end;
var
 ProcList:TStringList;
 ProcID: Integer;
 Proc : TProc;
begin
 ProcList := TStringList.Create;
 AddProc(ProcList, ProcID1, Proc1);
 AddProc(ProcList, ProcID2, Proc2);
 repeat
  ReadLn(ProcID);
 until (ProcID=1) or (ProcID=2);
 Proc := GetProc(ProcList, ProcID);
 Proc;
 ReleaseProcList(ProcList);
 Readln;
end.
223デフォルトの名無しさん:02/04/24 23:35
命令と命令の間を時間をあけたいのですが、どうすればよいのですか?
5秒待ち
n := GetTickCount;
while(GetTickCount - n < 5000);
あれ・・・もう解決してたのか・・・
>>224
ビジーループやめれ(´д`;)
Sleep(5000);とか
(スレッド止まるが)
>>195
おかげでTStringList.AddObjectのAObject引数に
ただのポインタでも入れられることを知りました・・・今まで試したことなかった

サンクス
228今レス読んでる途中:02/04/24 23:51
>>208
いや、「プログラミング関係の本は大抵3000円あたり〜上はキリ無し」
だって意味だけど。
その本が3000円とは書いてないんだが。
あまり面白くないツッコミはしないように。
じゃあつっこまれるような文章書かないように。
230デフォルトの名無しさん:02/04/25 00:06
>>229
MSみたいな論法だな(藁
>>228 あの文章からどうすればそう解釈できるのかー
228=230 (ヒャクパー)
(´-`)。o ○ (つまんねーことウダウダやってんなよガキ)
オヤジがAA使ってんなよ。キモ
personal出てからお子ちゃまが増えつつあるな...
俺はもうC#逝くからどうでもいいが
(´-`)。o ○ (オイ、この寒いツッコミくらって激しくむかついてるらしい
ガキ(229=231=232=234)をどうにかして、delphiの話に戻してくれよ(藁)
バイバイ
>>233 >>236
無視できないの?大人気ない。
そういうレスが一番ガキを呼び込んでしまうのがわからないのか・・・。
>>238
ってレスをすることによって執着しなくなることが分からないのか…。
執着しなくなるって?
241239:02/04/25 00:21
終着だ(藁
242238:02/04/25 00:23
 231=232=234=237デシタ!
ガキはほっとけ。
244Delフサギコ ◆zE1iiRdQ :02/04/25 00:32
 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | 208=229かしら。
 \_ ________________
    |/
   ∧,,∧
  ミ,,゚Д゚ミy━~~
   U   ミ
 〜ミ   ミ
   U''U
 その本に載っているって事は、結構、ポピラーなTipsなのかと
 思ってTipsサイトを検索してみたらBorの
http://www.borland.co.jp/qanda/delphi/d0000064.html
http://www.borland.co.jp/qanda/delphi/d0002383.html
 "しか"ヒットしなかった(FDELPHIもあったけどね)
どっちも微妙に俺の欲しいTipsとは違ってた。

ほかの場所では扱ってないTipsが載っているのは
なかなかよい本のようですね。
Tipsって、どうなんだろう。先に作ったから他の誰も載せるなって
主張が通っちゃうと変な気もするし。
かといってコピペ掲載しほうだいなのも変だし。
Tips ってつくるもんなんか

Tipsの著作権主張するくらいなら、はじめから公表するな
Tips本は暇があって、WEBにアクセスできればだれでも書けそう

まぁ、Tipsは陳腐化した時点でTipsでなくなるが
使用許諾コードって作成したexeに埋め込まれてるのかな?
248デフォルトの名無しさん:02/04/25 03:12
こういうのってエラーの原因になることって有りますか?
全く問題無いですか?
Node.data := Pointer(2); //NodeはTTreeNode
こういう風にポインタに整数を格納して、
別の手続きで
if Node.data = Pointer(2) then
て感じで使うの。
または、
i := integer(P); //PはPointer
URL := SL1.Strings[i]; //SL1はTStringList;
みたいな感じ。
とりあえず、これが原因のエラーは起きていないみたいだけど。
型キャストしたintegerが、そのまま別の手続きでも取り出せるから
便利で使ってしまっているのだけれど。
>>244
「クラスを作りたい」の難易度が4/5だから
入門者が2冊目に買うにはいいかも
たぶんそれ以上の人には物足りないかも
>>248
君とは仕事したくない。
251248:02/04/25 05:32
>>250
大丈夫。
趣味でやってるだけだから。
まだ、フリーソフトとか作ったことないけど、
作るとしても怪しげなコードを含むものは出さないよ。
てか、やっぱまずい?
行儀の悪いコードの典型じゃない?
自覚しているならやめておいたほうがスマートかと。
253248:02/04/25 07:09
>>252
なるほど。
とりあえず、見本と呼べるようなエレガントなソースを一度見てみたい。
どこかに無いですか?
あんまり長くないやつで、とりあえずこれで動くよってのじゃなくて、
例外処理とかもちゃんとしてあるやつ。
>>253 VCLのソースを見たら? あるいはソース付きのフリーコンポーネントとか
先生!>>169がうまくいきません
なぜなら、そんなメソッドもプロパティも存在しないからだ。
>>255(=168?)
procedure TForm1.SelLine(aMemo: TMemo; aLine: Integer);
const
 nEOL = 2;
var
 i: Integer;
 nStart : Integer;
begin
 nStart:=0;
 for i:=0 to aLine-1 do
  nStart:=nStart+Length(aMemo.Lines[i])+nEOL;
 aMemo.SelStart:=nStart;
 aMemo.SelLength:=Length(aMemo.Lines[aLine]);
 aMemo.SetFocus;
end;
ちょっと鈍くさいかも知れんけど・・・とりあえず動きます
258デフォルトの名無しさん:02/04/25 13:01
グリッドの内容を一発でクリアする事はできないのでしょうか?
>>258
Grid.free();
260デフォルトの名無しさん:02/04/25 15:01
>>259
freeで開放したのち、Createでグリッドを作成しなおすのでしょうか?
VBだとGrid.Clearで空のグリッドができたのですが...
=使えねぇーーー。
>>260
DelphiはVBと違ってまともなコンパイラですから1個づつクリアして下さい
 そうしたからといって別に遅くなる訳ではありませんから
>>260
よく解らないのですが、貴方にとってFree; Create; に何か問題があるのでしょうか?
ならば、262氏が語っているように、1つづつクリアして行く方法もありますが、こっちの
方がVBに慣れた人には苦痛でしょう、より多くのキーパンチを必要としますから。

私の場合は、セル1つづつクリアしていては面倒なので行単位で消します。
もっと云えば、クリアする時=次のデータが入ったときと考えると、
差分の行だけをクリアすれば良い事になります、この辺りを考えるのが
面倒なら free; create; した方がバカチョンで消せるので楽でしょう。

クリアする一例
var
  i:integer;
begin
  StringGrid1.Rows[0].BeginUpdate;

  for i:=0 to StringGrid1.RowCount -1 do
    StringGrid1.Rows[i].Text:='';

  StringGrid1.Rows[0].EndUpdate;
264デフォルトの名無しさん:02/04/25 17:40
>>258
for文で消せば?
これが一番楽
265デフォルトの名無しさん:02/04/25 19:11
262,263,264の方、ありがとうございました。
Delphiでは263の方の例題のようにやるのが一般的なのですね。
楽なやり方ばかり考えてはダメですね。
266デフォルトの名無しさん:02/04/25 19:27
何かキーが押されているか判断するときに、シフトもいっしょに押されているか調べるときには
どうすればいいですか?
267デフォルトの名無しさん:02/04/25 20:01
>>266
なんか聞き覚えのある質問だなぁ。
268デフォルトの名無しさん:02/04/25 20:04
>>267
どういう意味ですか?
>>268
過去ログ読めよ(゚Д゚)ゴルァ! という意味です。
>>269
なるほど。わかりました。
271266:02/04/25 20:47
探したけどなかったです
>>271
先ずヘルプを調べる(今回は OnKeyDown )それで分からなかったら質問する
というのが望ましいです
273266:02/04/25 21:00
>>272
すみません、ヘルプ読んだんだけど意味がわからなくて(;´Д`)
>>273
フォームにエディットとラベルを貼り付けて
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
s: String;
begin
if ssShift in Shift then s:='[Shift]+' else s:='';
Label1.Caption:=s+IntToStr(Key);
end;
↑このコードをEdit1のOnKeyDownに書いてください

うまく動作するキーとそうでないキーがあることなども分かると思います
(Tab、CapsLock、テンキーの数字などは駄目だったりとか)
275266:02/04/25 21:24
>>274
おぉ、ありがとうございます。
276デフォルトの名無しさん:02/04/25 21:25
時々、Ctrl+クリック でも
他ユニットの宣言部に飛んでくれない場合があるんだけど、
どうしてだろう。ちゃんとパスは通っているのに…
277デフォルトの名無しさん:02/04/25 22:24
http://hogehoge2001.tripod.co.jp/note-delphi.html
で、


Indy

受信中のデータの取出し
TIdHTTP.Getに渡すストリームの Write 関数をオーバーライドすれば適当に取り出せる。


と書いてありますが、オーバーライドとはなんでしょうか?
ストリームとはTStringStreamのことでしょうね。
278デフォルトの名無しさん:02/04/25 22:34
279デフォルトの名無しさん:02/04/25 23:17
オバQ
280
Delphiのプロジェクトから仕様書のようなモノを吐いてくれるツールって
ありませんか?
仕事で使うんじゃないんで出来れば、フリーソフトがいいです。
(安ければシェアや製品版でも良いですが)
(´-`)。o ○ (自分で作るって選択肢は無いのだろうか…)   
>>281
C#には標準でついてるよ。
>>282
選択肢としてはあるけど、今は時間ないから。

>>283
C#って素晴らしいのですね。

>>284
ありがとうございます試してみます!
>>257

procedure TForm1.SelLine(aMemo: TMemo; aLine: Integer);
begin
aMemo.SelStart := aMemo.Perform(EM_LINEINDEX,aLine,0);
aMemo.SelLength := Length(aMemo.Lines[aLine]);
aMemo.SetFocus;
end;
>>286
サンクス!
>>286
おかげで Messages.pas が宝の山だということに気がつきました
・・・結局はMSDNの世話になるということも分かりました
290野球はゴミ ◆T.Oo2lOQ :02/04/26 01:21
>>287
野球馬鹿、1レスにまとめろ。無駄レスすんな。ハゲ。
291デフォルトの名無しさん:02/04/26 01:22
Button1を押して行っている処理をButton2を押して終了させるには
どうしたらよいのでしょうか?
また、Button1を押してfot文を行っているとき、
他のボタンからfor文の一回分をスキップさせることは出来ますでしょうか?
>>290
どうして俺がハゲだということを知っている?
        /⌒彡     〜 ,〜
       / 冫、)    ξ〜~
     //  ` /)――┛
    / ||   「 |´・・・・・・喧嘩すんじゃねぇ。
   < , | ||ニ⊃ J   _
   ,/_|ソ |/ ̄ ̄ ̄ヽ|
  |     |: 大 江 戸 :|
  `ー――|ヽ. . . . . . ノ|
素人考えで for文の中にif文突っ込んでそこで判断すればいいと思うッス。

例えば ボタン2を押すとフラグが立って、for文の最後では毎回そのフラグをoffにしておく

for i:=0 to 10 do
if flag=true then begin
処理文
end; // if end
flag:=false;
end;//for end

とか
とおもったけどダメだなこれ
296素人:02/04/26 01:29
>>291
自前のフラグ boolean作って、ループなりなんなりで、
それが立ったら処理やめるって仕様にすんのはどうよ?
Application.ProcessMessages入れてさ。
297素人:02/04/26 01:31
かぶった…



ガク…
        /⌒彡     〜 ,〜
       / 冫、)    ξ〜~
     //  ` /)――┛
    / ||   「 |´   いいじゃねぇか。
   < , | ||ニ⊃ J   _   俺なんかレス書いてる途中で
   ,/_|ソ |/ ̄ ̄ ̄ヽ|     お前のレスだ。
  |     |: 大 江 戸 :|
  `ー――|ヽ. . . . . . ノ|
299デフォルトの名無しさん:02/04/26 01:40
>>291
>Button1を押して行っている処理をButton2を押して終了させるには
>どうしたらよいのでしょうか?

これはもうちょっと具体的な話が欲しいな。アプローチが複数あるから。


>また、Button1を押してfot文を行っているとき、
>他のボタンからfor文の一回分をスキップさせることは出来ますでしょうか?

これは、forの中にApplication.ProcessMessagesを入れることで解決できる。

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to 100 do
begin
{何らかの処理}

Application.ProcessMessages;
if Button1.Tag = 1 then
begin
Button1.Tag := 0;
Continue;
end;

{なんらかのスキップしたい処理}
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Button1.Tag := 1;
end;

もし、最初の質問が同じようにforを使うものならば、
Continue;をBreak;に変えれば終了を実現できる。
300299:02/04/26 01:43
コード書いてる間に上でレスがついてるな。
まあ、いいか。
それにしても、<PRE>タグくらいは使えるようにして欲しいな。
301291:02/04/26 03:57
>>294
>>296
レス有難う御座います。
速い処理にはこれ使います。
>>299
説明不足スマソです。
Button1を押したときスレッドを使ってTIdHTTPでTRichEditにソースを取得しています。
スキップの説明ありがとうございます。
そうすればいいのかー。助かります。
302デフォルトの名無しさん:02/04/26 04:00
>>276
私も!
303デフォルトの名無しさん:02/04/26 04:01
相手から接続要求があったときに
相手のIPアドレスを取得するにはどうしたいいのでしょうか?
アクセス制限機能をつけたいのです
windows2000 delphi6personal serversocketを使用しています
.libファイルってどうやって書いたらDelphiで使えるのかなぁ。
305208:02/04/26 22:47
>>244 >229は漏れじゃないよ。このスレではこれが2度目のカキコ。
>294の言うとおりで、この本は基本的に入門者向けの本。
説明はあまり難しいことには触れてないし、Tipsも基本的なものが多い(と思う)
漏れはまだまだ初心者だから役に立つの多いけどね(笑

ただ、Tipsって使う人のレベルが高い低いよりも、単に知ってるかどうかの要素が
大きいからな。どんな熟練者でも知らんことは知らんだろうし。
てことで中を見てみて、欲しい項目が載ってれば買ってもいいかと(笑
306208:02/04/26 22:50
>294じゃなくて、>249だった・・・・・
307デフォルトの名無しさん:02/04/26 23:25
Buttonが10個あって、全部を処理したいんだけど、ループじゃ無理?

var
Int: Shortint;
begin
for Int := 1 to 10 do
Button Int .Caption := '〜〜';


っていうような感じでやりたいんだけど、もちろん(?)エラーでます。
一つずつ書くしか無理?
配列でやれば何とかなる
309かっこつけないで:02/04/26 23:31
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button

ってやる!
>>303
OnClientConnectのSocket
311デフォルトの名無しさん:02/04/26 23:39
>>307
配列使うとか、パネルに乗っけてControls使うとか。
ハァー トカトカ
312>307:02/04/26 23:44
var
Int: Shortint;
cp: TComponent;
begin
for Int := 1 to 10 do
cp := findcomponent('button'+IntToStr(int));
if cp <> nil then
TButton(cp).Caption := 'チンコ';
(´-`)。o ○ (あーあ、ソース書いちゃったよ…)
(;´Д`) チンコ・・・ハァハァ
315素数2:02/04/26 23:56
>>312 勉強になりました。
>>312
そのやりかたはオススメできない
なぜなら・・・
>>316
正解
318デフォルトの名無しさん:02/04/27 11:57
>316-317
何が駄目なんだ?別にいーじゃん。
FormCreateで最初の1回だけ配列に入れておく方法として
使うなら良いと思うよ
わけわからん
チンコが気に入らないみたい・・・
for i := 0 to ComponentCount-1 do
 if Components[i] as TButton then
  TButton(Components[i]).Caption := 'マンコ';
俺なら、Buttonを配列で定義したりするけどなぁ。FormCreateとかで
ださっ
VBに帰れ
>>322
as じゃなくて is だろ。英語勉強汁。
つうか、
for i := 1 to 10 do
 Buttons[i] = TButton(FindComponent('Button'+IntToStr(int)));
をコンストラクタでやっとけばいいのでわ。
TPageControlのOnChangingイベントにおいて、選択されようとしている
TabSheetのIndexを知るにはどうしたらいいですか。
327327:02/04/27 15:48
 pCharを含む構造体をファイルに保存するルーチンを作っています。
f: File of 構造体名
という感じで型付きファイル型にWriteを使っているのですが、
Readで読み直してみると文字列が保存されていません。
どうすればいいでしょうか
>>327
PChar は文字列を指すポインタ
ポインタを保存しても文字列そのものは保存されるわけではない
329名無し募集中。。。:02/04/27 16:08
>>327
文字列の長さを決めとけばいいと思う
>>326

MLの過去ログから

uses
Commctrl;

procedure TForm1.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
var
PT:TPoint;
HI:TC_HITTESTINFO;
ret:integer;
begin
GetCursorPos(PT);
PT := PageControl1.ScreenToClient(PT);
HI.pt := PT;
ret := TabCtrl_HitTest(PageControl1.Handle,@HI);
if (HI.flags and TCHT_ONITEM) <> 0 then
Label1.Caption := 'On Tab of '+IntToStr(ret);
end;
>>326
OnChangeでActivePageIndex
>>330

それだとtabキーによる選択に対応できないのですが。
>>332

誤:tabキー
正:キーボード

です。すいません。
>>333

キーボードって、矢印キーのこと?
そうなら、どっちの矢印キーが押されているかで ActivePage.PageIndex
からどっちに行くか簡単にわかるでしょ
>>331

まだtabが切り替わっていない時に、切り替わるtabに対してある処理を
したいのです。そのためOnChangingである必要があります。
それだとtabが切り替わった後になってしまいます。
336327:02/04/27 17:03
>>328
>ポインタを保存しても文字列そのものは保存されるわけではない
 やっぱりそうですよね…。
でもStringだと保存できないし、ShortStringだと足りないかもしれないし…。
方法はありませんか?

>>329
>文字列の長さを決めとけばいいと思う
 それはどうすれば良いのでしょうか?
337334:02/04/27 17:08
>>333

uses
Commctrl;

procedure TForm1.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);

function GetVK(VK:Integer):Boolean;
begin
result := (GetAsyncKeyState(VK) and $8000) <> 0;
end;

var
PT:TPoint;
HI:TC_HITTESTINFO;
ret:integer;
begin
if GetVK(VK_HOME) then
Label1.Caption := 'On Tab of '+IntToStr(0)
else if GetVK(VK_END) then
Label1.Caption := 'On Tab of '+IntToStr(PageControl1.PageCount-1)
else if GetVK(VK_RIGHT) then
Label1.Caption := 'On Tab of '+IntToStr(PageControl1.ActivePageIndex+1)
else if GetVK(VK_LEFT) then
Label1.Caption := 'On Tab of '+IntToStr(PageControl1.ActivePageIndex-1)
else begin
GetCursorPos(PT);
PT := PageControl1.ScreenToClient(PT);
HI.pt := PT;
ret := TabCtrl_HitTest(PageControl1.Handle,@HI);
if (HI.flags and TCHT_ONITEM) <> 0 then
Label1.Caption := 'On Tab of '+IntToStr(ret);
end;
end;
>>334

OnKeyDownと組み合わせて処理するという事ですか。分かりました。
有り難うございました。
339338:02/04/27 17:24
>>334

じゃなくてそうするのですね。やってみます。
340338:02/04/27 17:27
>>339

誤:>>334
正:>>337
341デフォルトの名無しさん:02/04/27 18:46
入力されたパスがファイルであるかフォルダであるかを判断する方法を教えてください。
拡張子がなければフォルダ、なんて単純な処理をすると大変なことになるかとおもいます。
342デフォルトの名無しさん:02/04/27 18:52
if DirectoryExists( Path ) then
 { Path はディレクトリです }
else
 if FileExists( Path ) then
  { Path はファイルです }
 else
  { Path に該当するものは存在しません }
343341:02/04/27 19:12
全然信用できなかったのですが、やってみました。
拡張子のないサイズゼロのファイルを、ファイルとして認識しました。
名前をf.txtとしたフォルダをフォルダとして認識しました。
とても嘘くさかったので、あっけにとられました。
トイレ行って良いですか?
>>343
だめ、と答えたら行かないのか小一時間問い詰めたい。
問い詰め終わったら行って良し。
>>341
一生トイレに入っといれ。
346334:02/04/27 20:14
>>341
342にサンクスコくらいしれ
レベル低すぎる、HELP読まない奴多すぎる、google使わない奴多すぎる。
>>347 ウザすぎる。
とりあえず>>343は失礼すぎるので氏ね
350デフォルトの名無しさん:02/04/27 20:26
とりあえずこれでも見て落ち着けよ。
http://coke.rotten.com/all-kings-horses/0002
>>343
信用できないなら初めから聞くな。
礼儀のなっていない奴は、逝ってよし。
ファイルのパスがShortStringに収まりきらないことはありますか?
深く掘ればあり得る。
354デフォルトの名無しさん:02/04/27 22:06
winsocKでステルスとかハーフスキャンのプログラムを作成したいのですが。
355デフォルトの名無しさん:02/04/27 22:10
winsockでハーフコネクトとかステルスとかのプログラムを作成したのですが。
356期待されてるレス:02/04/27 22:16
>>354
そうですか。頑張ってくださいね。

>>355
わあー。それはよかったですね。
>>354
許可する。早速取り掛かるように。

>>355
却下する。>>354が作るから君は別のものを作りなさい。
358デフォルトの名無しさん:02/04/27 22:21
355.誰もわからないんだー、世の中馬鹿ばっか
超難問だね。
360デフォルトの名無しさん:02/04/27 22:24
インターフェイスにプロパティを定義したいのですが、

IHoge = Interface
 property OnEvent:TEvent;
end;

としたいだけなのに, 実際には GetProp, SetProp も書かないと行けませんよね

IHoge = Interface
 procedure SetEvent(Value:TEvent);
 function GetEvent:TEvent;
 property OnEvent:TEvent read GetEvent write SetEvent; 
end;

これは、こういうものとして
あきらめるしかないのでしょうか。
>>358
本当、そう思いますよね。
362360:02/04/27 22:25
訂正です.

誤:GetProp, SetProp
正:GetEvent, SetEvent
363デフォルトの名無しさん:02/04/27 22:25
354と355は同一人物で、358なんかも同じ
364デフォルトの名無しさん:02/04/27 22:27
procedure 手続き名; での手続きの中に、変数とかLabel.Captionとか使うと
未定義の識別子になる。
こういうのってダメなの?
365デフォルトの名無しさん:02/04/27 22:30
procedure 名前; //←単なる名前だけの場合は、メソッドではなく単なる手続きだから
begin
 Form1.Label.Caption;
end;
↑みたいに、Form1 等と言う変数(?)名をかかないとだめだよ。
↓の場合は必要無いけど。違いってわかる?
procedure TForm1.名前;
begin
 Label.Caption;
end;

366364:02/04/27 22:31
補足修正です。
未定義の識別子になるのは、interface部のPublic宣言の場所で宣言した変数です。
367364:02/04/27 22:35
早っ!
interface部でTForm1のメソッドとして設定してあるか否かの問題ですかね。
↑が間違えで、理論的には間違えていても、何となくわかったかもです。
ありがとう!
pascalの勉強になるようなサンプルで、凄いの何処かに転がってませんか?
例えば、コンパイラ 例えば、エディタ 例えば、DBサーバ 等で当然オープン
ソースがいいかも。
色々と探したんですが、オープンソースでなかったり、Cだったりで楽しくあり
ませんでした。
370364:02/04/27 22:47
Label1.Captionはとりあえずでけたよ〜!
で、変数は何でダメなの?
LabelみたいにForm1,を付加しても無理だったんですが。
371デフォルトの名無しさん:02/04/27 22:52
変数は、グローバル変数か、その手続きもしくは
メソッド内で宣言されたものしか使えないよ。例えば、

procedure Hoge;
var
 Giko: Integer;
begin
 ....
end;

procedure Piyo;
begin
 〜 := Giko; //← 未定義の識別子エラー
end;

他のユニットの interface 部に有るあるグローバル変数ならば、

Unit1.変数名

なんて風に書けば使える。
interface 部で宣言されていない変数は、他のユニットからは見えないよ。
372デフォルトの名無しさん:02/04/27 22:54
363.
for
begin
sock()
connect()
close()
end
って知って、分る360〜367さんへ
373デフォルトの名無しさん:02/04/27 22:54
いまどき宣言無しで変数使える言語ってそんなに多くないよね?
374デフォルトの名無しさん:02/04/27 22:55
interface 部の public

…それは、interface で宣言されたクラスの publid 部という意味?
そしたら、それはそのクラスに所属する変数(=フィールド変数)になるから、

クラス名.変数名

としないとダメ。


>>371補足
他ユニットで宣言されている変数でも、必ずしもユニット名を
指定する必要はない。 が、見やすさという点では
ユニット名も指定した方が良いとおもう。
375デフォルトの名無しさん:02/04/27 22:57
>宣言無しで使える言語

ソースコードを読む方の身になってみれば、
それは非常にわかりにくいと思う。
宣言無しどころか、「変数をどこでも宣言できる」系言語のソースも読みにくいと思う。

それから、コンパイラの負担も…
376デフォルトの名無しさん:02/04/27 23:01
374さん馬鹿じゃない、面白くないです。
publid =public広域です。
一回死んでください。
↑なにをそんなに怒ってるんだか…

このスレにも無礼な奴が増えたな。
378364:02/04/27 23:06
 >>371=374
説明は超わかりやすい!!!(・∀・)
神!神!神!

>…それは、interface で宣言されたクラスの publid 部という意味?
>そしたら、それはそのクラスに所属する変数(=フィールド変数)になるから、

>クラス名.変数名

>としないとダメ。
interfaceのTForm1 = class(TForm)の下にあるpublic部です。
その場合、TForm1.変数名にすればprocedureの中で使えるのかな?
と思いましたが、無理でした。
379364:02/04/27 23:10
 >>376
わかりやすかったからいいのっ!!!
神に向かって死んでくださいとか言わないで下さい。

ってか、>>378は「説明は」じゃなくて、「説明が」ね。
なんか語弊が…すまそ。
380デフォルトの名無しさん:02/04/27 23:12
別にそんな使い方わざわざしなくても・・・・
>>371
HSP厨が流れてきてるのか?
382デフォルトの名無しさん:02/04/27 23:16
var
 Form1: TForm
begin
 Form1.変数名

↑クラス(設計図)に対してではなくて、インスタンス(実体)に対してじゃないとダメ。

TForm1 は単なる設計図のようなもので、実体ではないの。

たとえば、家の設計図(=クラス)に書いてあるドア(=フィールド変数)を操作することは出来ないでしょ。「こういうのがあるよ」って書いてあるだけで、実際にドアが存在しているわけじゃないから。

家の設計図を元にしてできた、「実際の家(=クラスのインスタンス)」についてるドアでないと、あけたり閉めたりはできないハズ。
いいから黙って言語ガイド嫁よ
384デフォルトの名無しさん:02/04/27 23:23
364は、ひょっとして「var」節の存在を知らないの?
(´-`)。o ○ (無礼な馬鹿が増えたな…)
386デフォルトの名無しさん:02/04/27 23:25
要は、自分の考えたことが最短でプログラミングできて、よりWindowsに近い部分で簡単にプログラミングできるのがDelphiなんでしょう
理屈だけじゃプログラムは作れないよ、そんな解りにくいお手本見せられても困っちゃうなぁ
私は、発想でプログラミングしてるから細かいことはワカンナイヨォー
でも、>>382見たいな教科書さん、なら何でも思ったこと組めるんだろうね
ようするにクラスの概念がわかってない、と。
388デフォルトの名無しさん:02/04/27 23:29
>>386
いいから寝ろ。
同じクラスの●●ちゃんとエッチな事しました。
「待って、まだ準備が出来てないの」
「なに言ってるんだここはこんなにnil nil言ってるじゃないか」
390訂正:02/04/27 23:31
同じクラスの●●ちゃんとエッチな事しました。
「僕自身を君に入れても言いかい?」
「待って、まだ準備が出来てないの」
「なに言ってるんだここはこんなにnil nil言ってるじゃないか」
391デフォルトの名無しさん:02/04/27 23:32
>389
ちゃんとインスタンスを作成しないと何も入れれないよ。
392寒いギャグ、訂正しないでいいから:02/04/27 23:32
寝ろ。
393>>386:02/04/27 23:33
教科書さんつうか、>>382の内容は
ちょっとまともなプログラマならば誰でも書けることだろう。
394364:02/04/27 23:33
 >>382
どうもありがとー!

 >>383
誰に言ってんの?
自信作だったのに・・・
396364:02/04/27 23:36
 >>384
var節は知ってるんだけど、クラスの概念がわかってないのだと思います、はい。
>>386
プログラムは論理の固まり。
少なくともお前のような屁理屈の固まりには扱えない代物だ。
398デフォルトの名無しさん:02/04/27 23:40
>396
では「スコープ」はわかる?
ヘルプにキーワードで「スコープ」を探してみ
399デフォルトの名無しさん:02/04/27 23:41
387.解るんだ
〈名〉(〈複〉〜・es[〜_z])
6[同等のもの]〈C〉種類,部類; ある種類のもの[人].be in a class with..と同類である
/houses in the $100,000 class 10万ドルクラスの家.
>>398
〜のスコープ:〜が有効な範囲。
元ネタはヌルヌルだったんだろうな。。。
403デフォルトの名無しさん:02/04/27 23:49
>>364
何を悩んでいるのかがわからなくなった。

多分、宣言の仕方間違ってるんじゃない?
TForm1の宣言の所だけでもコピペしてくれない?
     /⌒\
    (    )
    |   |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |   |  / クラスとかなんて必要ない人には
    (・∀・ ) <  どうでもいいことかもしれないけどさ
   ノ'⌒` ´⌒ヽ \ 結局のところ無料で配ってるとはいえ
  ( ,、 ゚ 人 ゚ノ'ヽ  \ 遊びでやってるオナーニ野郎のために
.  ( ノヽ ミ 仝ミ/>' 〉   \  作ってるわけじゃないんだよね
   `ξ~~~~~~~ヽ´    \_____________
    |__/__|
    ( , ノ( 、 ノ
    | /  | /
   (__) (__)  某土地社員
405デフォルトの名無しさん:02/04/27 23:57
Delphiでオブジェクトとかって、自分で作れるんだ
406364:02/04/28 00:03
 >>398
スコープはわかってるつもりなんですが。
interface部に書いてあれば、全て。
実装部に書いてあれば、宣言した以降がスコープだと思います。

 >>403
かなり長くてごめんなさい。

type
TForm1 = class(TForm)
cmd1: TButton;
cmd2: TButton;
cmd3: TButton;
cmd4: TButton;
cmd5: TButton;
cmd6: TButton;
cmd7: TButton;
cmd8: TButton;
cmd9: TButton;
cmd0: TButton;
cmd00: TButton;
cmdplus: TButton;
cmdminus: TButton;
cmdkakeru: TButton;
cmdwaru: TButton;
cmdequal: TButton;
Label1: TLabel;
Label2: TLabel;
cmdC: TButton;
cmdAC: TButton;
procedure cmd1Click(Sender: TObject);
procedure cmd2Click(Sender: TObject);
procedure cmd3Click(Sender: TObject);
procedure cmd4Click(Sender: TObject);
procedure cmd5Click(Sender: TObject);
procedure cmd6Click(Sender: TObject);
procedure cmd7Click(Sender: TObject);
procedure cmd8Click(Sender: TObject);
procedure cmd9Click(Sender: TObject);
procedure cmd0Click(Sender: TObject);
procedure cmd00Click(Sender: TObject);
procedure cmdplusClick(Sender: TObject);
procedure cmdminusClick(Sender: TObject);
procedure cmdkakeruClick(Sender: TObject);
procedure cmdwaruClick(Sender: TObject);
private
{ Private 宣言 }

public
{ Public 宣言 }
dblNum, dblAnswer : Double;
strNum : string;
fugou :(plus, minus, kakeru, waru);
end;

よろしくです。

次のレス、かなり遅くなると思われますので、ご了承ください。m(_ _)m
>>364
もういいって。カエレ!!放置しる!
408デフォルトの名無しさん:02/04/28 00:08
もしかして、DelphiでDIRECTXとか使えたりして・・・・・
まじ、うそ、ほんと>>404
409デフォルトの名無しさん:02/04/28 00:10
ここまでひっぱっておいて
「実はスペルミスでした」なんて言い出すんじゃないだろうな・・・
411違ってたらスマソ:02/04/28 00:24
>>364
ははぁ、最初の方にしてた質問と合わせて考えると
こんなことしたんだろ。↓

type
 TForm1 = class(TForm)
  Memo1: TMemo;
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
  function calc : String ;
 private
  { Private 宣言 }
 public
  { Public 宣言 }
  i , j : integer ;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function calc : String ;
begin
  result := IntToStr(i + j);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  i := 1 ;
  j := 2 ;

  Memo1.Lines.Add(calc);
end;

end.
>>411
何か変か?
>>412
理解。微妙だね・・・。
クラスの宣言部に i,j を書いているコードというのは
多分、初めて見たよ
415野球はゴミ ◆T.Oo2lOQ :02/04/28 00:36
野球はゲリ糞。
いい湯加減だね。
417403:02/04/28 00:54
>>364
グローバル目的の変数は特別な理由があるんじゃないなら
public部で宣言したりしないで
var
 Form1 : TForm1 ;
の下で宣言してればいいと思うけどな。

わざわざコピペしてもらったのにスマン。
おれには何が悪いのかよくわからん。
418デフォルトの名無しさん:02/04/28 00:56
>312
こういう手法ってよく見るけど、このロジック使う人って
みんなボタンとかButton1とかの名前のまま使ってるの?
ソースすげえ見づらくならない?

もしどうしても連続処理が必要な場合は

Buttons : array [0..x] of TButton;

みたいの宣言しといて

Buttons[0] := btnOK;
Buttons[1] := btnCancel;
・・・

ってかんじで全部直に入れちゃうけど・・・.
人それぞれとしか言いようがないが・・・。
つか、その方法は>>308>>311で既出だし。
>>406
このコードは電卓ですよね・・・その場合に限れば
多分cmd1〜cmd00までは、数字がそのままCaptionになっているはずだから
cmd1〜cmd00のOnClickイベントハンドラをcmd1のものに統一して
procedure TForm1.cmd1Click(Sender: TObject);
begin
 sDisp:=sDisp+TButton(Sender).Caption; // sDispは表示用のstring型変数
end;
という手も使えますね、一般的じゃないけど

横レス、スマソ
>>420
まだTagプロパティを使った方が気持ちがいいんですけど。
422野球はゴミ ◆T.Oo2lOQ :02/04/28 01:17
野球は糞蛆虫。

>>420
横レスすんな。ハゲ。
あ、sDispは変数ではなくプロパティにすべきですね
>>422
だから、俺がハゲだということをどうして知っているのだ?
まあ、なげえハンドルで無駄にレス付けてりゃ目に付くわな。
 20年近く朝鮮に住んで現地の人々と交わりつつ成長し、い
まも学生時代からの親友を持つ私には、韓国・北朝鮮の虐げら
れた歴史や人々の屈折した感情が痛いほどわかる。日本が支
配していた時代、確かに朝鮮(韓国)人の日本化教育が推し進め
られ"創氏改名"や軍需産業への徴用が行われ兵役も課せら
れていたが、現在の日本の歴史教科書に載っている"従軍慰安婦"
などの事実はまったくなかったと確信している。私も、「朝鮮靴を
履いて学校にくるな!」と級友を叱りつけたことがありいまは
反省しているが、"驕り高ぶった"日本人庶民の朝鮮(韓国)人
に対する支配者的な態度はその程度ではなかったかと思う。
(RJ2001/8 p112「亜欧"鉄路"連絡の夢 遥か…」ケケ島紀元)

●鉄ヲタ少年ケケ島が、軍隊の裏で行われていた(かもしれない)非人道的行為を
 把握していた訳がない。なのに「確信している」などと断定的表現を
 もちいている。コイツは本当に社会派雑誌の編集長か?
●よくもまぁ級友にそんな事言えますなぁ。
 「学生時代からの親友を持つ」…相手は友達だなんて思ってないんじゃない?
●「"創氏改名"や…」名前や文化という人間・民族の尊厳の根本を否定するような
 ことをして、さらに「軍需産業…兵役も課せられていた」侵略者の都合により
 生存権すら脅かしていたのに「程度ではなかったかと思う」
 まぁケケは逆の立場でも我慢できる寛大な人間なんでしょうな。
>>426
コピペ誤爆した!スマソ
ホントはこっちに爆撃するつもりでした。
鼬害・・・
http://cocoa.2ch.net/test/read.cgi/rail/1019891858/l50
誤爆荒らしは10倍返し。
>>428
妙に親しみの湧くスレですね
TIdHTTPでソースを取得しているのですが処理中でも
強制終了させるにはどうしたらよいでしょうか?
IdHTTP1.DisconnectSocket;
IdHTTP1.Disconnect;
こういうのなら探しましたがほかに良いものありますか?
>>431
IdHTTP1.free
433デフォルトの名無しさん:02/04/28 01:57
Delphi初心者向けにブラウザの作り方を解説してくれた人いたよね?
ブックマーク忘れて探せないよー!
Delphi相談室その4の175
>>430
お前、その糞みたいに長いくだらねぇHN変えるか、他逝くか、どちらかに決めろ。
ウザすぎ。
>>434
コードエディタの色設定が DOS版 Turbo Pascal を思い出させてとってもイイですね
438433:02/04/28 02:06
ありがとう!
内容がすげー増えてるよ。
439 ◆DRAG8zBg :02/04/28 02:06
>>436
これでいいか?
>>436
HNがそんなに気になるの?
彼みたいにハゲるぞ。
>>435
良心的なサイトですな。
442デフォルトの名無しさん:02/04/28 02:31
まあ、あんまり長い名前は見づらいな。
443デフォルトの名無しさん:02/04/28 02:42
>>435
初めて見たけど、すげーよさそうじゃん。
「関連リンク」にのっけてほしいぐらい。
>>408
最近VC使いに、DelphiってDirectX使えるの!?みたいに聞かれて、
正直Delphiってなめられてるのかなあって思ったよ。
445 ◆DRAG8zBg :02/04/28 11:21
>>444
今でも「VBのPascal版」という程度の認識の人はいるみたい
扱いづらいのは確か。
>>445
どちらかというとRADなVC--
448デフォルトの名無しさん:02/04/28 11:58
素人に VB と Delphi って見た目一緒だけど何が違うの?
という質問をされました。以下のように答えたのですが正しいですか。

1) コンポーネントが充実している(と言っても、「コンポーネント」なんて分からないだろうな)
2) コンポーネントを Delphi 自身で作ることが出来る (VBはどうだか知らないけど)
3) 他会社製のコンポーネント以外は、全てのクラスやコンポーネントのソースコードが付いている (これもVBどうだかしらんけど)
4) コンパイルが激速
5) VBよりも言語、文法的に格調高い(独断と偏見)
6) ランタイムライブラリを配る必要がない

フリーソフトがVB製ってだけでDLする気をなくすのは偏見ですか。
なんか胡散臭いのですが…
「自分も素人だから分からない」が正解。
自信が無いなら答えるな。
というか、Delphiに関してなら分かるけど、
VBは VB3.0 〜 VB4.0ぐらいしか(しかも4年前に)使ったことがないのですよ。
451 ◆DRAG8zBg :02/04/28 12:24
>>448
素人相手なら技術的に細かく説明する必要はないですよね
「Delphiの方が高速で高機能なアプリケーションを楽に作れる」
で十分では?
Pascalっていうちゃんとしたプログラミング言語で制作ができる。
453デフォルトの名無しさん:02/04/28 13:32
しかし、商用となると微妙だよね。
フリーのコンポーネントでも商用は色々と制限があるのが多いから、
面倒を避けるために結局自作してしまう・・・。
早い、ライブラリを配る必要がないってのも、
最近のVBと比べての利点にならないし。
Pascalで記述できるくらいかな。
454デフォルトの名無しさん:02/04/28 13:41
VBってポインタ周りはどうなの?
>>454
そう言う概念自体がない。
そうするとさ、VBからWinAPIはどうやって呼び出してるの?
構造体へのポインタとか、文字列へのポインタとか、指定しないといけないし…
>>456
ああ、ByVALとかいうダサイ参照が使えたっけ。
後、void *(PascalはPointerか)はAnyとか言うこれまた(略
458デフォルトの名無しさん:02/04/28 15:56
[pascal]
var Something: Pointer;

[C]
void* something;

[VB]
Dim Something As Any ?
ダサイ参照って・・・痛いやつがいるなぁ。
460Delモナー ◆fPymXWHY :02/04/28 16:05
>>454
VBでは「ポインタ」の概念自体ないから、
ポインタを扱おうとすると、かなり不便を強いられる。
VB6の話だけど、変数のポインタを得るには、ヘルプにも載っていない
隠し関数のVarPtr関数を使う。他にも、StrPtr,ObjPtr関数がある。
関数のポインタは、AddressOfという演算子(ヘルプに掲載)で得る。
逆参照には、APIのCopyMemory関数を使う。
Anyは、WinAPI呼び出し専用の、型チェックなしの型でしたな。

>>458
Anyという型こそあるけど、実際に変数として宣言することはできません。
APIの宣言でこのように使います。
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
      (Destination As Any, Source As Any, ByVal Length As Long)
そして、呼び出すときは、
Dim x(3) As Byte, u(3) As Byte
CopyMemory x(0), y(0), 4
のようにします。
461Delモナー ◆fPymXWHY :02/04/28 16:09
>>460 スマソ。
×Dim x(3) As Byte, u(3) As Byte
          ↓
○Dim x(3) As Byte, y(3) As Byte
結論:
Del使いがVBのコード書くと普通のVB使いには
理解出来ないコードが出来上がる。
>>462
結論:
逆もまた真なり。
Delをしばらく使った後に、
VBでコード書くと、

Dim Str1,Str2,Str3 as String
   ↑  ↑ ↑
   |  Variant型
  String型

というミスをやったり、文末に";"付けたりするのは漏れだけですか?

465464修正:02/04/28 22:40
Dim Str1,Str2,Str3 as String
   ↑  ↑ ↑
   |  | String型
  Variant型
>>464-465
今度のVB.NETでは直されてるらしい。しかし、
良く今までそのままだったものだ。
467激泣:02/04/28 23:30
つーか、win95を「根本から」捨てるなよ!
と嘆いてみる。
468デフォルトの名無しさん:02/04/29 00:43
>>464
>というミスをやったり、文末に";"付けたりするのは漏れだけですか?

おもいっきりやる

=と:=も間違える
469デフォルトの名無しさん:02/04/29 00:50
オレは「bigon」って書いちゃったり、
INSキー誤押しで上書きモードにしちゃって変なことになったりとか…。
INSキーって無効に出来ないのかなぁ?
いつも「そうにぅ」モードでいいんだけど…。
>>469
INSキーにドライバ差し込んでてこの原理で。
471デフォルトの名無しさん:02/04/29 01:32
>>464
最初、それ知らなくてさ。あとで懸命に直したよ。
めんどくさいったらありゃしない。
VB(A)は型がはっきりしないから嫌いだよ。

>>468
それもよくやる。あと、forやwithのあとに付けるdoとか
細かい部分で間違える。
472469:02/04/29 01:33
>>470
いいかも(いいのかよ!?)。

あと、ウィンドウズキーもいらねー。もっと別の場所に「全ての窓を最小化ボタン」
って名前で付けてくれ。「+M」自動で。

話は変わるが、brcc32.exeってラッパー無いの?
473デフォルトの名無しさん:02/04/29 01:41
>>471
まさか全部手動で直したとか?(笑)
その程度の書き換えツール、簡単に自作できそうだが。
473=ネット弁慶
475デフォルトの名無しさん:02/04/29 01:45
>>473
あー、その時はまだ覚えたてだったからね。そこまで頭まわらんよ。
「やっぱVBしょぼいよ!」って怒りながら直した気がする。
476デフォルトの名無しさん:02/04/29 01:49
>>472
BRC32.EXE

詳しくはBCBもしくはBCCのヘルプ参照。
477472:02/04/29 01:54
>>476

よく分からんが…。スマソ。忘れてくれ。
>>465-466
こういうミスはエラーにはならないからやっかいですね.
今まで直されなかったのは基本的文法だからだと思います.

もともと DIM 文は配列宣言文ですが

DIM A$(10),X%(20)

※左は文字列,右は2バイト整数

みたいに末尾の文字で変数ごとに型を指定していたので
そこを変えたくなかったのかもしれません.

(だったらいっそのこと変数宣言のステートメントを別に作れば良かったような気もしますが)
479364:02/04/29 15:47
 >>411
変数の使い方はそんな感じで使っていましたね。

 >>417
そうですね。
とりあえず、その方法では変数が使えるので、そうしておきます。
サンクスコ。

 >>420
そうです、電卓です。
なるほど、エレガントですね。
私は手続きを使って同じ処理の部分をまとめ、変数にそのボタンの数字を入れてました。
が、例外が出ました。(w

480472:02/04/30 00:06
>>476
リソースコンパイルを楽にしたかったんだけど、探してみたら
それらしきのがあった。
だから忘れてくれ。
リソースコンパイラか…
RCファイル作るのが面倒で結局VisualStudioに頼ってしまう罠
482デフォルトの名無しさん:02/04/30 10:33
QuickReportにて印刷を行っているのですが、
DetailBand1BeforePrintイベントでデータをセットする前に改頁されるか
どうか判断できないでしょうか?
今だとデータをセットしてDetailを印刷しに行く時にもう印刷できないから
自動的に改頁されているようなのです。
やりたいことは、1件前のデータとコードが同じだったらコードは表示しない(空白)
ようにし、但し改頁された時は表示するようにしたいのですが。
483デフォルトの名無しさん:02/04/30 12:00
StringGridで指定範囲を上下左右に動かす方法ってありますか?
Move専用のクラス作ったのですが、左右なら左右全体が、
上下なら全体が上下に動いてしまうんです。
何か良い方法無いでしょうか?

クラス部分
type  TStringGridX = class(TStringGrid)
 public
  procedure MoveCol(FromIndex, ToIndex: Longint);
  procedure MoveRow(FromIndex, ToIndex: Longint);
 end;

関数部分
procedure TStringGridX.MoveCol(FromIndex, ToIndex: Longint);
begin
 inherited;
end;

procedure TStringGridX.MoveRow(FromIndex, ToIndex: Longint);
begin
 inherited;
end;

>>483
セル内の値を移動させるってこと?
485483:02/04/30 16:52
>>484
うん
>>485
Cellsで地道に移動させちゃ駄目なの?
cells[x1,y1]:=cells[x2,y2];
488デフォルトの名無しさん:02/04/30 21:36
if key = vk_left then vx:=0;
if key = vk_right then vx:=0;
という2つの文を1つの文にしたいのですが、どうすればいいのでしょうか?
>>488
どうやったらできなかったのか、それが知りたいくらい
490デフォルトの名無しさん:02/04/30 21:45
>>489
if (key = vk_left then) or (key = vk_right) then vx:=0;

と書いたんですけど、できませんでした。
>>488
ObjectPascalとはイワン、せめてPascalの文法位覚えてから来てください・・・。
>>490
ごめん、コンパイルエラーで質問してくるってどういうことじゃ?
if文にthenは2つもいらん
494デフォルトの名無しさん:02/04/30 21:52
if (key = vk_left) or (key = vk_right) then vx:=0;
でした。今したら出来ました。ゴメンナサイ。
うさぎさん、またね〜
こんなのはどう?
if key in [vk_left,vk_right] then vx:=0;
497デフォルトの名無しさん:02/04/30 22:21
>>494
Pascalの文法とかそれ以前にVBとごちゃごちゃになってない?

orくらいおぼえようよ。
VBってthen2つかくの?
>>498
きっとorがないんですよw
500デフォルトの名無しさん:02/04/30 22:39
500はもらったッス
今日からレベルの低い質問、厨房、などは以下のスレへ隔離することになりましたのでよろしく

Delphiでアクションゲームが作りたい!!
http://pc.2ch.net/test/read.cgi/tech/1019654975/


>>501
じゃあ君は

Delphiでアクションゲームが作りたい!!
http://pc.2ch.net/test/read.cgi/tech/1019654975/

に常駐するんだ。寂しくなるよ。がんばって。
504デフォルトの名無しさん:02/04/30 23:40
もっとまともなところ教えてあげなよ。

ここなんか気合い入ってて良いかも
http://game.2ch.net/test/read.cgi/gamedev/1013170036/

作ってる人(>>1)はプログラム経験無し、パソコン触って1年目らしい。
でもちゃんと動いてるから凄い。
505デフォルトの名無しさん:02/05/01 00:27
>>503-504
どこかで見たことあるやりとり!    
いい加減棲み分けしようぜ


Delphi相談室その4
http://pc.2ch.net/test/read.cgi/tech/1018211735/
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室A
http://pc.2ch.net/test/read.cgi/tech/1013298748/
モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/test/read.cgi/tech/1019134412/
Pascal の初心者用の質問・相談所
http://pc.2ch.net/test/read.cgi/tech/1009903617/
ヘタレ&初心者 専用
http://pc.2ch.net/test/read.cgi/tech/1019743589/
507デフォルトの名無しさん:02/05/01 00:34
>>506         
もう…遅いねや…(by さんちゃん)                
>>490
if (key = vk_left) or (key = vk_right) then vx:=0;
Memo1.SelectAllの「SelectAll」みたいのって何ていうんだっけか?
そんなのを、ヘルプで調べる時ってどこに載ってる?
511248:02/05/01 21:26
>>510
VCLリファレンス
  オブジェクト/コンポーネント(アルファベット順)
    TM
      TMemo
で、メソッド。
ありがとー。
513デフォルトの名無しさん:02/05/01 23:22
引数はどうやって変数に渡すんだったっけ??
>>513
意味が不明です。
>>513
スタックで。
516デフォルトの名無しさん:02/05/01 23:34
スポックで。
517デフォルトの名無しさん:02/05/01 23:37
スキップで。    
518デフォルトの名無しさん:02/05/01 23:41
ステップで。            
519デフォルトの名無しさん:02/05/01 23:43
スパッツで。       
520デフォルトの名無しさん:02/05/01 23:44
スコップで。                       
521デフォルトの名無しさん:02/05/01 23:46
スリップで。                   
最近、ネタスレと化しつつあるな。
アフォは(・∀・)イイ!
524デフォルトの名無しさん:02/05/02 00:49
トラップです。
525デフォルトの名無しさん:02/05/02 03:40
いまさら昔のことをほじくり返すのもなんですが
どうしても吐き出しておきたいので・・・

Delphi 3ではエディタのポップメニューに「切り取り、コピー、ペースト」がなくてえらく不便でした。

今の(Delphi 6)には付いてるので重宝してます。
そうですか。へー。
>>525
放置しようとおもったが、
どうしても言いたくなったので・・・

まさか、いつもマウスで操作してるの?
[Ctrl]+[X]、[Ctrl]+[C]、[Ctrl]+[V]に早く慣れて下さい。
528デフォルトの名無しさん:02/05/02 08:12
>>527
Delphiってマウス操作の方があたりまえだと思うが?
まさかフォームとユニットの切り替えもキーボードでやってるの?
529デフォルトの名無しさん:02/05/02 08:24
>>527
放置しようとおもったが、
どうしても言いたくなったので・・・

いつもじゃなくても、あって当然のものがないというのは変だよね。
あまり使わないからなくてもいいって話にはならない。
>>528
エディタはキーボード操作が常識だと思うが。
>>528
F12一発の方が個人的には楽。確実。早い。
532デフォルトの名無しさん:02/05/02 08:34
>>530
コピペもキーボード操作が常識?
>>532
コピーアンドペーストをマウスでやる奴なんぞ聞いたこと無いけど。
合理的じゃないと思うけど。
オブジェクトインスペクタの右クリックからコピーや貼り付けができないのが不便すぎる。
だからDelphi厨とかって叩かれるんだろうか・・・。
.NETにするか。
Delphiもキーボードでの操作がVS並に揃ってるといいのにね。
キーボードもマウスも中途半端すぎるんだよな。
537デフォルトの名無しさん:02/05/02 08:45
>>533
>コピーアンドペーストをマウスでやる奴なんぞ聞いたこと無いけど。
>合理的じゃないと思うけど。
ええっ(^^;
そんなこと言われても・・・。

じゃあ「合理的でない」その要望が殺到して某が重い腰をあげたってことだね。
CPU窓の逆アセ表示が1行づつしかコピー出来ないのがツライ
キーバインドを標準で使ってる人はマウスでも変わらないような。
範囲選択時にカーソルキーへ手をやるためにホームポジションから
移動しないといけないから・・・。
ダイアモンドカーソルな使ってる人はキーボードオンリーの方がいいね。
540525=528=532=537:02/05/02 08:52
今、気が付いて見ると

マウスで範囲選択→[Ctrl]+[C]→マウスでペースト

と、まぁコピーの操作の時だけキーボード使ってるのに気づいたけど・・
ふつうGUI環境って自然とマウス操作が主体にならない?
>>533の発言はオレにとってすんげーカルチャーショック!!
>>540 短期集中ならいいけど 長期にやると マウス操作は目に優しくないよ

マウスで範囲選択するのはいいけど、それをコピーするときはキーボードを
使うようにすれば目を休めれられル
PGなんてディスプレイ見てない時のほうが多いのだから大丈夫だよ
好きな方でやれ
ドラッグは認めるわ。

ドラッグ−>右クリック−>コピーを探す−>クリック−>貼り付けたい場所をクリック−>右クリック−>ペーストを探す−>クリック

ドラッグ−>CTRL+C−>カーソル移動(遠い場合はPageUP/Down)−>CTRL+V

差は歴然。俺の理論では。
俺は 飛蚊症が出はじめてるから

コピペの時は ドラッグしない 先頭をクリック 後は目は宙を見据えて
行の時はシフト押しながらマウスを下 単語の時はシフト+CTRLマウス右

その間目を休める。
 もちろん文字は黒背景に白
545543:02/05/02 09:08
>>544
>ドラッグしない 先頭をクリック 後は目は宙を見据えて行の時はシフト押しながらマウスを下

今試したら俺もそうだわ。
よっぽど広い範囲でない限りSHIFT+カーソル。
546544:02/05/02 09:12
マウスじゃなくてカーソルだ・・・ 鬱
547540:02/05/02 09:14
オレは普段は、マウスで範囲選択→[Ctrl]+[C]→マウスでペースト

1画面に収まらないぐらいの範囲なら
マウスでスクロールさせるのは不便&目が疲れるので
shift+PageDown(up)で範囲選択→マウスで切り取り→マウスでペースト
まぁ、好きなようにやれや。
普通はドラッグしながらホイール移動で行選択できるのだが、
Delphiはできないんだよな。不便。
ドラッグ−>左横ボタンクリック−>貼り付けたい場所をクリック−>右横ボタンクリック
5ボタンマウス・キーボードみたいに両手使う必要がない。
5ボタンマウス・キーボード->5ボタンマウスならキーボード
5ボタンマウスの左端と右端のボタンはなんていうメッセージを送るわけ?
OSとか限定されてるの?
553デフォルトの名無しさん:02/05/02 12:17
comboBox4.AddItem(Cells[2,i],comboBox4);

AddItemの2個目の引数って必要ない気がするのですが何か
>>553
必要無いなら Items.Add(Cells[2,i]) にしたら? nil が入るだけから
>>541-542
ちょっと理解困難
キーボードでパターン化した操作をするときは目をつぶるようにしてるとか?
556デフォルトの名無しさん:02/05/02 13:05
>>554
省略できないよ
ハァ?
AAをギコペに登録するときは
トリプルクリック - Ctrl+C - Alt+Tab - 中略 - Ctrl+V
IEコンポ上でキーボードで範囲選択ってできる?
>>553は2番目の引数の意味がわかってないに5000コンボ
同じこと。
ComboBox1.AddItem('', nil);
ComboBox1.Items.Add('');
ComboBox1.Items.AddObject('', nil);
漏れもListBoxとかComboboxのAddItemの2番目の引数はなんに使うか分からん。
いつもListBox1.AddItem(str, nil);って書いてる。
どんな風に使うの?
>>560
ComboBox1.Items.Append("");
は?俺Addの戻り値使わんときはこっちで書いてるんだけど。
563デフォルトの名無しさん:02/05/02 14:32
AddItem は ComboBoxのアイテム文字列に、とくていのデータを関連付けたいとき
につかう。
AddItem( 'Button1', Self.Button1 )
とか。
たんに文字列を追加するだけなら、
AddItem('Button1');
でいいじゃん。

例)
AddItem('Button1', Button1);
AddItem('Button2', Button2);
AddItem('Button3', Button3);

ComboBox1.OnChange イベントで、

Button := TButton( ComboBox1.Items.Objects( ComboBox1.ItemIndex ) );
Button.Caption := 'OK';

これは文法エラーの可能性が有るけど、使い方はこんな感じ。
>>525
GExpertsを入れていたので当時から、ポップアップメニューに出ていました。
しかし、自分は使わなかったので便利か不便か分かりませんでした。
>>552
WM_XBUTTONDOWN/UP/DBLCLKでは?
確認してないけど。
OSはWin2k+、Me。
566デフォルトの名無しさん:02/05/02 17:24
みなさんにお聞きしたいのですが、キーボードの入力時の
強さを測る事ってできるのでしょうか?
OnKeyUpとOnKeyDownの時間を比べてもどうもうまくいきません。
どうにかなりませんか?
なりません。
568.............:02/05/02 17:32
ウイルスに感染して駆除できずに隔離した場合
ウイルスはまだ悪さをしますか?
(トロイです^^;)
569デフォルトの名無しさん:02/05/02 17:32
>>567
そうですか。
でも、あきらめがつかないので続けて調べてみます。
570デフォルトの名無しさん:02/05/02 17:39
Delphiって日付関係が最低だよな。

「選択された年月日の1日と最終日の取得」とか。
関数入り乱れてシボンヌ
キーボードは圧力を関知しないだろ。アフォ
>>570
JavaScriptでもやってろ。
573デフォルトの名無しさん:02/05/02 17:46
>>572
JSP以下じゃん>日付
>>571
昔、「キーを押している間だけカウントする。」って処理で
カウントを比べて押し具合を判別するプログラムをN88-BASICで書いたことがあるが
>>566はそういうことを言ってるんじゃないの?
575デフォルトの名無しさん:02/05/02 18:04
>>571
キーボードが圧力を感知しないのは初めからわかっていますが
それと同等の機能が無いかなぁと思ったのです。
それで押している時間で何かできないかと思ったのですが
思った結果が得られずに何か無いかと思ったのです。
まだまだあきらめません。
圧力と同等の機能って何???
圧力と長さじゃ性質が違うだろ。
577574:02/05/02 18:17
>>575-576
昔、そのN88-BASICで作ったプログラムでは
「スーパーマリオの小ジャンプ、大ジャンプ」ぐらいの判別はできたよ。

アクションゲームとか作ってるところ見て回ってみたらどう?
押してる時間だったら、
OnMouseDownで
T1 := Time; //T1:TDateTime;
として、
OnMouseUpで
T2 := Time - T1;
とすればいいんじゃないの?
値が分かりずらいなら、
(Time - T1)*24*60*60*1000として、単位をミリ秒にするとかして。

579578:02/05/02 18:25
あ、マウスじゃなくてキーボードだったね。
TToolBarに実行時に動的生成したボタンを追加するにはどうしたら良いのでしょうか。
TToolButtonを継承してSetToolBar(ToolBar)で追加しようとしてみたのですが、
読込違反エラーが出て、追加できませんでした。
>>580
試してないが
これじゃだめなのか?
helpみれ
procedure AddButtons(ToolBar: TToolBar;
Const ButtonCaptions: array of String);
var
I: Integer;
begin
for I := 0 to High(ButtonCaptions) do
begin
with TToolButton.Create(ToolBar) do
begin
Parent := ToolBar;
Caption := ButtonCaptions[I];
if (ButtonCaptions[I] = '|') then
Style := tbsSeparator

else
Style := tbsButton;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
ToolBar: TToolBar;
begin
ToolBar := TToolBar.Create(Self);
ToolBar.Parent := Self;
AddButtons(ToolBar, ['新規作成', '保存', '|', '切り取り', 'コピー', '貼り付け']);
ToolBar.ShowCaptions := True;
ToolBar.Height := 40;
end;
>>528 当然でしょ?
>>582
おせーよ!(藁
584582:02/05/02 19:42
>>583 下があるの気が付かなかった!スマソ!
585デフォルトの名無しさん:02/05/02 19:57
Delphiで作成したフォームアプリケーションで、デバッグ用の
コマンドラインウィンドウのようなものを表示したいのですが
なにか方法はありますでしょうか?
JavaでSystem.out.println("xx"); のような感じで使うように
デバッグに使いたいと思っています。
OutputDebugStringでええのではないですかね。
>>581
その辺も試したのですが、
TToolButton.Create(ToolBar)の所でAccess viorationになってしまいます。
>>587
普通に、CreateしてParentにToolBarを指定するだけでうまくいったよ
>>588
出来ました。ちょっとした勘違いだったみたいです。スマソ。
590デフォルトの名無しさん:02/05/02 21:10
2chnの存在を友人から最近聞きまして、お便りいたします。
Delphiを初めてまだ数ヶ月初心者です。
今度、LinuxのCアプリケーションをPasscalアプリケーションに移植しようと思ったのですが、Cの#InculdeのライブラリとpasscalのusesライブラリでCに有ってPasscalに無いのがあります。
Linuxの"*.h"をPasscalのライブラリに移植するしかないのでしょうか。
又Cのライブラリの移植は、初心者には無理でしょうか。
>>590
FAQ
>>590
プラットフォームすら違うのに何を・・・?
593デフォルトの名無しさん:02/05/02 21:28
綴りが違いすぎる点で寝たでしょ…
Cやってるのに#Includeの綴りすら間違うはず無い。
>>593
あなたもぎりぎりアウト
#intrudeやね
それよりも俺は、一行目の
お便りいたします。
が気になって仕方が無い…
またしてもチョンのの仕業かよ
598デフォルトの名無しさん:02/05/02 23:52
if Linux.Count<=0 then ShowMessage( '需要ねーよ(藁' );
>>598
オマエモナ
(´-`)。o ○ (>>599そのリアクションは意味不明だな…)
if Linux.Count <= 0
の意味するところは何だろ
>>601
リナックス回数だよ。DQNか?
603デフォルトの名無しさん:02/05/03 01:01
>>602
リヌクス回数って何さ(藁
クラッシュした回数か?使った回数か?インストール回数か?
そもそも count=回数か?件数じゃねーの?DQNか?
604デフォルトの名無しさん:02/05/03 01:04
>>603         
バーカ、バーカ、バーカ。         
605デフォルトの名無しさん:02/05/03 01:11
ボタンを押したら終了するようにしたいんですけど、
フォームをデストロイすればいいんですか?
>>605
デストラクタを直接呼んじゃ駄目ですよ
FormならCloseでOK
607デフォルトの名無しさん:02/05/03 01:14
>>605
マジ→close;
ネタ→電源抜いて!
ネタだと思うがClose;
609デフォルトの名無しさん:02/05/03 01:17
>>606-608
いやいや、ネタじゃなくて思いっきり初心者です。
素早い返答感謝いたします
610607:02/05/03 01:17
606に負けた…
608には勝った…
どうでもいいがデストロイ知ってたらデストロイしちゃいかんって書いてあるはずだぞ
612デストロイヤー:02/05/03 01:31
アッコサン、ツヨイ…。
613デフォルトの名無しさん:02/05/03 01:31
TBitmapのPixelFormatを、描画の速い順に並べると、うちの環境では

pf8bit >>> pf16bit > pf32bit >> pf24bit

ですが、ぜんぜん違う結果になる人はいますか。
ReleaseとFreeとDestroyの違いをきぼんぬ。
>>614 ヘルプに全部詳しく書いとる
>>613
それだけじゃ何とも言えんな

>>614
全部ヘルプに書いてある
617デフォルトの名無しさん:02/05/03 01:37
>>1-1000
ヘルプ読め!
618なんだかなぁ、、:02/05/03 01:52
[モナーの *やさしい* Delphi質問スレ Ver.6]
このスレ必要ないじゃん。
619デフォルトの名無しさん:02/05/03 01:56
>>618
ヘルプ読め!
ここはやさしい質問に、答えるスレです。
621デフォルトの名無しさん:02/05/03 01:58
>>620
ヘルプ読め!やさしい質問の答えならほとんど載ってるぞ
つまり初心者が、簡単な質問に答えてみるスレなのです。
ちゃんと「ヘルプ読め」と答えてるので問題なし
それとも、ヘルプからコピペしろとでも?
624デフォルトの名無しさん:02/05/03 02:01
すいません。ネタスレだと思ってました。
>>624
そう思うのも仕方のないことです。
答えているのは初心者なので、
ネタと思えてしまうような答えをする人もいるでしょう。
626デフォルトの名無しさん:02/05/03 02:06
このスレは質問に対し「ヘルプ嫁!」と返すためだけに存在しています。
627BoA:02/05/03 02:09
四面楚歌ダナァ〜〜
628デフォルトの名無しさん:02/05/03 02:11
でも、ヘルプわかりづらいよ。
629パソナラー:02/05/03 02:14
ループになるが、
パソナラーでタダで使ってるヤツは文句言えないって。
気持ちは分かるけど<ヘルプ
前に「もっといい感じのヘルプ」と「詳細なリファレンス」が付いたらいいなってレスしたんだが…。
またしばらくたったら同じレスが来るんだろうな…。
ま、金払って買った人はボーランドさんに文句言えばいいんじゃないの?
>>625
>答えているのは初心者なので
そ、そうだったの・・・
631デフォルトの名無しさん:02/05/03 02:16
「ヘルプが理解できないなら、インターネットで検索しろ。」

と、ますますこのスレの存在意義が揺らぐ。(w
632パソナラー:02/05/03 02:20
検索もなかなか難しい。バッチリいくのはよほどうまくいかんとアカン。
頼むからグーグルも「本の紹介」と「英語以外のdelphi系」を載せるのは
堪忍してほしいと個人的には思う。前にも書いたけど。
>>632
そりは検索の仕方が悪いからでは。
>>634
はいはい。お前はさぞかし1発で検索出来るんだろうよ。
本はよくヒットするね、買ってくれていってるみたいに
>>635
Googleのオプションを覚えれば絞り込みやすいということだよ。
>>637
はいはい。お前はさぞかし1発で検索出来るんだろうよ。
639デフォルトの名無しさん:02/05/03 02:45
>>632
「本の紹介」は、 -ISBN とか -著 とかを入れればだいぶ除外できる。
「英語以外のdelphi系」は、表示設定や言語ツールで除外できる。
640パソナラー:02/05/03 03:37
>>639
ほほー。さんくす。
641639:02/05/03 03:42
結局、>>639に書いたこともGoogleのヘルプを見れば、
>>632が前(いつの事か知らんが)から持つ不満も減ってたわけだ。

だから「ヘルプ読め!」も、まぁアリだろ。
読んで分からなかったら、また質問すれ。

「あんな簡単なヘルプ読んでも分からん奴は知らん!」
とか言われたら、そいつはシカトして、
アドバイスをくれる人を待ってれば、結構現れてくれると思うんだが。

現れなかったら、他人の振りして
「漏れもそれ知りたい」 とか言って話を伸ばせ。

それでもだめなら、
2chで*やさしい*に期待した自分がバカだったと悟りなされ。>>618以降の何人か
642素数2:02/05/03 03:57
検索オプションを知っていても
> -ISBN とか -著 とかを入れればだいぶ除外できる。
というのは技術だと思われ。まぁ想像力で補える範囲ですが。
643639:02/05/03 04:06
>>642 なんだ、その見当違いなツッコミは。
644素数2:02/05/03 04:16
>>643 そう?
645素数2:02/05/03 04:22
つまり、検索オプションというのは知識。
知識は技術に転換して初めて役に立つわけで
例えば <「 -ISBN とか -著 とかを入れればだいぶ除外できる。 」というもの。
「 - 」は知っていても何をマイナスすると効率が良いかというのが技術の域なのではないか。(TIPS程度だが)

このスレのスタンスもこのあたりを押さえるための物じゃないのかな。
っつうことを言いたかったわけだが、伝わらんかったようだ。
646ウィグル獄長:02/05/03 04:27
>>645
んん〜〜〜?
つ〜た〜わ〜ら〜ん〜な〜〜〜。
647639:02/05/03 04:48
>>645
俺は、
ヘルプを見て→オプションのことや表示設定の事を知る
わからなければ→オプションをどう使えば知りたいことを効率的に検索できるのか
アドバイスをもらえ→ -ISBNや -著を教えてもらう

と言ってるんだが、
>>645の言う、知識(オプション)を得てそれを技術(-ISBN)に転換する
とどう違うんだ?繰り返してるだけ?もしそうなら>>642のツッコミは何だ?
Del厨だなぁ。
649素数2:02/05/03 06:43
>>647 解った、俺が悪かった。
>>642>>641を読む前に書いた物。んでつっこまれて良く読みもせずあわてて書いたのが>>645と言うわけだ。
639=641=643 だと気づいたのも今だ。こうなると>>645は完全蛇足だね。
>>646
ワラタ
モナジラプロジェクトに参加しようと画策中です。
取りあえず、

T2ch has T2chBoard[]
T2chBoard has T2chThread[]
T2chThread has T2chKakiko[]
T2chKakiko is record

って感じのクラス群を作成しようと思ったのですが
たとえばT2chThreadを仕様変更に伴って継承させた場合、
継承させたクラスはこのクラスのチェインから外れてしまいます。
いくら継承させてもでT2chBoardが生成するのはスーパークラスのT2chThreadになりますよね。

この問題はTMemoのLineのクラスであるTStringListを継承したクラスに差し替えたいというのと同じかと考えます。

何か良い方法は無いでしょうか?
そもそもオブジェクト思考的に問題でしょうか?

ああ、テンプレートが使えればなぁ・・・。
>>651
T2chThread を継承したクラスはT2chThread*でも*ある。
だからクラスのチェイン(て何だ?)からは外れない。

T2chBoardが固定でT2chThreadを生成する問題については
クラスを作るためのクラスを作って解決すれ。
世間一般にはデザインパターンの Abstruct Factoryと呼ばれるアレ。
>>652
チェイン:造語でした。
私の設計では、

T2ch - T2chBoard - T2chThread - T2chKakiko

がhas aの関係で繋がっています(これをチェインと勝手に呼びました)。

上位のコンストラクタが自分がhasしているクラスのコンストラクタを適切に呼び出していくイメージです。

よって例えばTThreadをオイスター作戦に対応させたくてT2chThreadを継承した場合、

               T2ch - T2chBoard  T2chThread  T2chKakiko
こうしたい(T2chBoard修正が必要?)→\      |   /←こうしたい(これは可能)
                           T2chOThread

と、なって上位クラスの修正が必要になるのはスマートじゃないなと感じたわけです。

Abstruct Factoryがんばって調べてみます。
参考になりました。
654デフォルトの名無しさん:02/05/03 09:35
クラス化せずに全部関数でMonazillaアプリを作っている私は古いですか?
オイラ、クラス群の作成とか良くわかんない。
ちょっとやってみようかな。
で、どういうメリットがあるの?
>>655
みんな自分の処理は自分でやってくれるようになるから管理が楽。
>>654
師匠、教えてください!
TClientSocketでpc.2ch.net/index.htmlを取得すると、

HTTP/1.1 200 OK
Date: Fri, 03 May 2002 00:53:01 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_gzip/1.3.19.1a mod_ssl/2.3.6 OpenSSL/0.9.3a
Last-Modified: Wed, 01 Jul 1998 08:51:04 GMT
ETag: "81e004-61-3599f878"
Accept-Ranges: bytes
Content-Length: 97
Connection: close
Content-Type: text/html

<title>HURRICANE ELECTRIC</title>
<META HTTP-EQUIV="Refresh" CONTENT="0;
URL=http://www.he.net">

と、謎の鯖に飛ばされるっす!
師匠はどうやって取得してます?
後、どんなAPIとかコントロールでHTTP使ってます?
Monazilla関連はあっちに逝けや。
Delphi使いもたくさんいるから。

monazilla Part 3
http://pc.2ch.net/test/read.cgi/tech/1012544484/l50
659デフォルトの名無しさん:02/05/03 12:05
>>657
>TClientSocketでpc.2ch.net/index.htmlを取得すると、
ここ取得して何するの?何の情報もないけど…
>>654
数千行未満のちっこいツールとか
自分一人がソースメンテする場合は全然問題ないと思われ。
Abstruct FactoryをObjectPascalでやる場合、「クラスを作るクラス」は独立したクラスとして作らなくても、
仮想クラスメソッドのオーバーライドとクラス参照で済んでしまいますけどね。
ObjectPascalはJavaに無い機能をいくつか持っているので、Java用のパターンをそのまま適用するよりももっといいやりかたがあったりして
>>661
部分的に同意。
ただ、生成対象クラスのconstructorで新しい引数を指定する必要が
できちゃって、クラス分割しなければいけない罠があったりして。
663匿名:02/05/03 15:05
MIDIのAIPについて、聞きたいんですが・・・
AIPを使って、MIDIを再生させたいのですが
ソースが分かりません。
>>663
マルチポストですか。イイ度胸ですね。
二回も間違ってるってことはあなた本気ですね?
665匿名:02/05/03 15:18
紹介してもらってはじめてでしたから、何もわからなかったのですみません
消えます。。。
>>663=マルチ野郎
首釣って氏ね
667匿名:02/05/03 15:35
>>666
あんたの家の前で名!
668匿名:02/05/03 15:45
      .   .
     .   -‐-  .
   __ 〃       ヽ :
  : ヽ\ ノノノ)ヘ)、!〉 :
   '. l(0_)!。-‐ ‐〈リ .
   ; Vレリ、" (フ/ ;   マルチが663ゲットですぅ〜〜
       : l´ヾF'Fl :
      ;. 〉、_,ノ,ノ :    (ブルブルガタガタ…)
     . /ゝ/´, ヽヽ  .
      : く/l |_ノト‐'⌒),) :
669デフォルトの名無しさん:02/05/03 16:54
2chで*やさしい*に期待した自分がハ?カだった
>>669
いや、あなたはっきり言ってWindowsプログラミングする資格なし。
まだきづかんか。
671終了:02/05/03 17:13
━━━━━━━━━━━━ 終了 ━━━━━━━━━━━━
672デフォルトの名無しさん:02/05/03 17:17
たしかにこのスレはおわったな。。
673名無し募集中。。。:02/05/03 17:32
揚げ足取りを放置しすぎますた
まぁもともと大して役に立ってなかったし。
>>663
>>669
同じ方?
多分ネット初心者だと思いますけど.
マルチポスト(同一内容を複数で書き込む)は2ちゃんに限らず嫌われますよ.

質問に答えるまでにはそれなりに手間暇(てまひま)がかかっていることを忘れないで.
(私もマルチポストではありませんが
 それを忘れてご迷惑をかけた前科があるので
 偉そうなことはいえないのですが.
 というか思い出すと,非常に痛い(T_T )
>質問に答えるまでにはそれなりに手間暇(てまひま)がかかっている

あの、、結局、質問に答えてないと思うんですけど・・・
677ソース:02/05/03 23:47
begin
MIDI.AIP.Play;
end;
>>676 読解力0ですか
679676:02/05/03 23:53
>>678
はぁ?
>>678
自分のことしか目に入らないので、
一般論として受け取れないのでしょう。
>>676

>質問に答えるまでにはそれなりに手間暇(てまひま)がかかっている

というのは、マルチポストがなぜ悪いのかを説明してるんであって、
今回のことに限定した話じゃないだろ。
しかも、はぁ?ときたか
683676:02/05/03 23:56
>>681
了解。読解力0でした。
>>663
MIDI のどの APIを使いたいのですか? 低レベル APIですか?
WIN32 APIの日本語ヘルプで 低レベル オーディオの概要を見て下さい

それか、ここからソース付きのコンポを探してみて下さい
http://home1.infonia.ne.jp/~delphian/delphi/compo/graphmul.html

再生するだけなら低レベルよりMCIが楽です
685デフォルトの名無しさん:02/05/04 01:10
たくさんのデータがあって、それを操作・管理しようとするとき
recordとして扱うか、classとして扱うか、の判断基準はなんですか?
メソッドがあるならclass、ないならrecord.
687685:02/05/04 01:17
そのデータは階層構造になってるんですが
階層ごとにclass化したほうが良いですか?
それとも一番上の階層だけをclassにしてあとはrecoedにした方が良いですか?
688685:02/05/04 01:19
>687
>recoed→record

綴り間違いましたが煽りではないです。
オーバーヘッドが大きいんであれなんだが、一番最初はTComponentを継承させた
クラスでやるのが階層関係を書かなくてすむから楽だなあ、とおもっている。
>>687
そういうのって、他人に聞くことじゃないと思うが。

> たくさんのデータがあって、それを操作・管理しようとするとき
> recordとして扱うか、classとして扱うか、の判断基準はなんですか?

じゃなくて、どう扱えば、操作・管理が楽に出来るかを考えたまえ。
691685:02/05/04 01:32
classにすると、そのデータを関数に渡すときにポインタが渡されちゃうのが、ちょっとネックなんです。

もしかして、わたし変なところでつまづいてる?
object型とつぶやいてみるテスト。

(たぶん無意味だと思います。)
>そのデータを関数に渡すときにポインタが渡されちゃうのが、ちょっとネックなんです。
大きなサイズのデータをまるまるコピーされる方が便利だと思いますか?

クラスの場合、ポインタであることを意識しなくでも使えるはずなんだけど・・・
(アドレス渡しのレコードの方こそ、ポインタを意識しなければならなくなる)
694685:02/05/04 01:46
>大きなサイズのデータをまるまるコピーされる方が便利だと思いますか?

うーん。そういわれると便利だと思います。
以前に自作クラスを作った時にその関連で苦労したので
ちょっとclassに苦手意識を抱いているのかもしれません。

もう一度、用途をよく考えてみますね。
どうもありがとうございました。
>>693
クラスを値渡しで渡す必要性ってあんまりない気がする・・・コンソール出力クラスとか除いて。
またVB(以下略)
697685:02/05/04 01:50
>693
あ、わたし誤読してますね。(すいません)
うーん。言われたことを参考にして
もう一度、用途とよく相談してみます。
698デフォルトの名無しさん:02/05/04 11:20
おまいらDockManagerって何ですか?使い方おせーろ!
FTPコンポーネント何使ってます?
NMFTPと色々使い比べて見たいのですが。
>>685
極端かもしれんけど、漏れrecordは基本使わない。
データのみといっても、結局生成時の初期化処理やらで
結局class化させる必要が出てくるものだし。
あと、個人的な好みだけど disposeは生理的に嫌い。

>>699
Indy の IdFtp。漏れの場合、List のオプションを指定する
必要があったので、FastNetやICSでなくこれを選んだ。
701デフォルトの名無しさん:02/05/04 20:04
一つしかPC持ってない人はどーやって
プログラムの動作確認すればいいの?
うまくメモリが開放されたかも分からない…
>>701
デバッガ。
>>701
127.0.01って知ってる?
704701:02/05/04 20:33
>>702
ボーランドのページで調べてみたけど
CPUウィンドウってのでいいの?
もちろん見方も分からないけど。

>>703
いえぜんぜん。
マジレス。
>>701
はまずネットワークアプリを作る前に、
ネットワークについて勉強しましょう。
706701:02/05/04 20:58
>>705
いえあの、PC一個で動く簡単なゲーム作ってるんだけど…
ネットワークなんて高等なものは(((( ;゜Д゜)))
"プログラムの動作確認" とか、意味不明な書き方するほうが悪い >>701
メモリ解放の確認だけ答えると、堀さんのMemCheckはどうよ?
これ、”メモリリーク検出 DELPHI” でGoogle検索のトップに出てくるんだけど。ちゃんと探した?
708デフォルトの名無しさん:02/05/04 22:12
MS Office のツールバーにあるようなフラットスタイルなコンボボックスを作りたいのですが、
TCustomComboBox から派生させるのと、TCompornent から自前で作るのと
どちらが効率的でしょうか?
>>708
Delphi Super PageとかDelphian Worldとかで探した方が早いです。
ひそかに>>703は勘違いさん。
>>701
 俺は友人にICQで送って使ってもらってるよ。
 使ってるPCの環境の違いだけじゃなく、自分とは違った操作・入力をしてくれるから、
 自分じゃ気付かないバグが出てきたりして有り難いです。
712708:02/05/04 22:50
一般的な話として、ComboBox などのコントロールの境界線のスタイルを変更するにはどうすればいいのでしょう?
SetWindowLong などを試してみたのですが、うまくいきません。
713701:02/05/04 22:59
>>707
何でかそれ動かなかった。delphi6だから?
きっとやり方はあるんだろうけど…

>>711
は〜、なるほど、それですね。ありがとうございました(感謝
CreateParams
で、出来ないスタイルなら自分で描く
>>701
仕事で動作確認をする場合に、取りあえずVirtual PCって製品で仮想PC上に
Win98/SE/ME/2000環境を1台のPCに構築して動作確認を取ってます。
(厳密にはSPやIEのバージョンでより細かく分けてあります)
正式にはやはり専用のPCでやってますが、Virtual PC上で動かないソフトは、
本物のPCでも動かないのでかなりの確立で動作確認になっていると考えられる。
IndyTIdHTTPコンポーネント2つ以上同時に通信する方法ありますか?

2つめで通信をすると1つめが中断(?)してしまう。。。
717デフォルトの名無しさん:02/05/05 02:29
ちょっと質問です。

整数型→実数型のキャストってどうやるんすか?

Double(整数型)とかやると、「不正なキャスト」言われてしまうんですが。
実数型の変数を用意して整数型変数から代入すれば文句を言われないんだけど、
関数の引数の都合上とかでちょっとキャストしたいときにどうすればいいのかなと。。。
よろしくお願いします。


>>716
TIdHTTPのインスタンスを2つ以上作っちゃえばできるよ。
もちろん別々のスレッドで使おうね。
>700
私もrecordはまず使わないです.
Delphiを始めた頃はclassの使い方がいまいちわからなくて
recordに頼ることも多かったのですが.
719デフォルトの名無しさん:02/05/05 02:43
レコード型とか構造体って何ですか?

構造体って言うのは変数をひっくるめたものだと考えれば良いのでしょうか。
でもって構造体の別の呼び方をRecord。
あってますか?

疑問に思うのですが変数をバラバラに宣言するのとまとめてしまうのとは、何か違いがあるのですか?
データの受け渡しに便利
おっさん「今なら、構造体圧縮袋が20枚セットで
      たったの1万円!!1万円でご提供させていただきます。」

おばはん「いいえ!今回は、構造体圧縮袋90万枚突破キャンペーンにつき
      さらに20枚をおつけいたします。」

おっさん「えっ?40枚で1万円?これはすごい。」

ナレーション「さらに今回は小さな構造体を持ち運ぶのに便利な
      構造体圧縮袋ミニ10枚と、
      構造体圧縮袋の使い方を丁寧に説明した
      ビデオをおつけいたします。
      お申し込みは、今すぐお電話かFAXで」

ぜろいちにーぜろ〜
722デフォルトの名無しさん:02/05/05 03:15
>>719
>疑問に思うのですが変数をバラバラに宣言するのとまとめてしまうのとは、何か違いがあるのですか?
おまえな、
カバンぐらい持ってるだろ?小学生ならランドセルでもいいや。
会社や小学校に荷物まとめて持っていくのと、バラバラに持っていくの、
どっちが楽だと思う?
723デフォルトの名無しさん:02/05/05 03:20
>>719
>疑問に思うのですが変数をバラバラに宣言するのとまとめてしまうのとは、何か違いがあるのですか?

すでに自分で答えを書いていますよ。
「バラバラ」で扱うべきか「まとめて」扱うべきかは、便利な方を
選択すればよい。
例えば、関数を作ったときに、引数に多くの変数を渡したいときは、
それら変数をまとめてレコード(構造体)にした方がすっきり記述できる。

#わたしはレコード使いまくりです。クラスはめんどいから使わない。
724デフォルトの名無しさん:02/05/05 03:38
>>717
実数と整数のキャストは出来ません(ヘルプの「型キャスト」に書いてあります)。

整数→実数の変換には「Int」を使います。
実数→整数の変換には、「Ceil」「Floor」「Trunc」などがあります。
>>724
>整数→実数の変換には「Int」を使います。


>>717
値渡しならキャストしなくてもそのまま通ります

参照渡しなら実数型の変数を用意する必要があるでしょう
726717:02/05/05 03:57
>>724-725
ありがとう。やっぱり出来ないのか、意外だね。

>>725
>値渡しならキャストしなくてもそのまま通ります
ということは、暗黙の型変換はしてくれるんだ。むむむ・・・
727719:02/05/05 04:29
>>723
えっと。
文法上の事ではなく動作的に一緒なのかとお聞きしたのです。
レコードでまとめた方とバラバラで宣言して動作させた物とではやはり変わってくるんですかね。

そりゃ人間では体感できないでしょうけど。
>>719
構造体は C や C++ での言い方.
Pascal ではレコード型と呼びます.

プログラムが小さいうちは必要はないかもしれませんね.

小さくても使うけどな・・・。結局は作るもの次第じゃない?
>>716
winsockの話とか読んでみ。なんとなくわかるかもしれん。
www.asahi-net.or.jp/~nk2w-ishr/winsock0.htm

>>727
レコード型の長所を一言でいうと類似する変数のグループを繰り返し
コーディングしなくても済むことに尽きるのです。
よって記述方法を無視すればバラで書いてもほぼ同じなんだけど。
だからといってバラで書くメリットがあるかというと、「ない」です。
扱うデータの質にも依るけど長期的にみると、構造体でまとめた方が
ソースの可読性が上がって幸せになることが多いので、
まとめて扱うデータが3つ超えたら構造体に纏めてく方向で一つ。

>>729
ん。プログラムが〜、というより扱うデータが小さいうちは、かな。
2つでも 意味があるんじゃない? 例 TPoint
732デフォルトの名無しさん:02/05/05 09:50
プログラマー板で聞いたら誘導されたので、こっちにきました

で、質問です

Flash 再生コンポって無い?
もしくは、Macromedia の技術資料の URL

一応、Delphian World ってところで探したんだけど無いんだよね
しょうがねぇから自分で作ろうと思ったんだけど、Macromedia の
サイト行っても技術資料ないし…
733デフォルトの名無しさん:02/05/05 09:54
>>728
Record=構造体で良いんですよね?

クラスはobjectとかいうのもO-Pascalの呼び方でしょうか?
普通にClassとも呼んでたりしますが。
>>732
ActiveXの取り込みで Flashを取り込むのを普通の人は選択すると思いますが?
>>733
構造体:レコード型
Record:レコード型

もっともシンプルなデータ構造の一つ。
736デフォルトの名無しさん:02/05/05 09:56
>>732
ActiveXの取り込みでFlash使えますよ。
黒い枠が出てくるのであとは再生させるだけです。
凄い簡単です。

使い方はVBと一緒です。
クラスのインスタンスがオブジェクトだと思います

ただDelphiにはオブジェクト型というのも残っています。
これはレコード型にメソッドが追加されたようなもので
変数宣言するだけでメモリが確保されるタイプのものです
 ただし、C++Builder等では使えないし、将来無くなる可能性大です
738733:02/05/05 09:58
>>735
自分は最初Record型って言うからデータベースの管理などに重宝する型なのかと思いました。

「数字、文字列、Yes/No、」

でもよく考えたら構造体そのまんまですね。
739732:02/05/05 10:06
activeX で再生するとブツブツとノイズ入るから嫌なんです。細かい制御できないし…
SDK の資料手に入りましたので、これからコンポ作ります。レスありがとう
>>738
うん。DBにおけるレコードと構造体。何が違うと言われれば何も違わない。
>>738
正直、ボーランドの入門書の説明が下手だというワナもある。

「レコード=構造体なんだよ」って率直に書いてくれれば良いのに変な回りくどい書き方するから
余計こんがらがった。

おれも最初「レコードって何だ?」って思ったし。

Delphiのマニュアル全体は理解しにくすぎ。英文を無理に訳してる部分もあるし。
別で金払うからもう少しマシなの作ってと言いたい。
あ、Delphiの解説書があるか・・・ 
俺は素直にレコードみてああ、構造体だなって思ったが・・・。
そんなに迷うことなのか?
743名無し募集中。。。:02/05/05 10:55
pascalのレコードは
cの構造体+共有体みたいなもん
共有体ってなあに?
745名無し募集中。。。:02/05/05 11:34
>>744
unionです
一つの領域をいろんな型として利用できます
746デフォルトの名無しさん:02/05/05 11:36
最初、APIに触れたときに、構造体=recordって理解したけどなぁ。
それからrecordを使い出した記憶がある
共有体ってキャスト不要(っていうか肩代わり)の変数みたいに見えるけど
レコードと関係あるの?
748名無し募集中。。。:02/05/05 11:53
>>747
pascalではレコードの可変部分ってのを使うと
cの共有体と概ね同じ事ができるのです。
>>745
>>744 は、共有体じゃなくて共用体ではないかと言いたいのではないか ?

>>747
> 共有体ってキャスト不要(っていうか肩代わり)の変数みたいに見える
> けど
その認識は、ちょっと痛い。キャストと共用体では動きが異なる。
union {
 float f;
 int i;
} u;
u.f = 1.0;
とした時の (int)u.f の値と u.i の値は一緒にならないよ。
どっちかって言うと、VB の Variant みたいにどの型がくるかわからない
時に構造体で定義すると領域がもったいないので一つの領域を使い回しす
るようにしている。そう言う意味では Pascal の方が徹底していて、代入
した型と違う型で読み出したらエラーにするような処理系もある。
750デフォルトの名無しさん:02/05/05 12:13
>>717
なんか誤解があるようなので言っておくと、

「型キャスト」の場合、
実数 := 整数
はそのままでOK。
整数 := 実数
は Trunc(X),Floor(X), Ceil(X) 等の関数を使う必要がある。

procedure Hoge(E:Extended); ...

という手続きの引数に、例えば実数型である I を指定したいときも

Hoge( I )

だけでOK.
問題なのは、

procedure Hoge(var E:Extended); ..

という引数の場合。これは、変数のコピー(値渡し)ではなく、
変数その物(参照渡し)を受けとるって意味だから、型が一致する
必要があるの。そのばあいには、

Hoge( I )

ってやると、文法エラー。
共用体は固定小数点で使ったな。
>>751
俺、RGBで使ったな。
753デフォルトの名無しさん:02/05/05 14:42
共用体はヘッダで使った。

THeader = record
case Integer of
0: (Bytes: array [0..7] of Byte)
1: (Param1, Param2, Param3, Param4:Word)
end;

のように。
結構便利。
754デフォルトの名無しさん :02/05/05 14:53
指定した文字だけのフォント設定を変換するには
どのような記述をしたらよいでしょうか?
>>754
変換するには変換するには変換するには変換するには変換するには変換するには変換するには
>>754
意味不明
757デフォルトの名無しさん:02/05/05 15:10
「DELPHI4プログラミング技法vol1」のP403で

var ColNames:TStringList;

ColNames.AddObject('LAST NAME',pointer(StrToInt(edtLastName.Text)));

となっていますが、なぜ pointer( なのですか?
TObject( ではダメなのでしょうか?

>>757
だって、Intって組込型だし。
759デフォルトの名無しさん:02/05/05 15:13
AddObjectの第2引数って Pointer 型じゃなかったっけ。
760757:02/05/05 15:24
レスありがとうございます。
ヘルプではAddObjectの第2引数はTObject型となっています。
なのになぜわざわざpointer型を用いているのかを疑問に思ったしだいです。
>>760
確かに不思議だね。
762デフォルトの名無しさん:02/05/05 16:07
たんなる直感で
Integer と TObject の結びつきよりも、
Integer と Pointer の方がより関係付けやすいってことじゃない?

TObject ←→ Integer は、「ハァ?」って感じがするけど
Pointer ←→ Integer は、まだ理解しやすいとか…?
763754:02/05/05 16:09
分かりにくい質問だったので、書き直します。すみません。

実行中に指定した文字例だけのフォントを変えれるようにするには
どうしたらよいでしょうか?
文字例はRichEditの中にあります。
764585:02/05/05 16:20
>>768
例: 大きさなら
RichEdit1.SelAttributes. Size:=30;

フォント名なら
RichEdit1.SelAttributes. name
765768:02/05/05 16:44
ハァ?聞いてねえよ。
766デフォルトの名無しさん:02/05/05 17:04
ボタンを押したらMemoのカーソルに位置に文字を書き込むにはどうすればいいのかわかりません
lines.add();だったらカーソル関係なく行ごとにしか書けないし・・・。
Memo1.SelText := 'アホ';
ヘルプ読めよ。
768デフォルトの名無しさん:02/05/05 17:10
>>767
それでも教えてくれるあなたはとてもいい人。サンクスコ。
ヘルプ読んだんですけど、それでも俺はアホなんでわからなかったです。
SelText プロパティは,編集コントロールのテキストの選択部分を指定します。

property SelText: string;

説明

SelText プロパティは,現在選択されているテキストです。SelText を設
定すると選択したテキストを新しいテキストで置き換えることができます。
範囲選択されていない編集コントロールに SelText を設定すると,カーソ
ル位置に新しい文字列を挿入できます。

うーむ、まんまだと思うが。
770デフォルトの名無しさん:02/05/05 17:44
何とかの継承とかいっぱいあってどこ見ればいいのかわからなかったんですよ。
>>770
プロパティとかメソッドへのリンク開いて上から読んでいくだけだ。
ヘルプの使い方を覚える

というのが一番の情報源かもね!
雑談しなくていいからヘルプ見る癖つけようぜ。
774754:02/05/05 19:38
返信ありがとうございました。追加質問ですが
指定した文字例のフォント設定を、FontDialogのフォント設定に
合わせたいのですが、どうしたらようでしょうか?
775764:02/05/05 19:46
>>774

SelAttributes:TTextAttributes の Assign メソッドを見て下さい

そして TFontDialogにはFontプロパティがあります。 もう判りますね?

なかなかの追い詰め上手。
777764:02/05/05 19:56
え? そんなつもりはないよ。 じゃサンプルコード

with TFontDialog .Create(Self) do try
if Execute then
RichEdit1.SelAttributes.Assign(Font);
finally free;end;
最近のObjectPascalって例外使えるのね。勉強になった。
>>774
代入すればいいだろ。それも和歌欄なら、君向いてないんじゃない?
>>778
Delphi1から使えるけど。
>>778
with でインスタンス作って tryをbegin代わりに使ってるだけだと思うが?

例外というより、finallyは 例外除けって感じだけどな
777って778と別の話?誤爆だろ?
783754:02/05/05 21:13
解決しました。ありがとうございました。
また、質問があったらHELPを見てから質問しますので
よろしく。
>>779
どのように代入するのでしょうか?
>>782
推測しろよ。お前はコンパイラかw
785デフォルトの名無しさん:02/05/06 01:13
16進数を2進数に変換するにはどうしたらいいですか?
>>785
まんまなTIPSあるから検索すれ。
>>785
つぅかちょっと前にそれで盛り上がったぞ。
788785:02/05/06 01:18
>>786>>787
どこにありますか?

 じ ぶ ん で さ が し や が れ
>>789 漏前、非道いこと言うな。激しく同意。
791785:02/05/06 01:24
自己レス

あ り ま し た
792デフォルトの名無しさん:02/05/06 05:31
>>789
教えてあげてもいいだろ?

やさしいスレなんだから
793デフォルトの名無しさん:02/05/06 05:36
>>792
Delphiがやさしいだけでこのスレッドとスレッドに書き込む人はやさしくない。
>>792
×優しい
○易しい
795デフォルトの名無しさん:02/05/06 06:50
>>792
Delモナーが降臨するのを待て。
>>793
というより愛の鞭だな
甘えるのはよくない
ファミレスで 幼稚園児に親がハシでアーんとか食べさせてるのを見て やさしい親だと思うか?

自分で食べさせるだろ? 食べ方を覚えさせるのが優しい親だろうが?
>>797
魚を与えるより釣り竿を与えろ。ですな。
D6が出て随分になるけど、MyBaseの評価がWWW上に見当たらない。
特に検索,保存のロジックなんてアプリ毎にシコシコ書くのは面倒だが、
他のDBMSは頒布が面倒なので、使いたくない。

例えば以下の観点で、是非評価を教えてたもれ>使った事あるヒト
1) 使い勝手(主に開発時)
 −DB関連コンポ使えば他のMyBaseと他のDBを気にする事なく
  例えば特有のロジック抜きで扱えるのか?
2) 速度
 −オンメモリで処理する時点であきらかに高速なんだが。
  扱うデータ量が増えればスワップでメリットが相殺される筈。
  MyBaseで扱うデータ量上限の目安を知りたい
3) 頒布
 −Install Shield 嫌いなんだが、MyBaseを使用するアプリは
  実行ファイル以外に何か配布する必要はあるのか?
4) その他
 −その他、気になるトコロとか。
  自前で記述するのとMyBaseを使うのとでどちらがオススメか、とか。
  MyBaseの評価ならココにあるじゃねーかボケ!とかも歓迎。

いじょ、よろしくおながいします
>>799 前にもちょっと話題に上がったがまるで盛り上がらなかった
使っている人間が少ないと思われ。
実行ファイルが約300K増えるだけで、他に必要な物はデータファイルのみ。だったと思う。
801799:02/05/06 09:38
>800 ありがとう。過去スレが軒並みHTML化待ちで見れなかったので
前回話題をまとめて返答くれたのは非常にありがたい。
802デフォルトの名無しさん:02/05/06 11:34
実行ファイルの最小サイズってどのくらいなんでしょうか?
delphi6で何もしないで実行ファイル作ると500KB位なんですが。
それより小さくなることあるんでしょうか?
VCLを使わず自分でウィンドウを作れば数10kBに収まる。
>>792
Delphiに関することなら教えるが
レス検索の代行をする必要はまったくない。
805デフォルトの名無しさん:02/05/06 12:07
>>802
ありがとうございます。
具体的にはどうすれば?と訊きたいのは山々ですが
その前に調べて見ます!
>>802 FAQにも関わらず答えてくれる803に敬意を表して補足。
VCLを使わないとDelphiで記述するメリットの80%が消滅する
だから日々を幸せに暮らしたいなら実行ファイルを小さくする事は
基本、忘れた方が良い。
上記を踏まえた上でというならば、パッケージ化とかDLL化とか
(邪道くさいがUPX圧縮とか)があるので、自分で適当に探ってくれい。
807悪魔のささやき:02/05/06 12:19
>>802
下のスレッドが参考になりますよ。
VCLを使わず自力でやれば実行ファイルのサイズも小さくなりすっきり!!

Delphiで小さな実行ファイルを作ろう
http://pc.2ch.net/test/read.cgi/tech/1009080085/
>>806
メリットはなくなってもそんな真似が出来てしまうのがDelphiのすごいところ。
VBにはまねできません。
809802です:02/05/06 13:13
806,807,808のみなさん!ありがとう。
そして気づけばsage進行のこのスレを上げてしまっててごめんでした。
これから807さん紹介のスレを熟読してきます。
感謝!
sage進行じゃないよ。質問はageるべき。
>>808
同感!
>>806
>VCLを使わないとDelphiで記述するメリットの80%が消滅する

同感だが、806 さんの場合、あとの20%のメリットってなに?
>>812
コンソールアプリが組める=10%、小さいEXEが作れる=9%では?
>>812
806さんじゃないけど、 俺低レベルのwavAPIコンポとかACMコンポとか
作ったもんだから、他の言語使う時でもその部分はDLLにして使ってるよ
815812:02/05/06 20:46
>>813
>>814

なるほど。
でも VB は圏外だとしても、VC++でもそれは楽勝では?
なぜ、VCLなしの Delphi のメリットといえるの?
>>815
VC++ > Delphi≒VBって前提の話よ。世の中そう考えてる人が多い。
817812:02/05/06 20:54
>>816

あっ、そういう流れのハナシだったわけね。

VC++ は Delphi より、優れているところもあるけど、総合的にみれば
Windows アプリ開発環境として Delphi の方が優れている、と思っています。

それで、VCLなしでMFCなしの VC++と比較して、どうなのかな?
と思っていたんです。ドキュメントの多さでは C も使える VC++ の
勝ちだと思うけど、その他で Delphi のメリットってなんだろうね。

813,814,816 ありがと
818悪魔のささやき:02/05/06 21:14
>>815
VC++だと楽勝も何も・・・
819悪魔のささやき:02/05/06 21:17
>>817
ドキュメントが激烈に少ないから結局C++のサンプルも読むようになる、
その結果、DelphiとC++の両ドキュメントを参照できる分、Delphiが有利(藁

冗談は置いておいて(あながち冗談じゃないが
まあ、後は言語の好き嫌いじゃないですかね。VCLなしで考えると。
Delphiのエディタって、前方検索はショートカットキーではできないんでしょうか?
ヘルプのショートカットキー一覧を見てもないんですが…

検索ダイアログで前方検索にチェックを入れないとダメ?
個人的にはObjectPascalが使えるのとコンパイルが早いというのが
Delphiを使う理由の20%くらいを占めている。
822デフォルトの名無しさん:02/05/06 21:35
Delphiで「最大公約数」を計算するプログラムgcmを作成せよって課題
が出たんだが、どういうプログラムソースを作るか全くわからん 教えて
ください。
823 :02/05/06 21:40
>>822
全ての約数を求めるプログラムを書いて、共通するものだけを抜き出す。
824812:02/05/06 21:40
>>819
>>821

回答ありがとう。

そうなんだよね。ObjectPascal すきです、オレ。

あと、激速コンパイルというのも、プログラマの環境としては
重要な要素だとね。本質的でない、という主張も聞きますが、
結構重要なことだと思うよ、確かに。

個人的には、VCLなくても MFCありのVC++ より Delphi を
使いたい。状況が許せば....。

>>822  ユークリッド 互除法 で検索してごらん

http://pc.2ch.net/test/read.cgi/tech/1009903617/
>>820
残念ながらないみたい。俺も不便で困っている。
検索を通り過ぎた場合なら、undoで前の位置にもどることができるが、
やはり、現在位置から上方に一発で検索できない。
Delphi使い始めたころからの不満。

>>821
コンパイルが速いのはでかいよね。
10万行近くのものを再コンパイルしても、10秒もかからないとそりゃ離せなくなるさ。

>>822
http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=%8D%C5%91%E5%8C%F6%96%F1%90%94+gcm
827デフォルトの名無しさん:02/05/06 21:44
>>826
10万行もの長いプログラムを一つのファイルに書く人はいない。
ローカル変数の宣言は関数の先頭でしか出来ないのでしょうか?
ストレスがたまりまくって困っています。
>>828
C++厨?
830822:02/05/06 21:48
プログラムソースを提示してくれれば一番いいんだけど
誰か作ってくれー
>>828
ソープ逝って抜いて来い
832デフォルトの名無しさん:02/05/06 21:49
>>830
課題は自分でやるものだろ?
ヒントはもらっているんだから自分でやれよ。
http://www.nara-edu.ac.jp/~asait/c_program/sample/euclid.htm
>>828
関数の行数が多すぎなければ気になりませんけど
関数の先頭で変数宣言するのが嫌な人はよほど長い関数を書いているのだろうか。
ローカル変数の宣言は関数の先頭でしか出来ないです
ここにはローカル変数の宣言のほかに、
型の宣言、ラベルの宣言、そして関数内関数も宣言出来ます

長すぎるようなら 関数内関数に別けて構造化すると良いでしょう
836828:02/05/06 21:57
通常の関数はせいぜい数十行とかですが、
長さがどうのというよりも、関数を書いていて新しい変数が必要だと気付いたときに
いちいち関数の先頭まで戻って変数の宣言を書かないといけないのが面倒です。
>>836
ハァ!!!!!?????
プログラミングなんかやめちまえ!
>>836
あちこちで宣言されたら、後から読む人が面倒です。
839837:02/05/06 21:58
というより、Perlでもやれ。
840828:02/05/06 22:03
>>837
そんなに煽らないでも

>>838
そうでしょうか?
ローカル変数を先頭でまとめて宣言しようが、初出時(初使用時)に宣言しようが別に変わらないと自分は思います。
むしろ、初出時の方が分かりやすいと思うんですが…

とりあえずできないということなので諦めます。
ありがとうございました。
>>836

言語仕様ですからねぇ。

どうしてもストレス溜まってイヤなら、

1.開発言語を変える
2.関数書くのやめる
3.プログラマやめる

のうちから自由に選べます。
>>840
Delphiの元になったpascalは教育用として開発されました。
 ですから教師が読みやすい必要があります。

あなたに後輩が出来たとして 後輩のコードを読まなければならない時、
どこに書いても良いのと 書くべき場所が決まっているのと、どちらが好
ましいですか?

同じアルゴリズムなら 出来るだけ同じコードになった方がいいでしょう?
独自性はアルゴリズムで表現すべきで、 コードの表現方法で出しても
意味ないですしね
しかしBEGINとENDの嵐のDelphiはもともと読みにく(以下略
>>843
beginとendならそうでもないよ(w
>>817 コンパイルの速さ、なんだけど。先に書かれてしまった。
20%つーのは異論はあるかもだけど、漏れせっかちさんなので
まったりコンパイルされると、やる気が削がれて首吊っちゃう(w

アマからプロまで間口が広く、良い意味で中庸>メリット
ホントは教科書の Pascal評にならって教育用と言いたいけど
実際の教育現場ではシェア優先でC++やJavaを教えちゃう事が多い現実が(w
>>843

なにと比べて?

C, C++, Basic でコード書いたことがあるが、Pascal が一番可読性が
あると思っています。慣れの要素が大きいんだろうけど。

普通は、begin end ともに小文字で書きます。
>>841
1=2では?
関数書かずにpascal書くのは無理だと思われ
変数をまったく使わないというなら話は別だが
>>843
慣れの問題だろ、慣れの。
俺はCから入ったから比較的違和感感じたけど。
>>847
関数書かずに Pascal 書けるだろ・・・
begin end は深いネストや 1行書きを防ぐのに役立っているよ
 複雑になったら構造化するクセがつく
851845 = 806:02/05/06 22:20
817 → 812、ね。スマン
Begin End
beGin eNd
begiN enD
BEGIN END
BEgIN EnD
とか対応させたら見やすくならないだろうか。どのendなのか、とか・・・
>>852
ますます混乱する罠
インデントで十分やろw
begin end は別に嫌いじゃない。
むしろ、if とかにも end が欲しい。
Trueをtrueって書くのは嫌われますか?
if を If って書くのは嫌われますか?
857812:02/05/06 22:28
>>845 = 806

ありがとう。

いま話題になっている、ローカル変数の宣言の場所が固定されていること
や begin end も実はコンパイルの速さに貢献しているのですね。

VC++ではコンパイルが遅いのと、関連する多数のファイルが生成されるのが
気が滅入ります。
>>855
>>856
好きな方でいいと思うけど、統一されてないのは美しくない・・・
>>854
> if とかにも end が欲しい
だから、begin end があるだろ。
>>859
else がついたときにちょっと変になる

if 〜〜 then begin
end <---------------ここの end で if 関連全部終わったかのような感じがする
else begin
end
>>860
if 〜 then
begin
 〜
end else begin
 〜
end;

こーかいとけ。
何度も外出だけど・・・
if 〜 then
begin
 〜
end else
if 〜 then
begin
 〜
end else
begin
 〜
end;
と書くと
if 〜 then
begin
 〜
end else
の部分がブロック化できてなにかと便利
たしかに微妙にCを勉強してからPascalやってみたらやりにくかったなぁ。
それはそうと、
if () then begin
  〜〜
end
else begin
  〜〜
end;

って書いてる折れはやっぱ駄目ですか?
>>863 駄目な書き方ということはないですけど
自分の場合
end
だけの行だと、手が勝手に
end;
と打ってしまうことが多いので
コンパイルエラーを減らすために862のような書き方になったわけで
なるほど、>>862をよく見てみたら結構(・∀・)イイね。
今度からその書き方にしよ。
866866:02/05/06 23:30
。・゚・(ノД`)・゚・。
Delphi.NETが糞だって解って少しガッカリ、俺だけじゃないだろ。
ま、いいけど。
868デフォルトの名無しさん:02/05/07 00:12
(´-`)。o ○ (ソースに半角スペース入れて思いっきり無意味になってるヤツがいるな…)
(´-`)。o ○ (どのソースのことだろう?誤爆かな?)
870868:02/05/07 00:16
        ∧_∧
        ( ´Д` ) Σ スマン 誤爆・・・
       /,  /
      (ぃ9  |
871868:02/05/07 00:17
>>870
はぁ?アホですか?
872868:02/05/07 00:18
>>871 あんた誰?
873デフォルトの名無しさん:02/05/07 00:20
関係無いけどインデント幅いくつにしてる?

基本は 2, 4, 8 のどれかだと思うんだけど、
2 は幅が少なすぎて深くネストしやすくなってしまうし、かといって
8は深すぎて使いにくいので、初心者にはいつも4を勧めているのだが。
男は黙ってインデント幅1。
しかしこれをやると友人から嫌われるという諸刃の剣。
素人にはお勧めできない。
>>873 俺も4
876デフォルトの名無しさん:02/05/07 00:25
>>867
Delphi.NET発表されたの?
>>874
あんた、漢だな。ホレたぜ。
俺の場合、インデント幅によってはプログラム構造に影響を受けないつもりだから
画面が少しでも広く使えるように 2
どこかでPascalは2、C/C++は4使う人が多いって聞いたような…
>>854
COBOLのIF文にはIF〜ENDIFという形式がある。
けっこう見やすくて好きだ。
881デフォルトの名無しさん:02/05/07 00:42
わたくしもインデント1です。
てか、1バイトスペース入れるだけ。
882デフォルトの名無しさん:02/05/07 00:44
インデントは3がもっとも美しい。
今試しにインデントを4->2にしたんだがなかなか見やすい。
深いインデントが嫌いで避けていたんだが、これで多い日も安心。
884デフォルトの名無しさん:02/05/07 00:47
あんまりだ 。・゚・(ノД`)・゚・。
VCLは2でしょ?
C/C++は8が多い。
886デフォルトの名無しさん:02/05/07 01:16
つか、なんで深いインデントは駄目ですか
ソースが見やすければ、全然問題ないのでは・・・?
(インデントを2にする前提だとしても)
887デフォルトの名無しさん:02/05/07 01:18
それより俺は、どれくらいだと「深い」のか基準が知りたい。
誰も駄目だなんていってないだろ
883が嫌いなだけじゃねえのか?
やっぱインデント幅は16だろ。
一目でわかるぞ。
画面が狭いと横スクロールしないと全文が見えないからかな?<深いインデント嫌
891デフォルトの名無しさん:02/05/07 02:37
会社の上司が 「Delphiのパーソナルは商用でも使えるらしいぞ」 などと言ってました。
本当でしょうか?

自分は絶対無理と言い切りましたけど。
馬鹿らしい質問ですいません。
892デフォルトの名無しさん:02/05/07 02:46
>>891
使えません。
-------------
※Delphi 6 Personalでは、商用・業務アプリケーションの開発はできません。
http://www.borland.co.jp/delphi/personal/
社員にフリーソフト(フリーコンポーネント)として公開させて、
それを会社が採用したって形にするって事かな?
上司はワレザー
タイーホ
896891:02/05/07 12:50
>>892
上司にそのURLを突きつけます

マジムカツクので。

自分で開発してるDelphiProも自腹で払ってるって言うのに。(何故か領収書は会社・・・)
897デフォルトの名無しさん:02/05/07 13:00
>>896
いい気になるなよ。
>>891
がんばって路頭に迷ってくらさい。
899名無し:02/05/07 13:48
学校の授業中にカキコ
900デフォルトの名無しさん:02/05/07 14:43
900get
901デフォルトの名無しさん:02/05/07 14:58
procedure TForm1.Button1Click(Sender: TObject);
begin
Thread1 := TThread.Create(False);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 //スキップ
IdHTTP1.DisconnectSocket;
end;

スレッド
procedure Thread1.Execute;
var
i:Integer;
begin
with Form1 do
begin
for i := 0 to ComboBox1.Items.Count-1 do
begin
try
Memo1.Text := IdHTTP1.Get(ComboBox1.Items[i]);
//処理
except
//スキップ処理
end;
end;
end;
end;

Button1を押すとComboBox1に登録されているURLからソースを取得して
処理し、Button2を押すとソースの取得をスキップして
次のComboBox1に登録されているURLへ行くプログラムを作りたいのですが、
上のようなコードだとWin2000だとスキップしても次の処理に行ってくれるのですが
WinMEだと止まってしまいます。WinMEでも止まらないようにするにはどうしたらよいのでしょうか?
とりあえず、VCLを生で犯すのをやめてみてくらさい。
903901:02/05/07 16:51
>>902
すいません。。Synchronizeしてないですね。。
やってみたのですがうまくいかんです。
904デフォルトの名無しさん:02/05/07 18:58
905デフォルトの名無しさん:02/05/07 23:02
delphiのグリッドコントロールでセルの結合とかって出来ますか?
OnDrawCellとかで罫線を自分で書くっていう方法しか思いつかないのですが、それしかない?
906デフォルトの名無しさん:02/05/07 23:06
>>905
よく使うならコンポーネント化しますね

凛太郎さんだったかな・・・実際にそういうコンポーネントを作ったとか書いてたっけ
(更に多機能だったと思うけど)
907905:02/05/07 23:41
>>906
情報どうもです。
やはり自分で書くことになるということですね。頑張ります。
やはりインデントは2.タブも使わない.
人それぞれなんだろうが、人のソースでタブ使われてるのを
修正するときはちょっとイライラする・・・.

まあ、それはその人のソースそのものが糞なせいもあるが.
常にタブでインデントする。何桁かなんて気にしない。タブ1コが1インデント。
見る方で2でも4でも8でも好きなようにタブ幅を変更すればよし。
>>909
(´-`).。oO(たぶんそれが理想的だと思うけど、なんでみんなスペース使うんだろう?
>>910
Delphiは自動手に気変換されるじゃん。
今日から1ヶ月出張に出るので、購読を中止します

bye
>>912
定期的に同じ文章を書いてしおり機能を無効化しようと思います。
>>913
うぅ〜ん いーーけーーずぅーーー
そろそろ 次すれたてたらどう? 埋めちゃうと見えなくなるよ。
Delモナーを召喚しる!
うめ〜
919デフォルトの名無しさん:02/05/09 13:23
産め
920Delモナー:02/05/09 16:05
      __ヘ_ヘ_        ___________
    /∴∵(・) (・)∴\     /
    /∴∵∴∵○∴∵ ヽ   <  こんな糞スレ終了でいいだろ?
   (∵∴∵●〜〜〜●∴)   \  __________
    \∵∴∵∴∵∴∵/     
      \ ∵∴∵∴/
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
922Delモナー ◆fPymXWHY :02/05/09 16:50
>>916
     ガラッ
_┃_┃      _┃
━╋━╋ ∧_∧ ━╋  / ̄ ̄ ̄ ̄ ̄
○┃×┃( ´∀`) _┃< 呼んだ?
━╋━⊂  /    ━╋  \_____
_┃_┃ /     _┃
>>922
次スレの準備よろしくおながいします。
もはやスレ立て専門職だな(w
マジでここもう終了するんですか?結構良かった時もあったのにねぇ。
【質問】Delphiワッショイ!!Ver.7【解答】
名前:  
E-mail: sage
内容:
          Delphiワッショイ!!
       \\  CPBワッショイ!! //
   +   + \\ Kylixワッショイ!!/+
                            +
.     +   /■\  /■\  /■\  +
        ( ´∀`∩(´∀`∩)( ´∀`)
   +  (( (つ   ノ(つ  丿(つ  つ ))  +
         ヽ  ( ノ ( ヽノ  ) ) )
         (_)し' し(_) (_)_)

今度はDelphiファミリーにまで話を広げようかと。
.NET登場で一気に逆転か!?

前スレ モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/test/read.cgi/tech/1019134412

>>2-10あたりに関連情報あり
○過去スレ
○関連スレ
○Delphi製品情報
○関連リンク
○質問者へ
○ソース置き場案内



>>926
それだけは、やめてくれ。
>>926
CPBって言うかな。BCBの方がよく聞かない?
929■質問者A:02/05/10 15:42
Delphi始めようと思い、DelphiのObject Pascalについて詳しく書かれた本を探しています。
お薦めの本を紹介してください。
(コンポーネントとかは適当でいいので文法について詳しい本が欲しいです。)
ちなみにプログラミングはCを少しかじった程度です。
冗談抜きで付属の ObjectPascal 言語ガイド
これより詳しい文法本なんてあるのかな?
931■質問者A :02/05/10 16:19
>930
パッケージ版を買った方がいいということでしょうか?
932デフォルトの名無しさん:02/05/10 16:26
>>930
付属マニュアルはわかりにくい。
お店で買った方が良いよ。
933デフォルトの名無しさん:02/05/10 16:30
>>929
文法についてなら930が言っていることは正しい。ダウンできるPDFがあるはず。
プログラミングの手順全般、テクニックなら本を買おう。
俺は確か「基礎からわかるDelphi6」とかいう本を買ったと思う。
>>933
俺はそれを一昨日買ったよ〜。2,400円。
分厚い本は5,800円とか6,200円とかあったな。
935■質問者A :02/05/10 16:54
本がないと安心できない気質なのでパッケージ版を買ってしまおうと思います。
ありがとうございました。

Personalはフリーだから始めようと思ったのに、結局買ってしまう罠?
936デフォルトの名無しさん:02/05/10 17:44
全半角混在文字列よりcopy関数を使用して文字列を抜き出すと場所が悪いと
後ろが文字化けしたのがくっついてきます。バイト数で抜き出したいのでLeftStr等
は使用できない状況です。
例えば
s1:='ああアああ';
s2:=copy(s1,1,6);

とやると、s2の値が'ああア'#$82となってしまうのです。
後ろの#$82を切り捨てたいのですが良い方法はないでしょうか。
ByteTypeだけ、あれ使えばよいよ。>936
×ByteTypeだけ、
○ByteTypeだっけ、

すつれー。。
文字が漢字かそうでないかを判断するにはどうすれば良いんでしょうか?
例えば'亜'という字が一つあったとして、それが漢字なのか平仮名なのか片仮名なのか判断したいなと。
940デフォルトの名無しさん:02/05/10 18:45
937>の方へ
>>936 の例だと
ByteTypeで6バイト目が2バイト文字の最初のバイトかどうか判断して
そうであるなら5バイト目までを対象とする考えでよろしいのですよね。
一発変換できるわけではないですよね。
確認でした。
>>939
文字コード表を眺めれば答えは出るよ。
>>936
↓こういうのがご希望?
function MyCopy(S: String; Index, Count: Integer): string;
begin
if IsDBCSLeadByte(Ord(S[Index+Count-1])) then
Result:=Copy(S, Index, Count-1)
else
Result:=Copy(S, Index, Count);
end;
943デフォルトの名無しさん:02/05/10 18:59
>>942
ありがとうございました。
これでバッチリです...この部分はたぶん。
944デフォルトの名無しさん:02/05/10 19:57
変な質問でしたらすみません。
windowsNT4 or 2000でdelphi6personalにKodak Image Edit Ctrl
をactivXの取り込みでインストールして、コンパイルすると
「ファイル 'DBOleCtl.dcu' が見つかりません」とでてインストール出来ません
DBOleCtl.dcuというファイル自体がどこにも見当たらないのですが、
どうすればインストール出来るでしょうか?
>>944
Professional以上を買う
946無責任だが:02/05/10 20:39
手で
uses から DBOleCtl を消して

TDBOleControl -> TOleControl
にしてみたら? ダメ?
947944:02/05/10 20:46
>Professional以上を買う
ぐぅ..そうなんですか.....
>TDBOleControl -> TOleControl
にしてみたら? ダメ?
 さっそくやってみたのですが今度は
「'TOleControl.dcu' が見つかりません」と出てしまいました.

imagingを使わなくてもtiffファイルをグレースケールがかかった状態で
表示できる方法が(無料で)あればいいのですが、どなたか知らないでしょうか?
948無責任だが:02/05/10 21:24
違う それはたぶん uses の DBOleCtl を変更したのでしょう? これは消して

なんとか = class(TDBOleContorl) を なんとか = class(TOleContorl) としてみて

でも、そのコントロールの使い方は知らないんだけどね

949944:02/05/10 21:45
やってみましたが70個くらいエラーが出てきました....考えてもらったのに
上手く出来なくて申し訳ないです..
951デフォルトの名無しさん:02/05/10 23:56
>>950
2点。
マジでスレ立てろや!
>>942

IsDBCSLeadByte() は2バイト文字の2バイト目でも true を
返すことがあるのよ。ちゃんと先頭から評価しないとだめ。

Label1.Caption := MyCopy('部部部',1,6);

これは失敗するよ。
954953:02/05/11 01:21

function MyCopy(S:string;Index,Count:integer): string;
var
i:integer;
begin
i := Index;
while i < Count+Index-1 do
if IsDBCSLeadByte(Ord(S[i])) then Inc(i,2) else Inc(i);

Result:=Copy(S,Index,i-Index);
end;
>>939
漢字/平仮名/片仮名程度なら、これで解決しる。
www.nifty.ne.jp/forum/fdelphi/samples/00357.html
あと、サンプル蔵は玉石混合だけど一通り目を通した方がいいよ
956デフォルトの名無しさん:02/05/11 23:15
何気に16進数を2進数に変換する方法は多いけど、
2進数を16進数に変換する方法はどうやればいいんですか?
>>956
n進m進変換って公式確立してなかったっけ?
>>956
4ビットずつ読んでテーブル引き。
959デフォルトの名無しさん:02/05/11 23:22
>>958
ソースきぼんぬ
>>959
ごめん、10進変換してテーブル引きの方が簡単だわ。
961デフォルトの名無しさん:02/05/11 23:30
>>960
ソースきぼんぬ。
10進数に変換したら、IntToHexで(・∀・)イイ!! よね
きぼんぬじゃねえよ、暇人
Delphi忘れたからCっぽくてもいい?

char data = "01001101";

for(i = 8;i >= 0;i--)
{

if(data[i] == 1)
{
temp = 1;

//power
for(j = 0;j < i;j++)
{
temp *= 2;
}

result += temp;

}

}

printf("%x",result);

コンパイルしてないのでつっこみどころ満載(予定)。
Delphiでコンパイル成功版。

var
data :Array [0..8] of char;
i,j,temp,result :Integer;
begin
strcopy(data,'10000011');
result := 0;
for i := 7 downto 0 do
begin

if(data[i] = '1') then
begin
temp := 1;

for j := 7 downto i + 1 do
begin
temp := temp * 2;
end;

result := result + temp;

end;
end;

ShowMessageFmt('%d',[result]);
end;
downto止め版。

var
data :Array [0..8] of char;
i,j,temp,result :Integer;
begin

strcopy(data,'10000001');
result := 0;

for i := 0 to 7 do
begin

if(data[i] = '1') then
begin
temp := 1;

for j := 0 to i - 1 do
begin
temp := temp * 2;
end;

result := result + temp;

end;
end;

ShowMessageFmt('%d',[result]);
end;

966942:02/05/12 03:41
>>953
サンクス、勉強になった
967Delフサギコ ◆zE1iiRdQ :02/05/12 10:51
           _____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < この辺り参考にドゾ
  ミ⊃  ミ⊃  \____________
 〜ミ  ミ
   ∪''∪
[Delphi-ML:32648] Re: 2進数への変換
[Delphi-ML:32992] Re: 2進数文字列 ->数値(BinToInt)変換
968Delモナー ◆fPymXWHY :02/05/12 20:11
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. 新スレ立てました。
 (    ) .| でもこのスレ埋まるまでは、
 | | |  | 新スレはsageておいて下さい。
 (__)_)  \_________________________

新スレはここ
モナーの *やさしい* Delphi質問スレ Ver.7
http://pc.2ch.net/test/read.cgi/tech/1021201697/
埋めると お金払ったした人しか見えなくなるよ。

あ!、埋めて皆で金払おう運動展開中?
あっちもこっちもだと面倒だから、早く埋めよう。
971デフォルトの名無しさん:02/05/12 20:58
1000取りやる?
972デフォルトの名無しさん:02/05/12 21:56
タイトルバーのないウインドウのサイズを変更したい
>>972
どうぞ。
974デフォルトの名無しさん:02/05/13 00:01
>>972
そんなことはオレ様が許さねぇ!!
975デフォルトの名無しさん:02/05/13 00:06
ジンギスカンは出るなよ!絶対だぞ!
976デフォルトの名無しさん:02/05/13 00:28
いつから「HTML化するのを待っているようです」とかぬかすようになった
のかねぇ?
で、我慢出来ないヤツは金払ってんの?
>>976
ガタガタ言わずに払え。
ただで使わせてもらえるだけありがたいと思え。
978ガタガタ:02/05/13 00:35
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
ガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタガタ
979デフォルトの名無しさん:02/05/13 00:59
EmbeddedWbってのを今DLしたんだけど、readmeすらついてないのな…。
ちょっとビクーリ。
980なかなか埋まりませんネ:02/05/13 01:26
EmbeddedWb使ってる人、手を挙げてー!
易しい
優しい
      ∧∧  ミ _ ドスッ
      (   ,,)┌─┴┴─┐
     /   つ やらしい? |
   〜′ /´ └─┬┬─┘
    ∪ ∪     ││ _ε3
            ゛゛'゛'゛
>>980
俺も気にはなっていたんだ。感想きぼん。
       v
      (゚ω゚) <おいらのこと呼んだ?
     /(  )\
      /'\
>>984
氏ねアピッシャー
こそー
a
cえーと。
昔、こうゆうことしてたらね、
とちゅうで、さらしあげされちゃってね、
ほんとにうつになっちゃったの。
それで、こううつざいのんでたんだけど、
。。。
なかなかよくならなくて・・・。
で、きづいちゃったのね、
やっぱり1000とらなきゃ治らないって。
だから、こうしてがんばってるわけ。
。。わかる?
でも、そうすると次のスレへの誘導もする必要があるの。
それは大切でしょ?
モナーの *やさしい* Delphi質問スレ Ver.7
http://pc.2ch.net/test/read.cgi/tech/1021262086/l50
1000デフォルトの名無しさん:02/05/13 12:55
1000!!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。