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

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

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

前スレ Ver.4
http://pc.2ch.net/test/read.cgi/tech/1016467137/
それ以前は >>2 参照。

Delphi6のアップデートは済んでいますか。最新版は3月29日。 >>5
ソース置き場作りました。ファイルのアップロードもできます。 >>7

○過去スレ >>2
○関連スレ >>3-4
○Delphi製品情報 >>5
○関連リンク >>6
○質問者へ >>6
○ソース置き場案内 >>7
2Delモナー ◆fPymXWHY :02/04/03 12:10
■過去スレ

モナーの *やさしい* Delphi質問スレ Ver4(書き込み可)
http://pc.2ch.net/test/read.cgi/tech/1016467137/

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

モナーの *やさしい* Delphi質問スレ Ver2(書き込み可)
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/03 12:10
■関連スレ(続き)

○***すれ立てるまでもない質問はここで***
どのスレッドに質問したらいいか、わからないときはここで質問してみよう。(略)
第12刷 http://pc.2ch.net/test/read.cgi/tech/1016631412/
第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/
1 (行方不明)

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

○delphiで作られた有名ソフトって何がある?
delphi自身もdelphi?てか、今delphiやってる人へ希望を与えてやって下さい。
http://pc.2ch.net/test/read.cgi/tech/990056026/
4Delモナー ◆fPymXWHY :02/04/03 12:11
■関連スレ
一番上が新しいスレです。書き込みは新しいスレに。

○ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室
Delphi や Borland に関する話題、雑談や質問をしながらマターリくつろごうや
A http://pc.2ch.net/test/read.cgi/tech/1013298748/
@ http://pc.2ch.net/test/read.cgi/tech/1003664165/
( ゚Д゚)ノ 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/
その2 http://pc.2ch.net/tech/kako/995/995950803.html
その1 (逝ってしまったようです)
(続く)
5Delモナー ◆fPymXWHY :02/04/03 12:11
■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/03 12:12
■関連リンク

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

こちらへ
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/03 12:13
■ソース置き場

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

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


以上。
8Delモナー ◆fPymXWHY :02/04/03 12:19

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

厨が少ない時間に立ててみました。

3と4が逆になってしまったー!!!
>>3-4は逆にして読んでください。
スマソ。鬱駄死脳。
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ・∀・)< >>1-8 とても良くまとめ
 (    ) \  られていて、実にGoodです
 | | |   \___________
 (__)_)
あのう…

TNMClient でも TClientSocket でもなんでもよいのですが、
とにかく層言うのを使ってチャットクライアントを作ったとしますよね。

複数起動しても正しく動作するようにするにはどうすればよいのでしょう。
何が言いたいのかと言うと、

まず、チャットでの通話先は IP によって判別しますよね。
そして、IPでPCを特定しても、そこで複数のクライアントが起動している場合はどうすれば良いのかと。

で、サーバ側ではメッセージを受け取っているわけですよね。
どのソフトから来たか、というのをどうやって判別するのかと。

…というよりも、TClientSocket を複数起動すると
エラーが起こる確率が高くなるような気が。
11デフォルトの名無しさん:02/04/03 18:05
DelphiでOS作ろうと思うんだけど出来る?
>>11
できる・・・CでやれることはDelphiでも全部できる
とにかくがんばってくれ
Windows上で動くOSですか?
>>11
作業手順
 1、Delphiでインラインアセンブラを使ってブートローダコードを書く
 2、ブートローダコードのアセンブル結果を抽出してブートセクタに書き込む
 3、 system.pas を biosコールに書き換える
 4、後はガンバル
Windows標準のダイアログボックスにあるボタン
(“はい”とか“いいえ”など)を書き換える悪戯をするプログラムを
作ってみたいのですが、何か参考になりそうな解説ページは
無い物でしょうか?

フックを使うんじゃ無いかと思い探してみたのですが、
「ボタンを押した後にホントに良いかもう一度確認する」とか
「CtrlとCapsを入れ替える」という事が出来と書いてるページしか
見つかりませんでした。
ZLibを使おうとおもい、サンプルコードを書いたのですがナゼかエラーがおこります。どうしてでしょうか。
コードは↓に置きました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1017824917
17デフォルトの名無しさん:02/04/03 19:49
ボスケテー!!

↓みたいなコード化書いたんだけど、自分としては、
H.Buf[3] := 1
H.Buf[4] := 0 で
H.Param1 を観たとき、256 とでてほしいわけね(1かも)

でも、実際にやってみると 0 としかでないわけよ。
なんでだろう…


type
THeader = record
case Integer of
0: ( Buf: array [0..6] of Byte );
1: ( Code: Byte;
Count:Byte;
Index:Byte;
Param1:Word;
Param2:Word;
);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
H:THeader;
begin
H.Buf[0] := 10;
H.Buf[1] := 20;
H.Buf[2] := 30;
H.Buf[3] := 1;
H.Buf[4] := 0;
H.Buf[5] := 0;
H.Buf[6] := 0;

caption := inttostr( H.Param1 );
end;
>>17
THeader = packed record
>>17
H.Buf[4] := 1
H.Buf[3] := 0
とする

 エンディアンで検索してみて
>>16
> ナゼかエラーがおこります。
プログラム組む奴が素人みたいな報告をするな。
デバッグのお勉強をどうぞ。
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ・∀・)< おまえらはせっかくの >>1-8 を
 (    ) \  良く読んだのかと小一時間・・・(笑
 | | |   \___________
 (__)_)
ListViewの上でポップアップメニューを表示させるようにしてた時に
ポップアップメニューのCaptionがListViewの幅より長いときに、
ListViewのスクロールバーや一部分が再描画されない時がある
のだが、これってグラフィックアクセラレータの問題だろうか?

再現しませんか?
23デフォルトの名無しさん:02/04/03 21:59
Delphiでウィルス作れる?
作れるかどうかだけ教えて欲しいキボンヌ!

今友達と口論になってて

実在するかどうかでもイイです。(こっちの方が手っ取り早いかも)
>>23
ツクッタコトアルヨ
>>23
今作って送り付けました。
オリジナルなのでワクチンは効きません。
>>23 あったと記憶してるけど
・・・・別にDelphiだから作れないという事はないから・・・ただメンドクサイだけど


簡単にやるなら、インラインアセンブラでリロケータブルなコード書けばいいんだけど
それはつまりDelphiらしさを使ってないわけで
27デフォルトの名無しさん:02/04/03 22:38
あうー。TFormatRangeって何なんだ?
ヘルピで検索しても出てこないっすー。F1でも駄目っすー。
参考ページでもいいから誰かご存じの方教えてください。
APIで使う構造体だろ。

typedef struct _formatrange {
HDC hdc;
HDC hdcTarget;
RECT rc;
RECT rcPage;
CHARRANGE chrg;
} FORMATRANGE;
2927:02/04/03 22:48
>28
 ありがとうござました。修行してきます。
30デフォルトの名無しさん:02/04/03 23:05
画面があるとします
その画面にブラインド効果のようなのを描画するにはどうしたら良いでしょうか?
よくJAVAとかで見かける左右に絵が出てくる奴です。
31timerで:02/04/03 23:20
左右に動かしやがれ
Delphi用のウィルスコンポーネントとかってないのかな?
探せばどっかにありそうな気もするんだけど。
33デフォルトの名無しさん:02/04/03 23:27
基本的にウィルス作ってるヤツは人間のクズだね。
34Delモナー ◆fPymXWHY :02/04/03 23:29
>>32
例えばアドレス帳に載っている全員に
メールを送りつけるとか?(藁
私は知りません。

こういう場でやばそうな質問をすると、
>>23-25みたいに、ろくなレスがつきませんな。

>>9, >>21
ありがとうございます。
一人でも真剣に読んでくれた人がいて嬉しいです。
できれば全員に読んでほしいんだけど。
(全員読むようだったら厨なんか出ないか)
35Delモナー ◆fPymXWHY :02/04/03 23:31
>>33
プログラミングをやる人だったら、
簡単に作れるからな。
この辺は完全に、
人間としてのモラルがあるかどうかの世界だよ。
モラルもそうだし国によっちゃ死刑か終身刑だぞ。
もしネットに流れデモしたら・・・
ブルブルガタガタガタガタ
37デフォルトの名無しさん:02/04/03 23:52
TWebBrowserを使用していますが、ページの表示はWebBrowser1.Navigate(Url);
とかで出来るのですが、htmlソースの取得はどうすればよいでしょうか?
>>37
socket
3937:02/04/03 23:57
>38
すいません。もう少し詳しくお願いします・・・・
40デフォルトの名無しさん:02/04/04 00:00
wininet clientsocket get http
>>35
ツクッテミル コトト ハイフシテ コンランヲタノシム コトハ ベツジゲン ノハナシダロ
`ロクナレスガツキマセン` ト イワレモコマルヨナー
シツモンニハ テキカクニ コタエテイルトモウガ?
>>39
ソケットも知らないでHTTPクライアントを作る時点で何かがおかしい。
43誰でも最初は初心者ウォンチュ!:02/04/04 00:11
いいから>>40を検索してみれ!






ことり
44デフォルトの名無しさん:02/04/04 00:23
>>37
D6かな?
IndyのIdHttpを載っけて、

Memo1.Lines.Text := IdHttp1.Get('http://www.2ch.net');
45デフォルトの名無しさん:02/04/04 00:30
何もかも初心者なんじゃないの?Indyインストールから始めないとアカンのでは?
かく言うオレが未Indyインストール(藁
ふーん。そーやんのかー…<Indyでソース
最初からパソナルにも付けてくれればいいのに…。
>15ではありませんが、
ダイアログボックスのボタンのキャプションって
どうやったら書き換えれるのかは俺も知りたいです.

市販アプリとかだと変えてるのがある気がしますが
そっくりなフォーム作ってるだけでしょうか?

どなたかご存知の方よろしくお願いしますー.
47MessageDlgPosHelp:02/04/04 00:35
MessageDlgPosHelp
48デフォルトの名無しさん:02/04/04 00:39
>>46
市販アプリは自作フォームでしょうね。

Windows全体でやりたいなら常駐して監視する必要がありますから、
・フックを使う
・FindWindowを使う
のどちらかでしょう。確実なのは前者ですが、きちんと作らないと
システム丸ごと落ちる可能性があります。
タイムラグ発生の可能性はありますが、FindWindowの方が簡単だと思います。
49Delモナー ◆fPymXWHY :02/04/04 00:49
>>41
「ろくなレスがつきませんな」
すみませんでした。
半角カタカナで、短く一言で書かれていたので、勘違いしてしまいました。
ここに反省しお詫びします。
迂闊な発言をしないよう今後十分注意します。
>>49 ハンカク ナノワ チョットワケアリ ナモノデ モウシワケナイデス
妙に仕切るんでなく、行動で示せって感じだ。
52デフォルトの名無しさん:02/04/04 01:18
MS Internet ControlsのActiveX使ってるけど、HTMLのソースってどこに格納されているの?
5352:02/04/04 01:27
あ、似たようなこと書いた人がいたね。
http://pc.2ch.net/test/read.cgi/tech/1017803412/37
54Delモナー ◆fPymXWHY :02/04/04 01:31
>>51
そうですね。
>>49は急に態度を変えたように見えてしまいました。

自分の地としては敬体で書いているので、
この場では見ず知らずに人に対してでも、
フレンドリーな文体と敬体を使い分けているんだけど、
詫びる気持ちを表現しようと敬体で書いたら、
逆に白々しい感じを与えてしまった・・・。本当にスマソ。反省してます。
55デフォルトの名無しさん:02/04/04 01:34
固定な人はいろいろ大変だね。
>>54
だからそう丁寧にレスしなくていいんだよ。
雑談スレじゃないだろ?
# これにレス付けるなよ。
57知らんけど:02/04/04 02:04
(WebBrowser1->Document as IHTMLDocument2).outerHTML
58間違えた:02/04/04 02:05
(WebBrowser1.Document as IHTMLDocument2).outerHTML
59こっちか?:02/04/04 02:07
(WebBrowser1.Document as IHTMLDocument2).body.outerHTML
つーか、試す気ないから適当に調べれ
60デフォルトの名無しさん:02/04/04 03:14
鯖にファイルを転送して、しかもそれをリストアップ
したいんだが、どうしたらできるん?
CGIを使うのか?(なるべく使いたくない。ケチ鯖ユーザーだから…)
不ツーにFTPかHTTP
62デフォルトの名無しさん:02/04/04 09:05
>>60
受け取るだけならHTTPで
63デフォルトの名無しさん:02/04/04 09:12
ソフトの設定を保存させたいのですがどうしたら良いでしょうか?
inifileやレジストリ以外でお願いします。
保存内容を見られたくないのです。

ファイル書き込みで設定したいのですがどのように作れば良いのか・・・。
それともinifileを暗号化出来る?
>>63
TFile
保存した事も判らないようにしたいの?
それとも保存した内容が判らないようにしたいなら、
 自前の文字列暗号化処理を入れたらいいんじゃないの?

簡単なのは文字列をバイト単位にキーワードとXORして
16進数に変換してしまう事。

それで良ければ簡単なサンプル書いてあげようか? ・・・って下心ミエミエ?
66デフォルトの名無しさん:02/04/04 11:20
>>65
保存したことは分かっていいです。
ファイルの存在も分かってOKです。

ただ中身を見られたくないだけです。

簡単な方法ありますか?
>>66 簡単なのありますかって・・・説明してもらってるじゃん
68ソケット ◆NIEdbLqs :02/04/04 11:49
前スレの956さんありがとうございました。
>>66
こういう大それたことしようとする奴に限って基礎がなってない。
相手にしなくていいじゃん。
70デフォルトの名無しさん:02/04/04 11:52
改行って#10#13でやってたんですけど、#$D#$Aでも出来るんですね。
>>70
っていうかどちらも同じもの指してますから・・・。
>>70
っていうか順序変。
>>70 ええと 最初のはマチガイです
7470:02/04/04 12:14
よく考えたら同じだね。
16進か2進かの違いだった・・。
#13#10の方が正しいのかな。
>>74
>16進か2進かの違いだった・・。
違うぞ。
これはコントか?
77デフォルトの名無しさん:02/04/04 12:32
とりあえず作ってあげたよ >>66

function  MyCipherStr(const s:String;decode:Boolean):string;
var i,n,siz:Integer;
const k='ひみつのアッコちゃん';
begin
RandSeed:=(ord(k[3])*$10000+ord(k[1])*$100+ord(k[2]));
Result:='';
siz:=Length(s);
if decode then siz:=siz div 2;
for i:=1 to siz do begin
if decode then n:= StrToInt('$'+copy(s,i*2-1,2))
      else n:= ord(s[i]);
 n:= ( n xor ord(k[1+(i mod Length(k))]) xor random(256));
if decode then Result:=Result+Char(n)
      else Result:=Result+IntToHex(n,2);
end;
end;

レジストリに書く文字列をstrとして
MyCipherStr(str,false)
 を書いて

レジストリから読む時は
str := MyCipherStr(ReadString(何とか),true);
78Delフサギコ ◆zE1iiRdQ :02/04/04 12:35
文字列をXORするときは
カイギョウコードに気をつけてね。

  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < ファイル入出力が
  UU"""" U U    \_#13#10しか考えてないこと多いし
>>77
それで組んで見ました。
友人に見せたらXORだろ?と言われてしてしまいました。
もっと強力なものはないでしょうか?
80デフォルトの名無しさん:02/04/04 12:42
>>78 大丈夫エンコード結果は16進にしてるから改行コードとかは出ません
>>79 大丈夫、これを解読するには
const k='ひみつのアッコちゃん';
さえ判らなければまず見つかりません
乱数列でもスクランブルしてるので、結果だけから見つけるのはまず無理です
81Delフサギコ ◆zE1iiRdQ :02/04/04 12:45
>>78
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < おや、そうなんすか。
  UU"""" U U    \_______________

n:= ord(s[i]); してResult:=Result+IntToHex(n,2); してるからかな。
抜け目ないでございますね。

>>79>>66でしょ
8270:02/04/04 12:49
ごめん10進数って言いたかった
>>32
それが問題だよね。
未だに古いブラウザ使っている人がいる以上、新技術の採用は難しい。
84デフォルトの名無しさん:02/04/04 13:14
あっと、でも1つでも原文が判るとダメ=原文とXORしたら別の暗号文も解けるか
だから、もう少しだけ強力にする

function  MyCipherStr(const s:String;decode:Boolean):string;
var i,n,m,siz,r:Integer;
const k='ひみつ';
begin
RandSeed:=(ord(k[3])*$10000+ord(k[1])*$100+ord(k[2]));
Result:='';
siz:=Length(s);
r:=random($FFFF);
if decode then siz:=siz div 2;
for i:=1 to siz do begin
if decode then n:= StrToInt('$'+copy(s,i*2-1,2))
      else n:= ord(s[i]);
 m:= ( n xor ord(k[1+(i mod Length(k))]) xor random(256)) xor (r and $FF);
if decode then r:=(r*331 + m) else r:=(r*331 +n) ;
if decode then Result:=Result+Char(m)
      else Result:=Result+IntToHex(m,2);
end;
end;

kの文字列の他に途中の331もパラメータになるから、
クラックする場合の苦労は100倍程度に増える筈
>>83
もっと根源的に間違ってるんだが……
8685:02/04/04 13:33
すまそ、>83 は >82 の間違い。

逝ってくる……
87デフォルトの名無しさん:02/04/04 13:38
>>86
VBからやり直した方がいいかも(w
88デフォルトの名無しさん:02/04/04 14:01
zipファイルをサーバーに転送するソフトを作りたいんだが…
漏れに教えてくれ。
8985:02/04/04 14:05
>87
漏れにいってる? 頼むから VB は勘弁してくれよぉ(w
仕事で仕方なく使うことはあるけど、やりたかねぇよぉ(w
個人では Delphi を 1の頃から使ってるよ。仕事でもいくつかやってるけどね。

まあ、>70=>74 が根源的に間違ってるところについては同意していただけると思うのだが。
90デフォルトの名無しさん:02/04/04 14:21
inifileって最大何kbまでだったっけ。
64kbだった?
>>90 それはお使いになる環境により異なるものと思われます
92デフォルトの名無しさん:02/04/04 14:55
>>91
確か制限有ったよ。
inifileでしょ  
93デフォルトの名無しさん:02/04/04 15:02
なんでForm1 = TFormって言う風にTが付くの?

それとPublicとかprivateとかusesって何ですか?

上の方にあるアレです。
interfaceとかもわかんないです。
>>93
Object Pascal 言語ガイドがおすすめですよ
>>93 判らない文字の上で マウスを左クリックして キーボードのF1キーを押して下さい
96デフォルトの名無しさん:02/04/04 15:08
>>95
>>94
Help見てるんですが言ってることが難しくて分からないです。

わかりやすく書いてる所無いですか?
97デフォルトの名無しさん:02/04/04 15:22
public, private は、Delphi以前の問題で、まず
オブジェクト思考プログラムについて学ぶ必要があります。
幸いにも、復刊ドットコムにて、「DELPHIによるオブジェクト思考入門」が
規定の投票数を超えました。再び本屋に並ぶのも夢ではありません。
98デフォルトの名無しさん:02/04/04 15:25
99デフォルトの名無しさん:02/04/04 15:30
ファイルの簡単な暗号化なら、これつかえ。
function XOR(InFile, OutFile:string);
var
 P:Byte;
 InStream, OutStream: TFileStream;
begin
 InStream := TFileStream.Create;
 OutStream := TFileStream.Create;

 InStream.LoadFromFile( InFile );
 while InStream.Position < InStream.Size do begin
  InStream.ReadBuffer( P, 1 );
  OutStream.WriteBuffer( P xor $FF, 1 );
 end;

 OutStream.SaveToFile( OutFile );

 InStream.Free;
 OutStream.Free;
end;
>>97
オブジェクト 思 考 プログラムについて学ぶ必要があります。
幸いにも、復刊ドットコムにて、「DELPHIによるオブジェクト 思 考 入門」が
101デフォルトの名無しさん:02/04/04 15:32
ってゆーかXOR予約語だし。
10293:02/04/04 15:33
【閉鎖】僕の脳みそが閉鎖しそうです【閉鎖】
くだらない揚げ足
104デフォルトの名無しさん:02/04/04 15:34
>>97 >>100
ワラタ
ハゲシク ワラタ
105デフォルトの名無しさん:02/04/04 15:34
>>99
xorって言う関数作れたっけ?
くそー
>>105
ムリムリ
108デフォルトの名無しさん:02/04/04 15:42
ファイルのさらなる暗号化なら、これ。
XOR で、さらに逆向きに記録
function FileXORRev(InFile, OutFile:string);
var
 I: Integer;
 P:Byte;
 InStream, OutStream: TFileStream;
begin
 InStream := TFileStream.Create;
 OutStream := TFileStream.Create;

 InStream.LoadFromFile( InFile );
 for I := InStream.Size-1 downto 0 do begin
 InStream.Position := I;
  InStream.ReadBuffer( P, 1 );
  OutStream.WriteBuffer( P xor $FF, 1 );
 end;

 OutStream.SaveToFile( OutFile );

 InStream.Free;
 OutStream.Free;
end;
109デフォルトの名無しさん:02/04/04 15:43
>>107
>>99のソースは騙し討ちですか!
function名変えれば良いだけだが。
110デフォルトの名無しさん:02/04/04 15:47
>>93
まず、ボタンをクリックして起こす処理から勉強して、
次はif文を勉強してという手順で勉強していってください。
そうすれば、'T','uses'などがどのような役割を果たしているか、
自分で、明確にわかるようになると思います。
■ボタンをクリックしたときに起こる処理の説明■
まず、コンポーネントのButtonをクリックし、Formに貼り付けろ。
それから、そのコンポーネントのアイコンをダブルクリックすると
ソースを書く所に、procedure TForm1.Button1Click(Sender: TObject);
と出るので次のように記入しろ。尚、//〜は説明書きだ。
-----------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
hennsuu: Integer; //ここでは、保存領域を宣言(準備)する。
begin
hennsuu := hennsuu + 1; //hennsuuにプラス1されたものを、hennsuuに保存する。これを代入という。
Button1.Caption := IntToStr(hennsuu); //現在のhennsuの値をボタンの表示名にする。
if hennsuu = 3 then Showmessage('現在hennsuuの値は3です。');
//もし、hennsuuが3ならば、'現在hennsuuの値は3です。'を表示。
end;
-----------------------------------------------------------
変数は、そのアプリケーションが閉じられると、消えてしまいます。

これでわかったか?わかったらなんかソフト作れば段段
usesとかもわかってくる。
天才じゃない限り1日で全部覚えようとするのは無理だ。
何回も繰り返して、身につけていくもんだ。
for Stream.Position := 0 to Stream.Size-1 do ...

っていう使い方が出来ると便利なのに。
>>111
プロパティは変数ではないって奴ですな。
113デフォルトの名無しさん:02/04/04 15:54
今DelphiのソースをC++に変換。
C++をDelphiに変換するプログラムを作ってます。

C++はまだ初心者なので「これは必須!」って言うの教えて下さい
114デフォルトの名無しさん:02/04/04 15:55
zipファイルをサーバーに転送するソフトを作りたいんだが…
漏れに教えてくれ。
115デフォルトの名無しさん:02/04/04 15:56
>>114
サーバーは決まってる場所なのか?
116デフォルトの名無しさん:02/04/04 15:57
>>115
ああ。
117デフォルトの名無しさん:02/04/04 16:01
>>116
Delphi6proならIndyを使えば出来るよ
>>113
http://www.mpsinc.com/mpsprice.html#pascal

負けないようにガンバレ

119デフォルトの名無しさん:02/04/04 16:03
>>117
Indyってコンポーネントか?それともコンポーネントの中に
入っているプロパティーか?
そのコンポーネントって、DLできないのか?教えてくり。
120デフォルトの名無しさん:02/04/04 16:10
>>119
まずDelphiのバージョンとEditionを教えて。

Delphi6のProfessionalならIndyは普通に付いてる。
Personalは無かったと思う。
どちらにしてもソース開示してあるし入れれるけどね。
>>119
めでたく厨に認定されました。
122デフォルトの名無しさん:02/04/04 16:25
Indy以外に、ファイルを鯖に転送する方法ってないんですか?
123デフォルトの名無しさん:02/04/04 16:30
>>122
NMHTTPって無いか? >Personal

つーかDelphiのバージョンとEdition書けって言ってるだろ
質問に答えようが無い。
125デフォルトの名無しさん:02/04/04 16:35
友達からコピーして貰ったDelphiなんでバージョンわからん
どこにバージョン出てる?

Delphiだとなんでも簡単に作れるって聞いたから触ってやるんだけどさ。
>>125 どうどうとそんな事言われても困ってしまいますがな やれやれ
DFM(フォーム情報のファイル)を読んできて仕様書を作成するプログラムを
作ってみようとしているのですが、日本語部分が #24335#20250・・・こんな感じ
で表示されてしまいます。
色々と調べてみると、ちゃんと日本語として表示される事もあるみたいで、
Delphiでフォームを「エディタで表示」させた状態で一旦保存するとちゃんと
日本語になります、毎回「エディタで表示」させなくても、デフォルトで、その
状態に設定するオプションが見当たらないのですが、何処かにありますか?

環境はDelphi6proです。
128114:02/04/04 16:51
Delphi5のlearningで悪かったな。(1万円)
129114:02/04/04 16:54
>>123
漏れ的にもNMHTTPがいいんだが、learning版ではコンポがない。
NMHTTPでやりたい。
130114:02/04/04 16:56
>>124
教えてくれて、ありがとう。
131114:02/04/04 16:59
learningバソは有罪。
前、POP3のコンポでメールソフト作ろうと思ったら、
POP3のコンポがなかった…。
でも、初心者にはありがたい環境。
132デフォルトの名無しさん:02/04/04 17:04
>>129
実はMemoコンポーネントでファイルの転送が出来る。
隠しメソッドがあるのだ

begin
 Memo1.Create;
 Memo1.LoadFromFile('aaa.zip'); //zipファイルを一時的に格納する
 Memo1.Put(http://www.hoge.com,Memo1.Lines.file); //zipファイルをアップロード
 Memo1.Free;
end;

こんなところ。
やってみ
133デフォルトの名無しさん:02/04/04 17:15
>>132
こんなの誰も騙されないだろ (w

Memo1.LoadFromFile('aaa.zip'); からして間違ってるよ、
Memo1.Lines.LoadFromFile('aaa.zip'); が正解だろ。

つーことで、皿仕上
Memo1.Putの第一パラメータに''はいらないのぉ〜?
135114:02/04/04 17:18
>>132
疑いつつも、やってみる…http://の時点でできないと思うが…。
>>133 俺は Memo1.Create; の部分で藁タ
でも Memo1.Create; ってやったらどうなるんだっけ?
文法エラーにはならなかった記憶があるんだが
>>135
やってみたんかよ!
139132:02/04/04 17:21
チクショー!
ばれたか
何故ばれた!

そんなこというなら転送機能付きのMemoコンポーネント作っちゃうぞ(マジで)!
何の意味があるのかわからんが
140デフォルトの名無しさん:02/04/04 17:22
>>136
Create;は間違いでは無い。
FreeがあるならCreate;も必要なはず。
>>137
ビジュアルコンポでオーナーコンポが指定されないと怖いだろ、エラーになると思われ
>>139
Memoだと、サイズ的な制限があるから、他でrichでやった方が実用的?だと思う
>>140 ハァ?
本当にそーかい?マジですか?
144114:02/04/04 17:27
>>132
どうせ嘘つくんだったら、PCが止まるのとかやれよ。
145114:02/04/04 17:30
>>132
普通にバレルだろ。でも、一応やったぞ。
>何の意味があるのかわからんが
激しく同意。


試しに
procedure TForm1.FormCreate(Sender: TObject);
var Memo1:TMemo;
begin
Memo1.Create(Self);
end;

とやったら・・・なんとスタックオーバフローに・・・なんで?

procedure TForm1.Button1Click(Sender: TObject);
var Memo1:TMemo;
begin
Memo1:=TMemo.Create(Self);
Memo1.Parent:=self;
Memo1.Name:='Memo1';
Memo1.Visible:=True;
end;
147114:02/04/04 17:34
で、NMHTTPコンポってDLできないのか?
できたら使い方おしえてくり。
learningバソのHelpFileで調べてもNMHTTPの
答えは返ってこない…。
やっぱ、Proffesional、Enterpriseマンセー!!
148114:02/04/04 17:35
>>147
って事でMXで拾って来るぜー!!!
149デフォルトの名無しさん:02/04/04 17:38
119に電話だ!
>>114
だったら WinInet 使えって 自分のハードディスクに WinInet.pas あるだろ?
152114:02/04/04 17:42
>>148
おれの番号きどったようだが、矛盾がおきてるぜ。
例外発生だから…
try >>148の矛盾発言 finally >>148は逝って良し。
153デフォルトの名無しさん:02/04/04 17:43
>>148
Delphi6のPersonalは無料なんだからそれを使えって

CD欲しけりゃもらえるしダウンロードも出来る
Indyだってただなんだし(俺の記憶では)
154デフォルトの名無しさん:02/04/04 17:44
>>152
何コイツ?
自作自演?
155114:02/04/04 17:47
Personalはコンパ炒るできないんだろ?>>153
156114:02/04/04 17:48
それに、重過ぎだ…。>>153
157デフォルトの名無しさん:02/04/04 17:49
>>155
ハァ?
黄色い救急車呼んでこい
>>155
何がコンパイル出来ないのかよく判らんが・・・。
何の話?コンパイルできるけど?
159デフォルトの名無しさん:02/04/04 17:50
>>146
146が器と中身を混同しているのでは?

「飯」を「象印の炊飯器」で炊く
のと、

「象印の炊飯器」を炊く
の違いが判らないと理解できないかも(藁
160デフォルトの名無しさん:02/04/04 17:53
>>155
えーっとな
まず言われたとおり使ってから文句言え。
コンパイル出来ない物を売るか

>>156
何と比べて重いのか・・・
161114:02/04/04 17:54
EXEつくれるのか?
>>114
exeどころかもう。。。なあ149>>
163114:02/04/04 17:58
Indyが、どんなんか分からないとDLしたくない。
DLしたことによってパソの設定変えたくないから。
Indyがパソが狂うよりもいいものだったら、考えようだが。
164デフォルトの名無しさん:02/04/04 17:58
>>144への手順

・Borland.co.jpに行く http://www.borland.co.jp/
・DelphiPersonalをダウンロードする http://www.borland.co.jp/news/del6personal_j.html
・DelphiUpdate2をダウンロードする http://www.borland.co.jp/download/delphi.html
・ライセンスキーを取得する(無料) http://register.borland.co.jp/delphi_personal.htm
・Delphi6PersonalとUpdate2をインストール

これでDelphi6が使えるわけだ

あとはIndyとかを個人好みで入れれば良い。
165デフォルトの名無しさん:02/04/04 17:58
うえのレス間違い ×>>144 ○>>114
166デフォルトの名無しさん:02/04/04 17:59
>>161
普通に開発出来る

  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ・∀・)< >>114はもう少し自分で
 (    ) \  調べてから発言してね ♥
 | | |   \___________
 (__)_)

Indy使うの嫌だったら他にFTPの扱えるコンポーネントを
探して、それでもどれも使いたくないと言うのならSocket
から作ってね。
168デフォルトの名無しさん:02/04/04 18:10
114は何でDelphiやってるん?
「きどった」ってナニ?
>>163
マジで、何言ってるのかわかりません。
Indyでパソ?(パソコンの事か?)の設定?(レジストリの事か?)
パソが狂う?(暴走する事か?)
そんな事ないよ、IndyってDelphi用のコンポーネントなんだが?
何と勘違いしたらそんな話になるんだ?

ちょっと自分で調べてから発言しないと、ウザがられますよ?
171114:02/04/04 18:33
いや、PersonalをDLして今使っているlearningの
拡張子が変わってしまうのがいや。
Delphi6って、ちょっとDelphi5に比べて形変わっているから、
初心者でいるうちは、Delphi5から移りたくない。
だから、NMHTTPきぼーん。
172114:02/04/04 18:33
あと、Indyってどんなんだよ。
自分で調べろってか?
173114:02/04/04 18:35
Indyはコンポーネントで、Web開発のために使うことぐらいは
話から分かるけど。
174デフォルトの名無しさん:02/04/04 18:36
>>171
>拡張子が変わってしまうのがいや。
何の拡張子?何が変わったよ?

>Delphi6って、ちょっとDelphi5に比べて形変わっているから、

形が変わった?意味不明なんですけど。

>>172
http://www.google.co.jp/search?q=Indy&hl=ja&lr=
175114:02/04/04 18:36
>>169
本人の真似をしているということ。
176114:02/04/04 18:43
前に書かれていた「TIdHTTP」とはIndyのことだったのか。
177114:02/04/04 18:45
なんか漏れ、荒らしてるのか?
178114:02/04/04 18:47
PersonalをDLするんじゃなくて、
IndyそのものをDLできませぬか?
はぁ・・・さすがに・・・・専用サポート部隊にされてもなあ
騙る←きどる?
181114:02/04/04 18:58
とっとと答えんか〜〜〜!!!
182114:02/04/04 18:59
>>180
ハァ? アタマ大丈夫デスカァ?
183デフォルトの名無しさん:02/04/04 19:00
>>180
騙る【きどる】
185デフォルトの名無しさん:02/04/04 19:02
>>114
まず名前欄に fusianasan#好きな言葉 って入れろ

好きな言葉はパスワードみたいなものだ。
忘れないように。#(シャープ)も忘れるなよ。
186114:02/04/04 19:22
>>185
アフォが!!
187114:02/04/04 19:23
>>181
答えたわ!アフォが!!
188114:02/04/04 19:24
>>184
Thank You!!
天然物の荒しか?ちょっとオマエ!細切れに書き込むの止めてくれんか?
番号無駄に上がるし、ここはそんなスレじゃないんでヨロシク頼む。
>6にあるように厨房並みの質問はいいが厨房はお断り。
よって今後>114は放置の方向で。
191114:02/04/04 19:57
(゚∀゚)ネタでした(゚∀゚)
スレが汚れたのでリセット

>>111
>for Stream.Position := 0 to Stream.Size-1 do ...
>っていう使い方が出来ると便利なのに。
便利さはしばしば安全性とのトレードオフになるからね〜

便利さを重んじたのがC/C++で
安全性を重んじたのがPascal(Object Pascal)なんじゃない?

俺は注意力に自信がないからストロングタイピングな言語の方が安心だけど
193デフォルトの名無しさん:02/04/04 20:38
c++とDelphiにはVBの様なLike演算子がありませんがこれに相当する物ってありますか?
194デフォルトの名無しさん:02/04/04 20:48
VBのLIKE演算子って、どいういうの?
195114:02/04/04 20:55
Personal、DLします。
198デフォルトの名無しさん:02/04/04 21:08
>>195
やっとかよ・・・

4時間前から言ってやったのに
199デフォルトの名無しさん:02/04/04 21:09
>>197
無いことは知ってるんです。

ですからそれ相当の物があるのかもしくは自分で作れないかと思って。
関数なりを。
Format() ?
>>199
strstr()
202デフォルトの名無しさん:02/04/04 21:19
Likeは確かに便利だよね。
Delphiには残念ながら存在しないので、文字列だったらPosを駆使する
ことになると思います。
203デフォルトの名無しさん:02/04/04 21:32
便利だな、これ。
ワイルドカードだ疲れればいいんだよね。
オートマトンでどうにかなるんじゃない?
  function StrHikaku(a,b:string):boolean;
  var
    idxA,idxB:Integer;
    wLenA,wLenB:integer;
    wUMC,wWC1,wWC2:Boolean;
  begin
    wLenA:=Length(a);
    wLenB:=Length(b);

    wUMC:=False;
    wWC1:=False;
    wWC2:=False;
    idxA:=0;
    for idxB:=1 to wLenB do
    begin

      if (wWC1=False) then
      begin
        inc(idxA);
        if (idxA>wLenA) then wUMC:=True;
      end;

      if (a[idxA]='*') then
      begin
        inc(idxA);
        if (idxA>wLenA) then wWC2:=True;
        wWC1:=True;
      end;
      if (a[idxB]='?') then wWC2:=True;

      if (wWC2=False) then
      begin
        if (a[idxA]=b[idxB]) then
        begin
          if (wWC1=True) then wWC1:=False;
        end else begin
          if (wWC1=False) then wUMC:=True;
        end;
      end;
      wWC2:=False;

      if (wUMC=True) then Break;

    end;

    if (wUMC=True) then
      result := false
    else
      result := true;

  end;
>>196
Professional以上ならMasksとかいうワイルドカード扱うUnitが
あったはず。
>>204
aの文字数が長い時のチェックが無いね
>>204
最後辺りの if文のところを
if (wUMC=True) or (idxA<wLenA) then
すりゃ判定できるみたいだが、機能が不足してるし、わかりづらいなぁ。
それに、速度的にどーよ。
>>207
有難うございました。
209DELモナ:02/04/04 23:01
これでどーよ

function Like(Str,Ptn:string):Boolean;
var
 P,I:Integer;
begin
 Result := False;
 if Str = '' then Exit;
 if Ptn = '' then Exit;
 P := 1;
 I := 1;
 while (P <= Length(Ptn)) and ( Ptn[P] = '*' ) do Inc(P);
 while (I <= Length(Str)) and ( P <= Length(Ptn) )do begin
  if Ptn[P] = '?' then
   Inc(P)
  else begin
   if Ptn[P] = '*' then Inc(P);
   if Ptn[P] = Str[I] then Inc(P);
  end;
 Inc(I);
 end;

 Result := (P > Length(Ptn)) and (I > Length(Str) );
 { Ptn が含まれているかどうかを調べるには以下の結果を使う }
 { Result := P > Length(Ptn); }
end;
>>209
>>204ソース + バグ修正 の方が結果が正しいようだが・・・。
>>209
ごめん、正しく動いてたみたいです。
212DELモナ:02/04/04 23:15
機能が増えたYO. "abc" にたいして a[Bb]* と書いてもマッチする.
function Like(Str,Ptn:string):Boolean;
var
P,I:Integer;
N:string;
begin
Result := False; N := ''; P := 1; I := 1;
if Str = '' then Exit; if Ptn = '' then Exit;
while (P <= Length(Ptn)) and (Ptn[P]='*') do Inc(P);
while (I <= Length(Str)) and (P <= Length(Ptn))do begin
if Ptn[P] = '[' then begin
N := ''; Inc(P);
while (P <= Length(Ptn)) and (Ptn[P] <> ']') do begin N := N + Ptn[P]; Inc(P); end;
end;
if N <> '' then begin
if Pos( Str[I], N )>0 then begin Inc(P); N := ''; end
end
else
if Ptn[P] = '?' then Inc(P)
else begin
if Ptn[P] = '*' then Inc(P);
if Ptn[P] = Str[I] then Inc(P);
end;
Inc(I);
end;
Result := (P > Length(Ptn)) and (I > Length(Str) );
{ Ptn が含まれているかどうかを調べるには以下の結果を使う }
{ Result := P > Length(Ptn); }
end;
>>212
おお!凄い
この勢いで正規表現まで頑張って下さい、期待してます!
頑張って下さい!(藁
114は俺を含めた何人いたんだろ・・・
これで最後にしておくよ。
"3ce5" に "3c[a-zA-Z]5"がマッチすると。

function Like(Str,Ptn:string):Boolean;
 function GetCharList(List:string):string;
 var
  I:Integer;
  C:Char;
 begin
  Result := '';
  for I:=1 to Length(List) do
   if List[I] = '-' then
    for C := Succ( List[I-1] ) to List[I+1] do
     Result := Result + C
   else
     Result := Result + List[I];
 end;
var
 P,I:Integer; N:string;
begin
 Result := False; N := ''; P := 1; I := 1;
 if Str = '' then Exit;
 if Ptn = '' then Exit;
 while (P <= Length(Ptn)) and (Ptn[P]='*') do
  Inc(P);

 while (I <= Length(Str)) and (P <= Length(Ptn)) do begin
  if Ptn[P] = '[' then begin
   N := '';
   Inc(P);
   while (P <= Length(Ptn)) and (Ptn[P] <> ']') do begin
    N := N + Ptn[P];
    Inc(P);
   end;
   N := GetCharList(N);
  end;

  if N <> '' then begin
   if Pos( Str[I], N ) > 0 then begin
    Inc(P);
    N := '';
   end
  end
  else
   if Ptn[P] = '?' then
    Inc(P)
   else begin
    if Ptn[P] = '*' then Inc(P);
    if Ptn[P] = Str[I] then Inc(P);
   end;
   Inc(I);
 end;

 Result := (P > Length(Ptn)) and (I > Length(Str) );
 { Ptn が含まれているかどうかを調べるには以下の結果を使う }
 { Result := P > Length(Ptn); }
end;
>>215
まだそのネタやるつもりか?つまらん
218114:02/04/05 00:00
>>215
本人ですが。次の式を証明することができました。
>>148=>>215
お前だけだったよ。偽者は(藁
(´-`)。o ○ (春だねぇ…)
春なのーに〜♪ おわかーれですーか〜♪
くぅ、なんでこんなにスレが伸びているのかと思ったら・・・
あ、Like作ってる人たちはすごいっす。
もう1つの質問スレも春真っ盛りだね。
223Delフサギコ ◆zE1iiRdQ :02/04/05 01:26
   ∧,∧     ,::  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡っ━'~  | とりあえず、Like作成は
  ミ∪  ~,ノ    < テストコードを書いてから語ろうよ
   ミ  '' ミ       \____________
   し'~し'
224デフォルトの名無しさん:02/04/05 01:28
あれだ
新学期になって中学生がパソコン買って貰ったから
「よーしプログラム組むべ!」
って気合い入れたは良いけど何をしたらいいのか、どの言語にしたら良いのかわからず。

だからVBスレッドやDelphiスレッドに厨が繁殖するんだ。
そうか・・新学期だったんだ・・・

ここが「やさしいスレ」で良かったね
独り言・・・?
226インディakaインターネットは直接です。 :02/04/05 03:39
227インディakaインターネットは直接です。 :02/04/05 03:40
>デルフォイ6は8.0で船で行きます
いいね。旅情派だね。
228インディakaインターネットは直接です。 :02/04/05 03:46
春だから見逃してくれや。「FAQ」の
>Why did the chicken cross the road?

>Some people say "To get to the other side.".
>We however are not really sure why the chicken crossed the road.
>It shall remain a mystery to the world.

>なぜ鶏は道を横断しましたか。
>何人かの人々は言います「反対側に到着すること」しかしながら、私たちは、
>なぜ鶏が道を横断したか実際に確信しません。それは、世界に対する神秘の
>ままであるものとします。
は、何なんだ?
お前は駄目な奴だな。
周りがみんな爆笑してる場面で「ねぇ今のどういうこと?」って聞いてまわるタイプ。
230デフォルトの名無しさん:02/04/05 09:10
友達がVB.NET触ったらしいけどなんかDelphiみたいになってるらしいじゃん
VBもやっとオブジェクト指向になった?
既存ユーザには大変らしいけど新規ユーザーにはありがたいよね。
(.NET設計者そのものが、Delphiの人だったしね。もうBorland戻ったけど。)

Delphi.NETはまだですか?
C#Builderでもいいよ。
でも、Delphiと違ってソース公開じゃないから 仕様みて想像するしかない
から、深く使おうと思ったら逆に苦労しそうなんだよな
>(.NET設計者そのものが、Delphiの人だったしね。もうBorland戻ったけど。)
え?戻ったの?ソースキボンヌ。
>>231
ライブラリのソース公開の話が出てたよ。C#スレ参照
234デフォルトの名無しさん:02/04/05 10:16
>>232
日系の本に書いてあったよ
「日系ソフトウェア」だったかな。

だいぶ前
そういや、.NET関係は全部公開だったね。
だから他のプラットホームに移植してる人がいるのだろうけど。
>>93
TFormの謎
 『型』ってあるよね.クラス型やレコード型,列挙型など,いろいろあるけど,
 ボーランドさんは『型』の名前の先頭にTをつけるのが好きなの.
 プログラムを書く人にもこれをすすめてる.
 でもそうしなければいけないわけじゃない.

publicとprivate
 クラス(オブジェクト)で外側から見えるものがpublic(パブリック),
 見えない(操作できない)のがprivate(プライベート).
 見せなくていいものを徹底的に隠すことで
 プログラムの仕様があとで変わってしまっても最小限の変更で済む.

interfaceとuses
 上のpublicとprivateに似てるけど,
 ユニットのinterfaceと書かれた部分からimplementationと書かれた部分の間
 (interface節という)で宣言されている型,関数と手続き,変数,定数は
 ほかのユニットが必要に応じて参照することができる.
 implementation以後で宣言されているものは参照できない.

 usesはほかのユニットがinterface節で宣言している型,関数と手続き,変数,定数を
 『使う』ことができる.(use=使う)

 やはり見せなくていいものは極力見せないようにすべき.理由も一緒.
237デフォルトの名無しさん:02/04/05 10:41
よくマジックナンバーと言う言葉を耳にするんですがどういう意味ですか?
238デフォルトの名無しさん:02/04/05 10:45
>>236
publicとprivate、interfaceとimplementationは権限で説明した方がわかりやすくない?
自分はそうやって説明して貰ったら一発で理解出来た。

protectedが抜けてるけど良いのかな。
まあ>>236の言うとおり他から参照出来るかどうかだね。
>>237
謎の数字をそのまま打つこと。

strncpy(str1,str2,18);

通常はこのように意味のある言葉でdefineする。

#define MAXDATALENGTH 18

strncpy(str1,str2,MAXDATALENGTH);
240クレール:02/04/05 11:10
Delphi2.0が秋葉原で500¥で売っていました(関係ないけど)
>>233 そのライブラリって CLIでCLRではなかったんじゃ?
つまり delphiで言えばsystem.pasの公開でVCLではないように思う
ちゃんと見た訳じゃないけど、textBoxをgrepしたけど見つからなかったし
TextOut関数の使い方がわかりません。
delphi5では
TextOut(x,y:Integer; text:string)
で動くらしいので何とかわかるのですが、
私が持っているdelphi6では
TextOut(dc:HDC; x,y:Integer; str:PChar; const:Integer)
となっていて何が何やら…。
既出でしたら誘導してもらえるとありがたいです。
>>237, 239
その意味もあるけど、データの型を示すためのいわゆるシグネチャ
としての意味もあるね。googleで調べりゃボロボロ出てくる。
Canvas.TextOutとWindows.TextOut?
安易にFocus()叩いて悩むみたいな。
>>242 TCanvasのヘルプから探すといいよ
type
 THogeTree=class(TTreeView)
 public
  constructor Create(AOwner: TComponent); override;
 end;

constructor THogeTree.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 Name:='hogeee'
  Items.Add(nil,'aaaa');
end;

とすると、'コントロール'hogeeee'は親ウィンドウを持っていません'という例外が発生してしまいます。
色々やってItems.Addの前に「Parent:=(AOwner as TWinControl);」を
追加すればきちんと動作してくれるのはわかったんですが、
なぜ、Parentを指定しなければいけないんですか?
そういうもんなんでしょうか?
>>247 オーナーと描画先とは普通違うでしょ?

オーナーの廃棄と共にオブジェクトは消えて欲しいけど
描画先が廃棄されて一緒にアポーンされたら嫌でしょ?
249デフォルトの名無しさん:02/04/05 13:22
>>236
>>238
ありがとう御座います
Publicとか理解出来ました。
その後Delphiの読みづらいコースウェアも読んでみました。
それにしてもDelphiのマニュアルは英語直訳って感じで分かりづらいですね。
分かってて当然って書き方されてるし・・・。

Delphiは入り込むのが難しそうだけどその後が楽そう。
250249:02/04/05 13:26
あ、そうそう
procedureとfunctionはどう違うんですか?
関数じゃ無いのでしょうか?

procedureが手続きでfunctionが関数なのは分かるんですが、どう違うのか・・・

自分で勝手に
function TForm1.aaaaa;
begin
 Edit1.test := 'test';
end;
ってやったら動きましたけど・・。
>>250
procedure :void
function :!void
返値があるのがfunctionで、返値が無いのがprocedureだったと思います。
253agent ◆AWcg9OTs :02/04/05 13:52
Delphi6のpersonalでMSのAgentControlという物を使おうと
思って色々やっているのですが、Agentのアニメーション名を
Getする方法がわかりません。
どなたか参考になるサイト、ソース御座いましたら教えて頂け
ませんでしょうか?
>>253
MSDNは?
255agent ◆AWcg9OTs :02/04/05 15:03
>>254
それっぽいのを見つけたのでやってみます。
ありがとう
256agent ◆AWcg9OTs :02/04/05 15:36
アニメーションはどうやらGET出来たようなのですが、
それをメモ等に挿入したいのですが、
StringとIAgentCtlRequestには互換性がありませんのエラー。
型を変換する方法ってわかりますか?
もうここで質問するような内容では無いのかもしれませんが、
宜しくお願い致します。
>>256
var
a :Real;
b :Integer;
begin
b = Integer(a);
258agent ◆AWcg9OTs :02/04/05 15:51
>>257 レスありがとうございます。
var ag:IAgentCtlRequest;
Memo1.Text := string(ag);
とやってみましたが、Memo1の内容は
3シt
ちなみに、Integerだと
13528536
なのですがどうしたらよいでしょうか?
無理なのでしょうか?
>>258
>アニメーションはどうやらGET出来たようなのですが、
それをメモ等に挿入したいのですが、

意味がわからない。
260agent ◆AWcg9OTs :02/04/05 15:59
>>259
私は、253,255,256,258です。
officeのイルカのカイル等がAgentです。
で、そのAgentのアニメーション名をGetしたいのです。
Agent1.Characters.Character('AgentID').Get('Animation', 'Animation', 'True');
でGetできるようなのですが、そのアニメーション名を知る方法がわからないのです。
261114:02/04/05 16:27
Personalをダウンロードしたぞ。
Indyをヘルプファイルで調べたんだが、該当しなかった。
Indyというコンポーネントもなかった。
262よくわからんが、:02/04/05 16:31
>>261
Proを買え。
>>261
昨日何を聞いていた・・・。
264デフォルトの名無しさん:02/04/05 16:37
>>114 これは何だったんだ、

>>184
Thank You!!
265264:02/04/05 16:38
ちっageちまった。
266デフォルトの名無しさん:02/04/05 16:41
>>261=114
Indyもダウンロードしろ。
PersonalにはIndy付いてない。
267114:02/04/05 16:52
Indyの日本語版ヘルプファイルはないのか?
>>267
ある
269114:02/04/05 16:55
「やさしい」質問スレだったよな。
もういい加減放置して下さい。
他の質問者に迷惑なので
>>269
だから答えてるじゃん・・
やさしくダウンロード方法まで書いてあげたじゃん・・・

まず試そうよ。
>>269
モナーの  ね
>>269
やさしいのは確か
でも質問してばかりで実際に実行に移さなかったら駄目でしょ。
「Indy無いのか?」って言ってるけど、きのう説明済みだし。

それ以前にDelphiの導入やIndyの導入は出来るようにしよう!
わからなかったら教えるけど。 
や さ し いからね。
>>269
文句を言う前に、自分のことを振り返れ。

多分>>269ではどこにあるのかも知りたいんだろうが、
「Indyの日本語版ヘルプファイルはないのか?」
じゃなくて
「Indyの日本語版ヘルプファイルはどこにありますか?」
と聞くべきだろ。
お前がほしい情報がなんなのかわからんから「ある」と答えるしかないわけよ。

何より、「教えてもらう」という謙虚な態度がお前には必要だと思うよ。
○厨房並みの初心者の質問はOKですが、厨房は質問するな。
276114:02/04/05 17:01
>>269
自分で調べるからそう書いたんだろ!!
277114:02/04/05 17:08
はぁ…。114は消えるとするよ。
278はた:02/04/05 17:08
QuickReportの使い方が(というか、Delphi自体が初めてなんで)わからないのですが、
データベースのテーブルを一覧で表示するのはできた(と思う)のですが、次のやり方が
どうやればいいのやらわかりません。

データベースAのテーブルaの一覧を出力するのですが、その際にデータベースBの
テーブルBより名称を取得したいのです。
イメージとして...

コード         名称
-----------------  --------------------------
Aテーブル.コード    Bテーブル.名称

なのですが、自分で色々やってみたのですが一件目は取得できてるのですが
2件目以降は取得できませんでした。

資料も色々探してみたのですが、QuickReportに関しての資料はほとんどなくて...

知っている方教えてください。
>260
G:IAgentCtlCharacterEx;
x:IEnumVariant;
v: OleVariant;
i: Cardinal;
--------------
x:=G.AnimationNames.Enum as IEnumVariant;
while (x.Next(1, v, i) = S_OK) do Memo1.Lines.Add(String(v));

こういうこと?
>>278 QuickReportの前に、ためしに DBGrid貼って見てみたら?
281Agent ◆AWcg9OTs :02/04/05 18:09
>>279
レスありがとうございます。
未定義の識別子 : 'IEnumVariant'
未定義の識別子 : 'AnimationNames'
のエラーです。 uses節になにかたらないのでしょうか?
>>278
DBの(SQLの)勉強をもっとした方がいい。
QRはただ単にデータを紙に出すだけ。
>281
IEnumVariant <- uses に ActiveX
AnimationNames <- IAgentCtlCharacterEx (Exがある)

取得されるStringは'GestureDown'等
284デフォルトの名無しさん:02/04/06 01:11
上のほうでも話題になっていましたが、Indyのインストールができません。
Del6Personalです。どなたか教えてください。おながいします。
285デフォルトの名無しさん:02/04/06 01:12
おながいかよ!(by 三村)

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

ttp://members.jcom.home.ne.jp/monazilla/document/index.html

>>284
・インストールに失敗したIndyのバージョンは?
・失敗したときのエラーメッセージは?
・DelphiにはUpdatePackあたってる?
ファイル名はIndy9_00_01_D6.EXE
エラーはYou Can not Install the program unless you have the Souse-Code 9.0 Build 1 install first...
UpdatePack2です。
290デフォルトの名無しさん:02/04/06 06:06
>>289
IndyNet9_00_03.EXEならインストール出来ると思うよ。
ttp://www.nevrona.com/Indy/download90.html
このページの真ん中くらいに有る。
俺もDelphi6PersonalUpdatePack2だけどインストール出来たから。

ところで質問があります。
private
SL1:TStringList;

procedure TForm1.Button1Click(Sender: TObject);
begin
SL1.Text := IdHTTP1.Get(URL);
end;
とかやって、一度目は上手くいくんだけど
二度目に例外が発生して
EIdConnClosedGracefullyクラスの例外を生成しました。
'Connection Closed Gracefully.'
とか何とか言われます。
何故なんでしょうか?
どなたか教えていただけませんか?
>>289
わたしもインストールに成功しました(つい今しがた)

私が思うに、Delphiのupdateがうまくいってないのでは?
>>290
Indyヘルプより
例外クラス EIdConnClosedGracefully は,接続が正常に閉じられた場合に生成されます。

EIdConnClosedGracefully = class(EIdSilentException)

説明

この例外クラスは,接続が正常に閉じられた場合に生成されます。
EIdSilentException から派生しているため,VCL の EAbort 例外のように動作します。
[ツール|デバッガオプション|言語固有の例外|追加] をクリックして「EIdSilentException」と入力し,
この例外を無視するように IDE を設定することをお勧めします。
293デフォルトの名無しさん:02/04/06 14:04
Delphiだけで、今流行の ActiveX コントロールってやつ作れますか?
>>293
できたと思うぞ。
うん 出来るけど 無料のパーソナルじゃ普通は無理。

お金出してPRO以上買わないとCで作れるというのと同じレベルだから注意してね
296初心者B@久しぶりのカキコ:02/04/06 14:14
タイトルバーの表示をいじくる方法を教えて下さい。
例えば、文字の色を変えたりとか、最小化・最大化・閉じる以外にボタンを追加するとか…
タイトルバーを表示せず自分で描く。
>>296
フックして下さい。Windowsの神になれる技です。
>>296
シェアウエアで 拡張タイトルバーやフリーでもTTitleBarというのがあるのですから
出来ない事はないのでしょうが、,自分でやるならそれなりの知識が必要だと思います

なお、TTitleBar は自前で全て賄う方式なので、メニューを表示する場合に難しいようですね
300ネタじゃないのよ:02/04/06 14:57
Delphi2の頃にちょこっとだけいじっててver6がただで使えるので遊ぼうと思っていたのだけど
新規フォームにボタンを一個だけ配置してButton1Clickに
Close;
と書いただけなのに終了しなくなっちゃった。
昔はこれでプログラムが終了したんだけど今は何か余計な事を書かないといけなくなっちゃったの?
[エラー] Unit1.pas(30): 文が必要な場所に 'TButton' 型の式があります
と言われても昔はこのコードで通ったから良く分かんないっす。

誰かアドバイスください。
>>300
じゃあApplication.terminate();
302デフォルトの名無しさん:02/04/06 15:03
>>300
ここは性格異常者の隔離スレだから、こっちへ行きなさい。
http://pc.2ch.net/test/read.cgi/tech/1010153466/

>>300
って文法エラーか。アフォらしい。
ネタじゃないならそのプロシージャ全部見せろって。
guest guest
305デフォルトの名無しさん:02/04/06 15:05
どうせタイプミスだろ。
この手の質問はよくあるんだよな。
306デフォルトの名無しさん:02/04/06 15:07
まあしかしこの程度のエラーの原因も掴めないのは
プログラマーの素質ゼロと言わざるを得ない。
307デフォルトの名無しさん:02/04/06 15:08
>>300
わかりました。5000万出しましょう。
そのかわり、1年後にきっちり5000万返せますか?
308デフォルトの名無しさん:02/04/06 15:10
>>300
ワシら、ここに暇つぶしに来とんと違うんや!!
こっちは真剣なんや!!
しょうもない質問すな!!
309ネタじゃないのよ:02/04/06 15:10
プロシージャ晒せとのお話しなので。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MPlayer, StdCtrls;

type
TForm1 = class(TForm)
Close: TButton;
MediaPlayer1: TMediaPlayer;
procedure CloseClick(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CloseClick(Sender: TObject);
begin
Close;
end;

end.
>>307
病人が現れました。どうしよう?
あんた、思いっきりCloseってTButton型の変数宣言してるやん・・・。
312デフォルトの名無しさん:02/04/06 15:13
>>311
激しく笑わしてもらいました。
なるほどね。
313ネタじゃないのよ@赤っ恥:02/04/06 15:19
すっ、すまん。やっと意味が分かった。
NameをCloseButtonに変えたあるよ。

会社では一応ソフト屋で飯食ってるんだけどPascalはさっぱり最近いじってないし、、、

この板にはVXWorks使いなんていないよね?

どもみなさんありがとうございました。

あっそうそう、>>307
いいですよ。何でしたらメールアドレス晒しましょうか?
ただし私先物&経済板の住人だから元本保証無しだよ。
314デフォルトの名無しさん:02/04/06 15:21
Delphi for Windows CE あげ。
>>314
詳しく教えて、頼むから。
>>314 DelphiコンパイラがCのソースでも吐くのか?
>>316
WindowsCEってご存じですか?
>>317 だから、全部のCPU用にpascalコンパイラ用意したの?
  それともCトランスレータ?
319デフォルトの名無しさん:02/04/06 16:16
え、DelphiってCなんですか?
320(-_-):02/04/06 16:18
【コピペ1周年】4月7日同時多発オーダーIN吉野家【祭り】
(1)馴れ合い禁止。(一人で来る事。同伴禁止:いても知らぬ顔)
(2)「大盛りねぎだくギョク」を頼むこと。(並盛りねぎだくギョクも可)
(3)各会場ごとに指定時間厳守で現地集合。
(4)食ったら即帰る。
注)吉野家は家に帰るまでが吉野家です。

本スレ
http://ex.2ch.net/test/read.cgi/entrance/1017935504/l50
スレよりぬき等
http://www2.mnx.jp/carvancle/yoshigyu/
お祭り板
http://live.2ch.net/test/read.cgi/festival/1014549688/l50
>>318
そうじゃないの?BorlandってCのCE開発キット出してたっけ?
もし無い場合、あなたの言っていることの意味が不明。
322デフォルトの名無しさん:02/04/06 18:13
Delphi.NET が先だろ。
323デフォルトの名無しさん:02/04/06 18:28
Indyのインストールはうまくいったようなのですが、>44が動きません。
Indy ClientsのTIdHTTPを乗っけて、Button1をクリックしMemoにURL表示というのを実行してみたのですが・・・
実行すると「ソースファイルが見つかりません:IdStack.pas」と表示されてしまい、
Indyのソースフォルダに有ったので指定しますが、OKを押すと
「デバッガ例外が発生」EIdSocketクラスが例外を発生しましたと表示されて・・・・・
324291:02/04/06 20:27
>323
やってみたらちゃんとうまく行ったよ。(つい今しがた)

ところで>>268>>274で「ある」と言われている
「Indyの日本語版ヘルプファイル」は↓のBorlandのサイトにあるkylix用のやつでしょうか?
http://www.borland.co.jp/kylix/kx2docup.html
325デフォルトの名無しさん:02/04/06 21:04
http://www.vector.co.jp/soft/dl/win95/amuse/se232609.html
にある目覚ましスクリーンセーバーなんだけどこのソフトの出す目覚まし音が
Windowsアプリでボリュームを最大にした時の音より巨大なんだけどそんな設定なんて
どうやって出来るNO?
>>325
そのデータの音量が他のデータに比べてふざけた音量で作成されている。
327デフォルトの名無しさん:02/04/06 22:56
>>326
そなのかなあ。色々と考えたんだけど答えがでんかったYO!

ところで、マスターボリュームの操作ってどうやるNO?
MixerAPIなんて使った事ないYO!
誰かサンプルコードきぼん
>>327
ttp://www.nifty.ne.jp/forum/fdelphi/samples/00507.html
あとは自分でなんとかやって
329デフォルトの名無しさん:02/04/06 23:44
>>328
出来たYO!
ありが10!
39?
331デフォルトの名無しさん:02/04/07 01:07
今年も4649!
332デフォルトの名無しさん:02/04/07 02:52
Mediaplayerを使って繰り返して音を鳴らしているんですけど、
ボタン入力で音が鳴っていても途中で強制終了させることは出来ないでしょうか?
>332
Application.Terminate
でどお?

そのButtonのOnClickに
MediaPlayer1.Pause;
もしくは
MediaPlayer1.Stop;
Application := nil
とか。
336デフォルトの名無しさん:02/04/07 03:34
>>333-334
駄目みたいっす。何か先行入力されている感じ。ボリュームをだんだん大きくするプログラムなんだけど
with Mediaplayer1 do
begin
Filename:='C:\Windows\bell.wav';
Open;
Notify:=true;
Play;
end;
j:=1000;
while j<15000 do
begin
if not SetVolume(0, 0, j) then
ShowMessage('ボリューム設定に失敗しました');
if Mediaplayer1.NotifyValue=nvSuccessFul then
begin
Mediaplayer1.Notify:=True;
Mediaplayer1.play;
end;
sleep(1500);
j:=j+4000;
end;
メインはこれでボタン側は
>>333>>334を入れただけなんだけど駄目だった。なぜ?
ボタン押せなくないか?
338デフォルトの名無しさん:02/04/07 04:07
>>337
そう押せない。
先行入力されてるみたいな感じで、何回か繰り返して再生された後で
やっと押せて終了出来る。

どうにか割り込み出来ないのでしょうか?
ループ中にApplication.ProcessMessages入れとけ
MLにも春厨ガ・・・

>>336
OnClick内でそんなに時間掛かる処理は普通やらないと思います。
・sleepの代わりにApplication.ProcessMessages
・タイマー(TTimerで十分でしょう)を使って似非割り込み
・OnIdleで同期とって処理
等でやりましょう。
タイマーが手軽かな。
341デフォルトの名無しさん:02/04/07 11:11
MLに厨房?
どんなやつかコピペPLS
342デフォルトの名無しさん:02/04/07 11:29
>>333-340
駄目だった。みんなレスありがとうね。
でも、色々とやってみて、音を鳴らす部分だけをFuctionに出したら
みんなが教えてくれたどのやりかたでも大丈夫だったあるよ。

同じコードの中に入れといたら割り込みが効かないなんて初めて知った。
みなさんありがとね。

解決レポしたばかりで聞くのも申し訳ないのですけど、スクリーンセーバーのように
キーかマウスに動きがあったら、ある特定の処理をさせたいのですが、OnMouseMove
はそのフォームの上ではきちんと思った通りの動きをしてくれるのだけど、OnMouseDown
やOnKeyDown、OnKeyPress,OnMouseClickは思った通りの動きをしてくれません。
それぞれのプロシージャにはClose;を入れてるだけで試しているのですが・・・

何かポイントがあるのでしょうか?
スクリーンセーバーとかを作った事のある人、教えてください。
>>342
DelphiではWindows標準のスクリーンセーバーは作成できません。
>>342
340にあるのも試した?

>>343
標準というがどういうのを指してるか分からないけど、Delphiでもスクリーンセーバーは作れるでしょ。
SCRNSAVE.LIB を使ってないってことなら、VC製スクリーンセーバーでも使ってないの多いし。
345デフォルトの名無しさん:02/04/07 12:06
MyBase の使い方が いまいち良く分からないのですが…
例えば、

「名前 番号 住所」 というローカルデータベースを作るとして、

ClientDataSet を配置し、項目の新規作成をするところまでは分かるんです。
それにレコードを追加するときはどうするのですか? CommandText で
SQL 文を入力するのですか。
346デフォルトの名無しさん:02/04/07 12:50
>>344
340にあるものってなんですか?
>>346
あ、すまん。終了処理はちゃんと解決してたんね。ちょと勘違いしてた。忘れてくれ。鬱
んでOnKeyDown、OnKeyPressはフォームのKeyPreviewをTrueにすればOKかと。
OnMouseDownなんかは…TImageとか張ってる場合はTImageのOnMouseDownとかに
記述しなきゃならないんだけど、それとは別問題?
348デフォルトの名無しさん:02/04/07 13:29
>>347
レスありがと。教えてもらった方法でOnKeyDownは解決しました。
TImageとかは貼ってないのです。
あるのはボタンとタイマーのみ。
349デフォルトの名無しさん:02/04/07 13:38
エラーの原因を教えてください!
ZLib で 以下の関数を使うとDecompress呼び出しで error! と表示されてしまいます

uses ZLib;
procedure Test(str:string);
var
 P:PChar;
 PSize, I:Integer;
 POut:Pointer;
 Ms:TMemoryStream;
begin
 Ms := TMemoryStream.Create;

 P := PChar( str );
 Ms.Write( P, Length( P ) );

 ZLib.CompressBuf( Ms.Memory, Ms.Size, POut, PSize );

 Ms.Clear;
 Ms.Write( POut, PSize );

 ZLib.DecompressBuf( Ms.Memory, Ms.Size, 0, POut, PSize );

 Ms.Free;
end;
350342=348:02/04/07 14:01
解決をしたと思ったら変なループをしてた(涙)
何故なのでしょう?
長くて切れるだろうけど載せます。ユルシテ
Begin
 FirstMove:=0; ←3、ここに戻ってしまう
 GetLocalTime(SystemTime);
 if SystemTime.wHour<15 then
 begin
  GetcursorPos(Pointcursor);
  if Pointcursor.X>500 then
  begin
   if Pointcursor.Y>500 then
   begin
    if not SetVolume(0, 0, 0) then
     ShowMessage('ボリューム設定に失敗しました');
    with Mediaplayer1 do
    begin
     Filename:='C:\Windows\bell.wav';
     Open;
     Notify:=true;
     Play;
    end;
    j:=500;
    while j<64000 do  ←1、ここから
    begin
     if not SetVolume(0, 0, j) then
      ShowMessage('ボリューム設定に失敗しました');
     if Mediaplayer1.NotifyValue=nvSuccessFul then
     begin
      Mediaplayer1.Notify:=True;
      Mediaplayer1.play;
      Application.ProcessMessages; ←2、ここまで実行すると
     end;
     j:=j+1000;
    end;          ←1、ここまでループするはずなのに
    exit;
   end;
  end;
 end;
end;
>>349
マニュアル読んでね。
352デフォルトの名無しさん:02/04/07 14:12
開発者マニュアルに ZLib のことのってます?
353デフォルトの名無しさん:02/04/07 14:14
Edit1〜3等でTABキーを押したときに必ずMemoにフォーカスを移動させたいんですが
OnKeyDown等ではTABキーが捕まえられません。
Ctrl+TABだと捕まえられるんですが・・・
TABオーダーだとEdit1->Edit2->Edit3->Memoのようにしか移動できません。
何かいい方法はないでしょうか?
354デフォルトの名無しさん:02/04/07 14:21
Action コンポーネントを使い、
ショートカットキーに TAB を登録する。
>>354
ぬおー!できました!!
ありがとうございます〜
まあどっちゃでもいいけど
俺ならEditXOnEnterでActiveControl=Memoにするかも
357デフォルトの名無しさん:02/04/07 14:29
VBやVC製のEXEを実行するには、VB、VC特有のDLLをインストールしなければならないとききました。
Delphi製のEXEを実行するときも、Delphi特有のDLLをあらかじめインストールしなければならないのでしょうか。
↑… どうなってんの???
359358:02/04/07 14:33
失礼。ブラウザのせいでヘンな風に表示されてるだけだった。
>>349
 Ms.Write( P^, Length( P ) );
 Ms.Write( POut^, PSize );

'^' いる?
361Delフサギコ ◆zE1iiRdQ :02/04/07 14:35
      (;;::;;:     ;;:::)
     (;;::; (::;; (   ;;::;; )
    (::: (;;::   ;;;)   :::::)
   (;;: (:::  (::;;;   ;;;;)::;;;゙゙);;)
     (,,゙:゙:;;;;;,,,(::;;;;;;;;);;;;;;:::):::;;;;)
     ヾ(,,;;;;ノゝ::;;iii //;;;;)
        ヾヽi:;;;iii|//
         ヾ;;;iiiii/
          |::;;;iii|
          |::;;;iii|          >>357
          |:;;;;iii| ∧      /Delphi製の
          |;;;;iiii|Д゚ミ ∬ <  フリーソフトを
          |;;;iiii;| つ━┛   \ 使ったらわかる
          |;;;iiii;|., ミ〜.       と思うよ
       .jrjjrj从wjwj从j
     jwjjrj从jrjrj从jwjwjjr
>>356
試してみたのですがEditにフォーカスが移動しません。
procedure TForm1.Edit1Enter(Sender: TObject);
begin
 ActiveControl:=Memo1;
end;
これじゃ駄目なんですか?
363357:02/04/07 14:40
>>361
必要無い と聞いてはいるのですが、友人曰く
「必要だよ だって俺いれてるもん」

と言っているので、本当のところはどうなんだろうなーと
思いまして。
364デフォルトの名無しさん:02/04/07 14:41
タダのポインタ var P:Pointer に
逆参照つけたら、型はなにになるんですかね。

P^ { 型は? }
365デフォルトの名無しさん:02/04/07 14:45
これからはdelphiの時代でしょ。
366デフォルトの名無しさん:02/04/07 14:49
ああああああ
ほんとうだああああああああああ

Ms.Write( P^, Length( P ) );
Ms.Write( POut^, PSize );

としたら旨く行きました!

結局 P も P^ も Pointer 型なんですかね。どっちも
互換性うんぬん言われなかったんで。
>>363
普通は必要ない。が、 String型をDLLをやりとりする場合や実行時パッケージを使って
構築した場合とかは、ぞれぞれBORLNDMM.DLLやパッケージファイルが必要になる。
368デフォルトの名無しさん:02/04/07 15:03
たまに実行時パッケージを必要とするフリーウェアあるね。
>>366
Stream書き込みはBufferがConstで実際のデータを渡す必要があるので
逆参照する必要あり
Pointer型の逆参照は本来はできない仕様なので
(実際には何らかのデータが渡される?)
POut:Pchar; などとして
ZLib.CompressBuf( Ms.Memory, Ms.Size, Pointer(POut), PSize );
Ms.Write( POut^, PSize );
としたほうが良いカモ
370342=348=350:02/04/07 15:13
どなたか教えていただけないでしょうか。
371デフォルトの名無しさん:02/04/07 15:44
>>350
     end;
     j:=j+1000;
    end;          //←1、ここまでループするはずなのに
    exit;
   end;
  end;
 end;
end;

↑なんでここに EXIT がはいってるの?意味無いような。
372デフォルトの名無しさん:02/04/07 15:48
>>363
それはDelphiのDLLじゃなくてそのソフト独自のDLLじゃ無いの?
373デフォルトの名無しさん:02/04/07 15:50
>>350
それから、あまり深いインデントをするとみにくくなるよ。
工夫すれば、↓のようにも書ける事を覚えると吉。やってる事は >>350 と全く同じ。

begin
 FirstMove:=0;
 GetLocalTime(SystemTime);
 if SystemTime.wHour>=15 then Exit;
 GetcursorPos(Pointcursor);
 if Pointcursor.X<=500 then Exit;
 if Pointcursor.Y<=500 then Exit;
 if not SetVolume(0, 0, 0) then
  ShowMessage('ボリューム設定に失敗しました');

 with Mediaplayer1 do
 begin
  Filename:='C:\Windows\bell.wav';
  Open;
  Notify:=true;
  Play;
 end;

 j:=500;

 while j<64000 do
 begin
  if not SetVolume(0, 0, j) then
   ShowMessage('ボリューム設定に失敗しました');
  if Mediaplayer1.NotifyValue=nvSuccessFul then
  begin
   Mediaplayer1.Notify:=True;
   Mediaplayer1.play;
   Application.ProcessMessages;
   end;
  Inc( J, 1000 );
 end;
end;
374342=348:02/04/07 18:11
>>371
レスありがとうございます。
end;が多数並んでいるのはそれぞれのendごとに実は処理が並んでいるのですよ。
とりあえずそれぞれの処理はサブルーチン化してまずはバグ取りを>>373を参考にして
やってみます。
375342=348:02/04/07 19:15
>>373
やってみたのですけど駄目でした。
原因を追及する為に簡略化しているのですが、

begin
 while j<64000 do           ←2
 begin
  if not SetVolume(0, 0, j) then
   ShowMessage('ボリューム設定に失敗しました');
   Mediaplayer1.Notify:=True;
   Mediaplayer1.play;
   Application.ProcessMessages; ←1
   j:=j+1000;
 end;
end;

ボリュームを1回演奏するごとに少しづつ上げていくプログラムなのですが、
jを広域変数にして少しづつ上げていきたいのですけど、1のあと下の行を実行せず
に2に戻ってしまいます。
演奏終了を確実に待てる他の方法をどなたかご存じ無いでしょうか?
376デフォルトの名無しさん:02/04/07 20:57
Listboxの内容(text)をClipboardに入れようと思い

Clipboard.AsText := String(Listbox1.Items);

としたのですが、思ったとおりの数値が出てきません。
どうしたらよいのでしょうか?
377デフォルトの名無しさん:02/04/07 21:01
Application.ProcessMessages
で、さらに >>375 が呼び出されているって事はない?

つまり、1の下を実行せず2にジャンプしているのではなく、
新たにもう一つ関数を実行していると。

>>375 のコードはどのイベントに書いてあるの?
Clipboard.AsText := Listbox1.Items.GetText;
379デフォルトの名無しさん:02/04/07 21:18
TListBox.Items って TStrings でしょ?
TStrings を String にキャストできるの?
内容のテキストを得たいときは
ListBox.Items.Text で。
380デフォルトの名無しさん:02/04/07 21:28
>378 >379
ありがとうございます。
それでいけました。

しかしこのままだと、ListBox の一番上にあるものが
クリップボードに入ってしまいますよね?
選択したものをクリップボードに入れる場合はどうすればいいのでしょうか?
381342=348:02/04/07 21:34
>>377
毎度ありがとうございます。
375のコードはTTimerのOntimerに書いています。
ただし何度も呼び出されないようにOntimerの一番最初に
Timer1.Enabled:=False;
を入れてますけど。

試しにボタン一個とメディアプレーヤー一個だけのアプリを作って
MediaPlayer1.wait:=false;
Mediaplayer1.Enabled:=True;
Mediaplayer1.Notify:=True;
Mediaplayer1.play;
Application.ProcessMessages;
showmessage('終わった');
と言うコードを書いて音を鳴らしたら音が鳴り終わる前にメッセージボックスが表示されました。
Application.ProcessMessages;
は前の作業が全て終わるまで待ってくれる訳じゃないんですね。
音が鳴り終わるまで待たさせる方法が無く、どうしようか悩んでます。
382デフォルトの名無しさん:02/04/07 22:20
>>380

何番目の行が選択されているか?は、
ListBox.ItemIndex で取得できるので、

Clipboard.AsText := ListBox.Items[ ListBox.ItemIndex ];

とすればよい。
383デフォルトの名無しさん:02/04/07 22:22
えっと、「演奏が終わった」っていうイベントが Mediaplayer に
なかったっけ?

MediaPlayer.OnNotify とか
384デフォルトの名無しさん:02/04/07 22:30
それからさ、
MediaPlayer1.wait:=false;
で、なんで False なのよ。
どうしてわざわざFALSEなのよ。

> 音が鳴り終わるまで待たさせる方法が無く、どうしようか悩んでます。

WAIT := Fasle

の意味に気づいてYO!
Waitよ?
Wait に False よ?
385342=348:02/04/07 22:46
>>384
先輩すみませんでした。おっしゃるとおりでした。(礼)
waitをTrueにしたらきちんと前の音の再生を待って再生するようになりました。

でも、結局Application.ProcessMessages;
を入れてるのにキー入力やマウス移動などの割り込みは受け付けません。
コードの位置をタイマーのOntimerからフォームのOnShowに移したりしても駄目です。

何か良い方法はないでしょうか?
386デフォルトの名無しさん:02/04/07 22:52
>>382
ありがとうございました。
無事に動いてくれました。
>>385
「Notify:=True;」の後、再生して
OnNotifyで終了のタイミングを拾う
388342=348:02/04/07 23:07
>>387
OnNotify プロシージャを作ってマウスの移動やキー入力のチェックをやってみたのですけど
やっぱり駄目でした。
389デフォルトの名無しさん:02/04/07 23:10
これだけでうまくいくけど??
再生中でも、ちゃんとボタン押せば止まるし、
フォームをクリックすれば閉じる。

procedure TForm1.Button1Click(Sender: TObject);
begin
with mediaplayer1 do
begin
filename := 'c:\windows\media\the microsoft sound.wav';
open;
notify:=true;
wait := False;
play;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
mediaplayer1.stop;
end;

procedure TForm1.FormClick(Sender: TObject);
begin
close;
end;

390デフォルトの名無しさん:02/04/07 23:11
procedure TForm1.Mediaplayer1Notify(Sender:TObject);
begin
mediaplayer1.notify:=True;
mediaplayer1.play;
end;
>OnNotify プロシージャを作ってマウスの移動やキー入力のチェックをやってみたのですけど
>やっぱり駄目でした。
何やりたいの?(藁
OnNotifyは再生が終わったときに来るんだよ。
少しはヘルプ読めよ。甘えすぎだろ。
392342=348:02/04/07 23:29
>>389
甘えすぎと感じたら許してくれ。
OnNotifyの意味は分かってますし単純アプリで動作する事も確認しています。
同じ音を繰り返し再生している時にキー入力やマウスの移動を検出してプログラムを
止めたいのに止まらないんですよ。出来てますか?
だからみんながOnNotifyだ、とか色々と教えてくれている事をすべて試してるんですけどね。
OnCreate,Onshow,OnPaint,OnTimer等いろんな場所に置いたりコードをいじったり
してるんですけどキー入力時に割り込んで終了させることができてません。
(´ー`)y-~~。oO(どうでもいいけどさStringとTStringsに関する質問が今までで一番多い(はず)のは何でだろう?)
>>389-390のコードでちゃんとできてるけど…
>>392
いっかい頭を冷やして一つ一つ理解してから再挑戦してみよう。
言われたことがごっちゃになっちゃってちゃんと理解してないよ。
>>390
OnNotify内でNotifyValue見ないと終わらないよ
397デフォルトの名無しさん:02/04/07 23:50
Mediaplayer について整理してみよう。

・Mediaplayer の Wait を False にしているならば、
Playしている最中でも、関係無くDelphiのプログラムを実行することができる。
なんつうか、外部の再生プログラムを呼び出しているだけ と考えても
よいかもしれない。

・従って、 Wait := False であるかぎり、 Play 中だろうがナンだろうが、
マウスのクリックイベントなり移動イベントなりは普通に発生し、
普通に処理できる。

・故に、OnMouseMove や OnMouseDown, OnKeyDown 等に Stop 命令を
入れておけば、すぐに停止するはずである。

・繰り返し再生したいときは、 Notify := True としておき、
OnNotifyイベントに
Notify := True と、 Play の2つの命令を入れよう。
398デフォルトの名無しさん:02/04/07 23:51
・それから、Wait:=True にしたときに、

Play;
Application.ProcessMessages;

としても無駄である。なぜって? だって、再生が終わるまで、
Play から後の命令は実行されないんだもん。なんせ待ってるからね。
だから、StopしたときもOnNotifyが呼ばれるだろ・・・アフォが。
>>357
亀レスすまん。
Delphiでも「実行時パッケージ」と使うようにコンパイルすれば
実行時パッケージファイル(*.bpl 一種のDLL)が別途必要になる。
401342=348:02/04/08 00:04
>>397
わざわざまとめてくださってありがとうございます。
恥を忍んですべてコードを晒します。
スクリーンセーバーを時間によって切り替えるソフトです。
コードはOnTimerやフォームのOnPaint等に書いても駄目でした。
begin
Timer1.Enabled:=False;
Filename:='C:\Windows\Win.scr';
FirstMove:=0;
GetLocalTime(SystemTime);
if SystemTime.wHour<=17 then //17時以前だったら実行しない。
begin
callsaver(filename);
exit;
end;
GetcursorPos(Pointcursor);
if Pointcursor.X<100 then
begin
if Pointcursor.Y<100 then
begin
if callsaver(filename)then ShowMessage('正規スクリーンセーバーコール失敗');
Close;
end;
end;
if not SetVolume(0, 0, 0) then ShowMessage('ボリューム設定に失敗しました');

j:=500;
Mediaplayer1.Filename:='C:\WinNT\Media\ringin.wav';
Mediaplayer1.wait:=True;
Mediaplayer1.Open;
Mediaplayer1.Notify:=true;
Mediaplayer1.Play;
Application.ProcessMessages;

while j<14000 do
begin
if not SetVolume(0, 0, j) then ShowMessage('ボリューム設定に失敗しました');
if Mediaplayer1.NotifyValue=nvSuccessFul then
begin
j:=j+1000;
Mediaplayer1.Filename:='C:\WinNT\Media\ringin.wav';
MediaPlayer1.wait:=True;
Mediaplayer1.Notify:=True;
Mediaplayer1.play;
Application.ProcessMessages;
end
else //何故かnvSuccessFulでない時があるが無視して鳴らす。
begin
j:=j+1000;
MediaPlayer1.wait:=True;
Mediaplayer1.Notify:=True;
Mediaplayer1.play;
Application.ProcessMessages;
end;
end;
end;
このようにSetVolumeと言うサブルーチンでボリュームを少しづつあげては音を鳴らす
ソフトを作っているのですが、音が鳴っている間は何をやっても無視されます。
音が鳴る前、と鳴った後はきちんとマウスやキーの動作に対応して終了しているので、
そちらのコードは間違い無いと思うのですが。。。
402デフォルトの名無しさん:02/04/08 01:00
ご質問があります。Form上にMemo,WebBrowser,Edit,ButtonとIndyのIdHttpを乗っけていて、
Editで指定したURLのページをButtonを押すと、WebBrowserに表示し
MemoにはHTMLのソースを表示というのを作ってみたのですが、WebBrowser上のリンクを
クリックして違うページが表示されたときに、自動的にMemoにリンク先のソースを表示するには
どうしたらよいでしょうか。
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Text:='';
Url:=Edit1.Text;
WebBrowser1.Navigate(Url);
Memo1.Lines.Text:=IdHTTP1.Get(Url);
end;
>>402
OnDocumentCompleteイベントでやれば?
404402じゃないけど:02/04/08 01:13
ソースが欲しいんでしょ?よーするに。時機じゃなくて。
一旦保存して、読み込んだら?>>402
一番簡単だと思う。スマートじゃないけど(ワラ
OnBeforeNavigate2
OnNavigateComplete2
あたりで切り替わりをみて
切り替わった後
Memo1.Lines.Text:=IdHTTP1.Get(新しいURL);
ってとこだろう。
406デフォルトの名無しさん:02/04/08 01:32
>404
臭いよ

>402
単純にやるなら403さんのが簡単。実行もしてみた。
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
Memo1.Lines.Text:='';
Memo1.Lines.Text:=IdHTTP1.Get(Url);
end;
(´-`).。oO( どうしたら>>404のような解釈になるんだろう・・・
>401
while j<14000 do
begin
....
end;

メインスレッド中でWhileループをまわして
再生しているので再生中はロックするのは当然かと
別スレッドにするか、Timer等を利用してWhileループを
用いない設計にするなどしたほうがよろしいかと
分かってる気がしてる厨は放っとけよ。
穴だらけじゃん。
409=分かってる気がしてる厨
>>402
procedure TForm1.UIWebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
RichEdit1.Lines.SetText(PChar(UIWebBrowser1.DocumentSource));
end;
412342=348:02/04/08 03:29
>>408
えっ、while文の中ってロックされてしまうんですか?
知りませんでした。
タイマーをもう一個追加してそちらで処理するようにしたらやっと上手くいきました。
ありがとうございました。

>>409
自分用だからエラー処理はしてないの。気にせんといて。
それ以外に穴があるんだったら教えてちょ〜
413290:02/04/08 06:49
>>292
ありがとです。
デバッガオプションの言語固有の例外に追加しただけだと、
デバッガ中に停止はしなくなりましたが、エラーメッセージは表示されるので、
try
SL1.Text := IdHTTP1.Get(URL);
except
on EIdConnClosedGracefully do raise EAbort.Create('');
end;
こんな感じにしたら表示されなくなりました。
しかし、これだと例外が生じた時にダウンロードがされないままなので、
成功するまで二、三度ダウンロードを試みて、
ダメだったらメッセージを表示するようにしたいのですが、
どうすればいいのでしょうか?
>>412
While文処理中はロックされるのか?
ヘルプにそんな事書いてないぞ?
また勘違いしてるんじゃないのか?
415デフォルトの名無しさん:02/04/08 10:27
作成したプログラムで原因不明のエラーが発生してお手上げです。
どなたかぜひ何か解決のためのヒントだけでもお教え下さい。

delphi5.0で作ったプログラムを実行させると
「モジュールxxxx.exeのアドレス 004AE548でアドレスFFFFFFFCに対する
読みこみ違反がおきました」というエラーが発生して止まってしまいます。

xxxx.exeは自作してプログラムです。そのためアドレスは作成したソフトに
よって異なると思われます。


プログラム自体はインターネットを使用してhttpにてデータを何件かまとめて
データを受信するプログラムです。
同じデータを受信しても全く発生しないこともありますし、
有る特定のデータを受信したときに発生するというわけでもないです。

上記のようなエラーメッセージはどのようなときに表示されるのでしょうか

416Agent ◆AWcg9OTs :02/04/08 10:30
>>283 レスありがとうございます。
コンパイル、実行は出来ましたが、アニメーション名の取得の
処理をすると以下のエラーが出ます。
デバッガ例外が発生
プロジェクト Project1.exe が EAccessViolation クラスの例外を生成しました。
'モジュール 'Project1.exe' のアドレス 00460922 でアドレス 00000000 に対する読み込み違反がおきました。'

ソースの変更は、user節にActiveXをしました。
このようなエラーの場合はどうすればよいか助言願いませんでしょうか?
417デフォルトの名無しさん:02/04/08 11:33
16進数の文字列があったとしてそれを10進数にしたいんですがどうしたらいいでしょうか?
HexToIntと言うのがなく困ってます。

418デフォルトの名無しさん:02/04/08 11:36
>>417
A := '3F';
B := StrToInt( '$'+A );

もしくは

B := StrToIntDef( '$'+A, 0 );
419はた:02/04/08 14:37
どうやってもできないです。>>278
QuickReportにDatabase1とQuery1とDataSource1を貼りつけて、DataSource1の
OnDataChangeイベントで

Query2.SQL.Clear;
Query2.SQL.Add('SELECT MEISYOU FROM SHOUHIN WHERE JAN_CODE=' + Query1.Fieldbyname('CD').AsString);
Query2.Open;
QRL_SyoNM.Caption := Query2.Fieldbyname('MEISYOU').AsString;

のような処理を行っているのですが、1件目の名称しか取得できません。
Query1が一件読込んだら、読込んだ値でQuery2も読込んで値をセットしたいのですが、
どうやればいいのか誰か教えてくださーい。

>また勘違いしてるんじゃないのか?
また?股?
421デフォルトの名無しさん:02/04/08 15:28
>>420
また?またって何?
勘違いって何処?(全部!?)
肝心の所が抜けている...
今日も毛が抜けている..
423デフォルトの名無しさん:02/04/08 15:38
Delphi始めたんですがSystemのTimerって言うのを貼り付けても時計が表示されません。
何でですか?

Delphi6のプロフェッショナルです。
>>423
 貼り付けたタイマーのアイコンをダブルクリックして

Caption:=FormatDateTime('hh:mm:ss',now);

と入力してから F9ボタンを押して下さい
ネタじゃないのか
426デフォルトの名無しさん:02/04/08 16:13
>>419
勘違い発覚!
QueryにSQL文セットするところで、文字列を'で囲んでなかった。
'Select * From A Where CD = '12345''と記述するところを
'Select * From A Where CD = 12345'と記述していた。
例えばコードが'0123'など頭が0だとEOFになっていたようです。
>>420の方、勘違いを気づかせてくれてありがとう。
C++ってなんですか
428デフォルトの名無しさん:02/04/08 16:32
>>427
どうぞ
 ↓
VisualC++相談室 【7】
http://pc.2ch.net/test/read.cgi/tech/1017843192/
>416
Agentのロードをしていないor失敗している
MSDNを参照するよろし
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/msagent/paface_9x2d.asp
など

Loadの例)
Agent1.Characters.Load('dolphin','c:\program files\Microsoft Office\Office10\DOLPHIN.acs');
G:=IAgentCtlCharacterEx(Agent1.Characters.Character('dolphin'));
時間表示されました!
ありがとう御座います!!!
431Agent ◆AWcg9OTs :02/04/08 16:53
>>429
レスありがとうございます。
無事にアニメーション名を取得できました。
また何かありましたら寄らして頂きます。
本当にありがとうございました。
432初心者B:02/04/08 16:57
>>423
SystemのTimerは、一定時間ごとにイベントを発生させるコンポであって、
時計を表示させるものではないのですよ。
433デフォルトの名無しさん:02/04/08 17:19
IndyでIdHTTP.Getを実行すると、ダウンロード中固まったようになっちゃうけど、ならないようにはどうしたらいい?
435デフォルトの名無しさん:02/04/08 17:29
>>412
ほらwhiile文のヘルプから割り込みを受け付けないってのを探し出してみな。
おい、おまえら教えてください

いまTListView改造してViewStyle=vsReportの時に表示される
ヘッダ部分にビットマップを描画する方法を探っているのですが、

TListViewにWM_PAINTメッセージメソッドを書いて
その中でヘッダ部分に描画しにいくと、
リストビューの内容をスクロールするだけでヘッダーの方まで再描画されてしまいます。
ヘッダ部分のWM_PAINTメッセージだけを捕捉する方法ってないですか?

なおにヘッダ部のハンドルは GetTopWindow( Handle );で取れました。
>>436

>いまTListView改造して

はい?
>>473
>いまTListView改造して
TListViewから派生クラスを作ること。

その程度の事も読めないヴビ厨は(・∀・)カエレ!
>>436
TListColumn.ImageIndexではダメなん?
>>438
プログラミング用語すらまともに操れないあなたの方に不信感。
>>440
いちいち突っ掛かるなよ
442デフォルトの名無しさん:02/04/08 21:10
>>436
ヘッダを非表示にして、 THeaderControl を使うのが楽そう。
443デフォルトの名無しさん:02/04/08 22:17
プロジェクトファイルに
ParentHandle
を書いたらParentHandleが未定義の識別子と怒られるんだけどなじぇえ?

usesには当然 Sysutils, Windows,を追加してる。
444デフォルトの名無しさん:02/04/08 22:25
>>443
事故レス。馬鹿だった。許してくれ。
>>443
SysUtilsにもWindowsにもParentHandleというのは定義されてないと思うけど

ところでParentHandleって何?
DelのヘルプにもMSDN(漏れのはちと古いけど)にもキーワードには出てこないし
>>444 あ、ごめん・・・突っ込んじゃった
447デフォルトの名無しさん:02/04/08 23:18
TMemoryStream にテキストデータを書きこもうとして
AString := 'ABCDEF';
APChar := PChar( AString );
APointer := @APChar;
MemoryStream.WriteBuffer( APointer^, Length(AString) );

としても、正しく書きこまれません。
いや、正しく書きこめないならそれで良くって、既に別の方法で
正しく書きこめているのですが、

なぜ、この書き方ではダメなのでしょうか。
×APointer := @APChar;
○APointer := Pointer(APChar);
>>447
448さんのでOKだけど
APointer:=APChar;
でも大丈夫みたい
>>447
別解
×MemoryStream.WriteBuffer( APointer^, Length(AString) );
○MemoryStream.WriteBuffer(Pointer(APointer^)^, Length(AString) );
突然ですがこのスレを廃止し、
以下のスレに統合することに決定しました。

Delphi相談室その4
http://pc.2ch.net/test/read.cgi/tech/1018211735/
>>451
そっちやさしくないじゃん
453447:02/04/08 23:51
>>448-450 ありがとうございます。
もしかして、APChar 自体がポインタなので、
@APChar とすると、文字列のアドレスではなく、
文字列へのポインタを保持しているアドレスを
得ることになってしまう… ということでしょうか。
ポインタのポインタ・・・C/C++ではよく出てくるやつですね
MemoryStream.WriteBuffer(AString[1], Length(AString) );
決定しました。

Delphi相談室その4
http://pc.2ch.net/test/read.cgi/tech/1018211735/


     ∧∧  ミ _ ドスッ
     (   ,,)┌─┴┴─┐
    /'   つ 再  開 │
  〜′ /´ └─┬┬─┘
   ∪ ∪      ││ _ε3
               ゛゛'゛'゛
>>238
遅レスですがそういう説明方法もあるのですね.
それにしても簡潔でわかりやすい説明ってホントにむずかしい.

>>242
解決したのでしょうか.

フォームに文字をグラフィックとして描きたい場合は
Canvas.TextOut という風に書きます.以下はその例.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Canvas.TextOut(2, 2, TimeToStr(Now));
end;

単にTextOutと書くとWindows APIのTextOut関数になってしまいます.
(同じ名前の別物があるのです)

フォーム上の別なコンポーネントに描きたい場合はそのコンポーネントの名前を指定します.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
StringGrid1.Canvas.TextOut(2, 2, TimeToStr(Now));
end;

ちなみにDelphi初代から共通です.
459デフォルトの名無しさん:02/04/09 04:50
MDIBrowserのブックマークみたいに、
ドラッグするとくっついたり離れたりするウインドウって
Delphiでも出来ますか?
>>459
できるよ。Delphiはドッキング周りが強力。
IDEみたいにするのは面倒だけど。

っつかIDE互換なドッキング実装した人いる?
ドッキングも良いが、やりすぎると
ユーザーが所望のポジションにウインドウ配置できなくてイラついてくる罠。
>>461 VS.NET の事?
463デフォルトの名無しさん:02/04/09 11:22
16進数を2進数に変換する方法ってないかしら?

FC4FC4FC4って言う文字列だったら 111111000100111111000100111111000100 になりますよね。
どうやったら出来ます?
>>463
1バイト単位にInteger型に変換して、2進文字列のテーブルをひくのが簡単でしょう
465デフォルトの名無しさん:02/04/09 12:44
問:「〜なり」を使って短文を作れ(ex.彼女を見るなり走り出した)
答:「コロッケはおいしいナリ」

問:「うってかわって」を使って短文をつくれ
答:彼は麻薬をうってかわってしまった

問:「もう・・・してしまった」を使って短文をつくれ
答:もうしわけないことをしてしまった
>>463
10進変換後に2進変換。
467465:02/04/09 13:18
誤爆なり。スマソ
>1バイト単位にInteger型
ワラタ
>>463
16進数1桁は2進数4桁(16種類)に対応する。
テーブルで展開する手もあるYO(笑)
470デフォルトの名無しさん:02/04/09 13:27
function IntToBin(I:Integre):string;
begin
 while I > 0 do begin
  if I mod 2 = 0 then Insert('0',Result,1) else Insert('1',Result,1);
  I := I div 2;
 end;
end;

end;
471デフォルトの名無しさん:02/04/09 13:29
function IntToBin(I:Integre):string;
begin
 while I > 0 do begin
  Insert(IntToStr(I mod 2), Result,1);
  I := I div 2;
 end;
end;
472デフォルトの名無しさん:02/04/09 13:30
function IntToBin(I:Integre):string;
begin
 while I > 0 do begin
  if I mod 2 = 0 then Insert('0',Result,1) else Insert('1',Result,1);
  I := I div 2;
 end;
end;

end;
アラアラ...
474デフォルトの名無しさん:02/04/09 13:55
×I:Integre
○I:Integer
function HexToBin(hex:String):String;
function i4To2(d:Integer):String;
begin
SetLength(Result,4);
Result[1]:=Char(ord('0')+(ord((d and 8)<>0)));
Result[2]:=Char(ord('0')+(ord((d and 4)<>0)));
Result[3]:=Char(ord('0')+(ord((d and 2)<>0)));
Result[4]:=Char(ord('0')+(ord((d and 1)<>0)));
end;
var i:Integer;
begin
result:='';
for i:=1 to Length(hex) do Result:=Result+i4To2(StrToInt('$'+hex[i]));
end;
476デフォルトの名無しさん:02/04/09 14:48
comboboxでVBのListIndexのような使い方はどうやればいいのでしょう?
(表示は名称で、内部でコードを保持したいのですが)
>>476
大きく2つの方法がある

1、ItemsのObjectsにアイテムを保存する 整数なら無理やり型変換して入れちゃえ

2、別の動的配列に保存しておいてItemIndex を指標に得る
478デフォルトの名無しさん:02/04/09 15:41
複数行の文字列があるString変数で、
一行だけを抜き出すにはどうしたらよいでしょうか?
479478:02/04/09 15:42
>>478
ちょっと訂正
一行だけを → 指定した行だけを
>>TStringsList をその場で作って Textに代入 して Strings[n] で

with TStringsList.Create do try
Text:=複数行文字列

 for i:=0 to Count-1 do begin
 writeln( Strings[i] ); みたいな感じで使う
 end;
finally free;end:
481デフォルトの名無しさん:02/04/09 17:13
482デフォルトの名無しさん:02/04/09 19:39
N
483デフォルトの名無しさん:02/04/09 19:44
484デフォルトの名無しさん:02/04/09 23:42
ページコントロールに対して

PageControl1.ActivePage:=TabSheet1;

ってコードでやると、タブはそのタブになるけど
タブ内のコントロールがちゃんと表示されない状態になるんですが?

Delphi5Proなんです
なりませんが?
486484:02/04/10 00:02
>>485
ならないですね〜 検証の為に新規作成してやってみたら問題置きませんでした ん〜

もう少し調べてみます
自作スクリプトの動作、処理をするのに
文字列から関数が呼べるようなものがあったら便利だと思うのですが
何かいい方法ないですかね?

ちなみに現在、私はTStringListのAddObjectを使って関連づけています
さくらスクリプトですか?
>>487 クラスのPublishedメソッドなら メソッド名を文字列で与えて呼び出せるよ

詳しい事はマ板のギコbasicすれを参照
>>488
検索してみたけどどうやら違いますね
>>489
それらしきものを発見しましたので
そこのスレからもう少し調べてみます。
491デフォルトの名無しさん:02/04/10 01:10
TPageControlでタブの位置を左右にすると
タブのキャプションが縦書きになってしまうのですが、
これを上下にタブをつけた時と同様に横書きにすることはできないのでしょうか。
縦書き用フォントを指定すれ。
逆さでいいなら。
あ、右端なら逆さにはならないか。おもしろ。
「上下にタブをつけた時と同様に横書きにする」

というのは、サイドについたタブを横長にして、
通常の横書きフォントで表示するという意味でした。

説明不足ですいません。
>>494
TabHeightの数値を大きくして、OwnerDrawする。
今、Delphiの入門書を読んでいて
はじめてDelphiに触った頃のことを思い出した。

当時は「型が一致していません」のエラーに神経質なコンパイラだと思ったものだ。
IntToStrもStrToIntの存在も知らなかったからどうしようか途方にくれたりもした。
今ではこのメッセージがいかにありがたいかよく分かる。
>>495
(・∀・) できました!! TabWidthも指定したら完全に望み通りになりました。
ありがとうございます。
498デフォルトの名無しさん:02/04/10 11:54
Borland Database Engine の初期化中にエラーが発生しました (エラー $2B32)
という、初期化時に何らかの共有違反が発生しているのですが、解決できた方はいらっしゃいますか?
Delphi、DLが大変っす。
雑誌に収録されてたりしませんか?
500デフォルトの名無しさん:02/04/10 12:57
501デフォルトの名無しさん:02/04/10 13:15
Delphi Proを使っているのですが、
BDEでSQL-Serverに接続するには、
どのような設定を行えばよいのでしょうか?

やはりODBCを使わないと
接続できないのでしょうか?
>>499
収録されている雑誌、解説書はある。
っつか、本屋へ行ったりして確かめてから書き込みなさい。
503デフォルトの名無しさん:02/04/10 13:26
モナーさん、厨房な質問ですいません

Delphi 6 Update Pack 2は、
Delphi 6 Update Pack 1を入れなくても大丈夫なのですか?

WinNTのサービスパックの様に、
最新だけ適用しても大丈夫という物なのでしょうか?

それとも、Delphi 6 Update Pack 1を入れた後でないと
意味がないのでしょうか?
>>503
http://www.borland.co.jp/delphi/del6up.html#del6up2より抜粋
このアップデートファイル #2 は、アップデートファイル #1 の内容を含みます。
ということなので、Delphi 6 Update Pack 2のみで大丈夫のようです。
>>501 ODBCかADOでやるしかないでしょう
モナーさんは危篤です。
507デフォルトの名無しさん:02/04/10 14:56
右クリックしたまま左クリックしないと押せないボタンを作りたいと思っています。
右ボタンの押下状態を知るすべを与えてください。。。
>>507
Delphi付属のAPI32WH.HLPより抜粋
VOID mouse_event(dwFlags, dx, dy, cButtons, dwExtraInfo)
あたりはいかがでしょうか?
509507:02/04/10 15:34
>>508
レスありがとうございます。
しかし、その方法だと押下状態が変わった瞬間しかわからないため、
現在の押下状態を正確に知ることが出来ない場合がありますね。
キーボードのSHIFTやCTRLのように、一発ででてくるAPI知りませんか?
こういうことでなく?

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if ssRight in Shift then
    ShowMessage('Pushed');
end;
じゃなきゃ

if (Word(GetKeyState(VK_RBUTTON)) and $80) <> 0 then
512デフォルトの名無しさん:02/04/10 16:25
フォームの[x]ボタンを無効化するにはどうしたらいいの?
おしえて!
513507:02/04/10 16:41
>>511
まさしくこれをやりたかったのですが、
GetKeyStateでマウスの状態もわかるとは思いがけませんでした。
大変参考になりました。
いや、参考ではなく答えでした。すみません。
>>512 フォームのプロパティを一度順に眺める事をお勧めします
515507:02/04/10 16:47
ちなみに
if GetKeyState(VK_RBUTTON)<0 then
じゃ?だめかしら
>>514
biSystemMenuで消せました。
無効化では無かったけど万事解決です。
どうもです。
>>512
procedure TForm1.Button1Click(Sender: TObject);
var
Count: Integer; Menu: HMENU;
begin
Menu := GetSystemMenu(Handle, False);
Count := GetMenuItemCount(Menu);
EnableMenuItem(Menu, Count - 1, MF_BYPOSITION or MF_GRAYED);
end;

>>515
押下時、上位バイトが$FFになるからそれでも大丈夫
518503:02/04/10 17:37
>>504さん、ありがとうございます
これで安心してアップデートできます。
519Delモナー ◆fPymXWHY :02/04/10 22:24
>>506
このスレを立てたモナーなら

  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< 生きてるよ。
 (    )  \______
 | | |
 (__)_)

全板人気トーナメントが面白いな。非公認だったのだが、
ついに夜勤さんが専用板を作ってしまった。 http://live.2ch.net/vote/
この板は予選19組、4/21(日)出場だけど、この板の住人の性格からして、
一生懸命宣伝活動をする有志が現れなさそうな予感。
520デフォルトの名無しさん:02/04/11 10:46
アクションマネージャって、凄くメモリ食ったりだとか、実行時速度に影響を及ぼしたりだとか、EXEサイズが異様にでかくなったりだとか、しますか?
521デフォルトの名無しさん:02/04/11 12:26
だとかx3
おもわば笑え〜
523デフォルトの名無しさん:02/04/11 13:29
独学でがんばろうと思ってたけどやはりツライので質問させてください。
Delphi6Personal版の関数FileWriteについて、Helpの載ってる例を試しに動かしてみると

FileWrite(FileHandle, StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);

の真ん中の引数で「変数じゃないよ」ってエラーが出ます。
Helpの例題は実行できないモノと考えた方がいいんでしょうか?
それとも俺を鍛えるためにワザとエラーがしこんであるんでしょうか?
>>523 ホントだ ヘルプの例題が間違ってるよ
>>523
例題が間違ってるから

function FileWriteStr(Handle: Integer; str:String);Integer;
begin
FileWrite(FileHandle, str, Length(str);
end;

のように関数を作って、一度変数にしてから渡さなければいけない
別解として
FileWrite(FileHandle, PChar(StringGrid1.Cells[X,Y])^ , Length(StringGrid1.Cells[X,Y]);
527523:02/04/11 14:05
もう返答が!
どうもありがとうございます。早速試します。
ちなみにFileReadのヘルプ例もそのままじゃ動きませんでした。

iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);

のBufferをBuffer[0]にすると動いてくれました。
カッコが足りないとかはさすがに気がつくのですが、例題が動かないと
いうのは独学だとツライですね。
528523:02/04/11 14:15
うまく動きました。どうもありがとうございます。

自分でBuffer[255]って確保して、
Buffer := StringGrid1.Cells[X,Y];としてから

FileWrite(FileHandle, Buffer, Length(StringGrid1.Cells[X,Y]));

として回避しようとしていたのですが、こうするとStringGridに入力された
数字の末尾が欠けてセーブされてしまい、途方に暮れていました。
PCharの方法を試してみたところ、セルの数字が欠けることもなくなりました。

朝からずっと悩んでたのに、ものの20分で解決していただき、感謝します。
>>527
きっとCを先にやった人ですね?
そこは
 iBytesRead := FileRead(iFileHandle, Buffer ^ , iFileLength);

とやるクセを付けた方がいいですよ。
530523:02/04/11 14:38
そうです。ですがCは少しかじっただけでした。
後ろにつける^は逆参照ですか、ということは私は必死にアドレスを
突っ込んでいたということでしょうか?

本業はVerilog-HDLです。
FileWrite FileReadで渡しているのは 型なしパラメータ といいます。
C++ 言語でいえば 参照渡しで、実際にはポインタ=変数のアドレスが渡されます
buffer を渡すとダメなのは buffer という変数のアドレスが渡されます。
つまりポインタのポインタが渡されます

Buffer は PChar 型なのですが 
DelphiではCを使ってる人の特例というかサービスとして array[0..なんとか] of Char と
勝手に互換するようにしています。

ですから buffer[0] も buffer ^ も同じ結果を得られるのですが
このサービスは文字型ポインタに限っているので
var buffer:pByte のように定義すると buffer[0] が使えません。


532523:02/04/11 15:31
納得行きました。ありがとうございます。
Pascalは厳格そうなのですが、Delphiではそういうサービスもあるんですね。
わかりやすい説明のおかげでやる気が出てきました。助かります。
という事で ボーランドの2CHサポートの方、
ヘルプの修正修正報告ちゃんとあげといてくださいね
534デフォルトの名無しさん:02/04/12 00:04
パーソナル無パッチ当てなんだけど、
UpperCaseを全角混じりの文字列に実行すると、
素敵なワケワカメな言葉に翻訳してくれるってのは、パッチ当てると治るですか?
>534
治りません。
536534:02/04/12 00:30
>>535
出来れば、なぜ治らないのかまで教えて頂けると即答に納得がいくので
お願いいたしまする。
どーゆー理由で翻訳してくれるんだろう?
537デフォルトの名無しさん:02/04/12 00:30
あの、Indy コンポーネントの使い方を開設した
本かサイトはありませんか?
治る見込みが無いので御家族をお呼びして下さい。
>>537
(´-`)。o ○ (その質問、オレが前にしたなぁ…)
>536
ヘルプ読むね。
541536:02/04/12 00:42
>>540
読みました。ありました。そっか(藁
納得。
542デフォルトの名無しさん:02/04/12 00:46
UpperCase は元々そう言う仕様だから。

AnsiUpperCase.
543536:02/04/12 00:51
>>540,542
ですね。盲点(オレだけ?)でした。サン・キュー。
4億5614シェクシー!
544デフォルトの名無しさん:02/04/12 01:08
キーボードフックでShiftやCtrlなどを押しながらの入力であることを
検知したい場合は、どのようにすればいいのでしょうか?

1) Shift、Ctrlなどにそれぞれフラグを用意する。
2) 何かキーが押された時点で、GetAsyncKeyStateで判断。

くらいしか、思いつきませんでした。
545デフォルトの名無しさん:02/04/12 02:12
Indyの日本語ヘルプってどこにあるのですか?
検索を駆使して探しましたが影すらつかめません。
C# Builderはいつ発売予定ですか?
>>544
メッセージの中には一緒に押してるキーの情報くれるのあるでしょ
なに拾ってるの?
548544:02/04/12 03:37
そうなんですか?
KeyboardProcでは、同時に押されてるキーの情報は取得できない
ようなんですが、他のフックプロシージャを使えばいいのでしょうか?
549537:02/04/12 07:09
>>539
members.jcom.home.ne.jp/monazilla/document/indytips.html
以前でてきた このサイトは分かるのですが、
IdTCPClient と TdTCPServer の使い方が知りたいのです。
ヘルプには必要最低限のことしか書いてないし…
550デフォルトの名無しさん:02/04/12 07:13
あやしすぎるドメインだけど、別に有害ではないと。
http://www.111111111111111111111111111111111111111111111111111111111111.com/mao.html
GetAsyncKeyStateとかは使わないの?
VCLでは 普通にWM_KEYDOWN とかのメッセージ処理ハンドラで GetKeyStateを呼んでるだけだね

>>551
フックをかけてるんだから、最初にGetKeyboardStateで全部の状態貰って
以後は自分でフラグを処理したらいいんじゃないの?
553えむ:02/04/12 13:45
QuickReportでバーコードを印刷できるのでしょうか?
>>553
バーコードフォント使え
555デフォルトの名無しさん:02/04/12 15:33
DBGrid で、一番右のカラム幅を、グリッドコントロールにあわせて変化させたいのですが、どのようにすれば最もエレガントかつ楽にできるでしょうか。

また、Stringを表示する際に、絡む幅に合わせてWordWrapさせ、かつ
開業に合わせて行の高さも、その文字列がおさまるように
自動変更させたいのですが…
>>555
派生させて独自のコンポーネントを作るのが最もエレガントかつ後々楽
557デフォルトの名無しさん:02/04/12 15:48
ごめんなさい正直に。
エレガントでなくてもいいから、やり方教えてください…
558デフォルトの名無しさん:02/04/12 15:57
でも、>>555を満たすようなコンポーンネント作るとすると、以下のような事をしなければなりませんよね。

1) TColumn を継承して WordWrap, AutoWidth プロパティを追加.
2) WordWrap が on になったカラム幅が変更されたときに OnColumnResize イベントを発生
3) OnColumnResize イベント発生時に、全フィールドについて
表示に必要なセル高さを取得

あと、いろいろありそうなんですがどうにも思いつかないです…
助言をください。
559デフォルトの名無しさん:02/04/12 16:03
あの、OnColumnResize イベントって、どうやって取得したらよいでしょうか
560デフォルトの名無しさん:02/04/12 16:26
TDBGrid では TColumn を使用していますが、これを TColumnEx で
代用させるためには、 TColumns を継承した TColumnsEx などをつくり、
クラスやメソッドを差し替える必要があるのでしょうか。
>>557
とりあえず一番右の列を合わせるのはこれでできるけど、WordWrapは面倒な気がする
procedure TMyDBGrid.WMSize(var Message: TWMSize);
var
 i : Integer;
 nWidth: Integer;
begin
 nWidth:=0;
 for i:=0 to Columns.Count-2 do
  nWidth:=nWidth+Columns[i].Width;
 if not (dgIndicator in Options) then
  nWidth:=nWidth-IndicatorWidth-1;
 Columns[Columns.Count-1].Width:=ClientWidth-nWidth-GetSystemMetrics(SM_CXVSCROLL);
 inherited;
end;
562えむ:02/04/12 17:11
>>554
バーコードフォントってなんでしょう?
是非使い方を教えてください。
563デフォルトの名無しさん:02/04/12 18:45
>>562
普通のフォントがバーコードになってるだけ。
例えば、半角で”1234”とか指定すると、バーコードで ”┃|||┃| ”こんな感じで表示される。

有償な奴なら ttp://www.hitachi.co.jp/HAND/SOFTPAGES/1851.html

他で探せばフリーなバーコードフォントもあるから探してみたらどーですか。

難点は、フォントをインストールしないと使えないことだが、仕事とかで使うなら
(ネットとかで配布するソフトじゃなかったら)問題ないだろう。
バーコードならこんなのもあるよ
http://www.vector.co.jp/soft/win95/writing/se196641.html

海外サイトでもあるから検索してみたら?
565デフォルトの名無しさん:02/04/12 19:17
RichEditを透明にしたいんですが、ソース見ても全く分かりませんでした。
初心者が解読するのは不可能でしょうか・・?
それと、Richeditの背景透明にするコンポってありますか・・?一応探したんですが見つからなくて。
>>565
メーリングリストでも同じ質問してなかった?
567デフォルトの名無しさん:02/04/12 20:23
>566
 メーリングリストでも何度か質問が出たみたいなんですが、
結局解決できてないようです。
>>565
RichEdit を透明にしたら、貼り付けたフォームの「壁」が見えるの?
なんかいいことあるのかいな?
スキンとかか。
何個か重ねてたくさんのスレを一度にみれる2chビューワとか
見づらいだろうけど
572544:02/04/13 00:45
>>551
>>552
私へのレスでしょうか。
結局、 1) or 2) で処理するということでいいんですね。
ありがとうございました。
>>567
>結局解決できてないようです。

フォームならともかく、子コントロールを透明にするのは
アホらしいので、だれもマジメに考えなかった、というのが真相では
>>568
>>565は文字の部分は透明にしたくないんじゃ・・・
575えむ:02/04/13 11:31
>>563
>>564
の方、レスありがとうございました。
これからもよろしくお願いします。
576デフォルトの名無しさん:02/04/13 13:25
>568
 お、参考になりそうですね。これは。でも、半透明じゃなくて透明にするのはまた違う話なのかな・・。
ありがとうございました。
>569
 簡易HTMLエディタを作っているんですが、背景に絵を表示させたまま文章の編集をしたいんです。
>573
 そうなんでしょうか・・。でも確かに反応薄かった気がします。
577デフォルトの名無しさん:02/04/13 13:42
delphi6 personal で ネットワークプログラムできますか
>577
できます。
579デフォルトの名無しさん:02/04/13 15:08
IdHTTP.Get処理中はソフトが固まってしまうんですが、固まらないようにすること出来ますか?
出来ます
>>579
TThreadの勉強すれ。
582579じゃない人:02/04/13 16:12
>>581
俺、TThreadってCPUが2個とか付いてるPCで使うもんだと勘違いしてた…
ありがとう!
処理中でも固まらないようにするコンポーネントがIndy Miscとかのパレットに
載ってるよ。簡単なプログラムならあれで充分。
584ネタだったとでも?:02/04/13 17:32
ねぇ、Indyの日本語ヘルプってどこにあるのって
ちゃんと自分で検索した上で
もう2回ぐらい真面目にお願いしてるんだけどさ。

こっちも真面目にお願いしてるんだから、いいかげん誰かレスくれよ。
ぐれるよ?
585デフォルトの名無しさん:02/04/13 17:36
えと、

Type
TData = (dtA, dtB);

みたいな列挙型があるとして、ある変数がこの型だとして.
これをIniFileでアプリ起動ごとに読み込んだり保存したりしようと思ってるんだけど、
保存するときはOrd関数使えばいいとして、読み込むときに
その値がこの列挙型かどうかを判断するのってどうします?
いったんIntegerに読み込んで判断するのもなんだか変な気がしますが・・・.
そもそも、順序値としては0か1だと思うんだけど、これ以外の値をとる場合を
想定しなきゃまずいのかな?そのへんのセオリーなんかあったりします?
586デフォルトの名無しさん:02/04/13 17:52
Thread の勉強中なのですが、Create 時のパラメータを False にしたときは
Create と同時にスレッドが始まりますよね。それはよいのですが、
パラメータを True にしておき、相次いで2つのスレッドを Execute すると、
最初のスレッドが終了してから出ないと次のスレッドが開始しません。
なぜなのでしょうか。

type
 TMyThread = class(TThread)
 public
  Interval:Longint;
  ProgressBar:TProgressBar;
  constructor Create(AInterval:Integer; PBar:TProgressBar);
  procedure Execute; override;
 end;

constructor TMyThread.Create(AInterval: Integer; PBar: TProgressBar);
begin
 inherited Create(True);
 Interval := AInterval;
 ProgressBar:=PBar;
end;

procedure TMyThread.Execute;
var
 I,S:Integer;
begin
 inherited;
 for I:=0 to 100 do begin
  S := GetTickCount;
  while GetTickCount <= S + Interval do;
   ProgressBar.Position := I;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 Th1, Th2: TMyThread;
begin
 Th1 := TMyThread.Create( 30, Self.ProgressBar1 );
 Th2 := TMyThread.Create( 20, Self.ProgressBar2 );
 Th1.Execute;
 Th2.Execute;
end;
>>585
書き込めないものは想定しなくてもよいのでは。
セクションを指定して読み書きしていて、なぜ、型を確認しなきゃ
ならないの?
>587

レスどうもです.

いや、

TData = (dtA, dtB);

A: Integer;
B: TData;

A := IniFile.ReadInteger('TEST', 'Test', 0);

B := TData(A);
 
 ↑ここにエラーチェックて欲しいのかな?と.
とりあえずどんな数字でもはいっちゃうみたいなんですけど.

もともと列挙型を使わずIntegerを使っていて、
if A>1 then B := 0
みたいなチェックをしてたもので・・・.
でも、こういうのマジックナンバーですよね?
589デフォルトの名無しさん:02/04/13 18:24
もしマジックナンバーがイヤならば、

if A < Low( TData ) then raise Exception;
if A > High( TData ) then raise Exception;

こうすればよいのでわ。
590589:02/04/13 18:25
まちがえた。


if A < 0 then raise Exception;
if A > Ord( High( TData ) ) then raise Exception;
591デフォルトの名無しさん:02/04/13 18:31
>589

あ、なるほど.High関数にOrd使えばいいのか・・・.
どうもありがとうございました.
592デフォルトの名無しさん:02/04/13 18:58
>>586
自分で Execute メソッド呼び出してどうするの?
Resume メソッドを使ってスレッドを始動させないと駄目よー。
593デフォルトの名無しさん:02/04/13 23:29
545=584
>588
実行時エラーでない?
595名古屋:02/04/14 00:50
>>584
Del6Entのトライアル版になら
Indyの日本語ヘルプが付いてる可能性は十分あるけど・・・今は入手困難かな
Kylix用のIndy日本語ヘルプは某のサイトから今ダウソできるようだが

Pro版以上なら付いてるんだけどね・・・この辺でも差別化してるのかも
596デフォルトの名無しさん:02/04/14 00:58
よかったネ。レス来たヨ!
Delphi6 Personalのインストールがなぜかできません…

Windowsインストーラが起動して、インストールキーとかを入力したあと、「重要な情報」の画面で「次へ」をクリックした後、何も起こりません。
どうしたらよいか是非知恵をお貸しください

環境はXP Proです。

Windowsインストーラが悪いのかなぁ?
598デフォルトの名無しさん:02/04/14 10:17
>>592

ああああ… バカだ俺。
たしかに自分で Execute 呼んでりゃ世話無いですね。
どうもありがとう。
599デフォルトの名無しさん:02/04/14 10:27
http://go.to/WDirectX
どこかに↑これの日本語解説ページないでそか?
>595
そういうことだったんですか、、ありがとうございます。
あなたは200人に一人のいい人です。
>>599
はじめてみた。
google見る限りないみたい。
602デフォルトの名無しさん:02/04/14 13:18
http://www.borland.co.jp/delphi/personal/#top
このページって、http://www.borland.co.jp/ からどういうリンクを辿っていくの?
ダウンロードページじゃないし、
Delphi6 には製品情報しか載ってないし…
クリップボードにあるファイルを操作するのってどうしたらいいんですか?
ここですか? 検索も出来ない連中がいるスレってのは。
605オレも暇だな:02/04/14 14:31
>602
http://www.borland.co.jp/
の中ほどに表示されてる「DEVELOP(開発)」「DEPLOY(配布)」「MANAGE(管理)」の
「DEVELOP(開発)」の中のDelphiをクリック。

表示されるページ中央のリンクの3つ目。
・Borland Delphi 6 Update Pack 2 公開
・Borland Delphi 6 ドキュメントアップデート公開
・Borland Delphi 6 Personal 日本語版 ダウンロード ←これ。
>603
意味不明。
クリップボードにあるのはデータであってファイルでない。
RICHEDITを透明にするのでは無く、WM_ERASEBKGNDで背景を描けばいいのでは無いかな?
608603:02/04/14 14:48
エクスプローラでコピーやら切り取りやらをする時と同じような操作がしたい、ってことなんですが…
>608
そういう操作時にクリップボードにあるのはパスつきのファイル名。

ヘルプでTClipBoardを検索して
クリップボードが保持している文字列を取り出す方法を見つけなされ。
簡単に見つかるから。
610デフォルトの名無しさん:02/04/14 17:23
演算子を代入することのできる型ってありませんか?
あと、どうやって使うんですか?
>>610
Line 1:ない。
Line 2:だからないって。
>>610
smalltalkとかやってた人?

smalltalkだと何でもかんでもオブジェクトらしいから
演算子でも基底型とかに代入できそうだよね
613610:02/04/14 17:32
>>611以外の人、誰かしりませんか〜?
614>>610:02/04/14 17:32
(´-`).。oO(関数型言語出身?メソッドポインタか何かと勘違いしてませんか?演算子って+とかandですよ?
615610:02/04/14 17:33
>>612
やってません。smalltalkってなんですか?
616610:02/04/14 17:34
>>614
勘違いはしてませんけど〜。
617>>603=608:02/04/14 17:35
(´-`).。oO(Win32APIリファレンスでHDROP構造体やItemIDListを検索して、わからなかったら諦めるが賢明と思います。難しいです。
>>610
演算子を引数にした手続き・関数を作りたいだけなら
文字列で代用して振り分ければできるけどね〜
>>615
元祖OOPLだよ
(´-`).。oO( 「A := + 」みたいなコードがエラーにならない言語って一体…?どんなのをお考え?
621>>585:02/04/14 17:45
(´-`).。oO(整数にしなくても、TypInfo使えば文字列にして保存できます…
622 ◆RTl.ntC2 :02/04/14 18:02
 CRCの計算式を教えてください。
>>622
ぐぐってよし
(´-`).。oO(もう学校始まってるはずなんだけどな・・・
626 ◆RTl.ntC2 :02/04/14 19:26
>>664
 ?
627 ◆RTl.ntC2 :02/04/14 19:26
↑間違えた。
>>624です。
>>622 以前も同じ質問があって、CRCには複数ある事、そして参考コードも書いた記憶がある。
検索してみてくれ
630デフォルトの名無しさん:02/04/14 19:53
Delphi6.0PersonalにてWinアプリを作成しています。

Memo1.text:= 'a' + chr(13) + 'b';
これだとaのあとに改行できている様に見えるのですが、
これをファイルとして保存し、Win98のメモ帳で開くと改行文字が望んだとおりに保存されていません。
メモ帳からでもきちんと改行しているように見える改行コードの書き方をご教授願います。
Memo1.Clear;
Memo1.Add('a');
Memo1.Add('b');
あるいは
Memo1.CommaText = 'a,b';
>>630
'a'+#13#10+'b'

Dec Hex Char Dec Hex Char Dec Hex Char
0 00 NUL 16 10 SLE 32 20 スペース
1 01 SOH 17 11 CS1 33 21 !
2 02 STX 18 12 DC2 34 22 "
3 03 ETX 19 13 DC3 35 23 #
4 04 EOT 20 14 DC4 36 24 $
5 05 ENQ 21 15 NAK 37 25 %
6 06 ACK 22 16 SYN 38 26 &
7 07 BEL 23 17 ETB 39 27 '
8 08 BS 24 18 CAN 40 28 (
9 09 TAB 25 19 EM 41 29 )
10 0A LF 26 1A SIB 42 2A *
11 0B VT 27 1B ESC 43 2B +
12 0C FF 28 1C FS 44 2C ,
13 0D CR 29 1D GS 45 2D -
14 0E SO 30 1E RS 46 2E .
15 0F SI 31 1F US 47 2F /

Dec Hex Char Dec Hex Char
48 30 0 96 60 `
〜 97 61 a
57 39 9 〜
58 3A : 122 7A z
59 3B ; 123 7B {
60 3C < 124 7C |
61 3D = 125 7D }
62 3E > 126 7E ~
63 3F ? 127 7F DEL
64 40 @
65 41 A

90 5A Z
91 5B [
92 5C \(逆スラが出ない (^^ )
93 5D ]
94 5E ^
95 5F _

(´-`).。oO(WinとUNIXで改行コードが異なる罠。SLineBreakってのを覚えておくとKylixでも幸せ
634デフォルトの名無しさん :02/04/14 20:08
          || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
          || 偽善者は      Λ_Λ  いいですね。
          ||  死刑!! \ (゚ー゚*)
          ||________⊂⊂ |
  ∧ ∧    ∧ ∧    ∧ ∧    | ̄ ̄ ̄ ̄|
  (  ∧ ∧ (   ∧ ∧ (  ∧ ∧ |しゃかい .|
〜(_(  ∧ ∧ __(  ∧ ∧__(   ∧ ∧ ̄ ̄ ̄
  〜(_(  ∧ ∧_(  ∧ ∧_(   ∧ ∧  は〜い、先生!!
    〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
      〜(___ノ  〜(___ノ   〜(___ノ
>>631
わざわざありがとうございます。
ちとうまくいきませんでしたが、それでもその知識が何時の日か役に立つと信じております。
>>632
chr(13)を#13#10に置き換えたらうまくいきました。ありがとうございます。
>>633
ご厚意痛み入ります。心に留めておきます。
(´-`).。oO( 'a' + SLineBreak + 'b' にしろって意味…伝わってるのかな?
       まあPersonalじゃCLX使えないからKylixは無視してもいいのだけれど
637579:02/04/14 21:32
>>581
どこかにいいスレッドの解説ページありませんか?
今さっきdelphi 6 personal をダウンロードしてみましたが、
どこかおすすめの超初心者向けの解説サイトないでしょうか?
639 ◆nqjTHVKE :02/04/14 22:02
http://www.ceres.dti.ne.jp/~dycoon/program/fileac/fileac.html
のサイトの下の方のソースで、
いっきにファイルをメモリ上に読み込んで、強引に処理しているんですが、
これって大丈夫なんでしょうか?
ポインタに1を足して…、って方法で本当に次の値が得られるのですか?
他のデータが間に来てしまうことはないのでしょうか?
>>639
強引でもなんでもない、心配するほうが変

はじめから TMemoryStream に読み込めばいいのにね!
641デフォルトの名無しさん :02/04/14 23:32
          || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
          || 偽善者は      Λ_Λ  いいですね。
          ||  死刑!! \ (゚ー゚*)
          ||________⊂⊂ |
  ∧ ∧    ∧ ∧    ∧ ∧    | ̄ ̄ ̄ ̄|
  (  ∧ ∧ (   ∧ ∧ (  ∧ ∧ |しゃかい .|
〜(_(  ∧ ∧ __(  ∧ ∧__(   ∧ ∧ ̄ ̄ ̄
  〜(_(  ∧ ∧_(  ∧ ∧_(   ∧ ∧  は〜い、先生!!
    〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
      〜(___ノ  〜(___ノ   〜(___ノ


>638
2ch
643>>639 ◆9qoWuqvA :02/04/14 23:51
むしろtry〜finallyが無いことが心配…リンク先のはサンプルコードだから別にいいけど
>>619
smalltalkは元祖じゃないYO!元祖は志村です。
645639 ◆nqjTHVKE :02/04/15 05:38
>>640
 強引じゃないんですか?
ポインタは抽象的概念なのに、それを直接操作しても良いんですか?
GetMemを実行したら必ず一列に確保されるんでしょうか?

>>643
 finallyでFreeMem,Freeを行えば良いんですね。
>>645
直接操作しても良い。
必ず一列に確保される。
647デフォルトの名無しさん:02/04/15 08:53
クラスを動的配列で使うにはどう宣言すればいいのでしょうか?

type
TState = class
name,
adr: string;
end;

var
StateArray: array of TState;

SetLength( StateArray, 10 );
StateArray[0].name := 'モナー'; ←こういう使い方がしたい

これではコンパイル出来ません。 お願いします。
648間違有でも即答会:02/04/15 09:01
>>647
 コンパイルは出来る筈。
 ただし暴走する筈

C++と違って必ず コンストラクタを呼ばなければいけない
for i:=0 to High(StateArray) do StateArray[i]:= TState.Create;

コンストラクタを呼びたくなければ クラスではなく レコード型やオブジェクト型を使うしかない


また、クラスに対しては動的配列よりも TListを継承して利用した方が適切
649647:02/04/15 09:29
ありがとうございます。動作しました。
前やったときはコンパイルできなかったのに・・・スペルミスかな

TListの継承方法も発見したので試してみます。
650デフォルトの名無しさん:02/04/15 11:04
15や16と言う数字を0付きの3桁数字にしたいんです(015、016)
数字が元々3桁の時は0無し。(128、196)
1桁の時も同じく0付きで3桁表示(001、002)

こういうのってkylixだとformat関数で出来たのですが、
Delphiだとどうやってやるのですか?
>>650
FormatFloat('000', 15);
652650:02/04/15 11:20
http://www.borland.co.jp/qanda/delphi/d0000877.html

そのまんまで出来るのね・・・
そもそもDelphiとKylixとで自前の関数が違ったら意味あるか?
654ランチャーを作りたい:02/04/15 14:59
恥ずかしい話ですが、どうしていいかわかりません。

procedure TForm1.FormShow(Sender: TObject);
begin
AppBarData.cbSize:=SIZEOF(AppBarData);
AppBarData.hWnd:=handle;
AppBarData.uCallbackMessage:=MesID;
SHAppBarMessage(ABM_NEW,AppBarData);

AutoSize:=false;
Width:=Screen.WorkAreaWidth;
AutoSize:=true;
Left:=0;
top:=Screen.WorkAreaHeight-Height;

with AppBarData do
begin
uEdge := ABE_BOTTOM;
rc.Left := Left;
rc.Right := Width;
rc.Top := Top;
rc.Bottom := Top+Height;
end;
SHAppBarMessage( ABM_SETPOS, AppBarData);
end;

これでもって下の方にアプバー領域が作れるのですが、その領域からForm1が追い出されてしまいます。
つまり、上から順番にForm1、確保したスペース、ATOK、タスクバーとなっています。

655ランチャーを作りたい:02/04/15 15:02
なので、教えてください。
>>656

ABM_NEW は既に
658デフォルトの名無しさん:02/04/15 18:26
659デフォルトの名無しさん:02/04/15 18:36
数値(integer)のリストを作ろうと思うのですが
動的配列を使ったクラスを作るか、TListを利用したクラスを作るか(もしくはTListそのまま)
で迷っています。

動的配列とTList、
どちらの方がメモリ効率的にはよいのでしょうか?
660とにかく即答:02/04/15 18:40
>>659 そういう用途なら 迷わず動的配列!

効率はコーデングしだいでっせ
661とにかく即答:02/04/15 18:43
効率良くしたいなら、必要なサイズは最初にとって
実際のアクセスはオープン配列パラメータの関数・メソッドにするとよろし
662デフォルトの名無しさん:02/04/15 19:33
コンポーネントをまとめてパッケージに入れておいた場合、
あるソフトでそのパッケージの中のコンポーネントをどれか1つでも使うと、
そのパッケージの内容が全部ソフトに含まれることになるのでしょうか?

>>662
実行時パッケージを使えば、それはDLLなので当然そうです。
そうでなければ、単なるライブラリですのでパッケージ内で相
互に参照していなければ大丈夫という事になります
664デフォルトの名無しさん:02/04/15 20:26
>>661
了解!動的配列でやってみます。

ところで動的配列の要素数が増減する時は
そのたびにSetLengthした方がよいのでしょうか?(結構、頻繁に増減する予定なんですが)

メモリを扱うだけに頻繁に使わないほうがいいのかな、とも思ってしまうんですけど
>>664
足りなくなったら増やさなきゃならんが少々減ったくらいでいちいちSetLengthするべきでは
ないべ。以降ずーっと減ったままならいいけど。
それにmallocみたいに実際にメモリがOSに返る保証もないし(ソースないので知らん
>>664
そのたびに SetLengthしてみて遅ければ考えてみたらいいと思う。
興味があるなら自分で system.pas の DynArraySetLengthを読ん
でみるのもいいだろうし
Delphi 6 Personal をダウソしたがよくわからないところが2・3・4・5・6・7・・

今までこういったObjectPascalってのはやったことないんだけど
プログラムに最初から

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

end.

ってあるんだけどこれは何なんどすか!おしえてください。
あとDelphiでシューティングゲームとか作れたりするんでしょうか?

あとDelphi6Personalでとりあえず何かやってみたいので
お勧めの参考サイトなどあったら教えてください。いちおググルで検索したんですが
めぼしいところのサイトをいくつか回ったんですがいまいちよくわからなくて。
668とにかく即答:02/04/15 21:16
>>667 順番にマウスで文字をクリックしては F1 を押しなさい
>>667 まずは >>668 をやって判らないところを聞く事
670デフォルトの名無しさん:02/04/15 21:31
>>667
たしかにここは「やさしい」スレですけど
Delphiを基礎から全部解説していたら十分なWebペ?ジが作れてしまいます。
幸いにもDelphiの入門書も増えてきました。
図書館で借りるなり、本屋で買うなりして、一冊まるまるやりこんでみてはいかがでしょうか。

ちなみに問い「これは何どすか!」に対する答えは「テンプレートです」になります。
>>638
>>667
・・・・・・

(´-`).。oO(ここで自分のサイト晒したら自作自演に思われちゃうかなぁ…)
672667  と638:02/04/15 22:43
>>671

今のぼくにはアナタのサイトが必要なのでし
>>665-666
助言ありがとうございます。
とりあえず組んでみますね。
674671:02/04/15 23:38
(´-`).。oO(同一人物かよ! まだ作りかけだからそのうちね…)
675639 ◆nqjTHVKE :02/04/16 00:05
>>646
>必ず一列に確保される。
 ということは、以下のようになってしまうんですか?
(□=空 ■=データ)
メモリ:■■■■■■■□□□□■■□□□□□□□
この場合に、■■■■分のデータ領域を確保する場合、
一つ目の空領域は使えないので、二番目の領域を確保することになる。
>>667
初心者は、そこが何であるか知る必要はありません。
大切なのは最後のimplementationから下です。
フォームにButtonコンポーネントを配置し、それをダブルクリックしてください。

すると、

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

と表示されますから、begin と end; の間にやりたいコードを書いていきます。
677デフォルトの名無しさん:02/04/16 00:39
仮想メモリ上のメモリブロックは
物理メモリ上でも連続している事が保証されているのでしょうか?
>>667
まずPascalから入れば?多少標準Pascalと互換性の無い部分もDelphiにあるけど。
679デフォルトの名無しさん:02/04/16 00:50
FileExistsでファイルの存在有無は調べれるけどパスの存在有無はどうやって調べてますか?
chdirで例外が出たら存在しないとかにしていますが、もっとスマートに出来ない?
>>667
ま可哀想だから多少教えてあげると・・・
ObjPascalのユニットファイルは基本的に下のような構造になってる。

unit xxxx; interface 〜@〜 implementation 〜A〜 end.

@の部分はインターフェース部と言って、ユニット外から可視となる
宣言を書く。ここではフォームの宣言とそれに必要なユニットの読込
(uses 以下)が行われている。Cではxxxx.hに相当。
Aの部分は実現部といって、ユニットの挙動を実際に記述する。外部
からは直接見えない。Cではxxxx.cに相当。

ヘルプ→目次→ObjectPascal言語ガイド 辺りを読むべし。
DirectoryExists
682もっと検索しる!:02/04/16 00:56
(´-`)。o ○ (679のソフトが、どんなんか知りたい…)
>>681
スゲー俺アホだ!まんまの関数があったのか!
しかし、こんなの前からあった?ずっと用も無いのにchdirで調べてた・・・(汗)
(´-`)。o ○ (ヘルプに検索があると便利だと思うのだが…)
>>684
(´-`)。o ○ (検索の仕方が分からないのだろうか・・・)
百歩譲ってもFindFirstが良心の限界
(´-`)。o ○ (95系なんだろ。たぶん・・・)
(´-`)。o ○ (679=684か?ヘルプの検索は役に立たないよ。正直な
話。選択してF1キー押すべし。パソナラーは、それでも文句は言ってはいけない!
ググルで検索しる!)
   ∧∧
 ヾ(゚∀゚)ノ  2KかXP使え!
  (  ) ))
(( < <
(´-`)。o ○ (684(≠679)だよ。未だに95は漏れだけか…)
(´-`)。o ○ (アクチベートするくらいならwin95使う!)
692691:02/04/16 01:22
(´-`)。o ○ (オレオレ! オレ win95!!軽いwin95空前絶後の最高OS!!)
693579:02/04/16 01:23
for文の中でexitをやったらどうなりますか?
ループを強制的にやめさせ、次の処理へ進むのですか?
それとも、次のループへ逝くのですか?
(´-`)。o ○ (やってみろよハゲ。これは言ってもいいよな>693以外)
exitだとprocedure、functionから抜けちゃうでしょ
普通はbreakを使うのでは?
(´-`)。o ○ (684(≠679)だよ。同士よ…)
関数内関数でexitしたら、どこへ行きますか?
(´-`)。o ○ (いつかアクチベートなんてアホなことする日が来ると思うと
ぞっとするな。って、その頃には無くなってたりして。不評だからな(藁)
(´-`)。o ○ (やってみろよハゲとまた言われるのにな・・・)
アクチベートって何?
>>697
一番内側の関数から出る。
実際にやってみようよ、聞く前に・・・
try〜finallyの間でexitするとどこへ飛びますか?
703701:02/04/16 01:34
>>702は放置します。
やってみてこうなったから、こうなんだ。
って危なくないですか?
たまたまかもしれないし。
2ちゃんねるのレスを信用する
って危なくないですか?
嘘ぶっこいてるかもしれないし。
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
フォームにbuttonを配置したら、どーなりますか?
だから危ないことは他人にさせる・・・と?
708701:02/04/16 01:38
procedure a;
begin
 try
  exit;
  ShowMessage('1');
 finally
  ShowMessage('2');
 end;
 ShowMessage('3');
end;

procedure b;
begin
 a;
 ShowMessage('4');
end;

>>704
この程度も自分でやろうとしない奴は逝ってよしですよ。
(´-`)。o ○ (正解は「こーやってみたら、こーなったんですけど、
どないなもんなんでしょうか?」かな…)
710702:02/04/16 01:42
Captionはどうなりますか?
コンパイルせずに答えて!
>>708

procedure TForm1.Button1Click(Sender: TObject);
var
 Dummy: array[0..1] of Char;
 Buf: array[0..9] of Char;
 S: string;
begin
 Dummy[0] := 'A';
 Dummy[1] := 'B';
 S := '0123456789';
 StrPLCopy(Buf, S, SizeOf(Buf));
 Caption := Buf + Dummy;
end;
>>704
たまたまねぇ・・・・。
論理的なプログラマにたまたまって事は無いだろ、自分の頭の中で結果を予測しているはずだ、
結果と違ったら原因を探す、自分が書いたコードが「たまたま」か否かぐらい判断できんで
プログラムが組めるか?

プログラム作成後のテストはこれと全く逆を行うのは、プログラム作成時に既に「通常こーなる」って
意識で組んであるからだ、たまたまで作られるとテストもできんよ。(藁
>>710
708じゃないけど

Dummy[1]には#0以外入れちゃだめだよ
ミ゚ω゚彡 ん?
>>712
あ、問題ないか?・・・いいことじゃないけど
715デフォルトの名無しさん:02/04/16 01:57
  ?  ?
? (゚д゚) ? 急に誰もいなくなった。
Dummy[1]に#0が入ってなくても問題無い理由を教えて下さい!
Σ(´Д`ズガーン いた。
718デフォルトの名無しさん:02/04/16 02:00
Delphiでアクティベーションシステムを作りたいのですが
どうすればよいでしょうか?
>>716
Dummyのサイズが宣言されてるからそれ以上持ってこないって事でしょ
Captionもstring型だから長さの情報を持っているので結果的に大丈夫だと
・・・Cでこんなことをしたらどうなるか分かったもんじゃないけど
720デフォルトの名無しさん:02/04/16 02:09
今度、会社の基幹業務をDelphiを使って構築することになったのですが、
Delphiで業務アプリとか作れるのでしょうか?
速度を重視するようなプログラム以外ならVBでも十分だって言ったら
笑われました。
>>720
できないとおもふ。
理由…Delphiを使えない、Delphiを毛嫌いするプログラマが多いから(w
>>716
   ∧∧
 ヾ(゚∀゚)ノ ソースを追っていったら単にBuf[10]に'\0'を入れてるだけだったよ。
  (  ) ))
(( < <
>>720
俺、一人でも作れるよ Delphi で
月100万なら請け負うけど・・・
724720:02/04/16 02:16
じつは、みづほ銀行の預金システムを1から作り直すんですが、
>>723さん、本当に月100万で請け負ってくれますか?お願いしたいんですけど。
損害が出たら賠償請求しますけど
ネタはマ板でやれよ。
むこうにネタスレいっぱいあるからな。
>損害が出たら賠償請求しますけど
私は今までにプロジェクトをこけさせたことがありませんのでご安心下さい
といって「みずぽ」の人はこけたんだっけか・・・

賠償請求されても払い切れないだろうね〜・・・夜逃げ・・・あはははは
>>720でし。

>>725-726
すまそ・・・。
>>722
それはChar型配列の場合、Delphiが自動的に1個長く配列を作って、
自動的に末尾に\0を埋めてくれるってこと?エラスギル、Delphi・・・
>728
それはない。
>>728
   ∧∧
 ヾ(゚∀゚)ノ  違うよ。単純にBuf[9]の次のメモリアドレスに'\0'を書き込んでるだけだよ。
  (  ) ))  だから、ちゃんと直さないと駄目。
(( < <
731720:02/04/16 02:32
>>721
私は別にDelphiを嫌いではないのですが、趣味で画像を扱うソフトとか
しか作ったことがなくて、DBとかって分野に疎いのです。
なぜ私がVBでやったら良いのでは?と会社の人に言ったかと言うと、
うちの会社では、VBAなら使える人間が多いのにDelphiが使える人間
は非常に少ないからです。しかも、DBがMS-SQLServerなもので、
Delphiから簡単に扱えるなら良いのですが、VBの方が楽に接続出来
るのかな?(私もVBAしか知らないので本当わかっていません)
と思いDelスレを荒らしているような書きこみになってしまいました。m(。。)m
なら、こういう使い方はどうなる?
var
Dummy: array[0..1] of Char;
begin
Dummy[0] := 'A';
Dummy[1] := 'B';
SetWindowText(Handle, Dummy);
m(。。)m←目が怖い
734730:02/04/16 02:48
>>732
メモリ中にたまたま'\0'が現れるところまで表示するでショー。
>>720, >>731
つまり、DBが心配なのだな。
心配無用だとは言えないが、そもそもSQLサーバを選択したのが間違いだと思ふ。
俺もSQLサーバを使った業務アプリケーションは組んだことあるけど、VBよりは
効率よく組めたし良かったよ。
趣味でDel使ってたのなら、会社でDel使えることを喜んでも良いと思ふ。

>>733
かなり思い詰めているとおもわれ(藁)
では、これはどうだ!

procedure Hoge(const Value: Integer);
var
 P: PInteger;
begin
 P := @Value;
 P^ := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 I: Integer;
begin
 I := 100;
 Hoge(I);
 Caption := IntToStr(I);
end;
737デフォルトの名無しさん:02/04/16 03:16
>>736
|ω・`)つI コレ アゲル カラ モウ ネナサイ

|彡 サッ I
738736:02/04/16 03:33
この板への書き込みはこれで最後にします。
すいませんでした。
せんせー。737くんが736くんをいじめましたー。
わたしゆるせませーん。
(´・ω・`) ショボーン ソンナ ツモリ ジャ・・・
737君は女子のスカートもめくってましたー!
わーるいんだーわーるいんだー!せーんせぇーに行ってやろー♪
掃除当番もさぼってましたー!
>>736
はい、消えた!

|ω・´)つ I カエセ!!

|彡 サッ
せんせー。737くんが、ぎゃくぎれしましたー。
じぶんがわるいくせにー。
745737:02/04/16 04:14
この板への書き込みはこれで最後にします。
すいませんでした。

・゚・(ノω`)・゚・。
>>737
はい、消えた!
ネタはマ板でやってくなさい
for i := A to B do begin
 //処理 ;
end;

A = B の場合、処理は1回実行される。
A > B の場合、処理は実行されない。
なんかDelphiでポインタ使うと途端にDelphiらしく無くなる気がする…
文字列なら普段はstring使って、やむを得ないAPIコールの時とかだけ、

PChar(string変数)

でキャストすれば大抵は問題ないと思うのだが…

フォームに文字を書きたいときはどうすればいいんでしょうか?
ボタンや他のオブジェクトは貼り付けられたんですが文字を表示させるには・・?
label貼り付けろ
>>750
TextOut()
そういや昔は
Label と edit の差もわからんで

Label1.Caption := Edit1.Caption

とかやって 何故だ!とかやってたなー
目に見える物は全部キャプションだとおもってたあの頃。
754デフォルトの名無しさん:02/04/16 11:40
質問させて下さいなのです。

TSpinEditで中に4の倍数以外が入力されたら排他するにはどうしたら良いでしょうか?

OnExit、もしくはChangeの時に処理を掛けようかと思ってます。

if SpinEdit1.value = (4*n) then
 showmessage('ダメヨン!');

こんなんじゃ駄目ですよね?
755とにかく即答:02/04/16 11:44
if (SpinEdit1.value mod 4)<>0 then abort;
>>755
そうか!
mod演算子を忘れてた!
ありがとう!

うっかり君でした。
757ランチャーを作りたい:02/04/16 13:08
ググルで検索して出てくる様々なページのまねをしてやっています。
書籍は魔法の何タラというやつと、WIN32API何タラを参考にしています。
フォームのボーダースタイルをタイトルバーなしのものに変更したら、
自分で確保したアプバーのスペースから自分が追い出されてしまいました。
しかも確保したスペースにもう一度フォームを移動させることが出来ません。
なんのお礼も出来ませんがやったことがある方教えてください。

ソースはこちら>>654
>>675
そういうことになる。
そこらへんはGetMemのソース見れば判るが。
まあ、そんなに気にする事でもない。
>>757
魔○のなんたらって、MLとかあっちこっちのホームページからソースをパクッテるような
気がするのは俺の気のせいか?それとも同じような事をやろうとすると同じになるのか・・・。

それに、印刷ミスとか多すぎるし、まぁ、絶対に使わないようなTipもあるけど、総合的に
みてDelphi初心者には貢献している本だとは思うが・・・。
Delphi自体のエディタもDelphiで書かれているのでしょ?
あのエディタのソースも公開して欲しいなぁ・・・と思うのは私だけ?
色々修正したり拡張したりしたい部分も多い死ね。
そうDeathね。
762デフォルトの名無しさん:02/04/16 14:32
っていうか、SpinEdit を Readonly にして、増分を 4 に設定すればよいのでは。
>>762
それは解決では無く逃げでは?
キーボードから入力出来ないし。

まあどっちでもバグでなけりゃ良いけどね。
>>760
フリーカーソル無効化アドオン便利だよ。
どっかで拾った。
Delphiのエディタはフリーカーソルだけがなじめなかった。
765デフォルトの名無しさん:02/04/16 14:47
質問!
Delphiでcomポートを触りたいのですがVBのMSCommに相当する物って無いですか?

今はActiveXの取り込みでMSCommをDelphi上で使ってます。
でも使い方が良く分からなくて・・・

使いやすくて良いコンポーネント無いでしょうか?
766 ◆fwK7enJI :02/04/16 15:18
MScommならこうじゃ駄目?

var
hoge : String;
begin
hoge := 'test';
 MSComm1.CommPort := 2;
 MSComm1.PortOpen := True;
 MSComm1.Output := hoge;
 MSComm1.PortOpen := False;




続く
end;

手荒でスマン
>>764 フリーのコンポも探せばあると思うよ

でも、普通にCreateFileしてボーレート設定して 使う方が簡単だと思うけど?
768デフォルトの名無しさん:02/04/16 15:49
インターフェイスを使いたいのですが、
function QueryInterface(const IID: TGUID; out Obj): HResult;
function _AddRef: Integer;
function _Release: Integer;
には、どんなコードを書けばよいのでしょうか?

IHoge = Interface
 procedure Proc;
end;

THoge = class(TObject, IHoge)
 procedure Proc;
 ....
end;
769デフォルトの名無しさん:02/04/16 15:51
>>764
むしろフリーだからこそ使いやすいけどなあ。
とくに表みたいな形のコメント書くときは重宝してる。
こればっかりは、フリーカーソルじゃないとやりにくくて
しょうがないし。
770Agent ◆sPktrH52 :02/04/16 16:35
また質問させて下さい。
コンポーネント>ActiveXの取り込みから、Microsoft Direct Speech Recogtionを
取り込み、それを利用して音声認識をさせようと思ったのですが見当違いでしょうか?
DirectSR1.Listen という物が見つかったのですが使い方がわかりません。
参考になる物もしくは、音声認識には他の物がよいのかどうかアドバイス頂けませんでしょうか?
長くなりましたが、宜しくお願い致します。
771デフォルトの名無しさん:02/04/16 16:53
>>770
取り込んだあとコンパイルした?
pasファイルが指定パスに出来るはずだけど。
772Agent ◆sPktrH52 :02/04/16 16:58
>>771 レスありがとうございます。
コンポーネントとしては表示されています。耳のアイコンです。
DirectSSならば、DirectSS.Speak('hoge);でhogeとしゃべるのですが、
音声を聞き取らす方法がさっぱりわかりません。
どうにかなりませんでしょうか?
773デフォルトの名無しさん:02/04/16 17:17
>>769
いやね、最初は慣れなかったせいか「ナニコレ!」って思ってたけど今ではフリーカーソルが、
使いやすくてたまらんのよ。

フリーカーソル+フリーカーソル無効化アドオン これ最強。
無効化って言ってもマウスでフリーになるし使いやすいったらありゃしない。
775768:02/04/16 19:35
TInterfacedObject などの定義に書いてあるものを
そのままコピペすれば良いのでしょうか。
QueryInterfaceはそのままでOK
_AddRef,_Releaseは、リファレンスカウントを使いたいならそのまま、
使いたくないなら、result := 1;とでも書いとけばいいのではないでしょうか。
if文は絶対「C」形式の方が使いやすい。

ネストしてるif文書いてると、なぜか「end;が多い」と言われる。
778デフォルトの名無しさん:02/04/16 20:36
>777

まず begin endって書く癖をつけろよ
ifbと書いてctrl+J
>>777
define begin {
>>778
「begin~end」やってるからこそ「endが多い」って言われるんだが・・

if (x[i] < x[i+1]) then begin
 if ((sx<x[i]) or (sx>x[i+1])) then continue ;
end else begin
 if ((sx>x[i]) or (sx<x[i+1])) then continue ;
end;
end;
782デフォルトの名無しさん:02/04/16 20:58
if () ←括弧をつけなければならないのがイヤ。

if 式 then begin .......... end;

それから、ネスした if がおおいなら、ネストが深くならないような
工夫をするべきだとおもふ。もしかした

if Exp1 then
 Command1
else
if Exp2 then
  Command2
 else
  if Exp3 then
   Command3
  else
   Command4;

if Exp1 then begin
 Command1;
end;

if Exp1 then begin
 Command1;
 goto EndOfIf;
end;

if Exp2 then begin
 Command2;
 goto EndOfIf;
end;

if Exp3 then begin
 Command3;
 goto EndOfIf;
end;

EndOfIf:
783デフォルトの名無しさん:02/04/16 21:10
Ctrl+Shift+C でプロパティの補完をしたり、
自動生成される dfm のソースコードは、
インデントが半角スペース2つになっていますよね。
あれを、タブ1個に設定することは出来ないのでしょうか。
インデント設定を4文字タブにしているので使いにくいのです…
784デフォルトの名無しさん:02/04/16 21:29
>>781
なんじゃそら。if は end と対応しないよ。
end は基本的に begin-end のセットで使う。

ただ例外として case 文は case-end のセットで使われている。
try-except(finally)-endもあるYO!
THoge=class
end;
とかも…
787デフォルトの名無しさん:02/04/16 22:36
質問です。
同じコンポーネントをつかって同じものを作ってもC++Builderと比べて
ファイルサイズが大きいのはなぜですか?
なにが大きくしているんですか?
>>784-785
例外があるって事自体「begin〜end」の冗長性を証明してるな。
どうでもいいが。
なにが大きくなっているんですか?
790>:02/04/16 22:47
僕の中の怪物が!
僕のちんこが
792デフォルトの名無しさん:02/04/17 00:11
>>781
なんじゃそら。if は end と対応しないよ。

781はフツーに begin end で囲んであると思うのだけど。
最後の行の end に対応する 何か がかいてないだけで。
793784:02/04/17 00:23
end に対応する文では record-end とかいろいろあったね…
ど忘れしていたスマソ。

>>792
話の流れを読めよ。
794792:02/04/17 00:26
>>792
それって、いいわけ?
「話しの流れを読めよ」、じゃわからないから、
どういう意味なのか分かりやすく教えて。
    (゚д゚) オチケツ!
   ~(  )−
    / >
796Rubyist:02/04/17 00:32
体の中から 何かが
 ぶえええ ぐええええええ
797784:02/04/17 00:33
>>794
>>777>>778>>781>>784
798デフォルトの名無しさん:02/04/17 00:33
かゆ… うま…
799Rubyist:02/04/17 00:50
どるどるるりりりり
人間に もどりたいよ・・・・
お前達のせいだ お前達が悪いんだよ!
800デフォルトの名無しさん:02/04/17 00:52
800ゲット!!

⊂(ΦωΦ⊂ )⊃==3
ムッフン
801Rubyist:02/04/17 00:52
           ρ(´-`ρ)
      ★Ruby★
(σ´ー`)σ
予想!
if (x[i] < x[i+1]) then begin ←このbeginを見落としている人がいます!
C/C++では
 なんたら {
  ほげほげ
 }
という書き方が多いけど

Pascal(Delphi)では
 なんたら
 begin
  ほげほげ
 end;
が普通だろうね
else使う時はどうなの?

1)
end else begin

2)
end
else begin

3)
end else
begin

4)
end
else
begin
漏れは
3)
end else
begin

if ***** then
begin
end else
if ***** then
begin
end else
if ***** then
begin
end else
begin
end;
パターン化しやすいことと
途中の end の後に ; を付ける間違いの起きないのがミソ
806素数2:02/04/17 02:08
if then
begin
end
else if then
begin
end;

俺こうだなー
beginの前、endの後に必ず改行しちゃう
俺はこうだな

if then begin end else if then begin end;
彡    ビュウウウ…
           彡
  彡   

サムイナオイ…
>>784
> なんじゃそら。if は end と対応しないよ。

ああ、そういうことか。VBかなんかの「endif」のイメージが残ってたようだ。

ついでに聞くけど
if Exp1 then //←if1
 if Exp2 then 処理1;//←if2
else
 処理2;

3行目のelseは、if1に対するelseのつもりで書いたんだが
「elseの前にはセミコロンがあってはいけません」と怒られる。
セミコロンをつけないとif2のelseと勘違いされると思うんだけど...
こういう場合はどう記述する?
>>809
Object Pascal 言語ガイド の 「Object Pascal の文法」を読んでからもう一度来てください。
何故そうなったかという歴史的背景はわからないが、文法はこれでわかるだろ。
811810:02/04/17 07:06
スマソ。スレッド名みてなかった。ヘルプ見ろは禁句だったっけ?
>>809
endifはありません。確かにif文の仕様はわかりにくいです。
例えばそう言うときは、
if Exp1 then
 if Exp2 then 処理1
else
 処理2;

て書きます。(そのまんまやね
もしelseがif Exp1にかかる物ではなく、Exp2に掛かるのであれば、
if Exp1 then begin
 if Exp2 then
  処理1
 else
  処理2;
end;

と書く方が確実でしょう。
時間をおいた後に再びこのコードを自分が読んだとき、
もしくは他人がこのコードを読んだとき、
これなら比較的理解しやすいかと思われ。

>>810-811
外野が下手な説明して混乱するより、ヘルプ見た方が確実、
という意味合いであれば構わないと思われ。
漏れもうまく説明できないと思ったらそう書くことあるし。
またクダラナイ議論が始まったな。。
>>812
if Exp1 then
 if Exp2 then 処理1
else
 処理2;
これじゃelseはExp2のifについちまうだろ。
出鱈目教えてどうするんだよ。

Exp1に対応させるんなら
if Exp1 then
begin
 if Exp2 then 処理1
end
else
 処理2;

こうするしかないね。
815デフォルトの名無しさん:02/04/17 10:50
フォームに直線を引くにはどうしたら良いのでしょう?
Shapeにはそのような機能がないようなのですが、標準コンポーネントにはないのでしょうか。
816名無し募集中。。。:02/04/17 11:07
procedure TForm1.FormPaint(Sender: TObject);
begin
with Form1.Canvas do
begin
MoveTo(20,30);
LineTo(100, 10);
end;
end;
>>815
LineTo
>>815
じゃ別解として
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1004530597_1/MyDraw.pas
これをコンポーネントとしてインストールして Samplesに増えたコンポを貼り付け
Lines プロパティから最初の行だけ残して削除 すればOK
819デフォルトの名無しさん:02/04/17 13:37
>>816
>>817
>>818
ありがとうございます。
優しいレスで感動しました。
820817:02/04/17 18:10
>>819
俺の優しかった?
821819:02/04/17 18:49
>>817
・・・うん(*´д`*)
822デフォルトの名無しさん:02/04/17 18:57
「基礎からわかるDelphi6」という本を買いました。
すごくわかりやすい本だとは思うのですが、どちらかというと辞書に近いような気もします。
そこで実際にプログラムを組みながら覚えていくような本がありましたら
紹介していただけませんでしょうか?
823Delフサギコ ◆zE1iiRdQ :02/04/17 20:33
             >>813
    ∧,,∧    / 新しいデルパイ使いには
  _ ミ,,゚Д゚彡_<   こういう議論は1度2度は必要かと。
.=| |==U==U=| |= \
 | |〜ミ  ミ .| |
 | | ∪''∪ | | >>804 オラ3)ダベ
 | |      | | if then に対して、begin..endはほとんど常に付ける派
824デフォルトの名無しさん:02/04/17 20:36
>>822
今日、本屋行ったら、日経プログラム(だったかな)から、
Delphiのムック本出てたよ。稟太郎って人が書いたやつ。
順を追ってソフト作ってた。読んでみたら?
825デフォルトの名無しさん:02/04/17 20:43
oauuur8937487er4yuiygrjhgt
826デフォルトの名無しさん:02/04/17 20:45
DEL
827デフォルトの名無しさん:02/04/17 20:46
828デフォルトの名無しさん:02/04/17 20:47
829デフォルトの名無しさん:02/04/17 20:47
830Delフサギコ ◆zE1iiRdQ :02/04/17 20:48


  ∧,,∧ 大分古いけど..な
 ミ,,゚Д゚彡
 ミつ[|lllll]).
〜ミ  ミ
  U''U  タマノカキコミ オレモアゲヨウット

使いながら覚えるBorland Delphi4
 プログラミング入門
http://www.ai-pub.co.jp/contents/book/prog/del4_prog.html

目的には合致していると思うけど、名著とはいえないかな。

他には
> わたしでもできる!
> Delphi初心者奮闘記 伊藤 みどり と どりとすダンナ
(Delマガの連載のまとめならね)
とか
> カンタン! Delphi プログラミング
とか(日ソフの連載のまとめなら)

http://www.borland.co.jp/bookinfo/delphi.html
なんなDel本の出版ペースがあがってる
831デフォルトの名無しさん:02/04/17 20:48
832デフォルトの名無しさん:02/04/17 20:50
833デフォルトの名無しさん:02/04/17 20:51
今日から delphi はじめようとしている超初心者です。
なんで delphi スレって似たようなのがたくさんあるのですか?
どれをつかったらいいの?
>>834
TThread を継承して自作するのが一般的です。
無理して使わなくていいよ。
837デフォルトの名無しさん:02/04/17 23:09
>>809
C/C++では ; は文の一部だが、
pascalでは ; はセパレーターなのだ
838Delモナー ◆fPymXWHY :02/04/17 23:15
>>834
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. 「なんで delphi スレって似たようなのが
 (    ) .| たくさんあるのですか?」の質問には
 | | |  | 答えられないけど・・・。
 (__)_)  \___________________

どのスレを使っても構いません。
主なDelphi関連スレは >>3-4 を見てください。
ただし他のスレに比べたら、
このスレは一番初心者向けだと思います。
839デフォルトの名無しさん:02/04/17 23:23
DelphiでMTRソフトとか波形処理ソフトとか作れますか?
MultiTrackRecorderですか
841デフォルトの名無しさん:02/04/17 23:29
>>840
そうです
本来は目的別に別れているはずなのだがどのすれもごっちゃ
マルチポストするやつもいたし

相談室がこのスレより難解、高度なことを扱い
フサギコスレはプログラム以外にもいろいろ(雑談スレ?)だったはず
843デフォルトの名無しさん:02/04/17 23:44
>>839
TuaregってのがDelphi製
844デフォルトの名無しさん:02/04/17 23:46
Delphiってボーランドっていう会社が作ったプログラミング言語ですよね?
846デフォルトの名無しさん:02/04/17 23:51
なんで「インプライズ」とかになったの?
なんで元に戻ったの?
Inpriseインプライズだった期間ってどれぐらいだったっけ。
848847:02/04/17 23:53
Inpriseインプライズって・・・
849デフォルトの名無しさん:02/04/17 23:54
マシューに、あややが出るのはまだですか?待ってるんですが…。
>>846
>なんで「インプライズ」とかになったの?
気分転換のつもり
>なんで元に戻ったの?
やっぱりボーランドのほうが良かった
851846:02/04/17 23:58
>>850
本当ォ?(藁
何か事情があるんじゃないのォ!?
姓名判断してもらったからと言ってみる
>>844
正確にはボーランドが作った開発環境で、ObjectPascalという言語を使ってる。
ObjectPascalは、大昔からあったPascalという言語をボーランドが拡張しまくったもの。
Inprise時代もDelphi等の開発環境だけはBorlandブランドだったね
>>841
今時、作れない言語も珍しいです
そのような話はマ版でやってくれんか?
そのような話は楽屋でやってくれなぁい?(by松ちゃん)
858デフォルトの名無しさん:02/04/18 02:01
>>849
もうでましたよ。なんでもDelphiでアイドルプログラミングがされているとか…
>846
インター・イントラの企業システムを売るようになった(VisiBroker とか)ので、
開発ツールブランドのイメージが強すぎる Borland という名前から、Inprise に
変えたんだよ。
だから開発ツール群はそのまま Borland のブランド名を残していた。
(Inprise の Borland Delphi とか言ってた)

が……結局やっぱり開発ツールメーカーとしてのイメージのほうが強いんで(w
Borland に名前を戻したというわけ。
860デフォルトの名無しさん:02/04/18 10:45
テキストみたいに窪んだ感じで、
横:中央寄せ
縦:中央寄せ

ができるコントロールってないのですか?
VBからの移行作業なんですけど、ラベルは窪んでないし、
テキストはAlignmentがないし。
StaticTextはLayOutがないので困っています。

Delphiでは諦めるしかないのですか?
枠はCreateParamsでいじれば何でも付けれる。
862デフォルトの名無しさん:02/04/18 11:04
>>861
ありがとうございます。
でもLabelにCreateParamsが存在しないのですが
どうしたらいいでしょうか
863デフォルトの名無しさん:02/04/18 11:18
>>860
ウザイ。いくらDelでもできない事くらいある。
嫌なら自分でコントロール作れタコ
864860じゃないけど:02/04/18 11:36
>863
できないならできないと最初から言え。
逆ギレみっともない
>>860
ttp://home1.infonia.ne.jp/~delphian/delphi/index.html
ここで探したら?

自作しても、1日で出来そうな課題だと思うけど?
866VBマン:02/04/18 11:50
つーかEditにAligmmentとLayOutが無いって結構致命的じゃない?
Del厨叩きのネタができてワショーイ
文字を窪ませたいの? なら色変えた文字をズラシて重ねて表示すればいいよ
枠を付けたいだけ? ならPanelで代用したらいいんじゃないの?
868860:02/04/18 11:54
>>865
そこも検索したのですが、文字位置の横と縦を中央に配置できる
Editは無かったみたいです。説明不足でスミマセン。

>>867
Panelだと入力できないので後々困るかな?って感じです。
869荒れてきたよ:02/04/18 11:54
VBのせいで荒れてきたよ
871デフォルトの名無しさん:02/04/18 12:03
866 名前: VBマン 投稿日: 02/04/18 11:50

つーかEditにAligmmentとLayOutが無いって結構致命的じゃない?
Del厨叩きのネタができてワショーイ
1, TEditとTMemoは Windowsの エディットコントロールのラッパーだから >>861の通り
  CreateParams を使えば中央寄せとか エディットコントロールの備えて
  いる機能は使える。 TEditを継承して Alignment を付けてもいいし
  TMemoを継承して、マルチラインを止めてもいい

2,TLabelはグラフィックコントロールだから、描画方法はそれこそご自由に
873860:02/04/18 12:11
>>870
ありがとうございます。DEKOさんのテキストボックスを
使わせて頂こうかと思います。
厨房な質問ですまそ
stringからcharへの変換を一発でやる関数はないのでしょうか?
例えばStrToCharみたいなやつ
ぺるぷみても関数一覧にはなかった.
おそらく基礎の基礎と思われますが
おせーてください
VBの人はコントロール自作する気もないのか世
>>874
s: string があるとするなら s[1] がchar型になる。

1文字もないときはchar型で表現できんし2文字以上のときも捨てるしかない
>>876
ありがとうございます.
勉強になりました
878デフォルトの名無しさん:02/04/18 12:33
なんか質問するのも恥ずかしいけど
聞くは一時の恥だし、教えて!

wavファイルから時間軸と音圧軸に関する配列?みたいなものを取り出して
それぞれを2次元でグラフ表示し、その波形を演算、処理するような
アプリ(俗に波形編集ソフトなどと言われているもの)が作りたいんですが
Delphiでこのようなアプリはプログラミングできるんでしょうか?
879デフォルトの名無しさん:02/04/18 12:40
C++超初心者です。
DOS窓のBASICでゲームは作ったことあるので、
だいたいのフローチャートというかアルゴリズムは理解しています。
CIN COUT IF くらいでの簡単なプログラムは組めます。

目標はVC++でウィンドウズ用アプリで
シューティングとかパズルゲームを作りたいのですが、
まずどこから手をつけたらいいのかわかりません。
VCの解説書とかサイトってのは基本手にまず、C++のソースを
理解しているものとして書いてありますよね。

まずはC++の黒画面で表計算くらいできるようになってからVCでしょうか。
なにか良いサイトはありますか?
>>878 他の開発言語と同じ程度には作れますよ。

  RIFF を扱うのは APIになると思うけど
881デフォルトの名無しさん:02/04/18 12:51
>>875
ソースあげてみ
>>879
思いっきりスレ違い(というか誤爆)ですね
↓ここで聞いてみたらどうですか?
http://pc.2ch.net/test/read.cgi/tech/994129650/l50
まあ誤爆でもここに書いたという事は Delphiにも興味があるという事でしょ

でも、シューティングゲームを作るならいきなりC++でもいいと思うよ
>>860
いいきっかけだから
練習のつもりで自分でコンポーネントを作ってみるのもいいでしょう
(以下のコード、使ってよし)
 TMyEdit = class(TEdit)
 private
  FAlignment: TAlignment;
  procedure SetAlignment(const Value: TAlignment);
 protected
  procedure CreateParams(var Params: TCreateParams); override;
 public
  constructor Create(AOwner: TComponent); override;
 published
  property Alignment: TAlignment read FAlignment write SetAlignment default taRightJustify;
 end;

constructor TMyEdit.Create(AOwner: TComponent);
begin
 inherited;
 FAlignment:=taRightJustify;
end;

procedure TMyEdit.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 case FAlignment of
  taLeftJustify : Params.Style:=Params.Style or ES_LEFT;
  taCenter   : Params.Style:=Params.Style or ES_CENTER;
  taRightJustify: Params.Style:=Params.Style or ES_RIGHT;
 end;
end;

procedure TMyEdit.SetAlignment(const Value: TAlignment);
begin
 if FAlignment <> Value then
 begin
  FAlignment := Value;
  RecreateWnd;
 end;
end;
885デフォルトの名無しさん:02/04/18 13:10
Indyで
Memo1.Lines.Text := IdHttp1.Get(URL);
このようにMemo1にソースを取得していたのですが
文字コードがシフトJISのページはうまくいくのですが
EUCのページは日本語が文字化けしてしまいます。

EUCのページも文字化けしないでソースを取得するには
どうしたらよいのでしょうか?
>>884 それって必ず動く保証が無いと思ってたんだけど、

>Windowsにエディット コントロール内のテキストを配置させるスタイルは3つあります。
>ES_LEFT、 ES_CENTER、 ES_RIGHTの各スタイルによって、 それぞれ、
>テキストは左寄せ、 中央揃え、 右寄せに配置されます。これらのスタイルは、
> 複数行エディット コントロールだけに適用されます。
じゃ >>884 の別解 

type TMyEdit= class(TMemo)
private
  procedure CreateParams(var Params: TCreateParams);override;
end;

procedure TMyEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
   Style := Style and (not ES_MULTILINE);
end;
end;
888デフォルトの名無しさん:02/04/18 13:41
personalだと.dcuが作れなくてピンチ。

>>887
ありがとうございます。
それで、Layoutも追加したかったのでAligmmentを真似て

procedure TCEdit.SetLayout(const Value: TTextLayout);
begin
 if FLayout <> Value then
 begin
  FLayout := Value;
  RecreateWnd;
 end;
end;

こんなのも作ってみたのですが、CreateParamsに何入れたら
値が反映されてくれるのかがわからません。
StyleにFLayoutを入れればよいのですか?
その Layoutって何?
シングルラインでES_CENTERはVCでもリソースから設定出来ない。
 自分の環境で一応動作するからといって、必ず動作する保証はない。

汎用的にやるならマルチラインにして、改行の入力をキャンセルするべきだと思う。

891フリー作者A:02/04/18 14:06
>>890
俺はこんな感じで作って配布してるけど、今まで1件も苦情来てないのだが。
もしかして動かない環境とかありそう?

procedure TMyEdit.CreateParams(var Params: TCreateParams);
const
 Alignments: array [TAlignment] of Longint = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
 inherited CreateParams(Params);
 with Params do
  Style := Style or Alignments[FAlignment] or ES_MULTILINE;
end;
892デフォルトの名無しさん:02/04/18 14:08
>>889
TLabelにあるやつの事じゃない?
>>886
失礼・・・
ES_MULTILINEの部分をここへ上げるときに消してました(汗
・・・ES_MULTILINEをなぜ入れていたか自分でも失念してたのだ・・・撃つ山車脳

ところで
>>888
SetLayoutだけ入れても動作しないですよ
(TLabelのソースを見ると・・・実装には割と根性のいることが分かるのですが)
895デフォルトの名無しさん:02/04/18 14:28
Personalってコンポーネント作れたっけ?
dcrが作れないような気がした
>>891 マルチラインなら問題ないと思うよ。 でもマルチラインにしたら改行が入ったりして困らない?

実際シングルラインでも ES_CENTERでちゃんと中揃するけど
今のMSDNでも
>Single-line edit controls can only be left-aligned.
>ES_LEFT is the default for both single-line and multiple-line edit controls.
>Single-line edit controls ignore ES_RIGHT and ES_CENTER.
 と書いてるしね。

>>892 ようするに上下の位置合わせ?
 それ必要なら別のパネルに入れて、TEDITの境界線消せばいいのでは?
確かにドキュメントでは保証されてないけど、
シングルラインでかつ ES_RIGHT 又は ES_CENTER は
Win98以降及びNT4.0以降で実装されている。
実際OS内でもそのスタイル使ってるし。
898デフォルトの名無しさん:02/04/18 15:51
VBで言うSplit命令ってDelphiにありますか?
文字列をデリミタで切って配列にポンみたいな関数

[VB]
arr() =split("AAA@BBB@CCC","@")

arr(0)→"AAA"
arr(1)→"BBB"
arr(2)→"CCC"

[Delphi]
arr[] := ?????
>>898 Delphiは完全なネイテブコンパイラですから、その程度のことは自分でおやりなさい


なお、配列を使うより文字列リストは TStrings 継承の TStringListを使います。

なお、CSV形式だけは直接する方法があります
>>898

type TArrayString = array of strings;

function Split(s,sep:string):ArrayString;
var n:Integer;
begin
with TStringList.Create do try
 while s<>'' do begin
  n:=Pos(sep,s);
  if n>0 then begin
   add(copy(s,1,n-1));
   delete(s,1,n+Length(sep));
  end else begin
   add(s);brek;
  end;
 end;
 SetLength(Result,Count);
 for n:=0 to Count-1 do Result[n]:=Strings[i];
finally free;end;
end;
>>900
900Getおめ。

902Delモナー ◆fPymXWHY :02/04/18 16:41
>>898
BRegExp ユニット
http://www2.big.or.jp/~osamu/Delphi/MyLibrary.htm
Perlの正規表現を使う。文字列操作には激しく便利。
もう手放せません。

900を超えたか・・・。もう新スレを立てなくては。
   | \
   |До) トコロントチャリピカァ!
   |⊂
   |


     ♪  Å
   ♪   / \   チィッカム
      ヽ(оДо)ノ   チィッカム
         (  へ)    チィッカム
          く       チィッカム


   ♪    Å
     ♪ / \   マグワッタ゚ァ
      ヽ(оДо)ノ  マグワッタ゚ァ
         (へ  )    マグワッタ゚ァ
             >    マグワッタ゚ァ
904デフォルトの名無しさん:02/04/18 17:29
>>900

> delete(s,1,n+Length(sep));

Deleteって引数1個じゃなくて?
905900:02/04/18 17:38
>>901 ありがと

>>904 もちろん他にもバグは沢山ご用意しております。

ここでDeleteと書くと、TStringListのDeleteメソッドを呼んでしまいますが、
ここから Delete手続きの方を呼び出す方法を習得して頂きたいとかように考えております。

 
>>895
ワラタ
907デフォルトの名無しさん:02/04/18 18:18
Image1.Canvas.MoveTo(x1, y1);
Image1.Canvas.LineTo(x2, y2)

で描いた線を消したい。
しかし Image の Picture にビットマップ画像をロードしてある。
色々ためしたけど線の色が変わるだけで何らかの線が残ってしまう。
良い方法ないですか?
>>907 もう一度ロードさせればいいと思うけど?

リソースから読み出す方法が判らないなら、そのイメージを直接表示せずに
コピーしてから付けばいい
909907:02/04/18 18:58
>>908
やはりそれしかありませんか。
では Canvas に描画した一部分を消すのも無理ですかね。
ともあれレスありがとうございます。
>>885
とりあえず、'jconvert'で検索してみる。
>>909 非破壊的な描画つまり XOR なら 2度操作すれば元に戻るよね?
  だから移動中の描画とかXORを使うでしょ?

でもそうじゃないなら元の絵を再描画するしかないよ
912909:02/04/18 19:36
>>911
XOR も試してみたのですがやはり満足のいく結果が得られませんでした。
Delphi マンセーだったのですが思わぬところでつまづきました。
REALbasic では Refresh というメソッドで下の BMP を壊さずに上の描画を消去できたのですが。
新しくコンポーネント作った方がいいかも知れませんね。
お世話になりましたm(_ _)m
>>912 いや 完全に元に戻ればいいなら
フォームの OnPaintで フォームのCanvasに描くべきだと思うよ
914912:02/04/18 20:00
>>913
はて、すみません、ちょっと意味がわかりません(^-^;;
つまりですね画像上の座標を調べるソフトが作りたいのですよ。
BMP 画像をロードしてクリックしたところの座標を教えてくれるのね。
そのときにグリッドを任意でかぶせたり取り払ったりしたいのです。
何か良いアイデアありませんかね?
>>914
Imageの上に透明な(TransParent=True)Labelを張って
LabelのCanvasに書き込むと上手くいくよ
XORじゃなくてPAT_INVERTのPENを使うという手もある。
>>910
jconvert.pas使えばいいのですね?
ありがとうございます。
Pen.Mode:=pmNot;
とかね
919デフォルトの名無しさん:02/04/18 21:01
TStringGridを継承して、セルに色を塗るコントロールを作ろうとしましたが、以下の場所でエラーが出て
ダメでした。

{ Protected 宣言 }
procedure DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); override;

  {処理}

procedure TCMLStringGrid.DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);

エラー内容:DrawCellの宣言がすでに定義されているものと異なります。

何がいけないのですか?
920914:02/04/18 21:12
>>915, 916, 918
ご助言ありがとうございます。
いまから試してみます。

>>919
すみません、私ではわかりかねます。
他の方どうでしょう?
>>919
わたしは初心者なので詳しいことはよくわかりません。
ヘルプで以下の一文を見つけました。

>メソッドをオーバーライドするには,override 指令を使ってメソッドを再宣言します。
>オーバーライド宣言するときは,そのパラメータの型と指定の順序を,上位クラスでの宣言と合わせなければなりません。
>戻り値がある場合は,その型も合わせます。

「仮想メソッドと動的メソッド」ってタイトルの所です。
何かの手がかりになるとよいのですが・・・
922919:02/04/18 21:39
>>921
サンクス。
Sender:TObjectって継承だと必要ないのね。
http://www.borland.co.jp/tips/delphi/dh011/sgrid_2.html
を見つけました。Senderがいらないっぽいですね。
924Delモナー ◆fPymXWHY :02/04/18 21:59

  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. 新スレ立てました。
 (    ) .| ただしこのスレが980に行くまでは、
 | | |  | 新スレはsageておいて下さい。
 (__)_)  \_________________________

新スレ モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/test/read.cgi/tech/1019134412
925913:02/04/18 23:50
>>914
ああそうか、 フォームのキャンバスを使って描くとImageの上には描けないんだ

じゃ>>915と同じ事だけど systemタブにある PaintBoxをImageに被せて
そのOnPaintで PaintBoxのキャンバスを使って描けばいい。


926913:02/04/18 23:54
具体的に書くと
PaintBox1
procedure TForm1.PaintBox1Paint(Sender: TObject);
var i:Integer;
begin
if CheckBox1.Checked then
with PaintBox1 do
for i:=0 to Width div 8 do begin //縦線だけ
Canvas.MoveTo(i*8,0);
Canvas.LineTo(i*8,Height);
end;

end;

この為にCheckBoxを貼り付けて

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Invalidate;
end;

とすればCheckBoxをクリックする都度 縦線が出たり消えたりする

>>925
確かにこの目的にはPaintBoxの方がLabelよりふさわしいですね
(Labelでもできるというのは裏技っぽい)

Form - ScrollBox(alClient) - Image(AutoSize) - PaintBox(alClient)
という構成だと大きな画像でもちゃんと扱えていい感じ
928野球は糞:02/04/19 00:40
野球は糞
929デフォルトの名無しさん:02/04/19 00:41
ScrollBoxでホイールマウスのMouseWheelUp/Downが拾えないが俺だけでしょうか?
930929:02/04/19 00:44
ごめんなさい、わかりました。
ScrollBoxの内容物にフォーカスがあると拾えるみたいです。
>>860
>867さんのようにパネルを使うのが簡単だと思います.
・パネルを置く
・パネルのBevelOuter を bvLowered に
・パネルの上にラベルを置く
・ラベルの Align を alClient に
・ラベルの Alignment を taCenter に
・ラベルの LayOut を tlCenter に
StringGridでCell上をドラッグすると同時に文字を書き込む事って出来ますか?
どうやればいいのでしょうか。

┼┼┼┼┼┼┼┼┼┼┼┼
┼┼┼┼┼┼┼┼┼┼┼┼
┼┼┼┼┼┼┼┼┼┼┼┼
┼┼┼┼┼┼┼┼┼┼┼┼
→→→→→→→→→→→
※ドラッグすると文字が順次書き込まれて行く
1 1 1 1 1 1 1 1 1 1 1 と言う風に

どうやれば良いのかわからないので・・・
新スレが出来てたようです。

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

このスレは1000まで使って下さい。
>>932
StringGridのDragModeをdmAutomaticにして

procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X,
 Y: Integer; State: TDragState; var Accept: Boolean);
var
 nCol, nRow: Integer;
begin
 StringGrid1.MouseToCell(X, Y, nCol, nRow);
 StringGrid1.Cells[nCol, nRow]:='1';
end;
↑こんな感じ
934のままだと範囲外でエラーがでると思うからその辺は
条件判断を入れるとかしてください
936デフォルトの名無しさん:02/04/19 11:57
StringGridで、Colsに対応したAlignmentを作りたいのですが、
どうしたらいいのでしょうか?

property AlignmentCol : array of TAlignment read FAlignment write SetAlignment default taLeftJustify;


この配列の要素数をColCountと連動させたいのです。

ColCountを上書きして対処しようとしたら、StringGridの列数が増えなくなっちゃったし。
んー
>>935
あれ?
うまく動かない。

なんでだろう・・・

dmもAutoにしたのに
938デフォルトの名無しさん:02/04/19 12:10
>>937
まさかと思うけど・・・
934のコードは OnDragOver イベントハンドラに書いてますよね?
940デフォルトの名無しさん:02/04/19 12:36
>>939
OnDragOverに書くんじゃ無いですか?

OnDragOverイベント書いてますけど。
>>940
それで合ってますよ
・・・ブレークポイントを入れてデバッグしてみるしかないのでは?
いっそ MouseMoveイベントで 処理した方がいいんじゃないの?
943デフォルトの名無しさん:02/04/19 14:10
>>941
無事動きました!
ありがとう御座います!

>>942
MouseMoveでやるとマウスを押下してなくてもドローされちゃうんです。
試したらおもしろかったけど。


それと範囲チェックエラーなんですがこれではダメでしょうか?
以前からこのチェックは行っていたのですが。

if (nCol = -1) or (nRow =-1) then Exit;
944943:02/04/19 14:18
>>943
自己レス
上のコードであってた。
945デフォルトの名無しさん:02/04/19 14:23
1行目
2行目
3行目
4行目
5行目

Memo1に上のような文字列が入ってたとして
Button1を押すとMemo2に

2行目3行目4行目

と出したいときはどうすればよいのでしょうか?
s := '';
for i := 0 to Memo1.Lines.Count-1 do begin
 s := s + Memo1.Lines[i];
end;
Memo2.Lines.Add(s);
ってこと?
DelphiのFAQサイトをこれらのスレッドからまとめて抜粋して載せようと思うのですが、ダメでしょうか?

膨大な情報になって結構便利だと思うのですが。
>>947
許可します。
ページ名は「モナーの *やさしい* DelphiFAQ」がいいとおもふ。
949Delモナー ◆fPymXWHY :02/04/19 16:19
>>947
私としてはいいと思います。
まとめるのが大変そうですね。頑張ってください。
>>947
コテハンの投稿はちゃんとコテハンまで掲載するようにね
>>947
禁止します。
移行のついでに埋め立てカキコ
hayalifsdljfakfds
954デフォルトの名無しさん:02/04/19 20:47
LightRepってフリーの帳票コンポを使われている方いらっしゃいますか?
昨日Delphi6proを購入して、以前のDelphi4から色々とコンポを入れなおしておりまして、
ついでに、最新をチェックして LightRepも最新版にしたのですが、
LightRepが貼り付けられているフォームを表示するだけで10秒もかかってしまいます、
プログラム中で動的に生成しているフォームで使うと、固まった?と思わせるほどなの
ですが、D6+LightRep最新版を使われている方はみなさんこんな感じなのでしょうか?

OSはWinXP(HOME)なのですが、これも原因なのでしょうか。
(´-`)。o ○ (コンポーネント一括インストーラーがあったら便利かもな…)
956デフォルトの名無しさん:02/04/20 00:23
>>945
・forでくるくる回して必要な行だけmemo2に代入するか
・assignで一括してmemo2に代入して不要な行を削除するか

だね。
957デフォルトの名無しさん:02/04/20 00:33
つーか、どーゆー必要性なんだ?945のヤツは。それによってやり方も
変わるかもしれない…
などとほざいてみる予行演習。
>>954
なんだそれ?LightRep自体を知らん、何処においてあるの?
そんな名も知れないコンポーネント使うから悪いんだろう、QREPORTじゃ駄目ですか?
>>958 名も知れないと言うが、結構有名だぜ、細かい複雑な
単票印刷とかだと結構役に立つよ。
Delphian World で探したらすぐ見つかる。

>>954 俺も使ってるけど、現象的に同じだが最新版だからってわけ
じゃなくて重いと思う、俺は動的じゃなくて起動時に作成しておいて
hideしてるから実行時に重いと感じることはないけど。
960デフォルトの名無しさん:02/04/20 03:13
TComboBoxの枠(リストじゃなくてボックスのほう)を
消す方法を知ってる方いませんか〜
>>960

パネルで隠す
>>960

親のクライアント領域の外に出す。
>>955
自分用コンポーネントパッケージを作れ

漏れは再インスト時IDEの設定の保存/復帰がしたい...
どのレジストリキーをとっておけばいいのやらサパーリ
964Delフサギコ ◆zE1iiRdQ :02/04/20 10:10
regedit.exe /E D6Toolbars.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Toolbars"
regedit.exe /E D6CodeExplorer.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Code Explorer"
regedit.exe /E D6Editor.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Editor"
regedit.exe /E D6FileFormat.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\FileFormat"
regedit.exe /E D6FormDesign.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Form Design"
regedit.exe /E D6Palette.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Palette"
regedit.exe /E D6AutoSave.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Auto Save"
regedit.exe /E D6CodeInsight.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Code Insight"
regedit.exe /E D6Transfer.reg "HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Transfer"

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    バチファイルにしてよし
  ミ,, ゚Д゚彡
   〃  つ旦~~
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
965デフォルトの名無しさん:02/04/20 10:51
↑これを実行すると何が起こりますか?
>>965
それてもフロクラマーか
967デフォルトの名無しさん:02/04/20 11:08
>>965
963の願いが叶います。
968Delフサギコ ◆zE1iiRdQ :02/04/20 12:19
XXX.Batというファイルにして
テキスト保存して実行すると

D6Toolbars.reg
とか、いくつかのファイルがXXX.Batと同じフォルダに
書き込まれますよ
んで、それがD6の設定になるので
再インス後に*.regを実行したら設定が元に戻るです

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   他のマシンに設定移行するときも
  ミ,, ゚Д゚彡   便利っす
   〃  つ旦~~
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
>>968
やっぱりさぁ、レジストリよりiniファイルの方が便利だよなぁ、この辺りの設定もiniでやってくれて
た方が良かった、フォルダを丸ごとコピーするだけで良いのだし。

レジストリで管理するかiniファイルで管理するか設定出来るようにしてくれたら嬉しい > Borland

970963:02/04/20 19:21
>>964 (フサギコ氏)
どもです。
環境保存/復帰が禿しく楽になって(・∀・)イイ!!

(´-`)。oO(…6.0を変えれば他のバージョンにも対応できそうだ…)


>>969
禿同意、そうでなくとも、せめてこういう設定を大量に
レジストリに書き込むタイプのソフトウェアは開発環境問わず、
非環境依存の設定をエクスポート/インポート
できるようにするべきだと思う。

ってスレ違いですね、すみません。
971デフォルトの名無しさん:02/04/21 17:58
はい
はい
こういうことはできませんか。

1) アプリがレジストリに対して何か操作をする
2) その操作を横取りして、実際には ini ファイルに対して操作を加える. その ini ファイルは、アプリケーション毎に自動生成する.
3) 実際のレジストリはクリーンなまま
4) (・∀・)イイ!
regmonとか見るとできるのかもしれないが……先は長い。
973デフォルトの名無しさん:02/04/21 18:58
既出だと思うが、調べるのも面倒なんで

StringGridのセルにComboBoxを埋め込む方法をおまえら教えろ!こりあん!
できれば白い部分より一番上の灰色の部分がいいんだが。
エクセルのオートフィルターみたいなことしたいじゃ、!こりあん!
>>971
advapi.dllだっけ?>レジストリ操作APIがあるの

1.これと同名のラッパDLLをアプリexeと同じフォルダに置く
2.アプリは偽DLLを読む
3.実際偽DLLのレジストリ操作関数を呼ぶ
4.偽DLLはレジストリは操作せず実際はINIを操作
5.(゚д゚)ウマー

説明下手だけどこんな感じなら出来るのでは。
所謂かちゅ〜しゃでいうkage方式で。
>>973
2時間30分経過。。。。。。
976973:02/04/21 20:52
>>975
おまえらバカで答えられないってことがよくわかったよ。
クソプログラマーばっかだな
調べるのが面倒だから教えろとかいう質問には
同レベルにして、調べるのが面倒だから答えない。
>>973
答えてくれなかったら逆ギレですか。
セル座標を調べてコンボボックスでもなんでも配置してなさいってこった。
>978
のせられちゃ駄目。
>>973
私が作ったコンボ・チェックボックスをグリッド内に埋め込むコンポを進呈してもいいよ、
やってる事は、StringGridとitemを組み合わせて、位置を判定して動的に指定された
コンボかチェックボックスを表示又は制御しているだけなのですが、それで宜しいかな?

しかし、一般に広く公開したくないのでメールアドレスを教えて下さいませんか?
981デフォルトの名無しさん:02/04/22 23:04
厨房は次の文を書きこみましょう。
ExitWindowsEx(Ewx_ShutDown,0);
(´-`)。o ○ (寒い981は罰として新スレ作れ)
984デフォルトの名無しさん:02/04/23 07:16
せん!
ムム
       v
      (゚ω゚) <そろそろ出番だな
     /(  )\
      /'\
       v
     <(゚ω゚) <うっ!
      (  )\
      /'>
       v
      (゚ω゚)> <はっ!
     /(  )
       <'\
9982000:02/04/23 11:15
2000!!
       v
     <(゚ω゚)> <うっ!
      (  )
      /'>
     v       w
    (゚ω゚)/ \(゚δ゚)<ジーンギスカーン!
   /(  )    (  )ゝ
     <'\    / >
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。