モナーの *やさしい* Delphi質問スレ Ver.10
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
( ) .| Delモナーは時に私であり、時には別の人。
| | | | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
(__)_) \_________________________
前スレ モナーの *やさしい* Delphi質問スレ Ver.9
http://pc3.2ch.net/test/read.cgi/tech/1033668645/
4 :
デフォルトの名無しさん :02/12/03 11:05
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ < `∀´`><。 ( ) Dolpheiはウリ発祥ニダー | | | | (__)_) \_________________________
2 と 3、二重カキコですか?
6 :
デフォルトの名無しさん :02/12/03 11:14
>1 ( ´∀`)乙!
9 :
デフォルトの名無しさん :02/12/03 11:53
モナーの *やさしい* Delphi質問スレが一番 ( ´∀`)マターリしてて好き!
10 :
デフォルトの名無しさん :02/12/03 14:39
( ´∀`)age!
仲間内でも荒れるんだ... 悲しい奴らだなぁ
よっぽど嫌な事があったんだろうな。
まあねぇ.
>「148です」 荒らすなら、徹底的にやれよ。DelWiki 消しまくるとかさ。
18 :
デフォルトの名無しさん :02/12/03 17:24
ごめんなさい
>>17 4ばんめのDolpheiはラテン語でしょうか
質問なんですが、Delphiって何て読めば委員でしょうか?
>>20 ありがとうございます。すっきりしました。
22 :
デフォルトの名無しさん :02/12/03 18:27
ネイティブはきっとダルフィって発音するんだよ。
tech:プログラム技術[スレッド削除] に依頼でていませんが、何か間違えているんじゃないですか?
25 :
デフォルトの名無しさん :02/12/03 19:02
ビット演算で四則演算をするときはどうすれば良いのでしょうか? シフトで2のn乗の割り算掛け算は分かるのですがソレしかやり方がわかりません。 足し算、引き算、2以外による掛け算割り算の法方を教えていただけないですか。
「ビット演算で足し算、引き算」 ってところで何か間違えているような...
削除依頼は出されていませんし、削除人も内容をチェックされているので くだらん嵐は無視していきましょう。
はい、何か間違えているっぽいです。 足し算、引き算はできないんですね。 じゃあ2以外による掛け算割り算も不可能ということでよろしいですか?
ものすごくよく知っているけど(TTL で組んでいた世代だし) ここは Delphi スレだよ。
>>31 >ここは Delphi スレだよ。
でも↑が「できない」理由にはならないと思われ。
var Ashitanotenki: TKisyoutyou; Ahitanotenki := Rando(TKisyoutyou); このようなプログラムを作りましたが、周りの人から 百叩きにあいます。なぜなんでしょう。
Delphi で、ってこと? それとも 一般的なアルゴリズムを知りたいの? も少し自分の手持ちの知識をだしてくれな。 なんか、これも嵐っぽいな。
>>32 できるできないのはなしと、
「彼」が何を知りたいのかは別の話でしょ?
いちおー話の内容はスレタイトルにあわせませんか?
>>33 ネタならせめてスペルぐらい確認しようね。
>>33 周りの人に理由を尋ねたらどうでしょうか
私は「周りの人」ではないので百叩きの理由はわかりません。
DELPHIを使っているのでココに書き込んでしまいましたが。 確かに質問の内容とDELPHIに関係は無いですな。 スマソ。
>>34 DELPHIでってことです。
ビット演算の方が処理が速いいと聞いたもので気になったのですが、
実際速度面でメリットはありますか?
そうやって最初から説明してくれれば遠回りしないですむのに.. 「ビット演算の方が処理が速い」処理もある。ってだけ。Delphi に限らず。 足し算引き算は、正数の場合それ自体がビット演算だから基本的にそれ以外の演算方法は無い。 掛け算は、2の累乗の場合にはビットシフトで表現できるからそちらを使うと早く処理できるケースがある。 割り算を掛け算の逆演算と見ると、2の負数の累乗を考えることで特定の数の場合、ビットシフトで計算できる。 掛割算とも、特定の数値の時のみ有効であることを忘れないように。 以上、Delphi とは直接関係ないことなので、もっとよく知りたければ CPU の説明書を 熟読してください。ある程度の自習はよろしく。
>>26 何も言わずに、アセンブラのスレッドで聞いてみなさい。
その方が多くの知識がつく。
>38,39 ごめんなさい。 「気象衛星ひまあり」のすれっどは どこでしょうか。
48 :
26じゃなくて25だったでござる :02/12/03 20:04
>>45 そういうことでしたか。自分の知りたかったことは大体分かりました。
ありがとう。
さて。粘着ちゃんも一段落したかな? せいぜいがんばってね。
>26じゃなくて25だったでござる よーするにジサクジエンってことね。
var daigishi: TJimintou; daigishi:= Random(TJimintou); このようなプログラムを作りましたが、周りの人から よろこばれます。なぜなんでしょう。
つまんないよ > 54=26
>>53 いや普通に間違えただけなんだが・・・まぁいいや。
わざわざ名前欄を 25 にしてあげるか? ご く ろ う さ ん
var ataribaken: TJra; if ataribaken in TJra then printf(おめでとう) else printf(たこ); このようなプログラムを作りましたが、ちっとも 私はおもしろくありません。なぜなんでしょう。
あなたが馬鹿だから。
やはり 鹿肉&馬肉はおいしいですよね。
がんばって続けてね。> 58 そのたさん。
62 :
デフォルトの名無しさん :02/12/03 21:04
バイナリエディタのソースキボン
>>63 >APATCHに詳しいプログラマーの皆さん
絶対にいないとだけ断言できる。
repeat 私 := 宝くじを買う。 until 私 = 当たる; このプログラムがいつまでも終わらないのです。 助けてください。
Apacheでした! ごめんなさい 手伝ってください!!
68 :
デフォルトの名無しさん :02/12/03 21:20
>>63 がご迷惑をおかけいたしました。
おわびいたします。
for i := 1 to n do 私 := 先物取引; 私はn:=0とおもっているのにに世間はnの値は不定といっている ざーます。これおかしくありません。
あんたの頭の方がよっぽどおかしい
ネ タ は そ こ ま で 次の質問どうぞ。 ↓
ネタってなんですか?
73 :
デフォルトの名無しさん :02/12/05 10:27
canvas.widthに40000を入れるとエラーになるのですが、 35000だと大丈夫ってことは、その間に限界があるってことですか? もしそうだとしたら、その値より大きな値をいれること はどうしてもできないのですか?
これがネタですか? CanvasにWidthなんてないよ。
プログラム歴 今から始めようと思う Delphiを始めようと思うんですけど、やっぱり書店などで Delphiの本を買った方が覚えるの早いですかね?
「Delphiを始めよう」ってところで先行きに不安を感じるが... 好きにできるコンピュータを持っているのなら、まず D6 Personal をインストールしちゃえば? .NET でも何でもいいけど。
もうインストール終わってちょっと触ってるところです。 別に本格的にアプリを作るんじゃなくて、趣味の範囲で出来るように なればいいな、と思ったのでDelphiを選んだわけですが、、、ダメ?
いいんじゃないの? >> 77 何が駄目かどうかは自分で決めることだし。
良い本ねぇ... お金があるなら、D6 Personal では無く Borland の製品を買って付属のマニュアルを 読む。ってのが最初かな。 あまり無いなら、図書館か古本屋で、バージョンは気にしなくてもよいから適当に解説書を 買って読む。 読み終わるころには、次に何を聞きたいか分かってくると思う。
で、やっぱり参考書は買うべき?
81 :
デフォルトの名無しさん :02/12/05 12:13
無くても出来る。情報は、恐らくほとんどWEBでも入手できる。 俺も自分に必要なツールを作るだけの趣味プログラマだが、本は一冊も持ってない。 が、DelphiはMSのVisualStudioに比べればドキュメントが弱い。
手元にあったほうが、落ち着くんじゃない? 参考書はあくまでも参考にしかならないわけだし。 79 の提案でよいと思う。
>>82 そうですか、では古本屋行って解説書探してきます。
もし、無かったときの場合に聞きたいんですけど
解説書の相場は3000円ぐらいかな?
近頃は解説書買わないから分からないよ... >> 83 amazon とか bk1 で検索して見れ。
85 :
デフォルトの名無しさん :02/12/05 13:40
>>「Delphiを始めよう」ってところで先行きに不安を感じるが... もしかしてもうデルファイの寿命が近づいてきているということでしょうか? ちと不安
いや、「Windows 始めます」とか「Word 始めました」ってのと似た、ちょっと変な、 しかし初心者にありがちの表記が気になったもんで... あなたが習得する間は大丈夫でしょうよ。
>>85 どんな言語でも習得するのは無駄にはならないと思われ。
最初の1つはひぃひぃ言うだろうけど、
次のはずいぶんラクになるはずだ。
Delphiが廃れることはあるだろうけれど、手元にあるパッケージが
いきなり消滅するわけじゃないからね。
まぁ、勉強すること自体が苦痛だっていうんなら論外なわけだが。
>まぁ、勉強すること自体が苦痛だっていうんなら論外なわけだが。 スレ違いw
禿同! > どんな言語でも うんそうだね。Delphi は現状のウィンドウズ開発環境中でも特にすすめたい
>>87 もうそっとしておいてあげなさいな。
誰だって、いやな勉強、嫌いな科目はあっただろ?
91 :
デフォルトの名無しさん :02/12/05 16:40
Delphiで、外部アプリケーションを起動する方法を教えてください。 Acrobatを起動し、PDFを見れるようにプログラムに組み込みたいのですが。 お願いします。
ホームページビルダー体験版を永久的に使う方法 ないですか? あったらおしえてくださいましぇ レジストリいじるんですか? もしもレジストリのいじり方知ってる人もいればうれしいです。 レジストリって適当にいじっちゃうと 「ただの箱」 なっちゃうし
ホームページビルダー体験版を永久的に使う方法 ないですか? あったらおしえてくださいましぇ レジストリいじるんですか? もしもレジストリのいじり方知ってる人もいればうれしいです。 レジストリって適当にいじっちゃうと 「ただの箱」 なっちゃうし(爆笑
ホームページビルダー体験版を永久的に使う方法 ないですか? あったらおしえてくださいましぇ レジストリいじるんですか? もしもレジストリのいじり方知ってる人もいればうれしいです。 レジストリって適当にいじっちゃうと 「ただの箱」 なっちゃうし(大爆笑
95 :
バグ作成マン :02/12/05 17:36
>>91 *.PDFファイルがAcrobat Readerに関連付けられていると仮定して、
usesで ShellAPIを宣言して
ShellExecute(Handle, 'open', 'c:\honyarara.pdf',
nil, 'c:\', SW_SHOW);
第一引数:フォームのハンドル
第二引数:'open'でファイルを開く。'print'なら印刷
第三引数:開くファイル名(PCharでくくる必要があるかも)
第四引数:実行ファイルのパラメータ(詳しくは忘れた)
第五引数:作業フォルダ名
第六引数:SW_SHOWでアプリケーションのウィンドウを標準の大きさで
実行。最小化とか最大化してアプリを起動する引数もあるけど、忘れた。
Delのエディタで候補が出て来るはずだから試してみて。
第三、第五パラメータは実際のファイル/フォルダ名を指定する必要がある。
Win32APIの仕様で、終端文字列にNullを付加する必要があるので、
本当ならば PChar('c:\honyarara.pdf') と書く必要があるかもしれない
(正確には忘れちまった)。特に決め打ちじゃなく変数にするならば必要。
第五パラメータはなくても動作するかもしれない。
わしも試してないところがあるので、一部不正確だがいろいろ試行錯誤
してみぃ。
あなたには以下の書籍を勧める。
秀和システム「Delphi3.1リファレンスガイド」小出俊夫 著
ISBN4-87966-785-4 C3055
ちとふるいが、現バージョンでも十分実用になります。
いま販売しているかどうかはわからん。ごめん
>>95 ここまで丁寧に教えていただけてありがとうございます。
しかも、お勧め書籍まで・・・。
色々調べてがんばってみます。
ありがとうございました。
> 本当ならば PChar('c:\honyarara.pdf') と書く必要があるかもしれない 大丈夫。文字列リテラルは PChar 互換です。
>ホームページビルダー体験版を永久的に使う方法 期限きたら、OSごと再インストールしたらいいんでないの
>>92 お前にはPCなんか要らん。
ただの箱で十分。
Treeviewの質問です A 親B 子B 親C 子C があって、クリックしたのNodeを知りたいのですが、 if Node.Lebel=1で親なのは分かります。 クリックしたのが、親Bか親Cが分かるにはどうしたらいいですか?
>>100 追加
名前は変わるので、Node.textではダメです。
>>100 Selected プロパティは,ツリービュー内の選択されているノードを返します。
property Selected: TTreeNode;
・・・TTreeViewのヘルプより
Parent プロパティはツリーノードの親ノードを識別します。
property Parent: TTreeNode;
・・・TTreeNodeのヘルプより
103 :
デフォルトの名無しさん :02/12/06 00:17
TObject,TComponent等のTっていったいなによ? ENantokaは、Exception IKantokaは、Interfaceだとは思うんですが。
Typeだよ。
非常にどうでもいいがTシャツを「てーしゃつ」と言うウチの祖父は許しがたい。
>>108 そのうちお前も孫からLとRの発音について文句を言われるぞ。
る と ぅるっ
なんすか、このスレ。マジレスきぼんぬ。
>>111 TypeのTです。
ちなみにFNantokaのFはFieldです。
あの〜ちょと質問させていただきますが・・・。 webサーバ上に置いたMP3ファイルをストリーミングで再生させる だけのソフト(もしくはコンポーネント)を作りたいんですが、 ローカルファイルを再生させるように簡単にできないものですかね。 urlを指定して再生するだけでいいんですが、なるべく外部のコンポー ネント等を使わない方法で。mediaplayerとかだけで出来ないものでし しょうか? どなかた教えてくらさい。
「ストリーミング」が目的なのかな? TMP3Player なら、TStream からの再生をサポートしているので実現可能かと。 ソースもあるし。 MediaPlayer を外部から操作する話は、MS の資料をあさるとでてくるんじゃないかな?
(´-`)。o ○ (113の質問、どっかで見たことあるなぁ…)
118 :
デフォルトの名無しさん :02/12/07 17:33
PageControl上で右クリックすると、ページの新規作成でページが追加できますが、 あれと同じ事をコードでやるにはどうすればいいのでしょうか?
>>118 初戦はコンテナなので新しいページCreateするとか隠してたのを表示するとか。
>>119 ありがとうございます。
ちょっとやってみます。
>>114 >>115 >>116 レスありがとうございますた。以前mediaplayerでどうしてもできなかった
はずなんですが、ファイル名に直接URL入れたらできますた・・;
環境が変わっているからか何なのか理由が分かりませんが・・・。
自分で作るのも試み見ましたがへタレな自分にはまだむずい・・。
TMP3Playerも使ってみましたが、動作が完全ではないようで、
ストリーミングが使えませんでした。
とりあえずMediaPlayerを使うことにしました。
どうもありがとうございました。大変参考になりました。
122 :
デフォルトの名無しさん :02/12/09 14:17
すいませんが教えて下さい。 TData=record a,b,c:integer; end; 〜 Data:array[0..10000] of TData; こんな感じの配列の時、dataのcだけを手続きなり、関数なりに渡すには どのようにすればいいのでしょうか?
↑まとめて渡すという意味です。
Data[index].c
まとめてなら、cのみの新たな動的配列を作って、それを関数等に渡します。
var A:array of integer; setlength(A,10000); としてCの内容をAに入れる。 procedure Shori(Arr: array of Integer); に Shori(A); として渡す。 ↑こんなんでおかしくないですか?
type DIntArray = array of Integer; procedure Proc1; var a: DIntArray; i: Integer; begin SetLength(a, High(Data) + 1); for i := 0 to High(Data) do a[i] := Data[i].c; Proc2(a); end; procedure Proc2(const a: DIntArray); begin end;
128 :
デフォルトの名無しさん :02/12/10 11:49
すいません、教えてください。 Delphi5 - BDE - ODBC - Oracle8i という環境でTQueryでSelect文をopenすると "レコードバッファ内のBLOBハンドルが無効です"というエラーが出てしまいます。 かなり懸命に調べたのですが、どうやら取ってくる文字列のサイズが256バイトを越えると発生するようで (そのテーブルにVARCHAR2(480) というカラムがあります)、 BDE Administratorで"BLOB SIZE" と"BLOB TO CATCHE"をデカすればいいと判りました。 しかしBLOB SIZE=1000 ,BLOB TO CATCH=65000 としても状況は変わりません。 "BLOB SIZE" と"BLOB TO CATCHE"はデータベースのエリアスと環境設定タブのOracle ODBCの両方にあったので どちらもデカくしたのですが・・・ Delphiは2年前にちょろっとやった言語なのに2人しかいない実装班を引き継がされて、しかも誰もわからないのです。 前任者もそんなエラーは出たこと無いししらない、と対応をイヤがるし・・・よかったら助けてください。
>>128 Ent版にしてdbExpressを使えば全て解決(w・・・いやマジで
あぁ。ODBC かぁ。 無理/無茶だなぁ...
SQL-Link / SQL Express または Oracle 接続用コンポーネントを探して くっつけたほうが幸せになれると思うよ。
>>129-131 返答ありがとうございます。
それは調べていく過程でなんとなくわかったのですが・・・
しかし既にリリースされて使用されているという状況ではもはやそこまでの変更はできないのです。
そして、私は既存のプログラムなら修正できるのですが、
新規にOracle接続部分を作る技術/時間もありません・・・
仮にひょひょいと作れたとしても特に数十本ある既存プログラムへの検証時間が無いのです。。。。
同じようなBLOBエラーはよく発生するようなので、ODBC以外でも同じ現象に合った方、なんでもいいのでヒントを頂けると幸いです。
>>128 のBDEの設定ではないのでしょうか・・・?
>>132 金をかけてよいのなら、2ch で聞かずに Borland のサポートに持っていったら?
あと。 いちおう、Delphi 5 の RTL と BDE が最新のものかどうか確認を。 D7 ENterprise Trial を落として、最新の BDE で動くかどうか確認するのもいいかもね。 D7 にはまだ BDE がついているぞ。
>>133 134
情報ありがとうございます。
金はもう掛けれません。赤字プロジェクトなんで。
しかもDB接続に関しては仕様がFIXされてるはずなので、クライアントにも出させられません。
BDEは最新にしてみました。RTLについてはD5の修正パッチを当ててみました。
でもダメでした。
>>135 確かにドンピシャですね。
しかしリンク先のスレッドにあるBLOB TO Catch の変更は
>>128 で書いたとおり実施済みなのです・・・
---
自分が調べた範囲だと、BDE はOracleからデータを取得する場合、VERCHAR でも256バイト以上のデータはBLOB型(メモ型)に変換して扱うようです。
・BLOB 型の使用可能なサイズについてはBDE Administrator エリアスの"BLOB SIZE"で設定
・BLOB 型を持つレコードを取り扱える(フェッチできる) 数については"BLOB TO CATCH"で設定
のはずなのですが、この2つを十二分なほど大きく取っても"レコードバッファ内のBLOBハンドルが無効です"と出てしまうのです。
なぜだ・・・
Borland Delphi Q&A:
http://www.borland.co.jp/qanda/delphi/d0003091.html
あ、ごめんなさいあげるのはナシですか?
138 :
デフォルトの名無しさん :02/12/10 16:13
.,, \ヽ--___ \ 丶---ヽ___ .゙\ ク ~~> クソスレに認定されました \ ソ / .\ ノ \ / .\/ .\ \ .\ ,,\ .″ ゙》 __., イ,, 》li,_ ill! i;l;lllllz,lll;lllllll;lllllly .:llllllll;llllllllllll;;ll;||llllllllll} .il||l|lllllllllllllll|《lllll|lly《アlz .、 zz,、 ._ノレ;llllllll|;llllllliilllllllllllllllllllllyuyll;ミミ″ .''゙゙∨ 」lllllllllllllllllllllllllllllllllllllllllll ゙巛,厶yyv》llll! {lllllllll厂lllllllll|》lllllllllllllllly、 ,illllllllllllllllli;;ll|y .、.,,_ 《;|《llllll;lllli;llllllll;|lllllllllllllllllll|lli. .zllllllll;《lll|《lllllllllllllllizy,lllz. _yyyyr|》 ,u,,_ .rlllllllllllllllllllllllllllllll厂リllllリlll!,」llllll「リll;lllllll;;llllllllllllllllllll;||lllllllllllllll;lllllllll l;lll;l;yu.,,lllz:.;..:villlllllllllllllllllll|》llllllll| uilllll|illlllノ|ll|゙」zyllllll;ll|;lllllllllll;l|リllllllllllll;llllllllllllllllllll lll|!illlllllllll|ll|i;llllllllllllllllllllllllllllilllllllllllllllllllllllllllllll|lllll|,|lllllllllllllll|》;ll《|「.vuilllll|《liiilll|フ《llllllll lllllllllllllllllllllllll|《lllllllllll;;llllllllllllllll;llllllllllllllllllllll|)|《;lllllllllllllllllllllllllllllllll;lll;lllll;》([;llllllllllllllllllll
>>139 返答ありがとうございます。
BDE で既存のエリアスを変更するのではなく、
一度BDE 環境設定タブのODBC にある「Oracle ODBC Driver」"BLOB SIZE" = 64 " BLOB TO CATCH" =500
にしてから既存エリアスを削除/再作成、PC再起動をすると、
デフォルトでODBC のBLOB 設定("BLOB SIZE" = 64 " BLOB TO CATCH" =500) が反映されたエリアスが作成されました。
これは!?と期待したのですが、やはりアプリを動かすと同様のBLOB エラーが・・・
残念。
>アゲられると荒らされるんよ。2ch 初心者?
そうですか、すぐ荒らされるのですね。
2chはよく見るのですが、プログラム技術板はあまり見なかったので・・・
141 :
デフォルトの名無しさん :02/12/10 17:21
>アゲられると荒らされるんよ。2ch 初心者? こんなこと書くからageられるんよ。以下同文。
ageるのは最初の質問とか用のあるときだけにして 続きはsage進行
>>141 ほいほい。せいぜいがんばって > アゲ嵐初心者君よ。
144 :
デフォルトの名無しさん :02/12/11 22:10
Delphiってどういった経緯があって、大文字小文字認識しねーの? おせーてダーリン♥
大文字小文字を区別する言語の方が珍しかった (Pascal誕生当時)
>>144 Pascalからの伝統だニャ・・・歴史の重みニャのだ
逆に、C系が大文字小文字を区別するのはUNIXも含めた伝統だニャ
でもファイル名の大文字小文字を区別しニャいDOS/Windowsの世界では
あまり必然性のニャい仕様ニャのだニャ
147 :
デフォルトの名無しさん :02/12/12 00:27
Del7 付属の Kylix (pascal版)使って商用ソフト作れますか? GPL にしないとダメ?
坊乱怒に聞けよ
>>147 それらしい文書を隅から隅までズズ、ズイーと読んでからまた来い。
>>147 ライセンス関係はライセンス所有者に確認を取るのが基本。
2ch の匿名情報を信じるのであれば、何を信じても同じ。つーか責任取れないだろ?
FormCreateに、いろいろ書くと起動が遅くなるが、 FormShowだと問題ない、というふうに思っているのですが なにか間違ってます?
154 :
デフォルトの名無しさん :02/12/12 14:19
質問デシ。 チューチューマウスみたく親に関係なくMessageBoxが表示された際に動作 するアプリを作りたいのですが、あれは一体どんなメッセージを取得?or フックすればいいのでしょうか?
OS の DefDialogProc の横取りじゃなかったカナ?
配列でHigh関数Low関数を使うみたいな感じで TListではどのようにするのですか? var List:TList 〜 List[high(list.count)] とやると21億くらいになっちゃうし・・・・。
count
あぁ、Count は分かっているのか。 TList は 0 .. Count - 1 まで。Low は固定。 High( list.count ) だと、Count の型である Integer 型の上限値が取れてしまうよ。
159 :
デフォルトの名無しさん :02/12/12 16:16
Delphi5のscktsrvr.exeよりかしこいソケットアプリって無いですか? またDelphi6ではこのプログラムはVerupしているのでしょうか
>>158 早速ありがとうございます。
そんなに簡単だったとは・・・・。ずいぶん悩みましたが解決しました。
ありがとうございました。
DelWikiにライセンス周りのFAQが必要棚。
>>162 Demos & Examples の下に有るわけではないので、サンプルアプリではないすよ。
>>159 は sato さん?須磨さん?
Dual CPU ってことない?
166 :
デフォルトの名無しさん :02/12/12 17:31
Editをクリックするとビープ音が鳴っちゃいますけど 鳴らないようにするにはどうすればいいですか?
167 :
デフォルトの名無しさん :02/12/12 17:34
クリックじゃなかった。Enter押したらでした。すいません。
169 :
デフォルトの名無しさん :02/12/12 18:02
フォームの最小化と最大化のボタンを非表示にする方法がわかりません。 (最大化と最小化時のフォームサイズを固定にする方法はわかったのですが・・・)
どなたか知っている方がおりましたら、よろしくお願いします。
TForm.BorderIcons
ありがとうございました! さっそく調べて試してみたいと思います。
174 :
デフォルトの名無しさん :02/12/12 19:02
普通にメモ帳もどき作ったんですけど、サイズは500kbを超えるんですけど何でなんでしょう? メモ帳実際50kbしかないのに。delphiでつくるとこれが普通なんですか? それとも作り方が悪いの?
ListBoxで各アイテムごとに、フォントの色を変えたいのですが カラープロパティを変えると全てのアイテムの色が変わってしまったりで うまくいきません。どなたか教えてください。
176 :
デフォルトの名無しさん :02/12/12 19:07
>>174 普通。そういうものだと割り切ることが大切。
サイズ問題は、Delphi1の頃から言われ続けてきたことだ。
気にしないのがよっすぃ〜。
177 :
デフォルトの名無しさん :02/12/12 19:08
>>174 VCL使うとそんなもん。
小さくしたけりゃAPIたたけ。
178 :
デフォルトの名無しさん :02/12/12 19:10
>>175 オーナードローを使って自前で項目を描画する。
OnDrawItemあたり参照。
須磨です。ばれました。 dualcpuです。dualだとまずいのですか?scktsrvr.exeって。 DELPHI5に付属のやつですが。
181 :
デフォルトの名無しさん :02/12/12 21:35
DELPHI6 PERSONALでMemoコンポーネントの文字列を URLエンコードしたいのですが plaza11.mbn.or.jp/~pz/delphi/vcl.html ↑ ここにあるTPzConvを使ってURLエンコードすると 改行や「&」などが正しく変換されません・・ どうしたらちゃんと「改行」が「%OD%OA」に、「&」が「%26」 変換されるように出来るでしょうか。 もし解る方がいらっ しゃいましたらご教授宜しくお願い致します。m(__;)m
須磨です。間違えました。159です。
184 :
デフォルトの名無しさん :02/12/12 22:11
>>181 これとかどうかな?
InternetCanonicalizeURL
>>184 Memoコンポーネントの改行を変換してくれないと
いけないのでこれではダメなのではないでしょうか..(汗
でもレスありがとうございました〜
186 :
デフォルトの名無しさん :02/12/12 22:56
と思ったけど、 InternetCanonicalizeURL じゃだめだった。ごめんね。
187 :
デフォルトの名無しさん :02/12/12 23:51
コンソールアプリケーション練習したいんですけど 結果が早すぎて見えないんです。すぐに終了してウインドウが 閉じてしまうんですけどキー入力するまでウインドウ閉じない ようにするにはどうしたらいいですかね? Delphiと直接関係ない質問の気がしますがよろしくおねがいします。
>>187 最後に、Readln(s); を入れておく。
189 :
デフォルトの名無しさん :02/12/13 00:04
>>188 そういうことしない限り無理なんですかね?やっぱり
とりあえずありがとう。
190 :
デフォルトの名無しさん :02/12/13 00:33
void addone(void){ static int x=0; x=x+1; return ; } みたいなことをdelphiでしたいんですけどできないですか? staticって無いですよね?
・クラスにする Txx = class fX: Integer; procedure addone; end; procedure Txx.addone; begin fX:=fX+1; end; ・ユニット内変数 var addone_x: Integer; procedure addone; begin addone_x:=addone_x+1; end; ・トリック procedure addone; {$J+}const x: Integer = 0;{$J-} begin x:=x+1; end;
implementation節の変数が、まあ代わりみたいなもんです。 スコープを超える寿命の変数が存在しないのは明快と言えなくもない。 どうしてもスコープを同じにしたいなら、constで宣言して、 型付き定数への代入を許可するオプションを付けてコンパイル。
>>159 あたり
D6 初期版だと、スレッド周りにバグが有って Dual CPU だと確実に吹き飛ぶ。
けど D5 なんだっけ?別の話しかなぁ?
私のところでは、社内データ管理システムとして Midas/ソケットサーバーの組み合わせで
半年以上ノンストップで動かしていた経験があります。同時 50 人くらいで、一つのデータパケットの
大きさは 10K から 1M 程度までさまざま。
ソケットサーバーが止まってしまう。という環境でデバッグしてみるのが早いと思いますが。
まずは、ScktSrvr.exe に対してタスクマネージャで CPU の割り当てを一つにして
具合を見てみては?
あと、あたりまえですが、ソケットサーバーを使わずに動かした場合に、止まらずに動きますか?
クライアントとサーバーソフトを同一マシンにおき、ソケット接続ではなく COM 接続にして
試してみたら?(DCOM では無く)
>>159 あたり
D6 初期版だと、スレッド周りにバグが有って Dual CPU だと確実に吹き飛ぶ。
けど D5 なんだっけ?別の話しかなぁ?
私のところでは、社内データ管理システムとして Midas/ソケットサーバーの組み合わせで
半年以上ノンストップで動かしていた経験があります。同時 50 人くらいで、一つのデータパケットの
大きさは 10K から 1M 程度までさまざま。
ソケットサーバーが止まってしまう。という環境でデバッグしてみるのが早いと思いますが。
まずは、ScktSrvr.exe に対してタスクマネージャで CPU の割り当てを一つにして
具合を見てみては?
あと、あたりまえですが、ソケットサーバーを使わずに動かした場合に、止まらずに動きますか?
クライアントとサーバーソフトを同一マシンにおき、ソケット接続ではなく COM 接続にして
試してみたら?(DCOM では無く)
... なんか、2ch の調子が悪いというか、反応が遅い ..
Abone使い?
>190 コンパイラオプション {$J+} で、型付き定数使えばいいんじゃないか? procedure addone; var const x:Integer = 0; begin x := x + 1; end; で。
198 :
デフォルトの名無しさん :02/12/13 13:06
パーソナルでグラフ使う場合は ペイントボックスあたりに描画するとかシェープを利用したりするしか無いのでしょうか? フリーでコンポーネントがあれば良いのですが無いですよねぇ。
>>198 探す前からそう言っているのならお前はアホだ。
200 :
デフォルトの名無しさん :02/12/13 13:18
いや探しても見つからないから聞いてるの(^_^;
202 :
デフォルトの名無しさん :02/12/13 13:26
中古のPro6を買うというのもありかも・
真剣にDelphiを勉強したいと思います。 今、いろいろなHPを参考にしてサンプルプログラムを組んで理解を深めています。 もうそろそろ本がほしいと思っていますがいい本を3冊ほど推薦していただけないでしょうか。
>>203 ない。
フサスレも覗いてみればわかるが、バイブルまでまともな本は一冊も無いのがdelの現状
>>203 正直、ヘルプとAPIガイドが最大のごちそう。がんばれ。
207 :
デフォルトの名無しさん :02/12/13 21:03
質問があります。 WinInetを使ってインターネットアプリケーションを書いているのですが、 WinInetで取得したHTMLをTWebBrowserに表示するのに、 TWebBrowser.OleObject.document.writeを考えていたのですが、 これはJavaScriptなので、JavaScriptが無効になっている環境では動作しません。 JavaScriptを使わずに、取得したHTMLをTWebBrowserに表示する方法ってありますか?
>>207 テンポラリファイルにしてそれ読むとか。
209 :
デフォルトの名無しさん :02/12/13 21:09
delphiで、 .... for(int i = 0; i < 10; i+=2) { // loop } みたいに、 ループ変数を任意回インクリメントしたいんだけど、 var i: Integer; begin for i := 0 to 10 do begin // loop end; end; では、1しかインクリメントされませんし、loopのブロック内で Inc(i);とか書くと、コンパイルエラーになります。 for文ではできないのでしょうか?
>>209 まぁ、こんな感じじゃないの?
for i := 0 to EndValue div 2 do
begin
a := i * 2;
end;
D7アカデミックパック買っちゃいますた。
D7ってPersonalでも銭取るんだ・・・。
>>211 ありがとうございました。
おかげで解決しました。
D6だけ取らなかったが正解。 マニュアル付有償版もあったと思うが。
うーん、定番がないんですかー。 えと、APIガイドというのはなにを指しているのでしょうか? ぐぐったんですが、これというのがわかりませぬ。
>>217 ありがとん、見つかったよ。
・・・あ゛、これ英語のままなんだね・・・。
みなさんこれ読んで頑張ってるんですか???
ううう、これは手厳しいですなぁ。
なんとか読みまする。
>>218 C++Builderには日本語版があったり。
でも、両者読み比べても同じこと書いてあるなと高校生の俺は思った。
情報さんくすこ。 ただ、少しでも理解しやすいほうがありがたいので日本語版がいいと 十年前高校生だった漏れは思った。
下記のような書き方がコンパイル通るんですが、これって正しいのですか? 長年使ってて初めて気づいたんですが、引数の省略可能って仕様だったのですか? Delphi6 UpdatePack2です。
program test; {$APPTYPE CONSOLE} uses SysUtils, Unit1 in 'Unit1.pas'; var ATest: TTest; begin ATest := TTest.Create(10); try ATest.Test(23); finally ATest.Free; end; Writeln(Eoln); end.
225 :
デフォルトの名無しさん :02/12/14 08:56
unit Unit1; interface type TTest = class public constructor Create(AValue: Integer); procedure Test(AValue: Integer); end; implementation constructor TTest.Create; begin Writeln('Create'); end; procedure TTest.Test; begin Writeln('Test'); end; end.
226 :
デフォルトの名無しさん :02/12/14 09:18
ヘルプに書いてありますた。 > 定義宣言のヘッダーには,クラス宣言で指定したパラメータリストを > 再度指定してもかまいませんが,その場合は,パラメータの順序, > 型,および名前をクラス宣言での指定と完全に同じにしなければなりません。 引数は指定しなくてもかまわないのかー。しらなかったー。 constructor TTest.Create; begin Writeln(AValue); end; なんて出来るし…。気持ち悪(´д`;)
これがコンパイル通って、 unit Unit1; interface type TBaseTest = class public constructor Create(AValue: Integer); virtual; end; TTest = class(TBaseTest) public constructor Create(AValue: Integer); override; end; implementation constructor TBaseTest.Create(AValue: Integer); begin Writeln('TBaseTest.Create(AValue) ', AValue); end; constructor TTest.Create; begin inherited; Writeln('TTest.Create(AValue) ', AValue); end; --実行結果 TBaseTest.Create(AValue) 10 TTest.Create(AValue) 10
これはコンパイル通らないんですね(´д`;) unit Unit1; interface type TBaseTest = class public constructor Create(AValue: Integer); overload; virtual; constructor Create; overload; virtual; end; TTest = class(TBaseTest) public constructor Create(AValue: Integer); override; end; implementation constructor TBaseTest.Create(AValue: Integer); begin Writeln('TBaseTest.Create(AValue) ', AValue); end; constructor TBaseTest.Create; begin Writeln('TBaseTest.Create'); end; constructor TTest.Create; begin inherited; Writeln('TTest.Create(AValue) ', AValue); end;
キャストについて質問なのですが、 var Buffer:array[0..2] of Char; s:String; begin Buffer[0]='A'; Buffer[1]='B'; Buffer[2]='C'; s:=Buffer; @ または s:=String(Buffer); A end; この場合、@やAのようにsへ代入するのは正しいのでしょうか? それとも、ちゃんとBufferの最後にヌル文字を追加してから代入しなければいけないのでしょうか?
>218 APIヘルプの日本語版なら、CDの中に入ってるよ。 Info->Extras->JPHELP->API32WH.HLP 古いので不便なところもあるけど。
>>230 そうですか。
疑問に思った理由は「Delphi4プログラミングバイブル」のp979に
strRead:=strRead + string(Buffer);
(strRead はString型、Bufferは添え字0から始まるChar型の配列)
というコードがあるのですが、このBufferも最後のヌルをつけていません。
厳密に正しいのかどうか、気になったので。
>>232 調べてないけどObjectPascalがメモリ確保時に配列を0で初期化しているなら動いてしまう。
でも、それに頼りすぎるのはあまりよくないと思われるので$0はつけるべきかと。
ちゃんと書かなかったから悪いのですが、Buffer(Char型の配列)は最初の添え字から最後の添え字まで全部文字データで埋まっています。 つまり、配列のために確保したメモリの中にはヌルの部分がないんです。 なのに string(Buffer)とキャストするのは正しいかどうかちょっと気になりました。
>>234 配列の長さが取得できない以上、各種文字列変換関数で死にます。
High(Buffer) Length(Buffer)
>>236 じゃあ。安心だね♪
まぁ、激しく非推奨。
>>232 正しい筈です。配列のサイズが上限として、途中に#0があるまでのサイズになります。
system . _LStrFromArray を読むとよいでしょう
「デバッグ版DCUを使う」でじっくり納得いくまで確認しる!!
>>230 × ヌル文字=#0 は配列の場合不要です。
>>233 × メモリ確保時は不定です。しかし配列の場合 #0は不要です
>>235 × Cと違ってDelphiは配列のサイズ情報は関数でも渡されます
>>240 思い出した。確か余計な空白まで取り込んじゃう困ったちゃんな仕様だ。
まとめ 1、String := PChar ; //ヌル迄の文字に自動調整 2、String :=array of Char ; //配列サイズかヌル迄の文字に自動調整 3、PChar := string ; //stringには終端にヌル文字が隠れている。 4、array of Char:=String ;×代入互換性無し
×メモリ確保時は不定です。しかし配列の場合 #0は不要です ○関数のローカル変数は基本的にメモリ確保時は不定,自動的に値0で埋められる事はない。 それとは別に、CHAR配列の要素全てに文字が入っているなら最後に#0でターミネートしなくとも良い CHAR配列の途中で文字列を終りたいなら #0でターミネートすれば良い。
フォーカスを移さずして他のアプリケーションにテキストを 送りたいのですがいい方法ありませんか?
>>246 パイプ WIndowsメッセージ Socket OLE etcetc
248 :
デフォルトの名無しさん :02/12/14 17:14
検索ダイアログにいれた文字列をMemo1の中から検索して選択するプログラム としてdelphiのヘルプに載っていたんですけど、下の関数の SkipChars:=SkipChars+(I*2)が何をしているのか全然わからないんですが 誰かおしえてくれませんか? procedure TForm1.FindDialog1Find(Sender: TObject); var I, J, PosReturn, SkipChars: Integer; begin for I := 0 to Memo1.Lines.Count do begin PosReturn := Pos(FindDialog1.FindText,Memo1.Lines[I]); if PosReturn <> 0 then {検索文字列が一致} begin SkipChars := 0; for J := 0 to I - 1 do SkipChars := SkipChars + Length(Memo1.Lines[J]); SkipChars := SkipChars + (I*2); SkipChars := SkipChars + PosReturn - 1; Memo1.SetFocus; Memo1.SelStart := SkipChars; Memo1.SelLength := Length(FindDialog1.FindText); Break; end; end; end;
250 :
デフォルトの名無しさん :02/12/14 17:25
>>249 すいません。意味がわからないです。
どういうことですか?
251 :
デフォルトの名無しさん :02/12/14 17:28
for文中の、SkipChars:=SKipChars+Length(Memo1.Lines[J] で検索したい単語を含む文字列までの全文字数を数えて、 SkipChars+PosReturn-1でその単語の先頭までの文字数を 加えていますよね。これだけで検索できてしまう気がするのですが
>>222 これ中身は英語版ですか?日本語版はありますか?
ググるってどういう意味ですか?Googleで検索してもわからなかったので教えてください!お願いします!
>>254 シャアが乗るナギナタみたいのを持った赤いヤツだよ。
>>255 甘いな。俺が言いたかったのはシーマ様が愛用してた方だよ。
>>257 言語の差がプログラム戦の決定的な差ではないことを教えてやろう。
end;
ごめんよprocedure、僕にはまだ返すべき値があるんだ。。。。
throwしたね!親クラスにもthrowされたこと無いのに!
261 :
デフォルトの名無しさん :02/12/15 00:16
TreeView のスクロールバーを独自に描画することはできますか
引数少ないよ!何やってんの!
pchar「charとは違うのだよ!charとは!」
ここはガンスレ・・・・?
口が酸っぱくなるほど「出来る?or出来ない?」は聞くなと言ったのに…。
>>266 まぁ、質問がまとまってない証拠。暖かく、「答えた。さぁ帰れ。」と声援を送ってあげましょう。
TreeView のスクロールバーを独自に描画する方法を教えてください
> TreeView のスクロールバーを独自に描画する方法を教えてください まず、何をしたいのかを教えてください。 それによって答えが違います。
270 :
◆1r.KyudaiQ :02/12/15 21:28
方程式x^3-3x-2=0を二分法で解いて、その収束の速さを調べるプログラムを作ってるんですが 正しい解が出ません。どこが悪いのか教えてください。 program Nibunhou; {$APPTYPE CONSOLE} uses SysUtils; const delta=9E-16; function f(x:real):real; begin f:=x*x*x-3*x-2; end; //fの定義 function nibun(var lk,uk:real):real; var m:real; begin m:=(lk+uk)/2; if f(m)>0 then lk:=m; if f(m)<0 then uk:=m; end; //二分法の解法 var lk,uk,ans:real; count:integer; begin writeln('回数 lk f(lk) abs(ans-lk)'); count:=0; ans:=2; lk:=1; uk:=3; writeln(count:3,' ',lk:16,' ',f(lk):16,' ',abs(ans-lk):16); while (abs(f(lk))>delta) do begin nibun(lk,uk); count:=count+1; writeln(count:3,' ',lk:16,' ',f(lk):16,' ',abs(ans-lk):16); end; readln end.
x = 2が方程式の解なのに、 初期値ですでに中点がぴったし解になってますね。 それで関数nibunのなかでは <と>しか条件がないから ぴったり解だったときには条件がに当てはまらずにスルーされます。 んでいつまでも値が変わらないので延々と動き続けます。 それと、下のほうのwhileは abs(lk-uk) > delta だと思うのですが。
>>271 uk:=3.0; を uk:=3.1に、
(abs(f(lk))>delta) を (abs(lk-uk)>delta) abs(lk-uk)に;
直してみたんですがどうも3.1に収束してたみたいなんです。
それで
if f(m)>0 then lk:=m;
if f(m)<0 then uk:=m;の条件見直してみたら
if f(m)<0 then lk:=m;
if f(m)>0 then uk:=m;
の間違いでした。これで何とか先に進めそうです。
どうもありがとうございました。
>>269 TreeView に表示されるスクロールバーの描画メッセージを横取りして、
独自のスタイルでオーナードローしたいのです。
「スクロールバーの描画メッセージ」というのはありません。 スクロールバーは、ユーザーからの入力専用UIです。そして 取り付けられているコントロールに WM_VSCROLL/WM_HSCROLL メッセージを送ります。このメッセージを受けとってどのように そのコントロールをスクロール/描画するのかは、そのコントロールの ウィンドウ関数で制御します。
>>274 なるほど・・・
すると、TCustomTreeView を継承して作成する場合は、
WM_NCCALCSIZE を受けて、ShowScrollBar API でデフォルトの
スクロールバーを消し、WM_PAINT あたりで独自スクロールバーを
描画するくらいしか方法はなさそうですね。
そうすると WM_VSCROLL/WM_HSCROLL が発行されないとおもうので、
なんか大変そうです・・・。
>スクロールバーを消し、WM_PAINT あたりで独自スクロールバーを >描画するくらいしか方法はなさそうですね。 スクロールバーコントロールを使う、ということも考えられます
>スクロールバーを消し、WM_PAINT あたりで独自スクロールバーを >描画するくらいしか方法はなさそうですね。 スクロールバーコントロールを使う、ということも考えられます
二重カキコ、スマソ
二重カキコ、スマソ
でも、なんか、OwnerDraw や CustomDraw でカスタマイズするのに、 スクロールまで制御する必要があるなら、TCustomControl あたりから 派生して、一からつくった方が簡単そうに思われ
どっかに一からつくったツリービューがあったなあ。 あれだ!Delphi7についてくるXPスタイルのやつを作ったところだ。
>>279 さっさとABONE ベータ6にしなさいな。
テキストファイルをStringGridに読み込ませたいのですが、 1MBぐらいあるファイルを読み込ませようとすると、 フリーズしたを思ってしまうぐらいに時間がかかってしまいます。 それで色々検索してみて、遅延読み込みという方法があるのがわかりましたが、 そののサンプルが見つかりませんでした。 どなたか遅延読込について詳しく書かれているサイト等がありましたら教えてください。
どう読み込ませたいのか書け
286 :
デフォルトの名無しさん :02/12/16 04:31
古っ RowSelect
ハイル!デルファイ! ハイル!デルファイ! ハイル!デルファイ!
出るファイは打たれる
>>284 そんなものいくら探したって無いだろう。
1MB程度のテキストなら うちの450MHzCPUマシンでも2秒以内で処理できる
StringGrid は様々なオブジェクトを内部生成しているせいか、読み込むサイズに比べて消費メモリが大きい。 (ようするにメモリが足りなきゃスワップが起きて遅い) ColCount と RowCount を行を読むたびに1ずつ増やすと当然遅い。 (まとめて増やせということ) 後は SendMessage(Handle, WM_SETREDRAW, 0, 0) で書き込み時の書き換えを止めておけぐらいかな。
293 :
デフォルトの名無しさん :02/12/16 11:16
最近delphiをはじめたのですが、 TdfsExtListView & TdfsEnhListView v3.70 と UIWebBrowser このコンポーネントをD7Proで使いたいのですがコンパイルエラーで困っています。 これは使えないのでしょうか? いろいろがんばってはいるんですけれどどうでしょ?
>>294 レスありがとうございます。
対応するまで待ちつうもう少しがんばってみます。
ただTdfsExtListView & TdfsEnhListView v3.70の方は
D6parsonalでもコンパイルできなかったんで、
自分のやり方が悪かったのかもしれません。
どうも ありがとう。
>>293-295 TdfsExtListView & TdfsEnhListView は、元ネタが
ttp:/www.delphifreestuff.com/ にあるけど、このHP閉じたみたいですね。
したがって、D7以降に対応した更新は期待できないと思います。
漏れもこのコンポ群好きで使っていたけれども、別のものにリプレース
し始めています。
よかったら、コンパイル時にどんなエラーが発生したかを記述して
いただければ何らかの回答が得られるかもしれません。
D5までしか持ってないので、どんぴしゃの答えが多分できない。
漏れの天敵のネコ
>>294 か誰かが答えてくれるかもしれないし、ヒント
くらい書けるかもしれないです。
297 :
デフォルトの名無しさん :02/12/16 17:51
OpenGLのGLUTのヘッダはどこにありますか? クレクレ君でごめんなさい OpenGL1.2のヘッダは見つかってポリゴンとかやっと出せたのですが 色々調べているうちにGLUTというものを使えば便利だと知りました よろしくお願いします
>>296 どうもありがとうございます。
もう少しやってみて、まとめてからうpさせていただきます。
そのときはヨロシクお願いします。
TdfsListView は,出た当時は良かったのですが, 今となっては普通の TListView を OwnerData で使うのと変わらないです. むしろこっちのほうが楽です.
すみません。 いつもUnit1がでかくなっちゃうんですが・・・ 8000行超えちゃいました。どうしましょ。 (´Д`;)ヾ ∨) ((
>>285 先にちょろっと読み込んでセルに書き込み、
残りをバックグラウンドで継ぎ足していくように読み込んでいきたいのです。
>>291 そんなに早いのですか。
今の読み込む際の処理が悪すぎるのかな?
>>292 詳しく書いていただいてありがとうございます。
書かれた事を参考にしながら頑張ってみたいと思います。
>>300 オブジェクト指向プログラミングをするようにしろ。
Unit2でForm1.hogeってやるんでしょうか? (´Д`;)ヾ ∨) ((
>>302 アフォ? Delphiはオブジェクト指向対応なんだから
Delphiで作ればオブジェクト指向になるだろ。
ネタでした
308 :
デフォルトの名無しさん :02/12/16 22:21
>>307 じゃあ君はアホ丸出しだ。
program afodesuka;
begin
writeln('am I OO?');
end.
で、どこがオブジェクト指向?
>>303 Unit1でSomeClass.Hogeとか(SomeClassはUnit2で定義)
>>307 ・・・
>>308 そんなめったに無い例を出してOOじゃないなんて結論付けるのを
詭弁というんですよ。
>>312 厨房の無理な論理とか言うリストにあったな。そのまんまなセリフ。
314 :
デフォルトの名無しさん :02/12/16 22:40
>>312 >Delphiで作ればオブジェクト指向になるだろ。
一切の例外はないと言っているようにしか見えないが。
>OOじゃないなんて結論付けるのを
言ってない。あなたの言っていることは間違いだと言うことを証明したまで。
>>312 8000行を超えるプログラムなら
その中の機能をいくつかのクラスに分類できるだろうから
それらのクラスをそれぞれ独立したUnitに書けばいい
といのが302の言い分だと思われ
意図的にこうしないでただDelphiを使うだけでは
こういった書き方にならないということでしょ
あのーそんなのどうでもいいんですが・・・
>>309 じゃ分かりません。やさしく教えてください。
(´Д`;)ヾ
∨)
((
318 :
デフォルトの名無しさん :02/12/16 22:48
>>315 >アフォ? Delphiはオブジェクト指向対応なんだから
>Delphiで作ればオブジェクト指向になるだろ。
あなたが感じている意図は一切無いと思われ。
Javaとかなら一理あるがDelphiでそれ言う奴はアホだろう。
319 :
デフォルトの名無しさん :02/12/16 22:52
>>318 >アフォ? Delphiはオブジェクト指向対応なんだから
>Delphiで作ればオブジェクト指向になるだろ
それは302じゃなくて304だよん
漏れのことで喧嘩するのはやめてください・・
>>315 >その中の機能をいくつかのクラスに分類できるだろうから
>それらのクラスをそれぞれ独立したUnitに書けばいい
一連のスレ違いなやりとりを、
別スレに移すということでいいでしょうか。
(´Д`;)ヾ
∨)
((
8000行程度どうってことないだろ 30000行越えたら来い
ExtlistView.pas FColumnsFormatChangeLink: TChangeLink; (722) 未確定の識別子 uses節にimglist.pasを加えるとOKになる 次に "DsgnIntf" を "DesignIntf,DesignEditors" に変更しておく function TCustomExtListView.GetStateImages: {$IFDEF DFS_COMPILER_4_UP} TCustomImageList; {$ELSE} TImageList; {$ENDIF} begin Result := inherited StateImages; //エラー2700行目あたり end; [エラー] ExtListView.pas(2701): 'TImageList' と 'TCustomImageList' には互換性がありません [致命的エラー] EnhListView.pas(565): 'ExtListView' ユニットはコンパイルできませんでした FnhlistView.pas {$IFDEF DFS_COMPILER_5_UP} State := TOwnerDrawState(LongRec(itemState).Lo); {$ELSE} State := TOwnerDrawState(WordRec(LongRec(itemState).Lo).Lo);//エラー(1452行目あたり) 正しくないキャスト -= function TCustomEnhListView.GetSmallImages: {$IFDEF DFS_COMPILER_4_UP} TCustomImageList {$ELSE} TImageList {$ENDIF}; begin Result := inherited SmallImages; end; [エラー] EnhListView.pas(2303): 'TImageList' と 'TCustomImageList' には互換性がありません -= この3つ以外は出来たのですがこれがわかりませんでした。 どうかコンパイルできますようお願いします。
DFS.INC が古いだけと違うんですか?
作成元がつぶれちゃっているんなら、ソースだしちゃいなよ。 D7 用に書き換えて返してあげるよ。 修正点をまとめてネタにもできるし。
ゴソゴソ... dfs.txt 2000/7/9 dfs.inc 2000/6/22 ってのを見つけてきたけど、これが手持ちのものかい > 324
んー、見つけたのは ver 3.71 だな。 最新は 3.72 のようで。 大差ないと思うから 3.71 でやってみるかい?
どうも皆さんお騒がせしてすみません
>>325 elv.txt 2001/6/27
dfs.inc 20001/6/27
いろいろ出回っているTdfsExtListView & TdfsEnhListViewの中では
一番新しいのを使っていると思います。。
>>326 いまのソースはこれです。
TdfsExtListView & TdfsEnhListView v3.72
http://www.torry.net/vcl/lvtv/enhancedlistviews/extlistv.zip 遅くなりすみませんでした。
なんに使うかとか別に決まってないんですけれど、
Delphi関連の過去ログ見ていると結構いいと書き込みを見つけたのが最初でした。
ちょっと最近は意地になってきててわざわざD7proまで買ってしまったんですけど、
かなーりもったいなかったです。
ソースは extlistv.zip で検索すれば見つかる
>>327 探してもらってありがとうございます。
もうコンパイルできればOKでし。
332 :
デフォルトの名無しさん :02/12/17 10:29
type StringArray = array of string のようなものを定義してあるユニットってないですか? array of stringを返す関数を作る場合、普通何型を使うのでしょう?
>>325 >325 :ねこま :02/12/17 03:46
>DFS.INC が古いだけと違うんですか?
DFS.INC に D7 用の定義が無いだけでした。
>>332 型は自分で定義するものだと思うが?
type StringArray = array of string;
で定義した StringArray を使って
function foo : StringArray;
で動くでしょ?
>>332 TStringsを引数にして、それに入れて戻るというのをよく書く。
338 :
デフォルトの名無しさん :02/12/17 14:52
6perにはtypes.dcuしかないのでなにがなんだかわからないよ。 せめてtypes.intつけて欲しい・・・
>>338 いや、だから型は自分で定義するんだってば。
システム組込型以外は自分でどんどん型定義。
アルゴリズム + データ構造 がプログラム。
プログラム=オブジェクツ
>>336 今帰ってきたんですが、
あんまり早いんでびっくりしています。
これからまた出かけるので夜、帰ってきたら
落としてきてコンパイルします。
どうもありがとうございます。
>どうもありがとうございます。 お礼はいいっすよ。 その代わりに、たいした変更では無いから何が変わったのか理解して自分の物にしてください。
一番メジャーなタスクトレイ常駐コンポーネントはどれですか?
TIntegerDynArrayをヘルプで見ると・・・
345 :
デフォルトの名無しさん :02/12/17 21:12
>>343 C#には標準でついてるよ。つかついてない処理系ってダセぇ。
>>347 そのセリフ吐く奴に限って車輪すら作れない。
低レベルなWin32APIの知識なんてあと半年で風化するよ。 覚えるだけ無駄無駄。
>>349 .NETはあくまでネイティブコード非依存のマルチWindowsなバイナリを実現するためであって
ドライバや速度を必要とするアプリケーションはそのままネイティブなAPIをたたき続けることになる。
VBはまぁ、お荷物だったからな。
で、それが今現在お前がNotifyiconを使えないのと何の関係があるんだ?
>>348 例えそうだとしても車輪の再発明をする奴は(略 なのは変わらない。
さっき、友人に自作の簡単なタグ挿入型エディタを送ってあげたら、 必要なDLLファイルRTL60.BPLが見つかりません と怒られてしまったそうです。 そういえば、実行ファイルが不自然に小さい… 恐らくコンパイル時に漏れてるのだと思われますが… 開発した環境以外でも、ランタイム無しで動作させるには どうしたらいいのでしょうか?
プロジェクトオプションのパッケージのチェックをはずす
______ __________
/:\.____\ /
|: ̄\.ミ∩゚Д゚ミ\< TTaskTrayもいいですが
|: |: ̄ ̄ U ̄:| \_TTrayIconはもっといいです。
>>352 さん
動作しません。D6Personal入れるといいかも。
>>351 もちろん君が車輪すら作れない事実も変わらない。
>>352 ランタイムも一緒に配布すればいいだけだろ。
>>355 一人の事実と全員の事実の大きさの違いを認識しろよ(藁
まっ俺が車輪が作れない事実なんて無いのだがな(激藁
_____ __________ /:\._____\ / |: ̄\ ミ,,゚Д゚ミ < だからTrayIconを使えと言うに… |: :|: ̄U U ̄:| \_________
Q&A核暇あったらコンポ追加しろよ>某
>>358 へ〜。インターネット上の掲示板で口以外の手段が取れるのかねぇ。
手を出してみろよ。足をだしてみろよ。何も出来ないから
「ま、口で言うのは簡単だ。 」って言ったのか?
そうだね。口で言うのは簡単だね。自分で証明しているもんね。
>>361 なんか暴走して本来の目的忘れてるみたいだぞw
だから自分で作れと言うとるのに・・・ 何かを使えという奴は全員車輪も作れないグズだ。
>>353 ありがとうございます。できますた。
>>356 結果としては同じなのですけどねw
配るファイルはできるだけすくなくしたいです。
367 :
デフォルトの名無しさん :02/12/17 22:47
バカ晒しage
>>366 >結果としては同じなのですけどねw
合計するとダイナミックリンクの方がディスク容量を消費する。
2つ目からはぐっと効率よくなるんだけどね。
>365 だからVCL自分で作れと言うとるのに・・・ 何かを使えという奴は全員車輪も作れないグズだ。
>365 だからコンパイラ自分で作れと言うとるのに・・・ 何かを使えという奴は全員車輪も作れないグズだ。
>365 だからCPU自分で作れと言うとるのに・・・ 何かを使えという奴は全員車輪も作れないグズだ。
>>370 VCLはいいんだよ。Delphi入れたらすぐ使えるから。
捜すくらいなら作れと言うこと。
>>373 引っ込み付かなくなったバカにマジレスカコワルイ。
>>374 >>373 が引っ込み付かなくなったバカだろ。しかもマジレスじゃなくバカレス。ほんとカコワルイ
>>376 なぜジエンとわかる。本人がジエンと告白しているのか
それとも他人のあてずっぽなのか?
どちらにしろカコワルイ
本人です。全部ジエンでした。荒らしたかっただけなんです。 でも予想通り荒れました。くいはありません。 謝るつもりはあります。ごめんちゃい(*^_^*)ニコッ
>>378 反省してるならよし。さっさとコンポーネント探しに行きな。
>>380 がんばれよ。Shell_NotifyIconだ。
>>380 うるさい。せっかく俺が静めようとしているのに話を蒸し返すな。
だまってさっさとコンポーネント探しに行け。
>>381 で、Shell_NotifiIconってなんですか?
6Per撒いてから随分レベルが下がったな。 昔はこんなではなかったよ。
>>383 や っ ぱ り 車 輪 す ら 作 れ ね ぇ じ ゃ ね ぇ か (藁
>>385 車輪厨ウザイ。車輪は作んなって言ってるだろうが。
まぁまぁ。マターリしる。「釣り」かもしれんが、マジならやめとけ>意地になってるヤツ えばれるもんでないし。 「知らん!教えろ!」ってのはカコワルイ。
>>388 Del厨ウザイ。C#使えって言ってるだろうが。
>>385 どうでもいいから空白あけるな。邪魔だ。荒らしか?
>>391 >「知らん!教えろ!」
まぁ。今更だもんな。
>一人の事実と全員の事実の大きさの違いを認識しろよ(藁
>まっ俺が車輪が作れない事実なんて無いのだがな(激藁
どれがマジで釣りか知らんがTrayIconを使っとけ。 自分でわざわざ作ることは無い。 コンポーネント開発はDelphiの特徴だろ。
>>395 >コンポーネント開発はDelphiの特徴だろ。
コンポーネントを自分の手で書いていくのもな。
純正品以外の拾ったコード使うとアプリが汚染されるから 素人にはお勧めできない。
>>394 すでにあるコンポーネントを自分の手で書くのは馬鹿みたいですよ。
車輪の再発明とも言いますが。
>>399 くどいなぁ。それに対する答えは変わらんよ。
さて、どうする?君が車輪すら作れないと言うことは周知の事実だ。
>>398 同意。デザイン時にHDDの適当なファイル削除することだって可能だ。
>>399 あんた誰かと誰かをごっちゃにしてないかい?
文章よく読んでる? 脊髄反射はいかんよ。
>>398 交通事故で血液が足りなくなったからといって
赤の他人の血液を体内に注入するか?
普通しないだろ。
>>404 で、××のホームページの○○さんは本当に信用できるんかいな?
掲示板全部自作自演かもしれんぞ?
ソース公開されて無いコンポーネントも ソースが汚いコンポーネントも要らん。
フリーコンポーネントなんぞいらん。
さて、自作しろ厨は去ったかな(藁
>>409 勝手に一緒にするなよ。お前自作しろ厨だろ。
>>410 勝手に自作しろ厨にするなよ。お前自作しろ厨だろ。
412 :
デフォルトの名無しさん :02/12/17 23:52
糞レベルスレ皿仕上げ
>>411 勝手に自作しろ厨にするなよ。お前自作しろ厨だろ。
Delphi6 Personalのアンインストールはどうやればいいですか?
>
>>414 MSのと違ってファイルを消すだけでOKです。
どうやら、自作しろ厨は去ったようだな(藁 では次の質問どうぞ↓
TTaskIconを試しにインストールしたら Classes.pasで「推奨されません」だの「警告」だのがドドドっと出た 俺の環境だけかな・・・やっぱ人には頼るなということかな
ドドッドッ ドドッドッ ワンツースリーフォー♪ ドドッドッ ドドッドッ ファイブ シックス セブーン♪
270は俺の知り合いです どうもお騒がせしました(w
Ent版だけの問題かもしれないけど、Delphiの再インストールで直ったよ
どっどどどどっどどどどっどどどどどどどどどどっどどどどっどどどどっどどどどどどどどどどっ♪
423 :
デフォルトの名無しさん :02/12/18 01:44
Delで、新規プロジェクトを作って、 デフォルトのFormにButtonを張り付けたとします。 すると、ソースは、 Form1 = class(TForm) Button1: TButton; private { Private } public { Public } end てな感じになりますが、ここで、Button1のスコープって なんなの? Button1インスタンスも勝手に作ってくれるみたいだけど?
>>423 privateの前の領域はDelphiの領分だから勝手に編集しないようにね
(触ることがあるのはイベントハンドラを消さずに
コンポーネントを消してしまったような場合くらいかな)
あと、そこのスコープはpublicだよん
Formを右クリックして「エディタで表示」を選ぶと
Delphiのやってることが少し分かるよん
>423 ヘルプの「Object Pascal言語ガイド」->「クラスメンバーの可視性」ってところを読め。
>>424 publicじゃなーい
publishedだ。可視性は一緒だけどさ。
>>402 馬鹿かおまえ。赤の他人の血液を使うのが普通だろ?
私はもるもんですが、なにか?
彼らは神のご意志を行なうために神に献身した。 彼らは聖書が神の言葉であることを信じている。
キリスト教徒というのは 方便も分からない石頭ぞろいですか?
キタ━━━(゚∀゚)━━━!!!!!
>>432 アフォ降臨
キリスト教の世界 宇宙の中心は地球であーる! ↓ すべての星は地球を中心に回っているのであーる! ↓ 学者「でも天体観測したら火星や木星の周りに衛星があるんですが・・・」 ↓ そこだけ特別の空間なのであーる! ↓ 学者「んなあほな・・・」 ↓ だまれ!死刑! ↓ あぼーん
WideStringとかunicodeを文字列メインにして組んでいる人はおられます? VCLはまだ通常のstringだから、使わない方が無難ですかね・・・。
>>435 unicodeやinterfaceなどの新しい機能は
古い開発環境であるDelphiでは使わないほうが無難です。
煽り抜きで。
はは、後に続く人は ”使わないほうが無難” なんて理由で止まらないようにね。
,,,,,,,,,,,,,,,∧,,∧ /プニコは全然大丈夫でつよ。
〜′,,,,,,,,,,ミ,,゚Д゚彡< WideStringListクラスを
UU"""" U ⊃ \自分で作れるくらいに
なってれば…
まず、しょっぱにLoadFromFileがなくて鬱になる事うけあい。
とりあえず、これつかっとけ。
Delphi:WideStringとUnicodeでファイルアクセス
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1034090664 M&I氏のUnicodeのファイルを読み込む
http://member.nifty.ne.jp/m-and-i/tips/unicode.htm よりかは、いいTipsになってるはずぞよ。
ごめん、interfaceはあおりぬきで
使いにくいと思うんだ。Delphiでは....
interfaceが何で使い難い? COM使う・作るなら使うべきだし 自作クラスライブラリにだって便利に使えるよ。 JAVAより低レベルだけど低レベルの分柔軟で実装が見えて使い易いと思うけど?
じゃあ、便利な使い方をよくしらないだけかもしれません。 ∧,,∧ でも、最近も前つくったSplit関数についての機能 ,ミ ゚Д゚彡 動的文字列配列でも ミ ∪ StringListでも共通で使えるように ミ〜,, ミ する方法がわかんなくて、鬱だったです。 ∪ ∪
>>440 うーん.. こんなのを Tips とか言われてもなぁ...
低レベルコードを全部自分で書くことは勉強のためには大事だけど、新しい環境の
ことも同等に気を配らないと、あっというまにおいていかれるよ...
Delphi だと結局 Windows API を読んでいるのだから
1200 Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 Unicode UCS-2 Big-Endian
で変換かけちゃうのが簡単なんだが。
また文字コードネタか・・・
∧,,∧ < DelでUnicodeファイルの読み書きに ミロ゜ ,彡 不自由してたから自作っただけですが、何か? U ミ 文句あるなら、あなたの納得するTipsを晒せば? ミ @ U''U  ̄ ̄ ̄ ̄ > Delphi だと結局 Windows API を読んでいるのだから > 1200 Unicode UCS-2 Little-Endian (BMP of ISO 10646) > 1201 Unicode UCS-2 Big-Endian > で変換かけちゃうのが簡単なんだが。 まさかこれがTipsじゃないよね? 毎度毎度、文字コードとか文字列とか私がいうと > あっというまにおいていかれるよ... と、小バカにするヤシがいるね。 自作エディタクラスとか作った 経験上から言っているんだろうけど、 自分の高度な技術をひけらかしていても 誰でも使えるような使いやすいクラスは作れないと思うよ。 誰にでも使えるようなTipsが書けないのと同じく。
>> すでにあるコンポーネントを自分の手で書くのは馬鹿みたいですよ。
こういうヤツは、30分で書ける簡単なコンポーネントの場合でも、
書く前に一生懸命世界中に「すでにある」かどうか探し回るんだろうね。
>>445 どんな場合でも、そういう一般論ばかり言って偉そうにするヤツがいる。
いちいち、かまうな。
>とりあえず、これつかっとけ。 なんか凄くえらそうに読めてしまうんだけどどうか?
割り込み失礼。
単にWideStringをファイルから読んでいるだけなので、
Tipsと言うよりストリームの使い方のサンプル程度の話とは思うのですが、
>>440 の関数の仕様も自分的に微妙なもんで。
まあ、FileExistsで抜けるのでは無く例外出すべきとか、
TFileName = AnsiStringだからUnicodeファイル名で困るじゃん(wとか、
(CreateFileW API版FileOpenを作っておけば楽)
* 2 ではなく* SizeOf(WideChar)にするべきとか、
その程度のツッコミでしか無いんですけどね。
でも、435氏は、HowToでは無くて「いる?」とお仲間を探しているので
別にスキルで困ってるわけじゃなく、実際VCLと併用すると落とし穴が無いかとか
そういう話をしたかったように見受けられます。
(正直、詳しい話も出ないうちから即座にURL貼るのはどうかと思う)
ところで、DelphiでUnicodeなら、こんなのも。
http://www.delphi-unicode.net/
449 :
デフォルトの名無しさん :02/12/19 03:49
>>447 あなたが2ちゃんに慣れてないだけです。
慣れるのが嫌なら帰ってください。
>>446 > こういうヤツは、30分で書ける簡単なコンポーネントの場合でも、
> 書く前に一生懸命世界中に「すでにある」かどうか探し回るんだろうね。
こういうヤツは、30分で探せるコンポーネントの場合でも、
書かないで一生懸命10時間かけて作るんだろうね(藁
× 書かないで一生懸命10時間かけて作るんだろうね(藁 ○ 探さないで一生懸命10時間かけて作るんだろうね(藁藁藁
>>450 字が読めないみたいだね。
「30分で書ける」← 意味をよく考えるように
>>450 見つからなかったときは、しぶしぶなれないコンポつくって、
車輪の再発明かどうか、心配で心配でたまらないんだろうね。
>>448 >そういう話をしたかったように見受けられます。
> (正直、詳しい話も出ないうちから即座にURL貼るのはどうかと思う)
あのね、そういうふうには読めないね。VCL では Unicode と併用するのは
危険(=つかわないほうが無難)と言うふうに読めるでしょ。詳しい話が出る
保証なんかないでしょ。435 はスキルについて困っているようにも読めるよ。
435本人じゃないなら、あんたの思いこみ。
>>452-454 お前ら本当の馬鹿だろ。 多分同一人物だと思うが。
>>450 が何を言いたいのか全然分かっていないようだな。
自分の理解不足を他人のせいにする前に、もう少し日本語を勉強するように。
>>456 お前、本当の馬鹿だろ。 多分そうだと思っていたが。
>>450 が何を言いたいのか全然分かっていないようだな。
コード書かないでコンポーネントを10時間かけてつくる超能力のはなしだろ。
粘着が二人いるようだな・・・
TurboPascalの時代にちょろっと触っていた程度でDelphiは全く解らないので
思い切り外しているかもしれませんが…
>>229-245 を読んでいて思ったのは初期のDelphiのstring型ってTurboPascalと
互換がある形式(length(string)でstring[0]が返される最大255byteの配列
みたいな感じの仕様)だった気がするのですが、いつからCみたいなNULLストッパー
が文字列の最後に付く形式になったのでしょう?
>>459 Delphi2から。
32bit化する際、文字列の最大長255文字制限を取り払うため
string型が(自動的に)動的にメモリを割り当てる型に変化しました。
その際、どうせだからついでに1バイト余計に確保してNULLを入れておけば
先頭アドレスをそのままAPIに渡せて便利♪
…ということを某の人が思いついたのでしょう。
えらそうに読めてしまった理由がわかったよ 角が立つから言わないけどね
>460 なるほど…2からでしたか。 今のdelphiのソースをみるに、どうもPascalとは思えないような ドラスティックな拡張がされていて、可読性などが損なわれてきている ような感じがしてしまいます…。
>>462 そう?確かにオプションはむちゃくちゃな量あるけれど、C++みたいに何でも記号でしかも文脈や位置によって意味が変わるってことはないよ。
知らない物が増えた−>可読性が落ちた(そらそうだ。意味わからないんだから。)
ってことじゃなくて?
ああ、3.1と6.0Pユーザです。 アクションリストとかは見なかったことにしていますw オーバーロードとか動的配列とか嬉しいけどね。
ある実数型(real,double)変数に代入使用とする値が、 それをオーバーフローさせるような値なら、何らかの処理を行うようにしたいのですが、 なにかいい関数、手続きなどは del で用意されていないのでしょうか? ファイルを開く際の try〜 のようなものがあったらいいんですが。
>>465 EOverflow ではダメなのかい?
Delphiをはじめてみようと思ってパーソナルをダウンロードしました。 早速、目覚まし時計を作っています。 コンボボックスで「時間」「分」を指定して時間になったらベルを鳴らすように したいのですが今の時間とコンボボックスの数字を比較するためにはどうしたら いいでしょうか? 時間と分にあたる関数宣言とString関数として取得した設定時間 を時間の関数に変換するところで悩んでいます。
>>467 初歩のうちは人に聞くよりも試行錯誤した方がいいと思うよ
とりあえずDecodeTime、EncodeTimeのヘルプを見ることから始めましょう
(Delphiの関数は「Delphiヘルプ」-「VCL リファレンス」に詳しく書いてある)
>>468 追記
調べるともっと便利な関数があることも分かると思うから
自分で見つけてね
ありがとうございます、早速調べてみます。 今、TDateTimePickerというビジュアルコンポーネントを見つけました。 これからは、ひととおり調べてみてから質問しますね。
>>467 TDateTime という型は Double型と同じなので 比較演算が可能です
ただdouble型と同じなので、= 演算をやるとダメです。
少数点を切り捨てると日数に
少数点以下を24*60倍すれば分になりますからそれを整数型にして=するか
1秒単位に大小比較で指定した時間+5秒程度の範囲ならベルを鳴らす仕様にしてはと思います
Delを起動すると、何もないフォームがある状態で起動されますが 既存のプロジェクトを編集するためにわざわざ [ファイル]→[すべて閉じる]をしています。 普通に "*.dpr" をダブルクリックから実行すると、Delがハングアップするんです。 起動時に、純粋にDelだけを起動する実行オプションはないでしょうか?
ついにできました。 DecodeTimeで現在時刻を時と分に分解、Word型で宣言した変数にコンボボックスの 値を格納しておいてタイマーで監視&比較でオッケーでした。 このままだと目覚ましのサウンドの最初の部分が鳴り続けるので、フラグをたてて 指定時刻に一回鳴らし始めたらもう鳴らさないという処理も追加しました。 実は私、プログラム組むのははじめてなので質問するのも緊張したのですが、 とてもいいヒントをもらいました。これからもお世話になります。
>>472 全てのDPRが? それとも特定の? 特定のだったらよくある症状だから、一度不要ファイルを削除するといよ。
今日からDelphiを勉強しはじめようと思っている者ですが、 なにかいい参考書はありますでしょうか? ネット環境が自由にならないので、 オンラインで資料を探すことができないのです。
>>473 >>475 レスありがとうございます。
何もない状態で起動するのは、 "delphi32.exe" /np できました。
>>475 特定の *.dpr だけです。
どれが不要ファイルなのかよく分からないのですが、うまくいったら報告します。
>>465 です。
var
i, j: real;
begin
i:=0.01;
try
j := exp(1000 / i); // 0で割る
except
on EOverFlow do
begin
showmessage('j:オーバーフロー');
j := 10;
end;
end;
これでできました。
>>466 サンありがとうございました。
>>479 補足
基礎Delはいま「基礎からわかるDelph6」だと思った
>>479 さん
ありがとうございます!
会社帰りに本屋へダッシュします。
>>480 さん
補足ありがとうございました。
最新がDelphi6ですものね。
参考にします。
>>460 末尾にNULL文字を入れるのはVBをまねたとか
どこかでみたような記憶がありますが,違ったかな.
自動割り当て,自動解放文字列というやり方自体も
BASICの真似なのですが,
文字列変数への代入の時に単純に文字列をコピーしない仕様などは
よくできていると思います.
(…ってこれもBASICで先にやってたのかな?
MicrosoftBASIC 7.0ではでかい文字列をコピーすると
よくOut of String Spaceエラーになったものですが…)
>>483 どうもありがとうございます。
*.~*
*.dof
*.dcu
のファイルがあったので消したけれども、やはりうまくいきませんでした。
本体を起動してから、[ファイル]→[開く]からでならできるので、
あきらめます。
486 :
デフォルトの名無しさん :02/12/19 16:35
Delphi7買ったらあとから送ってくれるというおまけCDはまだこないのですか?
487 :
デフォルトの名無しさん :02/12/19 17:39
質問です。 MLのログに質問はあったのですが、回答が無かったので、それをそのまま掲載・・・ OpenDialogやSaveDialogのHistoryListのヘルプを見ると.... 「現在は使いません」とか「Delphi の以前のバージョンとの互換性のために残 されています」と書かれていますが、現在では何を使えばいいのでしょうか?
>>487 以前のバージョンでどう使われていたかしりませんが、自前で Add() する
なりすると、ちょっと試したところでは今でも使える。ただ、UIに反映され
ないのであまり意味はないが。
HistoryList プロパティは Delphi1 -> Delphi2 で無くなりました. これは Windows95 の GUI に合わせた変更です. 代わりに [ファイル(F) | 開き直す(R)] の様な履歴メニューを使います.
>>475 うちではWin98SEだとしばしば発生する。
プロジェクト読み込んでフォームが表示されるときにハング。
ファイルメニューから読み込むと問題なく開く。
Win XPの方ではおこったことないんだけどね。
リソースの問題かもしれんが。
> HistoryList プロパティは Delphi1 -> Delphi2 で無くなりました. なくなりませんよ。意味がなくなっただけです。
493 :
デフォルトの名無しさん :02/12/19 22:30
>>482 >末尾にNULL文字を入れるのはVBをまねたとか
>どこかでみたような記憶がありますが,違ったかな.
Cだと思われ。
.∧,,∧ 俺がダメフサだから
ミTДT彡 だからでつね。
>>461 さん
(∩∩)
M&I氏のページよりいいTipsが出来たから
うれしかったの。
>>448 さん
仕様が微妙なら、
「ここをこう変えてみました。
こうするのがXXと同じでVCLっぽくで、いいと思われ」
とか書いてソース晒してくださるとうれすぃっすね。
SizeOf(WideChar)は私単に忘れてました、
そっちのほうがきれいだと思いますよ。
>>464 さん
アクションリストは正直見たほうがいい。
C#よりも勝るアーキテクチャだと思ってます。
アクションリストの利点が分かりません。 なにがすごいのか教えてください。
メニューとポップアップメニューとツールバーに 同じキャプションとイメージと機能を割り当てたい場合どうするよ? C#は漬け和スレだろ。いずれつく。
_________ ∧,,∧ / ミ,,゚Д゚彡< Toolbuttonとメニューが ミ つI) \ 同じActionで管理できるですよ 〜ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪ 他にもUpdateイベントを定義することで 状況に応じたコードを書くのが楽。
502 :
デフォルトの名無しさん :02/12/20 09:54
Delフサギコさんのファンです。
>>502 う、負けた。
知識が古かったか…指摘感謝。
Delフサギコさんが不安です。
506 :
デフォルトの名無しさん :02/12/20 14:30
>>504 Byte Order 問題が解決されたはずなのに BOM をつける MS - Notepad が悪いはずなのに、
便利だからデファクトスタンダードになっちゃった良い例。
まぁ MS のわがままさは十分知っているけどさ..
UTF-8/BOM はつける必用はないけど、もし存在したときはエラーにせず読み飛ばせ。ということで。
サンプルのMDIメモ帳をいじっているのですが、 メインメニューの「ウィンドウ」の項目に、 チャイルドがリストアップされる仕組みがわかりません。 というのも、ソースを見る限り、何もしていないようなのです。 なんといえばよいでしょう、、、 main.pasはチャイルドを作ったきり、変数を使い捨てているだけなんです。 どこにもメニューにリストアップされるような事が書いてないんです。 あれはどういう仕組みでしょうか?
509 :
デフォルトの名無しさん :02/12/20 15:57
>>508 親フォームのWindowMenuプロパティに子ウィンドウリストを表示したい
メニューアイテムを指定するだけでOK。
目覚まし時計のプログラムに「指定時刻の5分前にWindowsを起動する」機能を 実装したいのですが、なにかよい方法はないでしょうか? 足がかりだけでもいただければ調べますのでよろしくお願いします。
なるほど、あれはTCustomFormの標準機能なのですね。 見つけました。ありがとうございました。
>>510 別の常時機能なPC用意してWAKE ON LAN
>>512 確かに可能ですが、できればスタンドアロン環境で機能するように実装したいです。
TSpeedButtonに48x24のビットマップ読み込んだんだけど なぜか横幅が半分になっちゃったよ。 これってガイシュツ?
>>513 PC
□--+シリアル/パラレル/USB etcetc
| |
| □マイコン
| |
+---+
電源スイッチケーブル。
>>513 ・・・・・ごめんなさい、私がわるぅございましたぁ。うえーーーん。
スタンバイ状態でというなら、なんか方法があると思うが。 録画ソフトとかが実現してるはず。
>>517 スタンバイ状態ですか、なるほど・・・。
イメージとしてはバイオスをプログラムでたたいて、起動時刻設定して
シャットダウン。で、スタートアップから実行というからくりを考えていました。
シャットダウンのコンポーネントは見つけていたのでバイオスをたたく部分だけ
実装できれば可能なのではと素人考えをしていたのです。
ただ、BIOSも種類がありますし、そもそもタイマー起動に対応していないBIOS
もあるみたいなので汎用性ということを考えると厳しいのかもしれませんね。
Delphi5Pro なんですが Win2000 でアカンウト別の MyDocuments などにアクセスする方法はありませんか?
Win32APIスレ逝け
細菌は教えてやった所でお礼の一言もないからなぁ・・・
でそろそろ初心者が質問してよろしいですか?
細菌は教えてやった所でお礼の一言もないからなぁ・・・
もう冬休みの季節ですな・・・
528 :
デフォルトの名無しさん :02/12/21 00:01
[ファイル|開きなおす]コンポってない?
ない
530 :
助けてください(TДT) :02/12/21 00:09
Delphi6 PersonalをダウンロードしてきてWindows XP環境にインストールし ました。早速使ってみたところ、何故かたまに実行ボタンを押したときに 完全にシステムがフリーズしてしまうことがあります。コンパイルはちゃん と通っているようですが、フォームが完全に表示されず、タイトルバーが表示 された時点で固まってしまう状況です。とりあえず、Delphiを強制終了しよ うとCtrl+Alt+Delでタスクマネージャを出しますが、そのウィンドウを フォーカスしただけで、タスクマネージャまで「応答なし」になってしまい ます。ログオフしてみようとスタートボタンをクリックすると、タスクバー とスタートメニューまでフリーズしてしまい、最終的に電源強制切断以外 どうしようもなくなってしまいます。一体どうしてでしょうか?単に Delphi 6 PersonalはXPに対応してないんでしょうか?
532 :
ありがとうございます(TДT) :02/12/21 00:26
早速やってみました!これで直るでしょうか・・・。 (((((;゚Д゚))))ガクガクブルブル しながら今しばらく使い続けて 様子を見てみようと思います。では。
533 :
デフォルトの名無しさん :02/12/21 00:32
>>533 ここはDelphiのスレですよ。荒らしですか(w
既に530の問題が再発した模様です・・・。 ショボーン・・・。(´・ω・`)
IME のあれか?
537 :
デフォルトの名無しさん :02/12/21 02:18
ちっと疑問に思ったんだが、最近のDelphiではReal型は独自形式じゃなくて 汎用型って分類になってるから、ファイル出力とかしない内部的な実数値は DoubleやSingleじゃなくてRealを使うべきなんだろうか?
サイズや精度を明示する必要がなければIntegerやRealを使えばいいんじゃないの。
539 :
デフォルトの名無しさん :02/12/21 02:34
TimageのTransparent、ヘルプには背景を透過させると書いてありますが、 指定した任意色だけを透過させることはできますか? (そもそも背景とは、がわかってない(´・ω・`))
540 :
デフォルトの名無しさん :02/12/21 02:54
そ。システムの復元とも ctfmon とも関係ない。 D7 のデバッガは直っているので、提示された対処は必用なし。
Delphi5 も出してくれ…
>いまごろなぜ? サポートが続けられるのは良いことだよ
ユーザー数的にも6>>>>>>>
>>7 だしね。
買うなら偶数バージョンだな。
>>545 こないだまで「買うなら奇数バージョンだよな」とか言っていなかった?
>>546 いえ、1, 2, 4, 8と買っていくのが正しいです。
3.1 が最高。という評価が多いことをどう判断する? >> 547
またMDIで質問なのです。 サンプルでvar Child: TMDIChild;について、Child.Freeをやっていません。 これはTMIDChildのほうでAction := caFree;にすれば解放されるとあります。 ここでふと思ったのですが、サンプルでは Child := TMDIChild.Create(Application);とやっているところを、 TMDIChild.Create(Application);と、変数に入れないでも解放されるのでしょうか? これは安全でしょうか? もう一つ、処理が終わったら自分で解放するタイプのTThreadについても、 インスタンスのための変数は不要なら使わなくていいのでしょうか?
>>549 半分yes
Applicationを Owner にしてしまうと Application終了時に解放されるわけで、それなら
解放しないのとそう変わらない(デストラクタが呼ばれるメリットはあるけど)
親のフォームと一緒に解放させるべきでは?
TThread は自分で解放が巧くゆくならそれでいいと思うけど、結構注意が必要で
面倒だから、メインスレッドで解放した方が楽なような気もするけどな
子ウインドウは閉じたときに解放されると思っていました。 長時間開いたり閉じたりしてたらドンドン肥大化するかもですね。 まだちょっとわからないのですが、 >親のフォームと一緒に解放させるべきでは? ということは、Create(Application.MainForm);にしたほうが良いという事でしょうか? オーナーと親をまぜこぜに覚えててすみません。
552 :
デフォルトの名無しさん :02/12/21 20:55
イベントを作成したときにパラメータに自動で付く (Sender: TObject)ってどういう意味でしょうか? イベントの呼び出し元? 参照すると何が入っているのでしょうか?
553 :
デフォルトの名無しさん :02/12/21 20:59
>>510 タスクスケジューラ+休止状態で出来るよ。
タスクスケジューラの設定に「タスクの実行時にスリープを解除する」ってところがあるから、
そこをチェックして休止状態にすれば、時間になると立ち上がるよ。
どういう仕様にするのかは知らんけど、
・タスクスケジューラのコントロール
・休止状態への移行
の2つの技術が必要になる。
タスクスケジューラはDelphiにpasがないからどっかでコンポーネントを拾ってくる。
休止状態へは「SetSystemPowerState」APIを使う。
>>552 複数のコンポーネントから同じイベントハンドラを呼び出せるのは知ってると思うけど
Senderがあるおかげで
呼び出し元によって処理を振り分けることが可能になる
初めてActiveX DLLを作成することになったのですが、うまく例外を発生させることができません。 例外情報を渡すためのクラスとしてIDispatchインターフェースとExceptionクラスを継承したクラスを作成し、 例外発生時にはそのインスタンスを作成およびraiseして、クライアントアプリケーション側では、 そのインターフェースからエラー情報を取得するようにしたかったのですが、 クライアント側で発生する例外はただのExceptionになっています。 例外オブジェクトはActiveXとアプリケーションの間を飛び越えられてないようです。 ActiveXでエラー情報を渡す方法ってどのような方法がありますか?
556 :
デフォルトの名無しさん :02/12/21 22:30
つーか、1回くらい検索してみてから書いてるのかなぁ?
558 :
デフォルトの名無しさん :02/12/22 00:56
Free の使うタイミングがよくわからないんです。 使うタイミングをわかりやすく教えてください
不要になったらFreeすりゃいいんだよ。 そのブロックで閉じてたらfinallyで、 フォームで使うんならFormDestroyで。
form2:= Tform2.create; form2.showmodal; form2.free;
>>558 最初はオレもそうだった(藁
「なんでFreeすんのと、しないのがあるのかなぁ…?」とかな。
ガンガンいじってればそのうち分かってくるよ。最初の頃に
疑問に思ってたことは、「ははぁ…なーるほどなぁ…」ってなってくるから。
562 :
デフォルトの名無しさん :02/12/22 01:03
メモリ512MBも積んでたらFreeいらんだろ。 サーバじゃあるまいし。
>>560 TFormの場合はReleaseじゃなかったっけ?
横からスマソ
>>560 この例では、form2がshowされた瞬間にfreeされそうに見えますが、実際はform2が
closeされたときにfreeされるんですよね?そこら辺がよくわからないのですが・・・。
>>562 Free を最初から逃げる奴にプログラマの適性はねえよ。
>>564 showmodalの意味わかるか?つーか調べな。
>>566 そか、モードつきだから裏は無効になるんだ(゚д゚)!!
form1.button1.click; begin form2:= Tform2.create; form2.show; //releaseいらないバージョンは下のようにっと end; form2.close(sender:TObject); begin action:=caFree;//←これで解放できるらしい end;
CreateとFreeを多用するプログラム作るようになってから、Windowsにトドメを刺す 回数が多くなったなぁ・・・。 Win2000なのに突然青くなって止まったときはビビッタ。
>>569 フツーその程度で落ちないとは思うんだけど・・・。
>>569 それはCreateとFreeが正しく行われていない証拠だろ・・・
>>569 Win2000が青吐いて落ちる場合は、ドライバがタコな場合が多い。
それか、PC腐ってるか。
普通のアプリ程度じゃ落ちないって。
CheckMem.pas とか、MemProofは必須ではないのか?
ここって、厨房ばっかりでほんっと つかえない
バージョン情報でAlt+T E A M
>>575 なんでいちいちコピペするかなぁ。しかも2日前のを。
>>572 以前、0除算で青くなったことがある。
IDEの中でやったら、ただの例外で済んだけど、単体で実行したら
画面が崩れてフリーズ。画面表示部分だったからドライバが関係してるの鴨・・・。
BorderStyle = bsNone のときに、タスクバーの当該ボタンを右クリックしても システムメニューが表示されませんが、これを表示させる方法はないのでしょうか。
でそろそろ初心者が質問してよろしいですか?
>>579 いつでもどうぞ。
「過去ログ読め」って言われるだけだけど。
581 :
デフォルトの名無しさん :02/12/23 14:19
プログラム初心者です。 これからはじめるのにC#とVB.NETどちらがいいのでしょうか?
>>583 ソースいじったような記憶があるけど、インスコでけたよ。
>>584 なんかタイプライブラリから生成したコードってコンパイルできないことあるよね。
でも、Delphiやってる奴なら速攻で直せるわけで。
はじめての作品ができました。 ただの目覚まし時計ですが、スキルアップのためにも是非批評してもらいたいです。 どこか作品をアップできるところはありますか?
>>586 ああ。ソースだけでいい。
指定時間が来てファイル消されちゃかなわん。
雑談ページに「Yuclock.zip」というファイルをアップしました。 アップするの初めてなので、問題があればご指摘ください。
590 :
デフォルトの名無しさん :02/12/23 16:37
落とし方がわからんすまん。
>>590 雑談ページの一番下に添付ファイルという項目があるのでそこを右クリックで保存すれば
できそうですよ。
音符マークをクリックして、wavファイルを指定せずに閉じたら ビープ音が狂ったように鳴りまくるのだが・・・。
594 :
デフォルトの名無しさん :02/12/23 16:55
密かにWaveファイルのPass変えられるとエロイ事になるから。 音声変更時にパスワードクゥイヴォヌソ。
>>593 うーん、オープンダイアログでwavにフィルターかけているのですが
それでもだめみたいですね。拡張子がwaveファイルじゃなければ・・・
というような処理を加えたほうがいいのかなぁ。少し考えて見ます。
試していただいてありがとうございます。
>>595 選択しないと開けないよーん!なプロパティって無かったっけか?
Mustexistとかで出来そうな肝。
>>594 ためになります。改善方法は、
「指定したアラーム音ファイルが勝手に変更されることを防ぐ処理(パスワード等)」
さらに「指定したアラーム音ファイルが移動等された場合の対応」ですね。
なんだか、堅牢な目覚まし時計になっていきそうです。
>「指定したアラーム音ファイルが勝手に変更されることを防ぐ処理(パスワード等)」 ユーザーには保護しているように見せて、 実際にはiniファイルにpathもpassもそのまま書かれてるなんてタコな仕様にするよ。 設定ダイアログ作って現在の設定を確認できればそれで十分。
β1アップしてみました。
>>596 ありがとうございます、これで「ぽんぽんぽーん」は鳴らないと思います。
なお、「♪」ボタンは試聴も兼ねているのでキャンセルでもアラーム音が鳴ります。
>>598 そうですかぁ。アラーム音はとりあえず設定されていれば機能は果たすと思うので
いいんじゃないかなぁと考えていたところでした、THX。ただ、指定されたファイルが
存在するかどうかは監視する必要がありますよね。うーん、難関だ。
タイマー機能は、指定した3つ(〜5程度)の時間をボタン1つ始動&一時停止可能る。 例、1時間45分(作業用),15分(休憩用),20分(温泉卵用) 目覚まし機能は、指定した3つ(〜5程度)の時間をボタン1つでON/OFF切り替え可能。 (+曜日毎に設定可能なら最高。) レジストリいじらない。軽い。 以上の条件をクリアしたものを作ってください。おながいします!
>>600 質問
タイマー同士はそれぞれ排他利用でいいのかい?
つまりAというタイマーを使っているときは、他のB,C等のタイマーは利用しないということ。
目覚まし機能については曜日毎にセットできればいいのかな?
例:月・火・水は8時、木・金は10時、土・日は12時という感じ
教えてちょうだい
>>601 >作ってください。
つぅか冬休みにスレ違い甘やかすのやめとけ。偉いことになる。
>>603 すれ違いは確かだが、初心者がつくるにはちょうどいい題材かもしれんな
605 :
デフォルトの名無しさん :02/12/23 20:19
TForm の WindowState の値を INI に入れるにはどうすればいいのですか?
>スレ違い
Wikiにそういうページ作りゃあいいわけよ
>>586 が
>>605 書き込み
ini.WriteInteger('window', 'windowstate', Ord(Form1.WindowState));
読み込み
Form1.WindowState := TWindowState(ini.ReadInteger('window', 'windowstate', Ord(wsNormal)));
初めてActiveX DLLを作成することになったのですが、うまく例外を発生させることができません。 例外情報を渡すためのクラスとしてIDispatchインターフェースとExceptionクラスを継承したクラスを作成し、 例外発生時にはそのインスタンスを作成およびraiseして、クライアントアプリケーション側では、 そのインターフェースからエラー情報を取得するようにしたかったのですが、 クライアント側で発生する例外はただのExceptionになっています。 例外オブジェクトはActiveXとアプリケーションの間を飛び越えられてないようです。 ActiveXでエラー情報を渡す方法ってどのような方法がありますか?
ソース添削教室は終わったの? オレはソース見せるのはイヤだなぁ。絶対イヤだ。 超スパゲティミートソースだから(藁 変数名とか見られるだけでこちょばゆい。
人は見られて美しくなるのだよ。
>>611 私の場合、最初は誰でも初心者だぁ的な勢いでソースアップしちゃいました。
とはいえ大したものじゃないですけどね。ただ、実際に自分でアプリらしきものを
つくってみて、例外処理の対応等フリーソフトの作者さん等は大変なんだなという
視座をもつことができたのが自分にとっと大きなプラスでした。
でした。ってもう終わりかよ!
>>614 Delphiプログラミングはこれからがんがんやりますよー。
あの目覚まし時計もタスクトレイ格納とか実装して改良していってますし。
「大きなプラスでしたぁ♪」 ↑今日のわんこ風に、キクちゃんに言ってもらいたい。
>>609 書いてる事は
構造化例外RaiseExceptionを使ったのにって意味?
それともDelphiの例外を ActiveX中で投げたの?・・・それはしないよな
ActiveX はDelphi以外のモジュールからも呼ばれるのがメリットなのに・・・・
例外情報についてはActiveXの流儀= 帰り値で返す に従った方が皆が幸せでしょう
>>618 コードを書く。
VCL ソースを読む。
他人のコードを読む。
どんな言語(含む自然言語)もこれがすべて。
コンポーネントってどこに解凍してます? /Borland/Delphi6/の下だとどこが一般的? Lib?Demos?
自分でディレクトリを作って全部そこで解凍してます。パスを通すのが 一つで済みます。
おまえら!凄い事思いついたから発表するぞ! なんと、delパソで合法的に儲ける方法だ! 1,delパソでプログラムを完成させる。 2,テキストファイル形式で売る。 3,あとは購入者が勝手にコンパイルする。
>>624 商用開発にパソ使ってる時点で非合法じゃん
つーか・・・こんなこと考えてる暇あったら少しでもプログラム組めよ
改訂版! 1,テキストを書いて売る 2,あとは購入者が勝手にコンパイルする 3,不具合は仕様ですで押し通す
販売形態に関わらず、商用開発になってるよ!
改訂版2! 1,C++でプログラムを完成させる。 2,C++でCppのソースをdelphiソースに変換するプログラムを作り、無料配布する。 3,1で作ったソースを売る!
Proで作ったって言い張れば良いんだよ。
1.偽delProを作る 2.偽delProで商品を作る
631 :
デフォルトの名無しさん :02/12/24 20:49
INIを自分と同じフォルダに入れるにはどうすればいいんですか
632 :
デフォルトの名無しさん :02/12/24 20:54
自分と同じ? changefileext(application.exename,'.ini') にファイルを作成じゃだめなのか?
まず自分を電子情報化する手段はあるの?
>>631 IncludeTrailingPathDelimiter(ExtractFileDir(ParamStr(0)))か、IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))でEXEのあるフォルダがわかるからそれ+INIのファイル名で。またはChangeFileExt(Application.ExeName, '.ini')でEXEの拡張子を変える。
>>628 その内容、Delパソとなんの関係も無いよ!
637 :
デフォルトの名無しさん :02/12/24 22:02
1,脳内でプログラムを完成させる。 2,メモ帳で入力してテキストファイル形式で売る。 3,あとは購入者が勝手にコンパイルする。
1,脳内でプログラムを完成させる。 2,会話形式で売る。 3,あとは購入者が勝手にソース書いてコンパイルする。
1,脳内でプログラムを完成させる。 2,テープに録音する。 3,あとは速記者がソース起こすので解読する。
1,脳内でプログラムを完成させる。 2,脳内で売る。 3,脳内で購入者が勝手にコンパイルする。
1,友人にプログラムを完成させる。 2,友人のマシンでコンパイルする。 3,あとは黙って売って勝手に儲ける。
1,delプログラムを自動で完成させるプログラムをVBで書く。 2,売る。 3,あとはイブなのにネタスレ
643 :
デフォルトの名無しさん :02/12/24 23:29
クラスを引数にとる関数を作ってその関数の中で データメンバに変更を加えても、値渡しなら コピーがつくられるだけだから元のクラスには 変更は及んでないんじゃないの? 思いっきり変わってるんだけど・・・
644 :
デフォルトの名無しさん :02/12/24 23:31
クラスをデータメンバにとる関数を作ってその変更の中で 引数に変更を加えても、コピー関数がつくられるだけなら 値渡しだから元のクラスには 変わりは及んでないんじゃないの? 思いっきってるんだけど・・・
645 :
デフォルトの名無しさん :02/12/24 23:33
??
データクラスを引数に思いっきってる関数を作って変わりの中で 変更をメンバに加えても、コピー関数がつくられるんだけど ・・・及んでないだけなら その値渡しだからクラスには 元の変更はとるんじゃないの?
おまいら日本語話せや
sageてなかった。鬱だ・・・
650 :
デフォルトの名無しさん :02/12/25 00:42
>>649 同じ内容のコードをC++で書いたら
ちゃんと変更されないでいたよ。
どうすればいいのでしょう?
クラスでなくて、ただの変数を関数に渡した場合
も変更されてなかった。でもクラスだと変更が残ってる。
ななななんでだろぅ
値渡しで参照がコピーされる。 参照の値が同じなら同じオブジェクトを指すので 渡された参照の先のオブジェクトを変更すれば当然元の引数の変数に 入っていたオブジェクトも変更される。
なるほど。参照がコピーされるだけだったのか。ありがと!!!!!
654 :
デフォルトの名無しさん :02/12/25 06:53
>>652 言っている意味が全然わかんね。
引数として取ったオブジェクトは参照のコピーでしょ。
そのコピーに変更を加えてるだけだから、
その関数終了時にそのオブジェクトは破棄されるだろ。
だから元のオブジェクトに影響なんて無いはずじゃないのか?
> その関数終了時にそのオブジェクトは破棄されるだろ。 > だから元のオブジェクトに影響なんて無いはずじゃないのか? それは関数の実装に依存する。 基本的には勝手に破棄されては困る。
>>654 同じオブジェクトを参照しているものが二つになったと考える。
参照は二つになっても双方とも参照先のオブジェクトは同一。
じゃあつまり、オブジェクトを関数に渡してしまっても 変更が元のオブジェクトに及ばないコードを書くにはどうすればよいのよ?
>>657 渡されたオブジェクトの内容を新しく作ったオブジェクトにコピーしてそれを渡す。
まぁ、オブジェクト同士の比較するとfalseが出て鬱だけど。
>>657 そういう操作をしたい場合はレコード型やオブジェクト型の変数にします。
クラス型変数は常に参照ですから、変更しないという対策になります。
どうしてもそういう対策が必要ならクラスの方で全ての変更をロックす
るしかありません
>>659 >クラス型変数は常に参照ですから、変更しないという対策になります。
そうでもない気もするけどね。
おめーらポインタの概念を教えてやれよ
>>661 あるアドレスにある値を読むために使う特殊な変数。値として参照するアドレスを持つ。
今ならわかるポインタだが・・・ 昔は明確に説明してる文書が少ないからわからずにC挫折 そんな感じ
>>660 関数の引数としては参照渡ししかないだろ。
>>664 いえ、関数の引数だけではなくクラス型の変数は全て参照になります。
例えば
obj1:TComponent;
obj2:TComponent;
だと obj2:=obj1; はインスタンスのコピーじゃなく参照のコピーで obj2でも obj1でも 同じインスタンスを
扱うだけであり、中身はコピーされません。
レコード型やオブジェクト型との大きな違いで、最初戸惑うところだと思います。
>>665 まぁ、ポインタ相当だな。
だからこそ引数が参照になるのは必然だな。
そうですね。 メモリを スタック、スタティック、ヒープの3つに別けるとします スタックは、関数・手続・メソッド内のローカル変数の為の領域 スタティックはグローバル変数や、ユニットローカルな変数の領域 ヒープは動的に作成解放する領域です。 コンパイラはスタック、スタティック領域に関しては、コンパイル時に その位置(スタックについては相対位置)が判ります。 しかし、ヒープについては、どこに作成されるか判りませんから、 ヒープについてはポインタ、又は参照変数で参照するしかありません。 たぶんコンポーネントの実装の為にクラス型の実体(インスタンス)は ヒープ領域にしか存在出来ない事にしたのでしょう。 となると、スタックやスタティックな変数からはポインタでしか参照出来ま せんが、それではイチイチ ^ が必要となって面倒でしょうから ^ を省き ましょうと いう事だと考えるといいでしょう。 だからBCB++からVCLを扱うと、C++はクラス型インスタンスを スタック、 スタティックにも取れる言語ですから 常に -> が必要になります。
Object Pascalって、Cより可読性低くありません? thenとかendとか代わり映えのしない文字がやたらと並んでて、 Tabで綺麗に段階分けされて記述されたCのソースよりも非常に読み辛い。 あと、初期化の記述がCより面倒くさくて融通が利かない。
>>668 慣れの問題。以上。
もっとやりたいなら過去ログに何度と無く議論されてるからそれを読んでからにしてくれ。
>>668 そりゃあ、綺麗に書かれた C より 汚く書いたDelphiが当然汚いでしょう
でも、慣れれば、普通の人が書いたCよりも普通に書いたDelphiの方が読みやすいです。
理由は、
1、初期化の記述がCより面倒くさくて融通が利かない為に、Delphiの方が個人によるコードの差が小さい
2、演算子や制御文がDelphiの方が貧弱である為 同じアルゴリズムを実装したら
Delphiの方が個人によるコードの差が小さい
3、演算子や制御文が貧弱な代わりに、動的型情報を持てる列挙型、そしてCにない
集合型、string型、動的配列型、があり、 Cより高レベルな記述が出来る為に 読みやすい
>>670 1.なぁ、初期化って具体的に何を指すわけ?
2.Cに存在するモノは一通りあると思われ。forは確かに負けているけれども。
3.それは言語の機能の差で構文とか読みやすさとかそう言うレベルの話なのか?
1、初期化は さあ?
>>668 に聞いてくれ、 たぶん初期化じゃなくて定義の事だろう
2、Cにあってない演算子 += -= /= *= ++ --
貧弱なのは for のほかに
>> SHRは自動的に符号なしシフトに
とかかな
3、動的配列やオープン配列を上手に使ってくれてると他人のコードでも読みやすいと
思うけど? C で配列とポインタ混在されてるコードよりは
集合型も上手に使ってくれると他人のコードでも判り易い
+= -= ++ -- は整数限定だが Inc/Dec があるけど演算子じゃねーなあ。
>>673 *=とかはたまに恋しくなるなw
でも、
a := a * 5;
を可読性が悪いとか宣う奴って大物だな。
1,漏れは大物です。 2,過去ログは1〜3と10だけ読みますた。まだまだてす 3,「int 〜〜〜〜〜」 と 「〜〜〜〜〜〜 integer」なら、前者の方が一瞬で型が判別できるのとかも
アンドゥやリドゥを二回以上実行するにはどうすればいいんですか?
>>677 それは Delphi IDEの使い方の事? なら単に繰返して操作すれば?
それは TMemoの事? Windowsのメモ帳にない機能の実装は難しいよ
確か TRitchEditなら複数可能だった気もするから調べてみたら?
TRichEditです、調べてみます……
ゴメン 複数Undoが可能なのは Rich Edit 2.0 で DelphiのTRichEdit は Rich Edit 1だから、そのままではダメだ
アン!ドゥッ!リドウッ!! 「それじゃ〜そのタイミングじゃわい!」
こんな感じで無理やり RichEdit2.0コンポ作ったら 複数Undoは可能になったみたい uses RichEdit; ///////// type TMyRichEdit = class(TRichEdit) public procedure CreateParams(var Params: TCreateParams);override; end; //////////// var FRichEdit20Module: THandle; /////////// procedure TMyRichEdit.CreateParams(var Params: TCreateParams); const RichEditModuleName = 'Riched20.dll'; HideScrollBars: array[Boolean] of DWORD = (ES_DISABLENOSCROLL, 0); HideSelections: array[Boolean] of DWORD = (ES_NOHIDESEL, 0); begin if FRichEdit20Module = 0 then begin FRichEdit20Module := LoadLibrary(RichEditModuleName); if FRichEdit20Module <= HINSTANCE_ERROR then FRichEdit20Module := 0; end; inherited CreateParams(Params); CreateSubClass(Params, 'RichEdit20A'); end;
683 :
デフォルトの名無しさん :02/12/26 18:07
どなたか、ヒントだけでもお願いします。 ScrollBoxにPaintBoxを貼り付けて、ScrollBoxのwidthを300、 PaintBoxのCanvas.widthを2000としたとします。 ScrollBoxを横にスクロールさせても、常にXが真中(ScrollBoxのというか 画面のというのか・・)になるようにcanvas.textoutで文字をPaintBox.Canvasに 描画したいのですが、こういう場合はどのようにXの位置を取得すればいいのですか?
canvas.width→paintbox.widthの間違いです。
685 :
デフォルトの名無しさん :02/12/26 19:04
unitファイルの中に記述した関数を 別のプログラムの中からusesして使いたいんですけどどうすればいいんでしょう? コンパイルしても未定義ってでちゃうんですが・・
>>683 TScrollBox.HorzScrollBar.Position
すいません。 できました。
>686 ありがとうございます。できました。
>>685 unit UnitHoge;
interface
function Hoge(i: Integer): String; // これ忘れてないか?
implementation
function Hoge(i: Integer): String;
begin
//いろいろ
end;
end.
>>673 >整数限定だが Inc/Dec があるけど
正確には整数型ではなく順序型。
b := false;
Inc(b);
if b then ShowMessage('これ実行してみな');
>>690 意味不明。
「正確には整数型ではなく順序型」の説明になってねーし。
var b: char begin b := 'a'; Inc(b); Inc(b); Inc(b); ShowMessage(b); end;
いつの間にかポインタもInc/Decできるようになっとる……
>>691 あんたが意味不明。
Booleanは順序型に含まれる。
>>693 自分の記憶じゃDelphi2からできたけど…Delphi1とそれ以前は持ってないので知らん
PointerはInc/Decできんだろう。
696 :
デフォルトの名無しさん :02/12/27 01:43
Del6PersonalとDel6Proは生成されるEXEのバイナリコードは同じでしょうか?
補足:条件は、コンパイルするソースがまったく同じ場合です。
違う場合もあるし、同じ場合もあります。
>>696 に便乗して質問です。
>>698 それは、PersonalとProに付属するライブラリ等の差による物でしょうか?
それとも、コンパイラ自体に違いがあるのでしょうか?
同様にそれは、Delphi7でも同じでしょうか?
Del7Personalを買おうか、Proを買おうか、迷ってます。
Delphi7の製品情報を見ても、エディション(Personal/Pro)によるコンパイラの差に類する項目は見られなかったので、Personalを買おうと思うのですが、若干心配です。
>>690 一応弁解しておくが、俺は「整数型」とは書いてない。
>>668 が「順序型」を知ってるかどうかわからなかったので
曖昧でもわかりやすく「整数」と書いたまでだ。
>>698 同じだと思うが。
異なる場合を教えておくれ。>> 698
702 :
デフォルトの名無しさん :02/12/27 10:59
質問です。 delphi7 自身のメニュー機能(上部にあるファイル/編集ね)は、青色に反転し、 かつメニューにもアイコンが表示されていてちょっとカコイイ あれと同じことを自分もやろうとする場合、どのコンポーネントをベースに組んでいけばいいのでしょうか? 見た瞬間に解かる方いますか?
>>702 この前クールな青色がどうとか言ってたバカか?
習わぬお経は覚えないタイプだな。
TActionMainMenuBar と TActionManager を貼り付けて ActionManager1で標準アクションの追加をして それを TActionMainMenuBar に D&D してみろ
706 :
デフォルトの名無しさん :02/12/27 11:25
Del用のドキュメント生成ツールを知りませんか?
708 :
デフォルトの名無しさん :02/12/27 11:58
Del7 Pro まだ買ってないんだが、どうしようか迷ってる。 今まで以上にバグってたり、ヘルプの出来が悪いみたいなんで。 教えてほしいこと。(Pro 版) (1) Del6 より良くなった点 (2) 新しく追加された VCL コンポには何があるのか (3) 新しい印刷系のコンポは前のヤツと比べてどうか(扱い易いのか) (4) バージョンを重ねるごとに EXE サイズが肥大化しているが、 やはり今回もDel6より大きくなってしまっているのか (空のフォームの場合の EXE サイズはどれくらいなのか) (5) Delphi Language になって追加・変更された予約語、キーワードや構文など どか、おねげーすんますだー。
>>708 Delphiご自慢のランタイムが要らない(プ
をやめるだろうからEXEのサイズは減るんじゃない。
ランタイムが要るけどね(w
アタマ大丈夫?
>>709 昔からランタイムありにはできたよ。デフォルトがそうじゃなかっただけで。
D/Scribe \7,000 !Doc \26,000 Liberalsoft DocMan \33,000 フリーのものならUnit Reporterとかかな。
>>712 ふーん。ランタイムありにしててもバージョンを重ねるごとにEXEサイズが肥大化してたのか。
教えてあげるから素直に聞きなさい!
717 :
デフォルトの名無しさん :02/12/27 13:10
アクションマネージャについての質問です。 アクションマネージャーにてディフォルトアクションの登録でファイル「開く」 を設定した後にonCLOSEの実行部に以下の文を設定しますた。 procedure TForm1.FileOpen1OpenDialogClose(Sender: TObject); begin Caption:=FileOpen1.Dialog.FileName; end; 実行-ファイルを開くでファイルダイアログが開きます。 ファイルを選択したところ(キャプション代入時)でデバッカーで止めました ところFileNameは空なのです。 読む場所が間違っているのでしょうか? それともCLOSEにこれを書いてはならぬのでしょうか?
>>717 事故レス 解決しました。
onAccept に書けばよかったみたいです。
回線切って寝ます。
719 :
デフォルトの名無しさん :02/12/27 16:21
TScrollBarはPosition値の変化でOnChangeイベントが発生するけど、 TScrollBoxのScrollBarのPosition値の変化はどうやってゲットすればいいの?
TScrollBoxEXというコンポを作成して、イベントを追加すればいいよ。
>720 頂きますた。ス晴らしすぎ。超うれし。ありがd。
TScrollBox のようなクラスに OnVScroll のようなイベントがないのは 摩訶不思議。
>>720 イベントが2回連続で発生しちゃってるんですけど・・・・。
>>724 実際に使ってるんだが、そんなの気にしたことなかった。
そんなわけで、問題があるなら各自対応するか、
ScrollBoxのエライ人が出てくるまでお待ちくだされ。
一回目と二回目でmsgの内容が変化してたりしないの?
ScrollBoxのエライ人、早く来い!!(▼ー▼#)
えらくないけど procedure WMVScroll(var msg: TWMVScroll); message WM_VSCROLL; で捕まえて procedure TScrollBoxEx.WMVScroll(var msg: TWMVScroll); begin inherited; if Assigned(FOnVScroll) then FOnVScroll(self); end; で呼び出せば、普通1回のスクロール動作で2回以上呼び出されるのは 当然です。LOWORD(WPARAM) に相当する部分、(msg.code ?手元に環境がないので) が SB_ENDSCROLL の時だけイベントを呼ぶことにしたらどう?
実行させるごとに浮動小数点のinvalid operationが出てしまい、ドツボにはまっています。 ダイアログが出てメモリダンプが出てきますが、これはOSによる例外なのでしょうか。 DelphiのIDEがここが変だ!と示してくれないため、場所が特定できていません。 残る手は一行ずつトレースするしかないのでしょうか・・・。 (Delphiの例外ではなければtry〜exceptでは捕まらないのでしょうか?)
732 :
デフォルトの名無しさん :02/12/27 20:05
>>729 難し過ぎてよくわからないので、実装してください♥
>>731 シミュレーションプログラムです。タイマを使って、単位時間ごとに演算を行ってます。
トレースしようにも、1秒あたりの演算量が凄い・・・(;´Д`)
変数を監視するに、止まる瞬間にもの凄い桁数になってるので、
「数値演算関数でInt64の範囲を超えてるのでは?」くらいしかわからなくて。
VBみたいに、変数を連続して吐き出せるデバッグウインドウがあればいいんですが・・・。
truncの引数の値はいくつだ?
roundは使ってますが、truncは使ってないです。(´・ω・`) 二次関数の結果をroundしてるので、異常な値が渡ってるのかもしれません・・・。もうちょっと試行錯誤してみます。
>>732 >難し過ぎてよくわからないので、実装してください♥
729 です。試したらうまくいきました。
procedure TScrollBoxEx.WMVScroll(var msg: TWMVScroll);
begin
inherited;
if (msg.ScrollCode = SB_ENDSCROLL) and Assigned(FOnVScroll) then
FOnVScroll(self);
end;
HScroll も同様。
>>738 愛してる♥
あたしの愛を&heart;&heart;&heart; あぁ〜ん&heart;
ハ、ハ、ハ、ハートが・・・・・。Σ( ̄ロ ̄lll) ガビーン
$0041D3B4 の一つ前の CALL 命令で Trunc を呼んでいるのだが。 Trunc は FPU に値を積んで呼び出されるから、FPU レジスタの値を 見てみたいですね。 Debug 版 DCU を使って、スタックフレームを作るように指示してアプリを再ビルドすると 呼び出し履歴でかなりの部分を見ることができる。Trunc を呼ぶ前に どんな関数を呼び出してきたかがわかると思う。
それと、Trunc で落ちる。ってのはおそらく 8087 のステータスが変わっているんじゃないかな? Set8087CW(Default8087CW) って一行をアプリケーションで何か作業を行う前に実行。 MS 製の DLL を読み込むと 8087 のモードが切り替わることが原因。
>VBみたいに、変数を連続して吐き出せるデバッグウインドウがあればいいんですが リンカ指定でコンソールアプリにして、writeln をソースに埋め込み。
>>473 素直にOutputDebugString使えよ…
WriteLnの出力先をそっちに変更するテクニックだって、探せばすぐ見つかるぞ
Delphiを学びたいと思っています。 ちょっとした(?)、メディアプレーヤー等、小物を作って自己満足に 浸る場合は、personalでいいのでしょうか? 使えない機能などがよく分かりません・・・ よかったら教えて頂けないでしょうか?
パースナロでいしいで!
>>745 ProとPerの差は主にデータベースやネットワーク関係なんですけど、
そのへんはアクセサリ系アプリにはあんま関係ないでしょうね。
むしろ一番痛いのはOffice風のメニュー(アクションバー)がPerには無いことかな。
でもまあ、Personalは無料なんで、不満を感じるまではPersonalでいいでしょ。
748 :
デフォルトの名無しさん :02/12/28 01:18
TStringList型のslAllに、 同じくTStringList型のslPartの中身を入れたいとき for i=0 to slPart.Count-1 do slAll.Add(slPart[i]); としてるのですが これ以外のもっとよい方法ないでしょうか?
749 :
デフォルトの名無しさん :02/12/28 01:19
アップデートCDキタ━━━━━━(゚∀゚)━━━━━━!!!!!
>>748 slAll.Assign(slPart);
>>750 即レスなのに申し訳ない 私の書き方が間違ってました
slAllの内容にslPartの中身を追加したい場合、でした..
>>752 的確なレス 有難うです
夜分に申し訳ございませんでした
754 :
デフォルトの名無しさん :02/12/28 03:56
リネームソフトを作成してるのですが分からないので質問します 例えば d:\テスト\001 d:\テスト\001\002 d:\テスト\001\002\003 という3つのフォルダがあるときに、 003→001→002という順で4桁連番でリネームさせると 003が0001に001が0002となるのですが、 002は親フォルダ001が0002になってしまうことで 002のパスが d:\テスト\001\002から d:\テスト\0002\002となってしまいリネームできなくなってしまいます d:\テスト\001\002のパスが変更されたことが事前に分かれば リネーム処理をする前にd:\テスト\001\002をd:\テスト\0002\002に 変えてあげれるのですが、FindFirstChangeNotification APIを使っての 変更後パスの取得の仕方が分からないです なにか良い方法はないでしょうか?
>>754 フォルダの階層をカウントして奥にあるもの順にソートするとか。
ShowMessageでメッセージを表示するとタイトルバーにProject1と表示されるん ですが、これって変更出来ないんでしょうか? あと、プログラムの終了は次のどれがいいですか? ・Halt ・close ・application.Terminate 特にファイルの更新などはチェックしないつもりなんですが・・・。
${APPTYPE GUI} の時に、 標準出力をコマンドプロンプトのような窓に割り当てて、 書き出す方法教えてください。 以前、話題に上がったような気がしたのですが見つかりませんでした。
${APPTYPE CONSOLE} に書き換える
>>757 Writeの直前に AllocConsole; を呼び出す
thx
>>746-747 あのXP風のメニューはないんですね・・・
まぁ、無料なので文句は言えませんが。
ありがとうございました。本でも買ってきます
Delphi XP風 メニューで検索汁!
何が見つかるの?
764 :
デフォルトの名無しさん :02/12/28 13:02
Delphiでpersonalとprofessionalとenterpriseがありますけど それらの含むクラスの違いなどはどこで知ることができるのでしょうか?
766 :
デフォルトの名無しさん :02/12/28 13:13
Delphiってどうなんでしょうか? これをやってもPGとして仕事はもらえないのでしょうか?
さぁね。 社内向けツールをさくっと作って喜ばれたりはよくあるけど。
Delphiってどうなんでしょうか? これをやってもバレンタインデーにチョコレートとかもらえないのでしょうか?
あ、チョコはもらえるよ。
>>764 誰か教えて
>>766 VBの方が多いな
ソースまで提供するなら提供先にソースをメンテできる人が
いないとダメだし
提供しないにしてもDelphiについて取引先がよくわかってなければ
怪しいもので開発されるという意識を持つだろうから好まれないと思われ
仕事が欲しいならVB&VCのほうがいい。
それかKylixとか。
>>768 使い方次第
>>764 パッケージを買えば
オブジェクトの家系図がもれなくついてくる(D6ならな)
772 :
デフォルトの名無しさん :02/12/28 15:29
>>771 それに書いてるのか。
Personal使ってるんだけど、使いたいものが
ProにあるのかEntにあるのかがわからないことが
時々あって、Proなら買おうかと思うけどEntなら
あきらめるようかという判断の材料にしたいんだけど…
775 :
デフォルトの名無しさん :02/12/28 15:38
クラス階層図を画像にする方法 1. VCL\Source にあるすべての pas をプロドェクトに追加してコンパイル 2. モジュールエクスプローラ(ブラウザ)を開く 3. キャプチャーする
自作ゲームの実行中に、「無効なポインタ操作」とか「読み込み違反」云々ダイアログが出て悩んでいます。 自分の環境では再現しないのですが、人のマシンに持っていくと出るんです。 今のところ、正常だったのが3台、エラーを吐きながら実行継続するのが1台、突然プログラムが終了するのが1台。 ビデオ・サウンドなどの相性の可能性がかなりあるのですが、全部にDelphiを入れてデバッグする訳にもいかず・・・ こういった場合、地道に可能性を潰していくしかないのでしょうか。
まずはupれ 話はそれからだ。
>>777 そういうダイアログが出た時に、どこが原因かログを吐くようにしたら?
対策は、その付近を作り直すのが一番速いよ
ソースは2,000行あって、出るパターンが全くバラバラなんですよね。(予測不能) せめて自分のコードが変なのか、Sound、DrawまわりのVCL内でエラーが起きてるのかがわかればな・・・。
>>777 「無効なポインタ操作」とか「読み込み違反」のダイアログの情報収集を。
もちろん OS も。問題が起きているアドレスさえわかれば何とかなる。または
次に何を調べるべきかわかる。
W2K/XP などの NT 系 OS で問題が再現できるならしめた物。
>>782 ていうか動的にメモリ確保してるとこ全部チェック。
後、配列操作とかリスト操作してるところも。
BoundsChecker使え
>>783 わかりました。
要は「確保していないメモリにアクセスした可能性」ってことですよね。調べてみます。
(しかし発生するマシンとしないマシンがあるワケが、いまいち理解できてません...(ノД`))
さらに、突然プログラムが終了するというのも聞いたことがない・・・(´・ω・`)
>>785 >(しかし発生するマシンとしないマシンがあるワケが、いまいち理解できてません...(ノД`))
OSのメモリ管理によってはたまたまその領域が使えたりすることも。ってこった。
ありがとうございます。配列を洗い直したところ、範囲がひとつだけ飛び出ている箇所がありました。 全く予想のしない場所で凄い挙動をするもんなんですね・・・勉強になりました。
>>785 スタック領域が破壊されると「アプリケーションが突然終了」という現象が起きます。
スタックトレースどころか例外の補足すらできないときですね。
Delphi では長い文字列やオブジェクトはヒープからとられるため、通常は上記の現象は
おきませんが、ローカル変数として割り当てた配列をポインタで扱うときなどに起きる可能性が
有ります。
あ。788 を書いている間に... 問題が解決したようですね。よかった。
{$R+}しとけ
>>787 こういうのは過去ログ読んでも解決できないですからね。
793 :
デフォルトの名無しさん :02/12/28 23:05
アセンブラの「MOV EDX,EAX」でコード「8BD0」を生成するにはどうすれば出来ますか? asm MOV EDX, EAX end; とすると、コード「89C2」が生成されます。 asm DB $8B, $D0 end; とする以外に方法はありますよね?
そりゃ確かに MOV EDX,EAX は 8BD0 でも正しいが、わざわざオペランドを逆転させるコードを 書く必要性って何?
MDI子ウインドウのタイトルが親ウインドウに追加されるので困ってます。 親タイトル - [子タイトル] と、自動的になってしまうところを、 [子タイトル] - 親タイトル [なにもひらかれていません] - 親タイトル にしたいのです。 どうやってかえるのでしょうか?
796 :
デフォルトの名無しさん :02/12/29 02:14
みんなマルチパートMIMEのエンデコってどうしてる? Indy の IdMessage一本?
あるゲームにキー入力を送信するプログラムをつくっています。 APIのSendmessage関数をつかって、キーダウンイベントで取得したキーを 送信してみたのですがESCキーがうまく送信されませんでした。 いい方法ないでしょうか? procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var hUO: HWND; begin hUO:=FindWindow('あるネットワークゲーム',nil); {ハンドルを取得} SendMessage(hUO,WM_SYSKEYDOWN,key,0); {キー送信} Label1.Caption:=InttoStr(key); end;
自己解決しますた。
これでESCキーをきちんと認識しますた。
こんどはテンキーを正常に認識しない。
>>797 う、ハンドル関数定義でばればれだ・・・。
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
handle: HWND; //ハンドル格納
begin
hUO:=FindWindow('あるネットワークゲーム',nil);
SetForegroundWindow(hUO);
keybd_event(key,0,0,0); {キー押す}
keybd_event(key,0,KEYEVENTF_KEYUP,0);{キー離す}
end;
>>798 × SetForegroundWindow(hUO);
○ SetForegroundWindow(handle);
800 :
デフォルトの名無しさん :02/12/29 17:32
procedure Proc(a: array of Char); のパラメータとしてCharの動的配列を渡す方法を教えて下さい。
そのままじゃ無理なので type TCharDynArray = array of Char; してから渡す。
type TCharDynArray = array of Char; var c1: array of Char; c2: TCharDynArray; begin c1 := nil; c2 := nil; Proc(c1); // 'Array'と'dynamic array'には互換性がありません Proc(c2); // 'Array'と'TCharDynArray'には互換性がありません Proc(TCharDynArray(c1)); // 'Array'と'TCharDynArray'には互換性がありません end; となりますが。。。
procedure Proc(a: array of Char); を止めて procedure Proc(a: TCharDynArray); としなさい。ってこと。
単に動的文字配列を渡す方法を知りたいのではなくて、 オープン配列パラメータに動的文字配列を渡す方法が知りたいのですが。。。
805 :
デフォルトの名無しさん :02/12/29 18:51
半年ぶりに自分の書いたコードを見たら、半分も理解できなかった… 僕の脳はどんどん退化している…
ヘルプでオープン配列パラメータというのを見ると、 function Find(A: array of Char): Integer; このコードでは、任意のサイズの文字配列をとり、整数を返すFindという関数を宣言しています。 メモ オープン配列パラメータの構文は動的配列の構文に似ていますが、両者は同じではありません。 上記の関数は、動的配列を含め、Char型の要素を持つ配列をとります。 となっていますが、これは嘘でしょうか?
Delphi ってその程度の糞言語。
810 :
デフォルトの名無しさん :02/12/29 23:16
文字列リストを引数にとって {**********} { } { hello } { world } { } {**********} こんな感じで枠を付けた文字列リストを返す関数作ったんですが、 この関数の返り値の文字列リストをTMemoに出力するとき、 出力するべき数は合ってるんですけど、文字の種類によって、大きさが 違うのか、すごいガタガタになっちゃうんですけどどうしたらいいでしょう? コンソール出力だときれいに出るのは何で?
811 :
デフォルトの名無しさん :02/12/29 23:17
思いっきり崩れちゃった すいません
フォントを等幅のにしてみたら。MSゴシックとか。
>>809 配列ではない単なるChar型の変数なら、渡せますが。。。
814 :
デフォルトの名無しさん :02/12/29 23:52
>>812 ありがとうございます!!
できました。
そんな単純なことだったんですね。
全然知りませんでした。
では
>>798 SendKeys.pas を使ったらどう?
816 :
デフォルトの名無しさん :02/12/30 11:52
{**********} { .} { h e l l o .} { w o r l d .} { .} {**********}
818 :
デフォルトの名無しさん :02/12/30 14:29
del6personalからpostgresqlへ接続できますか?
ぎゃー!! 正月休みに、今まであたためていたブツでも創ろうとDel6パーソナルを ダウソしてきたが激しく使えん。 クラスビュー(?)とCtrl+Shift+Cに匹敵するツールとか知らないですか?
GExpert
TMemoを使っていて、ALTキーを押した瞬間、 カーソルがかわるのを検出したいのですが、 やり方を教えてください?
Altを押してもカーソルは変わらないと思います。
>>820 使えないなんて言えるのは買った人だけだと思うが、どうか?
>>825 ん?
>ダウソしてきたが激しく使えん。
↑この文は、オレが感じる言葉以外の意味があるのか?
>>826 悪い。見てなかった。
まぁ、評価はしても良いだろう(限りなく不当な評価だと思うが)。
無料だから媚び諂えと言うのもどうかと。
問題なのは使ってもないのに使えんとかほざいてる奴。
何かおかしな話になってる? 会社でDel6エンタ使ってて、自分用にパーソナルと思ってたんだけど 今まであたりまえのように使えていた機能が削られていたから 激しく使えないと言ったのだが。 ま、金出して買ってもないのに文句言うのも大人げないですな。 パーソナルを評価したということで、Del7プロ買うことにします。
>ま、金出して買ってもないのに文句言うのも大人げないですな。 分かってんじゃん。 >パーソナルを評価したということで、Del7プロ買うことにします。 そーしてくれ。
>>820 俺もとソースコードの有無と Ctrl+Shift+C の有無で Delphi4 Pro に縛られてます(苦笑)
クラス補完くらいつけてくれてもいいとおもうんだけどなー・・・。
今日日無料だから糞でもいいなどという屁理屈は通用しない。 その誤った考えを正さない限り.NET Framework SDK + Sharp DevelopやEclipseに ボコボコにされるのがオチ。
↑そういうのはフサギコの方でやってくれ
833 :
デフォルトの名無しさん :02/12/31 02:44
delphiのエディターってフリーキャレット?(行末というものが存在しない)ですが、 これって設定で行末にいくと次の行にいくみたいな風に変えれるのでしょうか? エディタのオプションみたんですが、それっぽいのが無かった。
>>833 フリーカーソル無効化プラグインというのが開発されている どこかに載ってたはず
835 :
デフォルトの名無しさん :02/12/31 02:53
俺はオブジェクトツリーの有無でDelphi6 Perに縛られてます。
837 :
デフォルトの名無しさん :02/12/31 12:03
ListBoxにフォルダをD&Dするとそのパスが表れるようにしたいのですが ファイルも同様に扱えてしまいます。 フォルダとファイルを区別するにはどうすればよいのでしょうか。
FindFirstしてAttrib調べる。
FileExistsとDirectoryExistsを使う
841 :
デフォルトの名無しさん :02/12/31 15:07
usesするだけでImage1.Picture.LoadFromFileできるようになるPNGのユニットないですか?
たしかあった。
今年は Delphi 不況の年だったけど、 来年の Delphi には期待したい。 っていうか日某しっかりしてくれyo!
847 :
デフォルトの名無しさん :02/12/31 21:23
こんばんは、こんな日のこんな時間になんですけど、 先日、Borland から Delphi 7 のバージョンアップ案内のはがきが届いていました。 現在、Delphi 2.0Jを使っていますが、趣味のプログラミングの範囲しか使っていなかったので、 今までバージョンアップは行ってきませんでした。 (Delphi 6 Parsonal は無料でダウンロードできる事は知っていたが) でも、今度はバージョンアップする事にしました。 Delphi 2.0J でかなりのソフト(ツール群)を作ってしまっているんです。 そのまま以降しても互換性とか大丈夫ですかね?
>>847 取りあえず6Personalで様子見てみたら?6->7はできるだろうから2->6ができればあるいは。
849 :
デフォルトの名無しさん :02/12/31 22:12
>>847 符号付整数型と符号なし整数型が少し変わってるんじゃないかな。
コンパイルしてそこら辺の warning が出たら気をつけた方がいい。
昔オレはそれで悩んだ覚えがある。
>>847 コンパイラオプションのデフォルト値がいろいろ変わっている。
それと、コンポーネントをパッケージに入れないと駄目。
851 :
デフォルトの名無しさん :03/01/01 00:47
URLを標準のブラウザで開くときに現ウインドウでなく新しいウインドウで 開くにはどうしたらいいでしょうか? あと、ComboBoxのアイテムをドロップ&ドラッグで順番を変えられる ようにしたいんですがこれは可能でしょうか? ヘルプでも検索でも見つかりませんでした、年明け早々教えてクン で申し訳ないです(^^;A あと・・ A HAPPY NEW YEAR! >全某使い
852 :
デフォルトの名無しさん :03/01/01 01:15
2chに書き込めるスクリプト(<HTML>)を作っているんですが、メモ帳の串リストから串を読み取り、 書き込みボタン一クリックごとに串が切り替わるようにするにはどうすればいいですか?
>>851 なんとなく両方とも難しい気がする。検索を続行すれ。英語のとこも。
>>853 「どこの」ラベルなの?フォームが映ってないけど。実行中?終了してそーなるの?
Label の親がデスクトップなの?
>>851 最初のは、FindExecutable() で関連付けされているブラウザを取得して、
その URL をパラメータにして起動する
2番目のは、可能だとしてもユーザインタフェースとして変。同じ Items を
もったリストボックスを持つダイアログを表示してユーザに操作させるとよい。
>>856 ありがとうございます。 なるほど、別の場所で操作してもらえば
良かったんですか、勉強になります。
早速これからトライしてみます、ありがとうございました!m(_ _)m
>>854 ありがとうございます。
ComboBoxのドラドロが可能かどうか引き続き検索してみます。
>>853 refresh; を追加しておけばゴミが消えるかな?
ゴミが残る問題の解決にはなってませんが・・(スマ
>>853 >これって、なにか原因は考えられますでしょうか・・・。
Label をつかってなくて、デスクトップに直接描いてるんだろう?
描いている領域が更新されてないんでは?
>>ComboBoxのドラドロが可能かどうか引き続き検索してみます。 可能かもしれませんが、ドロップするたびに選択されるんでは? ドロップダウンリストをドラグドロップするのは、疲れそう
>>860 ぅは・・ 移動するたびに選択されたらシャレになりませんね(汗
おとなしく
>>856 さんのおっしゃる通りにします。
ありがとうございました(^^;A
862 :
デフォルトの名無しさん :03/01/01 07:31
>>848 >>849 >>850 皆様、親切なレスありがとうございます。
ところで、Delphi 2.0J と Delphi 7 を両方インストールして
必要なときに切り替えるってのはできるのでしょうか?
Delphi 本体自身が使っているモジュールとかあちこちにありそうで
バージョンの不一致になりそうで怖いっス(笑)
ハードディスクのパーテーションを切ってそれぞれに入れれば大丈夫かな?
>>862 ほとんどのファイルにバージョン番号を織り込んでいるので(vcl60.bpl とか)
DLL の衝突は起きない。
BDE は公式には上位互換ということになっているし。
>>846 >っていうか日某しっかりしてくれyo!
むりです。
したくてもできません。金も人も権限も無い。
>>854-855 >>859 Form1に乗ったLabelです。(親はForm1)
フォームはDesktopCenterに出すようにしてますが、実行中にしばらくするとこうなります。
書き換えは、form1.label1.caption := でしか行っていないです。デスクトップに対して
何かをやってるというのはないハズなのですが・・・(;´Д`)
悪いのはプログラムじゃなかったりして。
マルチスレッドで同期無視してVCLにアクセスしたときになったことあるよ、それ。 あとは、リソース足りなくてDCが腐ってるとか。
delphi3を1万で売ってるとこがあるんですけど、 これ買ってVrUPなり優待販売なりでdel7安くかえますか?
>>867 MMTimer使って一定間隔で更新してるのであり得るかも・・・。
870 :
デフォルトの名無しさん :03/01/01 13:17
>>862 不具合の可能性はないとは言えないと思う。
パーティション切ってそれぞれに入れるだけでは意味がないから、
システムコマンダーとか使ってマルチブートするようにすればいいと
思うけど、ほかの点で面倒になるかもね。
>>869 俺と全く同じだ(w
MMTimerは別スレッド駆動だから普通にVCL呼び出すと死ねるよ。
今年はみんななに作る? 自分はまずは画像ビューア作るよ。
俺は書庫内のファイルを階層構造にして表示するやつ(仮想ディレクトリ?)作るよ。
なんか小さい文字コード変換アプリはさっき書いたけど。
とりあえず、簡単なアクションゲームでも作ってみる
>>873 それ、作りたいかもw
どのライブラリ使うの?
>>862 Delphi7は結局見送ったのだけど、Delphi2, 3.1, 4, 5, 6 とC++Builder4, 5を
同居させてても自分は特に不都合がないから大丈夫じゃないかな?
といっても、普段使ってるのはDelphi3.1, 5とC++Builder5だけだけど。
ファイル転送に特化したツール作ろうかな。 ICQとかメッセを使わなくて気軽に送れるようなの。
>>862 dcuファイルの互換性がない。
つまり、Delphi7用のdcuがなければソースが必要。
882 :
デフォルトの名無しさん :03/01/02 01:37
FileListBoxでMaskを'*.bmp'等設定しても '*.bmpdagorua'や'*.bmpmona'のようなファイルまで取得してしまいます。 これをなくすことはできるでしょうか。 今のところListBoxに下のようなコードで表示させてますが 他にいい方法等あったら教えてください
883 :
デフォルトの名無しさん :03/01/02 01:37
var FoundFile: TSearchRec; Dirpath: string; //表示したいディレクトリのパス begin if FindFirst(Dirpath + '*.bmp', faAnyFile, FoundFile) = 0 then if Copy(FoundFile.Name, Length(FoundFile.Name) - 3, 1) ='.' then ListBox1.Items.Add(FoundFile.Name); while FindNext(FoundFile) = 0 do if Copy(FoundFile.Name, Length(FoundFile.Name) - 3, 1) ='.' then ListBox1.Items.Add(FoundFile.Name); FindClose(FoundFile); end;
文字列について修行がたりない。
>>882 FileListBoxは時代遅れだからListBoxつかっておけばいいよ。
それからFindFirst/Next/Closeはtry/repeat/until/finally/end;を使うのが定石。var
sr: TSearchRec;
path: String;
begin
Win32Check(FindFirst(path, faAnyFile, sr)=0);
try
repeat
if sr.Attr and faDirectory <> 0 then
continue;
if UpperCase(ExtractFileExt(sr.Name)) <> '.BMP' then
continue;
ListBox1.Items.Add(sr.Name);
until FindNext(sr) <> 0;
finally
FindClose(sr);
end;
end;
886 :
携帯からカキコ :03/01/02 13:38
const e=exp(1); ってやったら定数式が必要ですって怒られちゃいますた。 何か解決法はないですか?
var e: real; e = exp(1); readonlyということを強調したいなら interface funciton e: real implementation function e: real; begin Result := exp(1) end;
>>887 ありがとうございます。
下の方がよくわからないんで上の方でやろうとしたら今度は"識別子の多重定義:`e`"と言われてしまいました。
もう一度詳しく教えて頂けませんか?
めんどくさいから const Euler = 2.71828182845090452354; とでも書いたら
>>888 多重定義になっているeを消す。
> e = exp(1);
begin
e = exp(1);
end.
のように実行部に書かないとだめ。
891 :
デフォルトの名無しさん :03/01/02 16:13
>>887 interface
const
e: Real = 0;
implementation
//省略
initialization
e := exp(1);
end.
の方が良くね?なんかコンパイラオプションが必要だったはずだけど>型付定数への代入
892 :
デフォルトの名無しさん :03/01/02 23:36
新しい自作コンポーネントつくろうと勉強中なんですか、とりあえず作業手順を 覚えるために本見ながらそのとおりにやってるんですけど、エラーがでてできません。 適当なコンポーネント継承して、コード何も追加せずにコンポーネント追加でコンパイル しようとしても、エラーが出ちゃうんですけど、何がいけないのでしょう??
>>892 何も追加しなければ大したサイズじゃないのだから貼り付けたら?
エラーメッセージも教えて
894 :
デフォルトの名無しさん :03/01/02 23:54
貼り付けるって言ってもスケルトンコード以外何も書いてないですよ? とりあえず、TEditを継承して、そのpasファイルはデフォルトの場所(delphi6\Lib) に置いて、パッケージは既存のパッケージに追加で最初から選択されてたやつですl delphi6\Lib\dclusr.dpkです。それでコンパイルしようとすると、 delphi6\project\bpl\dclusr60.bplを作成出来なかったとでます。 projectフォルダにはbplというフォルダなど無いのですが、もしかして 誤ってけしてしまったかもしれません。これが原因でしょうか?
>>894 そういうふうに書かないと、
そのbpl というフォルダを作るか、
新規パッケージに追加で、自分用のパッケージを作ったら?
試験用のパッケージは別けておいた方がいいよ。
IDEが不安定になった場合に復旧し易いから
896 :
デフォルトの名無しさん :03/01/03 00:14
>>895 bplというフォルダをつくったら出来ました!
ありがとうございます。作成先のフォルダをbplから別の場所にかえること
はできないんでしょうか?
つーか、「パス通し・uses」で テストしきってからにした方がいいんとちゃうの?
>>896 できます。 やりかたは自分で考えて下さい。
考えないとどんどん馬鹿になります。
このスレ板は他人の育成に気を使う奴多いけど本当は知らないんじゃないか?
>>865 回答じゃないけど、GetDC の引数であるウィンドウハンドルに0を渡すと、
デスクトップの DC が取得できます。ってことで、何かバグが有ってウィンドウ
ハンドルが 0 になっているんだろうね。
VCL のみで作っているとすると、TWinControl の WindowHandel が 0 を返している
ようだ。
>853 タイマー使ってるんだよね。タイマーイベントの終了前に、次のタイマーが入っちゃって、 Form1.Handle(=DC)の廃棄が間に合っていないような感じかな…… ちなみにタイマーの間隔は?
903 :
デフォルトの名無しさん :03/01/03 15:31
[警告] Main.pas(148): 符号付型と符号無し型の演算により、オペランドが拡張されました っていわれてコンパイルはできるんだけど↑消すにはどうしたらいいの? 148 MemoContents.Lines[0] := ' 新着ないこと ' + CurrToStr(isNothing * Timer1.Interval / 1000) + '秒' isNothing が Integer で Timer1.Interval が Cardinalで MemoContents.Lines が TStrings かな
ageちゃった・・・ ご・ ごめんなさい
ageたから答えないよ。
TTimer.Intervalで計算するのはやめたほうがいいよ。精度悪いから。 GetTickCountで差分をとればいい。 //新着あった LastCount := GetTickCount; ... MemoContents.Lines[0] := Format(' 新着ないこと %d秒', [(GetTickCount - LastCount) div 1000]);
>>903 レジスタ幅である32ビットを限界まで使う型で、符号の有無が異なる型を混ぜると、
符号と値の両方を維持したまま結果を格納するために、64ビットで計算される、という警告。
64ビットで計算したいなら、どっちかInt64にキャスト。
32ビットで計算したいなら、符号を維持したいならInteger、正数だけでいいならCardinalで統一。
>>906 できましたー ふがー ありがとーござまーす
Format も GetTickCount 初めて知りましたー
先が思いやられるけどがんばるです
>>908 ははー なるほど
Cardinal に統一しました
マイナスがありえないんだったら整数は Cardinal にしとけってことですかね
あんまり深く考えずになんでもかんでも Integer にしてました 感謝
新着って2chブラウザでも作ってるのか?
そんなだいそれたもんじゃないよ sage進行チェッカー delphiの勉強がてら
例外処理がよくわからんのでこんな風に書いてるんだけど これ↓はどれくらいアフォなのか誰か教えてくろさい Form1.Cursor := crHourGlass; try try HttpCli.Get; except on Ex: Exception do ShowMessage(Ex.Message); end; finally Form1.Cursor := crArrow; end;
try ... except ... finally ... end;
>>914 えー だってー
67 Form1.Cursor := crHourGlass;
68 try
69 HttpCli.Get;
70 except
71 on Ex: Exception do
72 ShowMessage(Ex.Message);
73 finally
74 Form1.Cursor := crArrow;
75 end;
[エラー] Main.pas(73): 'END' が必要な場所に 'FINALLY' があります
ってなるよぅ
try には except かfinally どっちかしかつけらんないの?
ヘルプに書いてあるね。
Form1.Cursor := crHourGlass; try HttpCli.Get; except on Ex: Exception do ShowMessage(Ex.Message); end; Form1.Cursor := crArrow; これでいいのか 失礼しました
キモ
なんでー?
.ComboBoxにAddできるMAX値はいくつなんでしょうか? なんかのプロパティで指定できるのか(TCustomCombo.ItemCountなる ものがあったんですが、TComboBoxは継承してない模様)、それとも メモリによる制限なのかだと思うんですが。 MAX値が指定できるならそれを超えるAddをやった場合古いListから 削除されるみたいな動作がないかなと期待しています。
67 Form1.Cursor := crHourGlass; 68 try 69 HttpCli.Get; 70 except 71 on Ex: Exception do 72 ShowMessage(Ex.Message); 7x end; 73 finally 74 Form1.Cursor := crArrow; 75 end;
>>92 丁寧に書いてくれてありがたいんだけど
やっぱり73行目で「ENDが必要なのにFINALLY」 っていわれた・・・
>>922 はコンパイル通らないだろう。
1つのtryにはexceptまたはfinallyのどちらか1つ。
Del7は知らんけど。
キモいそうだけど 917で行きます みんなありがとうござーました
>>921 ないですか・・・
ありがとうございます、参考にして自作してみますm(_ _)m
それにしても3分で作ってしまうなんてすごいですね。
927 :
デフォルトの名無しさん :03/01/03 22:33
降順ソートの比較関数で整数を比較するとき A と B が等しければ 0 A が B より大きい場合正の整数 A が B より小さければ負の整数 を返すわけですが CompareText の整数版みたいなの用意されていないのでしょうか?
sign
sign って未定義の識別子なんですが・・・ D5を使っています。
>>926 確かに、(A-B) でもとまればいいのだけど、そういう訳にもいかないので難しいですね。
そういう関数を書くしかないのでは?
delphiとVC++を一つのPCにインストールするとPCに障害が出る場合があると聞いた覚えがあるのですが、これは本当ですか? 本当だとしたら、何か解決策はありますか?
聞いたことないな
Del5にはMath.Signないのか?
何で?
ないですね。 JCLMath に Singe というのがあったのでこれを使います。 なるほど、わざわざ Singe と名前を変えているのはD6以降で存在するからなんですね どうもありがとうございました。
>>935 どうやって計算させるつもり?
オーバフローがあるから、signを使っては簡単には計算出来ないよ。 if 文の山を作るしかない。
それくらいなら
type TValueSign = -1..1;
function CompSign(A,B:Integer):TValueSign;
begin
{ } if A>B then Result:=1
else if A<B then Result:=-1
else { } Result:=0;
end;
って書いた方が簡単でしょう。
アセンブラで書くなら
function CompSign(A,B:Integer):TValueSign;
asm
CMP EAX,EDX; //A-B
SETGE CL
ADD CL,CL
DEC CL
CMP EAX,EDX; //A-B
SETZ AL
DEC AL
AND AL,CL
CBW
CWDE
end;
補足 if A>B then ・・・ ; はA,Bの全範囲で巧く動くけど if (A-B)>0 then ・・・ ; は等価ではない。 理由は、A-B を正確に表現するには 32bitでは不足するから
なるほどD6のSignってやつは A=0 = 0 0<A = 1 0>A = -1 多分こういうやつなんですね? こちらは JCLではSgn という名前で定義されています
940 :
デフォルトの名無しさん :03/01/04 02:06
最近、TStringListを覚えて配列代わりによく使ってます で、一次元なら問題ないのですが多次元に使いたい場合は array of TStringList としてTStringListを配列にする方法以外ないの でしょうか? またこの場合のTStringList内の全てのカウントを知る方法は for i:=0 to Length(stringlist)-1 do intTotal:=stringlist[i].Count+intTotal; と一つずつ求めていく以外方法はないのでしょうか?
>TStringListを覚えて配列代わりに 「動的配列」を知っててやってるんだよね?
942 :
デフォルトの名無しさん :03/01/04 02:26
動的配列って最初、配列数を記述せずに SetLengthで値を増減するやつですね TStringListは簡単に並び替えやテキストに記入できるので 使ってるのですが、動的配列を使用したほうが 効率などよくなるのでしょうか?
わかってないみたい
どうわかってないのでしょうか? 解るように教えていただけないでしょうか?よろしくお願いします
>>940 >array of TStringList としてTStringListを配列にする方法以外ないの
>でしょうか?
はい。
>と一つずつ求めていく以外方法はないのでしょうか?
はい。
TStringList.Objects[]にTStringListを突っ込むとか。
それならTListだろ
>>945 ないのですか...それならこのまま進めたいと思います。有難うございます。
それと、最初の問いが解決した以上、書き込むのもどうかと思うのですが、
動的配列の件、どう認識不足なのでしょうか?本題とは異なりますが
私は基礎もほとんど解っていない状態なので、出きるだけ早めに間違いを
訂正しておきたく、教えていただきたいのですが...
ハッシュってゆーの? 文字列とかをキーにして値を格納しておくような方法を調べてるんだけど THashedStringList しか見当たらない。 これって文字列しか格納できないみたい dat番号をキーにスレタイとレス数をペアで大量に持っておきたい檻はどないしたらいいんだしょ
951 :
デフォルトの名無しさん :03/01/04 04:29
信じられないことに、いまどきのOOPLに当然のように 備わっているハッシュはDelphiには存在しないよ。
>>951 C++も標準ではハッシュのコンテナはないです。
ハッシュテーブルは単なるデータ構造の一つでOOPLとは関係なし。
953 :
デフォルトの名無しさん :03/01/04 04:40
C++は今時でもないしOOPLであるかどうかも疑わしいので確かに関係はないね。
>>951 存在しないよ 存在しないよ 存在しないよ・・・ (エコー)
まじぇすか?!
DBからみのプログラムとか 一体どうやって書いてるんだろ みんな
悲しいけどしょうがないのでTHashedStringList を二つ用意することにします
次スレって檻がたてるんでしか? ところで
>953 いまどきのOOPLって何? Ruby?(w
んなもん自分で作れ。
まともなOOPLなら普通 Object.hashとか Object.GetHashCodeとか Object.hashCodeとかあるだろ。
>>952 delphiにも標準でないところで実は便利なクラスがあるんじゃないのー?
ねぇねぇ あるんでしょ?
>>958 TStringList.Strings[]にキーとしての文字列を格納して
TStringList.Objects[]に値としてのインスタンスを格納。
これしかないよ。
>>959 すんません 勉強不足だた
いまよくヘルプ見たらTStringList のAddObjectでハッシュみたいなことできるんだね
感謝
>>967 ハッシュ関数なんて目的と必要に応じて自由に定義すればいいだろう。
オブジェクト固有の属性にするなんてアホくさ。
>>961 アホはお前だろ(藁
もうすぐdat落ちで助かったね(藁
楽したいのなら、THashedStringList にdat番号を文字列にして追加。
もっかいヘルプ見た
TStringList は頭から追加してくから検索に時間がかかって
THashedStringList はハッシュテーブル使うから検索早いぞってことか
今頃分かったのかよ >俺
>>963 ん? 楽したいけどよくわかんないかった
HashedStringList.addObject('1038880567', スレタイとレス数がセットになった何か);
ってこと?
どーせスレ一覧画面に表示するんだろ。 ListViewに全情報もたせなよ。
>>965 すまん あんたの想像しているいじょうにオレは初心者なのだ
TListViewって初めてみてすごい感動してたところだ
何コレ すごい便利じゃん 今まで何やってたの > オレ
必殺技だかなんだかしらんが 2次元のTstringsはTstringgridを不可視にして使ってる俺。メモリ無駄かな・・・ 縦と横が楽に扱えるから好きなんだけど
初心者ならあっさりすっぱりC#使ったらどうよ?
2次元の Dynamic Array じゃ駄目なの ? > 967
たぶん2次元の動的配列で良いと思うのだがindexof とか馴れちゃったし 最初に作った頃は動的配列知らなかったしな・・・・・クラスも作れなかったしなぁ なんか反省しておこう。 もうやりませんとも。はい
RenameFileでフォルダの名前を変えたいときエクスプローラで そのフォルダを開いてると必ず失敗するんだけど いい対処法ない?ちなみにOSはXPです
>>971 Delphi 以外では可能なの?
つーか OS の問題だと思うが。
>>971 失敗したら、リネームではなくコピーしてみる。コピーに成功したら、削除バッチファイルをスタートアップに登録する
98 サポートしなくて良ければ MoveFileEx に MOVEFILE_DELAY_UNTIL_REBOOT 。
あらま、簡単にはいかないようですね
>>973 コピーだとディスク容量等考えないといけなくなるので
警告を表示させて処理中断させます
>>974 ちょっと興味あるので調べてきます
どうもです
∩| ミ ゙''゙゙゙つ ________ ミ∧,,∧ / ミ,,゚Д゚彡 < D6からAnsiIndexStrとか U U \DynamicArray検索できるようです  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
977 :
デフォルトの名無しさん :03/01/04 15:23
質問1 インラインアセンブラで記述できるところは、そうしたほうが処理速度 は向上するのですか? 質問2 クラスとか関数とかあまり使わないで1ユニットにガンガンコードとか 書いていったほうが処理速度は速いのでしょうか?
んなこたない。
>>979 同意。
でも、
現状の速いCPUを使う分にはどれだけの効果があるかは疑問。
結局最適化で下手なアセンブラより速くなったりすることも。
可読性、保守性最悪。
な点であまりお勧めはしたくないですな。
>インラインアセンブラで記述できるところは、そうしたほうが処理速度 は向上するのですか? インラインアセンブラの方が低レベルなので、低レベル=自由度が高いだけであり その自由度の高さをどう使いこなすかは、書き手しだいです。 が、勉強ならどんどん使ってみましょう。 >クラスとか関数とかあまり使わないで1ユニットにガンガンコードとか 書いていったほうが処理速度は速いのでしょうか 関数やメソッド呼出には、コストがかかるのですが、それを無くせばその分短くなりそうですが、 しかし、その分コードサイズが大きくなります。 コードをHDD->RAMに読み込む為の時間は非常に大きいので、逆になる事も多いですよ。
StringGridのFixedRowsで固定したセルをクリックされたかどうか 知りたいのですがどうすればいいんでしょうか エクセルみたいにソートさせたいんです ちなみにpersonal版なのでDBGrid使えません
983 :
デフォルトの名無しさん :03/01/04 22:49
ActionManagerって使い物になりますか? あまり良いうわさを聞かないのですが。
>>983 釣り?
使えるかどうかなんて、あんた次第だと(略)
釣りじゃないです。 実際にまともに使えた=使い物になった人がいるかどうかを聞きたいだけなんですが。
/ ̄ \ Delphi相当のIDEを作れるとは思うですが 0⌒> ヽ BugBrowserってソフトでは ⊂ニニニ⊃ 同機能を自分で実装してしまっている ミ,,゚Д゚,彡 ようですね。 ミ,つ酒O と,,,,;;,,,,;; 有名ソフトでActManeger 使っているのはあるのかな? なぜか irvineもRootFTPもCoolbarで Controlbar実装はホットゾヌの編集窓くらいかな。
>>985 (´-`)。o ○ (で、聞いたからどーだってーの?)
GoogleでもActionManagerネタは ・機能紹介 ・Personalにはありません ・バグバグで使えません くらいしか載ってないね。
_____________ ∧,,∧∩ / ミ,,゚Д゚彡 < ちょっとDemoプログラムを調べまた U ミ \ @ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪ $(DELPHI)\Demos\ActionBands ここのサンプルの動作を見ると、 そこそこに使えそうですが、 とりあえず、カスタマイズメニュー自体が 消えてなくなった後、エンドユーザーは どうしようもなくなるので、それを修正した方が よさそうですね。 あと、メニューにどんなツールボタンでも登録できたりしますが これを制御する方法はあるのかな? >・バグバグで使えません Toolbar.カスタマイズメソッドとか、この頃の某は この辺りの機能、使えないもの多いですもんね。 英語圏の情報とかキボンヌ
>>982 OnMouseUp でイベントを拾ってMouseToCellでFixedCellである事を
判断。あとはソートキーに従ってRowsプロパティをExchangeしまくり
ControlbarってWinXPのビジュアルスタイルに対応できるの?
>・バグバグで使えません DelphiBugListページには載っていないので気のせいでしょう。
993 :
デフォルトの名無しさん :03/01/05 02:41
TForm.OnCloseQuery で分岐処理をしていて、TForm.Close メソッドを呼び出しても 必ずしも Form が閉じられるとは限らない場合、当該 Form が閉じられたかどうか 確認するにはどうすればいいのでしょうか?
それより埋めろよ
質問してるバヤイかよ
過去ログが中々 HTML 化されない板なんだから、なるべく埋めないでくれ。
埋め
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。