モナーの *やさしい* Delphi質問スレ Ver.5
1 :
Delモナー ◆fPymXWHY :
02/04/03 12:10
2 :
Delモナー ◆fPymXWHY :02/04/03 12:10
3 :
Delモナー ◆fPymXWHY :02/04/03 12:10
4 :
Delモナー ◆fPymXWHY :02/04/03 12:11
5 :
Delモナー ◆fPymXWHY :02/04/03 12:11
6 :
Delモナー ◆fPymXWHY :02/04/03 12:12
7 :
Delモナー ◆fPymXWHY :02/04/03 12:13
8 :
Delモナー ◆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を入れ替える」という事が出来と書いてるページしか 見つかりませんでした。
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 あったと記憶してるけど
・・・・別に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;
>28 ありがとうござました。修行してきます。
30 :
デフォルトの名無しさん :02/04/03 23:05
画面があるとします その画面にブラインド効果のようなのを描画するにはどうしたら良いでしょうか? よくJAVAとかで見かける左右に絵が出てくる奴です。
左右に動かしやがれ
Delphi用のウィルスコンポーネントとかってないのかな? 探せばどっかにありそうな気もするんだけど。
33 :
デフォルトの名無しさん :02/04/03 23:27
基本的にウィルス作ってるヤツは人間のクズだね。
>>32 例えばアドレス帳に載っている全員に
メールを送りつけるとか?(藁
私は知りません。
こういう場でやばそうな質問をすると、
>>23-25 みたいに、ろくなレスがつきませんな。
>>9 ,
>>21 ありがとうございます。
一人でも真剣に読んでくれた人がいて嬉しいです。
できれば全員に読んでほしいんだけど。
(全員読むようだったら厨なんか出ないか)
>>33 プログラミングをやる人だったら、
簡単に作れるからな。
この辺は完全に、
人間としてのモラルがあるかどうかの世界だよ。
モラルもそうだし国によっちゃ死刑か終身刑だぞ。 もしネットに流れデモしたら・・・ ブルブルガタガタガタガタ
37 :
デフォルトの名無しさん :02/04/03 23:52
TWebBrowserを使用していますが、ページの表示はWebBrowser1.Navigate(Url); とかで出来るのですが、htmlソースの取得はどうすればよいでしょうか?
>38 すいません。もう少し詳しくお願いします・・・・
40 :
デフォルトの名無しさん :02/04/04 00:00
wininet clientsocket get http
>>35 ツクッテミル コトト ハイフシテ コンランヲタノシム コトハ ベツジゲン ノハナシダロ
`ロクナレスガツキマセン` ト イワレモコマルヨナー
シツモンニハ テキカクニ コタエテイルトモウガ?
>>39 ソケットも知らないでHTTPクライアントを作る時点で何かがおかしい。
43 :
誰でも最初は初心者ウォンチュ! :02/04/04 00:11
44 :
デフォルトの名無しさん :02/04/04 00:23
45 :
デフォルトの名無しさん :02/04/04 00:30
何もかも初心者なんじゃないの?Indyインストールから始めないとアカンのでは? かく言うオレが未Indyインストール(藁 ふーん。そーやんのかー…<Indyでソース 最初からパソナルにも付けてくれればいいのに…。
>15ではありませんが、 ダイアログボックスのボタンのキャプションって どうやったら書き換えれるのかは俺も知りたいです. 市販アプリとかだと変えてるのがある気がしますが そっくりなフォーム作ってるだけでしょうか? どなたかご存知の方よろしくお願いしますー.
MessageDlgPosHelp
48 :
デフォルトの名無しさん :02/04/04 00:39
>>46 市販アプリは自作フォームでしょうね。
Windows全体でやりたいなら常駐して監視する必要がありますから、
・フックを使う
・FindWindowを使う
のどちらかでしょう。確実なのは前者ですが、きちんと作らないと
システム丸ごと落ちる可能性があります。
タイムラグ発生の可能性はありますが、FindWindowの方が簡単だと思います。
>>41 「ろくなレスがつきませんな」
すみませんでした。
半角カタカナで、短く一言で書かれていたので、勘違いしてしまいました。
ここに反省しお詫びします。
迂闊な発言をしないよう今後十分注意します。
>>49 ハンカク ナノワ チョットワケアリ ナモノデ モウシワケナイデス
妙に仕切るんでなく、行動で示せって感じだ。
52 :
デフォルトの名無しさん :02/04/04 01:18
MS Internet ControlsのActiveX使ってるけど、HTMLのソースってどこに格納されているの?
>>51 そうですね。
>>49 は急に態度を変えたように見えてしまいました。
自分の地としては敬体で書いているので、
この場では見ず知らずに人に対してでも、
フレンドリーな文体と敬体を使い分けているんだけど、
詫びる気持ちを表現しようと敬体で書いたら、
逆に白々しい感じを与えてしまった・・・。本当にスマソ。反省してます。
55 :
デフォルトの名無しさん :02/04/04 01:34
固定な人はいろいろ大変だね。
>>54 だからそう丁寧にレスしなくていいんだよ。
雑談スレじゃないだろ?
# これにレス付けるなよ。
(WebBrowser1->Document as IHTMLDocument2).outerHTML
(WebBrowser1.Document as IHTMLDocument2).outerHTML
(WebBrowser1.Document as IHTMLDocument2).body.outerHTML つーか、試す気ないから適当に調べれ
60 :
デフォルトの名無しさん :02/04/04 03:14
鯖にファイルを転送して、しかもそれをリストアップ したいんだが、どうしたらできるん? CGIを使うのか?(なるべく使いたくない。ケチ鯖ユーザーだから…)
不ツーにFTPかHTTP
62 :
デフォルトの名無しさん :02/04/04 09:05
63 :
デフォルトの名無しさん :02/04/04 09:12
ソフトの設定を保存させたいのですがどうしたら良いでしょうか? inifileやレジストリ以外でお願いします。 保存内容を見られたくないのです。 ファイル書き込みで設定したいのですがどのように作れば良いのか・・・。 それともinifileを暗号化出来る?
保存した事も判らないようにしたいの? それとも保存した内容が判らないようにしたいなら、 自前の文字列暗号化処理を入れたらいいんじゃないの? 簡単なのは文字列をバイト単位にキーワードとXORして 16進数に変換してしまう事。 それで良ければ簡単なサンプル書いてあげようか? ・・・って下心ミエミエ?
66 :
デフォルトの名無しさん :02/04/04 11:20
>>65 保存したことは分かっていいです。
ファイルの存在も分かってOKです。
ただ中身を見られたくないだけです。
簡単な方法ありますか?
>>66 簡単なのありますかって・・・説明してもらってるじゃん
前スレの956さんありがとうございました。
>>66 こういう大それたことしようとする奴に限って基礎がなってない。
相手にしなくていいじゃん。
70 :
デフォルトの名無しさん :02/04/04 11:52
改行って#10#13でやってたんですけど、#$D#$Aでも出来るんですね。
>>70 っていうかどちらも同じもの指してますから・・・。
よく考えたら同じだね。 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);
文字列をXORするときは カイギョウコードに気をつけてね。 ,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′,,,,,,,,,,ミ,,゚Д゚彡 < ファイル入出力が UU"""" U U \_#13#10しか考えてないこと多いし
>>77 それで組んで見ました。
友人に見せたらXORだろ?と言われてしてしまいました。
もっと強力なものはないでしょうか?
80 :
デフォルトの名無しさん :02/04/04 12:42
>>78 大丈夫エンコード結果は16進にしてるから改行コードとかは出ません
>>79 大丈夫、これを解読するには
const k='ひみつのアッコちゃん';
さえ判らなければまず見つかりません
乱数列でもスクランブルしてるので、結果だけから見つけるのはまず無理です
>>78 ,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,,,,ミ,,゚Д゚彡 < おや、そうなんすか。
UU"""" U U \_______________
n:= ord(s[i]); してResult:=Result+IntToHex(n,2); してるからかな。
抜け目ないでございますね。
>>79 ≠
>>66 でしょ
ごめん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 は >82 の間違い。 逝ってくる……
87 :
デフォルトの名無しさん :02/04/04 13:38
88 :
デフォルトの名無しさん :02/04/04 14:01
zipファイルをサーバーに転送するソフトを作りたいんだが… 漏れに教えてくれ。
>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予約語だし。
【閉鎖】僕の脳みそが閉鎖しそうです【閉鎖】
くだらない揚げ足
104 :
デフォルトの名無しさん :02/04/04 15:34
105 :
デフォルトの名無しさん :02/04/04 15:34
くそー
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
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
116 :
デフォルトの名無しさん :02/04/04 15:57
117 :
デフォルトの名無しさん :02/04/04 16:01
>>116 Delphi6proならIndyを使えば出来るよ
119 :
デフォルトの名無しさん :02/04/04 16:03
>>117 Indyってコンポーネントか?それともコンポーネントの中に
入っているプロパティーか?
そのコンポーネントって、DLできないのか?教えてくり。
120 :
デフォルトの名無しさん :02/04/04 16:10
>>119 まずDelphiのバージョンとEditionを教えて。
Delphi6のProfessionalならIndyは普通に付いてる。
Personalは無かったと思う。
どちらにしてもソース開示してあるし入れれるけどね。
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です。
Delphi5のlearningで悪かったな。(1万円)
>>123 漏れ的にもNMHTTPがいいんだが、learning版ではコンポがない。
NMHTTPでやりたい。
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の第一パラメータに''はいらないのぉ~?
>>133 俺は Memo1.Create; の部分で藁タ
でも Memo1.Create; ってやったらどうなるんだっけ? 文法エラーにはならなかった記憶があるんだが
チクショー! ばれたか 何故ばれた! そんなこというなら転送機能付きのMemoコンポーネント作っちゃうぞ(マジで)! 何の意味があるのかわからんが
140 :
デフォルトの名無しさん :02/04/04 17:22
>>136 Create;は間違いでは無い。
FreeがあるならCreate;も必要なはず。
>>137 ビジュアルコンポでオーナーコンポが指定されないと怖いだろ、エラーになると思われ
>>139 Memoだと、サイズ的な制限があるから、他でrichでやった方が実用的?だと思う
>>132 どうせ嘘つくんだったら、PCが止まるのとかやれよ。
>>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;
で、NMHTTPコンポってDLできないのか? できたら使い方おしえてくり。 learningバソのHelpFileで調べてもNMHTTPの 答えは返ってこない…。 やっぱ、Proffesional、Enterpriseマンセー!!
149 :
デフォルトの名無しさん :02/04/04 17:38
119に電話だ!
>>114 だったら WinInet 使えって 自分のハードディスクに WinInet.pas あるだろ?
153 :
デフォルトの名無しさん :02/04/04 17:43
>>148 Delphi6のPersonalは無料なんだからそれを使えって
CD欲しけりゃもらえるしダウンロードも出来る
Indyだってただなんだし(俺の記憶では)
154 :
デフォルトの名無しさん :02/04/04 17:44
Personalはコンパ炒るできないんだろ?
>>153
157 :
デフォルトの名無しさん :02/04/04 17:49
>>155 何がコンパイル出来ないのかよく判らんが・・・。
何の話?コンパイルできるけど?
159 :
デフォルトの名無しさん :02/04/04 17:50
>>146 146が器と中身を混同しているのでは?
「飯」を「象印の炊飯器」で炊く
のと、
「象印の炊飯器」を炊く
の違いが判らないと理解できないかも(藁
160 :
デフォルトの名無しさん :02/04/04 17:53
>>155 えーっとな
まず言われたとおり使ってから文句言え。
コンパイル出来ない物を売るか
>>156 何と比べて重いのか・・・
EXEつくれるのか?
>>114 exeどころかもう。。。なあ149>>
Indyが、どんなんか分からないとDLしたくない。 DLしたことによってパソの設定変えたくないから。 Indyがパソが狂うよりもいいものだったら、考えようだが。
164 :
デフォルトの名無しさん :02/04/04 17:58
165 :
デフォルトの名無しさん :02/04/04 17:58
166 :
デフォルトの名無しさん :02/04/04 17:59
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・)<
>>114 はもう少し自分で
( ) \ 調べてから発言してね ♥
| | | \___________
(__)_)
Indy使うの嫌だったら他にFTPの扱えるコンポーネントを
探して、それでもどれも使いたくないと言うのならSocket
から作ってね。
168 :
デフォルトの名無しさん :02/04/04 18:10
114は何でDelphiやってるん?
「きどった」ってナニ?
>>163 マジで、何言ってるのかわかりません。
Indyでパソ?(パソコンの事か?)の設定?(レジストリの事か?)
パソが狂う?(暴走する事か?)
そんな事ないよ、IndyってDelphi用のコンポーネントなんだが?
何と勘違いしたらそんな話になるんだ?
ちょっと自分で調べてから発言しないと、ウザがられますよ?
いや、PersonalをDLして今使っているlearningの 拡張子が変わってしまうのがいや。 Delphi6って、ちょっとDelphi5に比べて形変わっているから、 初心者でいるうちは、Delphi5から移りたくない。 だから、NMHTTPきぼーん。
あと、Indyってどんなんだよ。 自分で調べろってか?
Indyはコンポーネントで、Web開発のために使うことぐらいは 話から分かるけど。
174 :
デフォルトの名無しさん :02/04/04 18:36
前に書かれていた「TIdHTTP」とはIndyのことだったのか。
なんか漏れ、荒らしてるのか?
PersonalをDLするんじゃなくて、 IndyそのものをDLできませぬか?
はぁ・・・さすがに・・・・専用サポート部隊にされてもなあ
騙る←きどる?
とっとと答えんか~~~!!!
183 :
デフォルトの名無しさん :02/04/04 19:00
185 :
デフォルトの名無しさん :02/04/04 19:02
>>114 まず名前欄に fusianasan#好きな言葉 って入れろ
好きな言葉はパスワードみたいなものだ。
忘れないように。#(シャープ)も忘れるなよ。
天然物の荒しか?ちょっとオマエ!細切れに書き込むの止めてくれんか? 番号無駄に上がるし、ここはそんなスレじゃないんでヨロシク頼む。
>6にあるように厨房並みの質問はいいが厨房はお断り。 よって今後>114は放置の方向で。
(゚∀゚)ネタでした(゚∀゚)
スレが汚れたのでリセット
>>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演算子って、どいういうの?
Personal、DLします。
198 :
デフォルトの名無しさん :02/04/04 21:08
>>195 やっとかよ・・・
4時間前から言ってやったのに
199 :
デフォルトの名無しさん :02/04/04 21:09
>>197 無いことは知ってるんです。
ですからそれ相当の物があるのかもしくは自分で作れないかと思って。
関数なりを。
Format() ?
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 最後辺りの if文のところを
if (wUMC=True) or (idxA<wLenA) then
すりゃ判定できるみたいだが、機能が不足してるし、わかりづらいなぁ。
それに、速度的にどーよ。
209 :
DELモナ :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;
212 :
DELモナ :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;
(´-`)。o ○ (春だねぇ…)
春なのーに~♪ おわかーれですーか~♪
くぅ、なんでこんなにスレが伸びているのかと思ったら・・・ あ、Like作ってる人たちはすごいっす。
もう1つの質問スレも春真っ盛りだね。
∧,∧ ,:: / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡っ━'~ | とりあえず、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);
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は入り込むのが難しそうだけどその後が楽そう。
あ、そうそう procedureとfunctionはどう違うんですか? 関数じゃ無いのでしょうか? procedureが手続きでfunctionが関数なのは分かるんですが、どう違うのか・・・ 自分で勝手に function TForm1.aaaaa; begin Edit1.test := 'test'; end; ってやったら動きましたけど・・。
>>250 procedure :void
function :!void
返値があるのがfunctionで、返値が無いのがprocedureだったと思います。
253 :
agent ◆AWcg9OTs :02/04/05 13:52
Delphi6のpersonalでMSのAgentControlという物を使おうと 思って色々やっているのですが、Agentのアニメーション名を Getする方法がわかりません。 どなたか参考になるサイト、ソース御座いましたら教えて頂け ませんでしょうか?
255 :
agent ◆AWcg9OTs :02/04/05 15:03
>>254 それっぽいのを見つけたのでやってみます。
ありがとう
256 :
agent ◆AWcg9OTs :02/04/05 15:36
アニメーションはどうやらGET出来たようなのですが、 それをメモ等に挿入したいのですが、 StringとIAgentCtlRequestには互換性がありませんのエラー。 型を変換する方法ってわかりますか? もうここで質問するような内容では無いのかもしれませんが、 宜しくお願い致します。
>>256 var
a :Real;
b :Integer;
begin
b = Integer(a);
258 :
agent ◆AWcg9OTs :02/04/05 15:51
>>257 レスありがとうございます。
var ag:IAgentCtlRequest;
Memo1.Text := string(ag);
とやってみましたが、Memo1の内容は
3シt
ちなみに、Integerだと
13528536
なのですがどうしたらよいでしょうか?
無理なのでしょうか?
>>258 >アニメーションはどうやらGET出来たようなのですが、
それをメモ等に挿入したいのですが、
意味がわからない。
260 :
agent ◆AWcg9OTs :02/04/05 15:59
>>259 私は、253,255,256,258です。
officeのイルカのカイル等がAgentです。
で、そのAgentのアニメーション名をGetしたいのです。
Agent1.Characters.Character('AgentID').Get('Animation', 'Animation', 'True');
でGetできるようなのですが、そのアニメーション名を知る方法がわからないのです。
Personalをダウンロードしたぞ。 Indyをヘルプファイルで調べたんだが、該当しなかった。 Indyというコンポーネントもなかった。
264 :
デフォルトの名無しさん :02/04/05 16:37
ちっageちまった。
266 :
デフォルトの名無しさん :02/04/05 16:41
>>261 =114
Indyもダウンロードしろ。
PersonalにはIndy付いてない。
Indyの日本語版ヘルプファイルはないのか?
「やさしい」質問スレだったよな。
もういい加減放置して下さい。 他の質問者に迷惑なので
>>269 だから答えてるじゃん・・
やさしくダウンロード方法まで書いてあげたじゃん・・・
まず試そうよ。
>>269 やさしいのは確か
でも質問してばかりで実際に実行に移さなかったら駄目でしょ。
「Indy無いのか?」って言ってるけど、きのう説明済みだし。
それ以前にDelphiの導入やIndyの導入は出来るようにしよう!
わからなかったら教えるけど。
や さ し いからね。
>>269 文句を言う前に、自分のことを振り返れ。
多分
>>269 ではどこにあるのかも知りたいんだろうが、
「Indyの日本語版ヘルプファイルはないのか?」
じゃなくて
「Indyの日本語版ヘルプファイルはどこにありますか?」
と聞くべきだろ。
お前がほしい情報がなんなのかわからんから「ある」と答えるしかないわけよ。
何より、「教えてもらう」という謙虚な態度がお前には必要だと思うよ。
○厨房並みの初心者の質問はOKですが、厨房は質問するな。
はぁ…。114は消えるとするよ。
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貼って見てみたら?
281 :
Agent ◆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モナーは時に私であり、時には別の人。 | | | | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。 (__)_) \_________________________
>>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 コントロールってやつ作れますか?
うん 出来るけど 無料のパーソナルじゃ普通は無理。 お金出して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 って文法エラーか。アフォらしい。
ネタじゃないならそのプロシージャ全部見せろって。
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.
あんた、思いっきり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 DelphiコンパイラがCのソースでも吐くのか?
>>317 だから、全部のCPU用にpascalコンパイラ用意したの?
それともCトランスレータ?
319 :
デフォルトの名無しさん :02/04/06 16:16
え、DelphiってCなんですか?
320 :
(-_-) :02/04/06 16:18
>>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クラスが例外を発生しましたと表示されて・・・・・
325 :
デフォルトの名無しさん :02/04/06 21:04
>>325 そのデータの音量が他のデータに比べてふざけた音量で作成されている。
327 :
デフォルトの名無しさん :02/04/06 22:56
>>326 そなのかなあ。色々と考えたんだけど答えがでんかったYO!
ところで、マスターボリュームの操作ってどうやるNO?
MixerAPIなんて使った事ないYO!
誰かサンプルコードきぼん
329 :
デフォルトの名無しさん :02/04/06 23:44
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
>>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;
350 :
342=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;
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をあらかじめインストールしなければならないのでしょうか。
↑… どうなってんの???
失礼。ブラウザのせいでヘンな風に表示されてるだけだった。
>>349 Ms.Write( P^, Length( P ) );
Ms.Write( POut^, PSize );
'^' いる?
(;;::;;: ;;:::)
(;;::; (::;; ( ;;::;; )
(::: (;;:: ;;;) :::::)
(;;: (::: (::;;; ;;;;)::;;;゙゙);;)
(,,゙:゙:;;;;;,,,(::;;;;;;;;);;;;;;:::):::;;;;)
ヾ(,,;;;;ノゝ::;;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;
これじゃ駄目なんですか?
>>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 );
としたほうが良いカモ
370 :
342=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;
374 :
342=348 :02/04/07 18:11
>>371 レスありがとうございます。
end;が多数並んでいるのはそれぞれのendごとに実は処理が並んでいるのですよ。
とりあえずそれぞれの処理はサブルーチン化してまずはバグ取りを
>>373 を参考にして
やってみます。
375 :
342=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 の一番上にあるものが クリップボードに入ってしまいますよね? 選択したものをクリップボードに入れる場合はどうすればいいのでしょうか?
381 :
342=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 よ?
385 :
342=348 :02/04/07 22:46
>>384 先輩すみませんでした。おっしゃるとおりでした。(礼)
waitをTrueにしたらきちんと前の音の再生を待って再生するようになりました。
でも、結局Application.ProcessMessages;
を入れてるのにキー入力やマウス移動などの割り込みは受け付けません。
コードの位置をタイマーのOntimerからフォームのOnShowに移したりしても駄目です。
何か良い方法はないでしょうか?
386 :
デフォルトの名無しさん :02/04/07 22:52
>>382 ありがとうございました。
無事に動いてくれました。
>>385 「Notify:=True;」の後、再生して
OnNotifyで終了のタイミングを拾う
388 :
342=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は再生が終わったときに来るんだよ。 少しはヘルプ読めよ。甘えすぎだろ。
392 :
342=348 :02/04/07 23:29
>>389 甘えすぎと感じたら許してくれ。
OnNotifyの意味は分かってますし単純アプリで動作する事も確認しています。
同じ音を繰り返し再生している時にキー入力やマウスの移動を検出してプログラムを
止めたいのに止まらないんですよ。出来てますか?
だからみんながOnNotifyだ、とか色々と教えてくれている事をすべて試してるんですけどね。
OnCreate,Onshow,OnPaint,OnTimer等いろんな場所に置いたりコードをいじったり
してるんですけどキー入力時に割り込んで終了させることができてません。
(´ー`)y-~~。oO(どうでもいいけどさStringとTStringsに関する質問が今までで一番多い(はず)のは何でだろう?)
>>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)が別途必要になる。
401 :
342=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イベントでやれば?
404 :
402じゃないけど :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;
412 :
342=348 :02/04/08 03:29
>>408 えっ、while文の中ってロックされてしまうんですか?
知りませんでした。
タイマーをもう一個追加してそちらで処理するようにしたらやっと上手くいきました。
ありがとうございました。
>>409 自分用だからエラー処理はしてないの。気にせんといて。
それ以外に穴があるんだったら教えてちょ~
>>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にてデータを何件かまとめて データを受信するプログラムです。 同じデータを受信しても全く発生しないこともありますし、 有る特定のデータを受信したときに発生するというわけでもないです。 上記のようなエラーメッセージはどのようなときに表示されるのでしょうか
416 :
Agent ◆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 );
どうやってもできないです。
>>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
時間表示されました! ありがとう御座います!!!
431 :
Agent ◆AWcg9OTs :02/04/08 16:53
>>429 レスありがとうございます。
無事にアニメーション名を取得できました。
また何かありましたら寄らして頂きます。
本当にありがとうございました。
>>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 プログラミング用語すらまともに操れないあなたの方に不信感。
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 SysUtilsにもWindowsにもParentHandleというのは定義されてないと思うけど
ところでParentHandleって何?
DelのヘルプにもMSDN(漏れのはちと古いけど)にもキーワードには出てこないし
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) );
>>448-450 ありがとうございます。
もしかして、APChar 自体がポインタなので、
@APChar とすると、文字列のアドレスではなく、
文字列へのポインタを保持しているアドレスを
得ることになってしまう… ということでしょうか。
ポインタのポインタ・・・C/C++ではよく出てくるやつですね
MemoryStream.WriteBuffer(AString[1], Length(AString) );
∧∧ ミ _ ドスッ ( ,,)┌─┴┴─┐ /' つ 再 開 │ ~′ /´ └─┬┬─┘ ∪ ∪ ││ _ε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互換なドッキング実装した人いる?
ドッキングも良いが、やりすぎると ユーザーが所望のポジションにウインドウ配置できなくてイラついてくる罠。
463 :
デフォルトの名無しさん :02/04/09 11:22
16進数を2進数に変換する方法ってないかしら? FC4FC4FC4って言う文字列だったら 111111000100111111000100111111000100 になりますよね。 どうやったら出来ます?
>>463 1バイト単位にInteger型に変換して、2進文字列のテーブルをひくのが簡単でしょう
465 :
デフォルトの名無しさん :02/04/09 12:44
問:「~なり」を使って短文を作れ(ex.彼女を見るなり走り出した) 答:「コロッケはおいしいナリ」 問:「うってかわって」を使って短文をつくれ 答:彼は麻薬をうってかわってしまった 問:「もう・・・してしまった」を使って短文をつくれ 答:もうしわけないことをしてしまった
誤爆なり。スマソ
>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変数で、 一行だけを抜き出すにはどうしたらよいでしょうか?
>>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
A
482 :
デフォルトの名無しさん :02/04/09 19:39
N
483 :
デフォルトの名無しさん :02/04/09 19:44
S
484 :
デフォルトの名無しさん :02/04/09 23:42
ページコントロールに対して PageControl1.ActivePage:=TabSheet1; ってコードでやると、タブはそのタブになるけど タブ内のコントロールがちゃんと表示されない状態になるんですが? Delphi5Proなんです
なりませんが?
>>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を入れた後でないと 意味がないのでしょうか?
>>501 ODBCかADOでやるしかないでしょう
モナーさんは危篤です。
507 :
デフォルトの名無しさん :02/04/10 14:56
右クリックしたまま左クリックしないと押せないボタンを作りたいと思っています。 右ボタンの押下状態を知るすべを与えてください。。。
>>507 Delphi付属のAPI32WH.HLPより抜粋
VOID mouse_event(dwFlags, dx, dy, cButtons, dwExtraInfo)
あたりはいかがでしょうか?
>>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]ボタンを無効化するにはどうしたらいいの? おしえて!
>>511 まさしくこれをやりたかったのですが、
GetKeyStateでマウスの状態もわかるとは思いがけませんでした。
大変参考になりました。
いや、参考ではなく答えでした。すみません。
>>512 フォームのプロパティを一度順に眺める事をお勧めします
ちなみに 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になるからそれでも大丈夫
>>504 さん、ありがとうございます
これで安心してアップデートできます。
>>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 例題が間違ってるから
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]);
もう返答が! どうもありがとうございます。早速試します。 ちなみにFileReadのヘルプ例もそのままじゃ動きませんでした。 iBytesRead := FileRead(iFileHandle, Buffer, iFileLength); のBufferをBuffer[0]にすると動いてくれました。 カッコが足りないとかはさすがに気がつくのですが、例題が動かないと いうのは独学だとツライですね。
うまく動きました。どうもありがとうございます。 自分で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);
とやるクセを付けた方がいいですよ。
そうです。ですがCは少しかじっただけでした。 後ろにつける^は逆参照ですか、ということは私は必死にアドレスを 突っ込んでいたということでしょうか? 本業はVerilog-HDLです。
FileWrite FileReadで渡しているのは 型なしパラメータ といいます。 C++ 言語でいえば 参照渡しで、実際にはポインタ=変数のアドレスが渡されます buffer を渡すとダメなのは buffer という変数のアドレスが渡されます。 つまりポインタのポインタが渡されます Buffer は PChar 型なのですが DelphiではCを使ってる人の特例というかサービスとして array[0..なんとか] of Char と 勝手に互換するようにしています。 ですから buffer[0] も buffer ^ も同じ結果を得られるのですが このサービスは文字型ポインタに限っているので var buffer:pByte のように定義すると buffer[0] が使えません。
納得行きました。ありがとうございます。 Pascalは厳格そうなのですが、Delphiではそういうサービスもあるんですね。 わかりやすい説明のおかげでやる気が出てきました。助かります。
という事で ボーランドの2CHサポートの方、 ヘルプの修正修正報告ちゃんとあげといてくださいね
534 :
デフォルトの名無しさん :02/04/12 00:04
パーソナル無パッチ当てなんだけど、 UpperCaseを全角混じりの文字列に実行すると、 素敵なワケワカメな言葉に翻訳してくれるってのは、パッチ当てると治るですか?
>534 治りません。
>>535 出来れば、なぜ治らないのかまで教えて頂けると即答に納得がいくので
お願いいたしまする。
どーゆー理由で翻訳してくれるんだろう?
537 :
デフォルトの名無しさん :02/04/12 00:30
あの、Indy コンポーネントの使い方を開設した 本かサイトはありませんか?
治る見込みが無いので御家族をお呼びして下さい。
>>537 (´-`)。o ○ (その質問、オレが前にしたなぁ…)
>536 ヘルプ読むね。
>>540 読みました。ありました。そっか(藁
納得。
542 :
デフォルトの名無しさん :02/04/12 00:46
UpperCase は元々そう言う仕様だから。 AnsiUpperCase.
>>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 メッセージの中には一緒に押してるキーの情報くれるのあるでしょ
なに拾ってるの?
そうなんですか? KeyboardProcでは、同時に押されてるキーの情報は取得できない ようなんですが、他のフックプロシージャを使えばいいのでしょうか?
>>539 members.jcom.home.ne.jp/monazilla/document/indytips.html
以前でてきた このサイトは分かるのですが、
IdTCPClient と TdTCPServer の使い方が知りたいのです。
ヘルプには必要最低限のことしか書いてないし…
550 :
デフォルトの名無しさん :02/04/12 07:13
GetAsyncKeyStateとかは使わないの?
VCLでは 普通にWM_KEYDOWN とかのメッセージ処理ハンドラで GetKeyStateを呼んでるだけだね
>>551 フックをかけてるんだから、最初にGetKeyboardStateで全部の状態貰って
以後は自分でフラグを処理したらいいんじゃないの?
QuickReportでバーコードを印刷できるのでしょうか?
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;
>>554 バーコードフォントってなんでしょう?
是非使い方を教えてください。
563 :
デフォルトの名無しさん :02/04/12 18:45
565 :
デフォルトの名無しさん :02/04/12 19:17
RichEditを透明にしたいんですが、ソース見ても全く分かりませんでした。 初心者が解読するのは不可能でしょうか・・? それと、Richeditの背景透明にするコンポってありますか・・?一応探したんですが見つからなくて。
>>565 メーリングリストでも同じ質問してなかった?
567 :
デフォルトの名無しさん :02/04/12 20:23
>566 メーリングリストでも何度か質問が出たみたいなんですが、 結局解決できてないようです。
>>565 RichEdit を透明にしたら、貼り付けたフォームの「壁」が見えるの?
なんかいいことあるのかいな?
スキンとかか。
何個か重ねてたくさんのスレを一度にみれる2chビューワとか 見づらいだろうけど
>>551 >>552 私へのレスでしょうか。
結局、 1) or 2) で処理するということでいいんですね。
ありがとうございました。
>>567 >結局解決できてないようです。
フォームならともかく、子コントロールを透明にするのは
アホらしいので、だれもマジメに考えなかった、というのが真相では
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処理中はソフトが固まってしまうんですが、固まらないようにすること出来ますか?
出来ます
>>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; こうすればよいのでわ。
まちがえた。 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 実行時エラーでない?
>>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
>595 そういうことだったんですか、、ありがとうございます。 あなたは200人に一人のいい人です。
>>599 はじめてみた。
google見る限りないみたい。
602 :
デフォルトの名無しさん :02/04/14 13:18
クリップボードにあるファイルを操作するのってどうしたらいいんですか?
ここですか? 検索も出来ない連中がいるスレってのは。
>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で背景を描けばいいのでは無いかな?
エクスプローラでコピーやら切り取りやらをする時と同じような操作がしたい、ってことなんですが…
>608 そういう操作時にクリップボードにあるのはパスつきのファイル名。 ヘルプでTClipBoardを検索して クリップボードが保持している文字列を取り出す方法を見つけなされ。 簡単に見つかるから。
610 :
デフォルトの名無しさん :02/04/14 17:23
演算子を代入することのできる型ってありませんか? あと、どうやって使うんですか?
>>610 Line 1:ない。
Line 2:だからないって。
>>610 smalltalkとかやってた人?
smalltalkだと何でもかんでもオブジェクトらしいから
演算子でも基底型とかに代入できそうだよね
(´-`).。oO(関数型言語出身?メソッドポインタか何かと勘違いしてませんか?演算子って+とかandですよ?
>>612 やってません。smalltalkってなんですか?
(´-`).。oO(Win32APIリファレンスでHDROP構造体やItemIDListを検索して、わからなかったら諦めるが賢明と思います。難しいです。
>>610 演算子を引数にした手続き・関数を作りたいだけなら
文字列で代用して振り分ければできるけどね~
(´-`).。oO( 「A := + 」みたいなコードがエラーにならない言語って一体…?どんなのをお考え?
(´-`).。oO(整数にしなくても、TypInfo使えば文字列にして保存できます…
CRCの計算式を教えてください。
(´-`).。oO(もう学校始まってるはずなんだけどな・・・
>>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は無視してもいいのだけれど
>>581 どこかにいいスレッドの解説ページありませんか?
今さっきdelphi 6 personal をダウンロードしてみましたが、 どこかおすすめの超初心者向けの解説サイトないでしょうか?
>>639 強引でもなんでもない、心配するほうが変
はじめから TMemoryStream に読み込めばいいのにね!
641 :
デフォルトの名無しさん :02/04/14 23:32
|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || 偽善者は Λ_Λ いいですね。 || 死刑!! \ (゚ー゚*) ||________⊂⊂ | ∧ ∧ ∧ ∧ ∧ ∧ | ̄ ̄ ̄ ̄| ( ∧ ∧ ( ∧ ∧ ( ∧ ∧ |しゃかい .| ~(_( ∧ ∧ __( ∧ ∧__( ∧ ∧ ̄ ̄ ̄ ~(_( ∧ ∧_( ∧ ∧_( ∧ ∧ は~い、先生!! ~(_( ,,)~(_( ,,)~(_( ,,) ~(___ノ ~(___ノ ~(___ノ
>638 2ch
むしろtry~finallyが無いことが心配…リンク先のはサンプルコードだから別にいいけど
>>619 smalltalkは元祖じゃないYO!元祖は志村です。
>>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 := 'モナー'; ←こういう使い方がしたい これではコンパイル出来ません。 お願いします。
>>647 コンパイルは出来る筈。
ただし暴走する筈
C++と違って必ず コンストラクタを呼ばなければいけない
for i:=0 to High(StateArray) do StateArray[i]:= TState.Create;
コンストラクタを呼びたくなければ クラスではなく レコード型やオブジェクト型を使うしかない
また、クラスに対しては動的配列よりも TListを継承して利用した方が適切
ありがとうございます。動作しました。 前やったときはコンパイルできなかったのに・・・スペルミスかな 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);
そもそも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
なので、教えてください。
658 :
デフォルトの名無しさん :02/04/15 18:26
659 :
デフォルトの名無しさん :02/04/15 18:36
数値(integer)のリストを作ろうと思うのですが 動的配列を使ったクラスを作るか、TListを利用したクラスを作るか(もしくはTListそのまま) で迷っています。 動的配列とTList、 どちらの方がメモリ効率的にはよいのでしょうか?
>>659 そういう用途なら 迷わず動的配列!
効率はコーデングしだいでっせ
効率良くしたいなら、必要なサイズは最初にとって 実際のアクセスはオープン配列パラメータの関数・メソッドにするとよろし
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でとりあえず何かやってみたいので お勧めの参考サイトなどあったら教えてください。いちおググルで検索したんですが めぼしいところのサイトをいくつか回ったんですがいまいちよくわからなくて。
>>667 順番にマウスで文字をクリックしては F1 を押しなさい
670 :
デフォルトの名無しさん :02/04/15 21:31
>>667 たしかにここは「やさしい」スレですけど
Delphiを基礎から全部解説していたら十分なWebペ?ジが作れてしまいます。
幸いにもDelphiの入門書も増えてきました。
図書館で借りるなり、本屋で買うなりして、一冊まるまるやりこんでみてはいかがでしょうか。
ちなみに問い「これは何どすか!」に対する答えは「テンプレートです」になります。
>>638 >>667 ・・・・・・
(´-`).。oO(ここで自分のサイト晒したら自作自演に思われちゃうかなぁ…)
>>671 今のぼくにはアナタのサイトが必要なのでし
(´-`).。oO(同一人物かよ! まだ作りかけだからそのうちね…)
>>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 ~②~ end.
①の部分はインターフェース部と言って、ユニット外から可視となる
宣言を書く。ここではフォームの宣言とそれに必要なユニットの読込
(uses 以下)が行われている。Cではxxxx.hに相当。
②の部分は実現部といって、ユニットの挙動を実際に記述する。外部
からは直接見えない。Cではxxxx.cに相当。
ヘルプ→目次→ObjectPascal言語ガイド 辺りを読むべし。
DirectoryExists
(´-`)。o ○ (679のソフトが、どんなんか知りたい…)
>>681 スゲー俺アホだ!まんまの関数があったのか!
しかし、こんなの前からあった?ずっと用も無いのにchdirで調べてた・・・(汗)
(´-`)。o ○ (ヘルプに検索があると便利だと思うのだが…)
>>684 (´-`)。o ○ (検索の仕方が分からないのだろうか・・・)
百歩譲ってもFindFirstが良心の限界
(´-`)。o ○ (95系なんだろ。たぶん・・・)
(´-`)。o ○ (679=684か?ヘルプの検索は役に立たないよ。正直な 話。選択してF1キー押すべし。パソナラーは、それでも文句は言ってはいけない! ググルで検索しる!)
∧∧ ヾ(゚∀゚)ノ 2KかXP使え! ( ) )) (( < <
(´-`)。o ○ (684(≠679)だよ。未だに95は漏れだけか…)
(´-`)。o ○ (アクチベートするくらいならwin95使う!)
(´-`)。o ○ (オレオレ! オレ win95!!軽いwin95空前絶後の最高OS!!)
for文の中でexitをやったらどうなりますか? ループを強制的にやめさせ、次の処理へ進むのですか? それとも、次のループへ逝くのですか?
(´-`)。o ○ (やってみろよハゲ。これは言ってもいいよな>693以外)
exitだとprocedure、functionから抜けちゃうでしょ 普通はbreakを使うのでは?
(´-`)。o ○ (684(≠679)だよ。同士よ…)
関数内関数でexitしたら、どこへ行きますか?
(´-`)。o ○ (いつかアクチベートなんてアホなことする日が来ると思うと ぞっとするな。って、その頃には無くなってたりして。不評だからな(藁)
(´-`)。o ○ (やってみろよハゲとまた言われるのにな・・・)
アクチベートって何?
>>697 一番内側の関数から出る。
実際にやってみようよ、聞く前に・・・
try~finallyの間でexitするとどこへ飛びますか?
やってみてこうなったから、こうなんだ。 って危なくないですか? たまたまかもしれないし。
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を配置したら、どーなりますか?
だから危ないことは他人にさせる・・・と?
procedure a;
begin
try
exit;
ShowMessage('1');
finally
ShowMessage('2');
end;
ShowMessage('3');
end;
procedure b;
begin
a;
ShowMessage('4');
end;
>>704 この程度も自分でやろうとしない奴は逝ってよしですよ。
(´-`)。o ○ (正解は「こーやってみたら、こーなったんですけど、 どないなもんなんでしょうか?」かな…)
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万なら請け負うけど・・・
じつは、みづほ銀行の預金システムを1から作り直すんですが、
>>723 さん、本当に月100万で請け負ってくれますか?お願いしたいんですけど。
損害が出たら賠償請求しますけど
ネタはマ板でやれよ。
むこうにネタスレいっぱいあるからな。
>損害が出たら賠償請求しますけど 私は今までにプロジェクトをこけさせたことがありませんのでご安心下さい といって「みずぽ」の人はこけたんだっけか・・・ 賠償請求されても払い切れないだろうね~・・・夜逃げ・・・あはははは
>>720 でし。
>>725-726 すまそ・・・。
>>722 それはChar型配列の場合、Delphiが自動的に1個長く配列を作って、
自動的に末尾に\0を埋めてくれるってこと?エラスギル、Delphi・・・
>728 それはない。
>>728 ∧∧
ヾ(゚∀゚)ノ 違うよ。単純にBuf[9]の次のメモリアドレスに'\0'を書き込んでるだけだよ。
( ) )) だから、ちゃんと直さないと駄目。
(( < <
>>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←目が怖い
>>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 |ω・`)つ⑩ コレ アゲル カラ モウ ネナサイ
|彡 サッ ⑩
この板への書き込みはこれで最後にします。 すいませんでした。
せんせー。737くんが736くんをいじめましたー。 わたしゆるせませーん。
(´・ω・`) ショボーン ソンナ ツモリ ジャ・・・
737君は女子のスカートもめくってましたー! わーるいんだーわーるいんだー!せーんせぇーに行ってやろー♪ 掃除当番もさぼってましたー!
|ω・´)つ ⑩ カエセ!! |彡 サッ
せんせー。737くんが、ぎゃくぎれしましたー。 じぶんがわるいくせにー。
この板への書き込みはこれで最後にします。 すいませんでした。 ・゚・(ノω`)・゚・。
ネタはマ板でやってくなさい
for i := A to B do begin //処理 ; end; A = B の場合、処理は1回実行される。 A > B の場合、処理は実行されない。
なんかDelphiでポインタ使うと途端にDelphiらしく無くなる気がする… 文字列なら普段はstring使って、やむを得ないAPIコールの時とかだけ、 PChar(string変数) でキャストすれば大抵は問題ないと思うのだが…
フォームに文字を書きたいときはどうすればいいんでしょうか? ボタンや他のオブジェクトは貼り付けられたんですが文字を表示させるには・・?
label貼り付けろ
そういや昔は Label と edit の差もわからんで Label1.Caption := Edit1.Caption とかやって 何故だ!とかやってたなー 目に見える物は全部キャプションだとおもってたあの頃。
754 :
デフォルトの名無しさん :02/04/16 11:40
質問させて下さいなのです。 TSpinEditで中に4の倍数以外が入力されたら排他するにはどうしたら良いでしょうか? OnExit、もしくはChangeの時に処理を掛けようかと思ってます。 if SpinEdit1.value = (4*n) then showmessage('ダメヨン!'); こんなんじゃ駄目ですよね?
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 むしろフリーだからこそ使いやすいけどなあ。
とくに表みたいな形のコメント書くときは重宝してる。
こればっかりは、フリーカーソルじゃないとやりにくくて
しょうがないし。
770 :
Agent ◆sPktrH52 :02/04/16 16:35
また質問させて下さい。 コンポーネント>ActiveXの取り込みから、Microsoft Direct Speech Recogtionを 取り込み、それを利用して音声認識をさせようと思ったのですが見当違いでしょうか? DirectSR1.Listen という物が見つかったのですが使い方がわかりません。 参考になる物もしくは、音声認識には他の物がよいのかどうかアドバイス頂けませんでしょうか? 長くなりましたが、宜しくお願い致します。
771 :
デフォルトの名無しさん :02/04/16 16:53
>>770 取り込んだあとコンパイルした?
pasファイルが指定パスに出来るはずだけど。
772 :
Agent ◆sPktrH52 :02/04/16 16:58
>>771 レスありがとうございます。
コンポーネントとしては表示されています。耳のアイコンです。
DirectSSならば、DirectSS.Speak('hoge);でhogeとしゃべるのですが、
音声を聞き取らす方法がさっぱりわかりません。
どうにかなりませんでしょうか?
773 :
デフォルトの名無しさん :02/04/16 17:17
>>769 いやね、最初は慣れなかったせいか「ナニコレ!」って思ってたけど今ではフリーカーソルが、
使いやすくてたまらんのよ。
フリーカーソル+フリーカーソル無効化アドオン これ最強。
無効化って言ってもマウスでフリーになるし使いやすいったらありゃしない。
TInterfacedObject などの定義に書いてあるものを そのままコピペすれば良いのでしょうか。
QueryInterfaceはそのままでOK _AddRef,_Releaseは、リファレンスカウントを使いたいならそのまま、 使いたくないなら、result := 1;とでも書いとけばいいのではないでしょうか。
if文は絶対「C」形式の方が使いやすい。 ネストしてるif文書いてると、なぜか「end;が多い」と言われる。
778 :
デフォルトの名無しさん :02/04/16 20:36
>777 まず begin endって書く癖をつけろよ
ifbと書いてctrl+J
>>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」の冗長性を証明してるな。
どうでもいいが。
なにが大きくなっているんですか?
僕の中の怪物が!
僕のちんこが
792 :
デフォルトの名無しさん :02/04/17 00:11
>>781 なんじゃそら。if は end と対応しないよ。
781はフツーに begin end で囲んであると思うのだけど。
最後の行の end に対応する 何か がかいてないだけで。
end に対応する文では record-end とかいろいろあったね…
ど忘れしていたスマソ。
>>792 話の流れを読めよ。
>>792 それって、いいわけ?
「話しの流れを読めよ」、じゃわからないから、
どういう意味なのか分かりやすく教えて。
(゚д゚) オチケツ! ~( )- / >
体の中から 何かが ぶえええ ぐええええええ
798 :
デフォルトの名無しさん :02/04/17 00:33
かゆ… うま…
どるどるるりりりり 人間に もどりたいよ・・・・ お前達のせいだ お前達が悪いんだよ!
800 :
デフォルトの名無しさん :02/04/17 00:52
800ゲット!! ⊂(ΦωΦ⊂ )⊃==3 ムッフン
ρ(´-`ρ) ★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 の後に ; を付ける間違いの起きないのがミソ
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 の文法」を読んでからもう一度来てください。
何故そうなったかという歴史的背景はわからないが、文法はこれでわかるだろ。
スマソ。スレッド名みてなかった。ヘルプ見ろは禁句だったっけ?
>>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にはそのような機能がないようなのですが、標準コンポーネントにはないのでしょうか。
procedure TForm1.FormPaint(Sender: TObject); begin with Form1.Canvas do begin MoveTo(20,30); LineTo(100, 10); end; end;
819 :
デフォルトの名無しさん :02/04/17 13:37
822 :
デフォルトの名無しさん :02/04/17 18:57
「基礎からわかるDelphi6」という本を買いました。 すごくわかりやすい本だとは思うのですが、どちらかというと辞書に近いような気もします。 そこで実際にプログラムを組みながら覚えていくような本がありましたら 紹介していただけませんでしょうか?
>>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
830 :
Delフサギコ ◆zE1iiRdQ :02/04/17 20:48
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では ; はセパレーターなのだ
>>834 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)<. 「なんで delphi スレって似たようなのが
( ) .| たくさんあるのですか?」の質問には
| | | | 答えられないけど・・・。
(__)_) \___________________
どのスレを使っても構いません。
主なDelphi関連スレは
>>3-4 を見てください。
ただし他のスレに比べたら、
このスレは一番初心者向けだと思います。
839 :
デフォルトの名無しさん :02/04/17 23:23
DelphiでMTRソフトとか波形処理ソフトとか作れますか?
MultiTrackRecorderですか
841 :
デフォルトの名無しさん :02/04/17 23:29
本来は目的別に別れているはずなのだがどのすれもごっちゃ マルチポストするやつもいたし 相談室がこのスレより難解、高度なことを扱い フサギコスレはプログラム以外にもいろいろ(雑談スレ?)だったはず
843 :
デフォルトの名無しさん :02/04/17 23:44
844 :
デフォルトの名無しさん :02/04/17 23:46
Delphiってボーランドっていう会社が作ったプログラミング言語ですよね?
846 :
デフォルトの名無しさん :02/04/17 23:51
なんで「インプライズ」とかになったの? なんで元に戻ったの?
Inpriseインプライズだった期間ってどれぐらいだったっけ。
Inpriseインプライズって・・・
849 :
デフォルトの名無しさん :02/04/17 23:54
マシューに、あややが出るのはまだですか?待ってるんですが…。
>>846 >なんで「インプライズ」とかになったの?
気分転換のつもり
>なんで元に戻ったの?
やっぱりボーランドのほうが良かった
>>850 本当ォ?(藁
何か事情があるんじゃないのォ!?
姓名判断してもらったからと言ってみる
>>844 正確にはボーランドが作った開発環境で、ObjectPascalという言語を使ってる。
ObjectPascalは、大昔からあったPascalという言語をボーランドが拡張しまくったもの。
Inprise時代もDelphi等の開発環境だけはBorlandブランドだったね
そのような話はマ版でやってくれんか?
そのような話は楽屋でやってくれなぁい?(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でもできない事くらいある。
嫌なら自分でコントロール作れタコ
>863 できないならできないと最初から言え。 逆ギレみっともない
つーかEditにAligmmentとLayOutが無いって結構致命的じゃない? Del厨叩きのネタができてワショーイ
文字を窪ませたいの? なら色変えた文字をズラシて重ねて表示すればいいよ 枠を付けたいだけ? ならPanelで代用したらいいんじゃないの?
>>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はグラフィックコントロールだから、描画方法はそれこそご自由に
>>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
まあ誤爆でもここに書いたという事は 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
>>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;
| \ |До) トコロントチャリピカァ! |⊂ | ♪ Å ♪ / \ チィッカム ヽ(оДо)ノ チィッカム ( へ) チィッカム く チィッカム ♪ Å ♪ / \ マグワッタ゚ァ ヽ(оДо)ノ マグワッタ゚ァ (へ ) マグワッタ゚ァ > マグワッタ゚ァ
904 :
デフォルトの名無しさん :02/04/18 17:29
>>900 > delete(s,1,n+Length(sep));
Deleteって引数1個じゃなくて?
>>901 ありがと
>>904 もちろん他にもバグは沢山ご用意しております。
ここでDeleteと書くと、TStringListのDeleteメソッドを呼んでしまいますが、
ここから Delete手続きの方を呼び出す方法を習得して頂きたいとかように考えております。
907 :
デフォルトの名無しさん :02/04/18 18:18
Image1.Canvas.MoveTo(x1, y1); Image1.Canvas.LineTo(x2, y2) で描いた線を消したい。 しかし Image の Picture にビットマップ画像をロードしてある。 色々ためしたけど線の色が変わるだけで何らかの線が残ってしまう。 良い方法ないですか?
>>907 もう一度ロードさせればいいと思うけど?
リソースから読み出す方法が判らないなら、そのイメージを直接表示せずに
コピーしてから付けばいい
>>908 やはりそれしかありませんか。
では Canvas に描画した一部分を消すのも無理ですかね。
ともあれレスありがとうございます。
>>885 とりあえず、'jconvert'で検索してみる。
>>909 非破壊的な描画つまり XOR なら 2度操作すれば元に戻るよね?
だから移動中の描画とかXORを使うでしょ?
でもそうじゃないなら元の絵を再描画するしかないよ
>>911 XOR も試してみたのですがやはり満足のいく結果が得られませんでした。
Delphi マンセーだったのですが思わぬところでつまづきました。
REALbasic では Refresh というメソッドで下の BMP を壊さずに上の描画を消去できたのですが。
新しくコンポーネント作った方がいいかも知れませんね。
お世話になりましたm(_ _)m
>>912 いや 完全に元に戻ればいいなら
フォームの OnPaintで フォームのCanvasに描くべきだと思うよ
>>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の宣言がすでに定義されているものと異なります。 何がいけないのですか?
>>915 , 916, 918
ご助言ありがとうございます。
いまから試してみます。
>>919 すみません、私ではわかりかねます。
他の方どうでしょう?
>>919 わたしは初心者なので詳しいことはよくわかりません。
ヘルプで以下の一文を見つけました。
>メソッドをオーバーライドするには,override 指令を使ってメソッドを再宣言します。
>オーバーライド宣言するときは,そのパラメータの型と指定の順序を,上位クラスでの宣言と合わせなければなりません。
>戻り値がある場合は,その型も合わせます。
「仮想メソッドと動的メソッド」ってタイトルの所です。
何かの手がかりになるとよいのですが・・・
>>921 サンクス。
Sender:TObjectって継承だと必要ないのね。
924 :
Delモナー ◆fPymXWHY :02/04/18 21:59
>>914 ああそうか、 フォームのキャンバスを使って描くとImageの上には描けないんだ
じゃ
>>915 と同じ事だけど systemタブにある PaintBoxをImageに被せて
そのOnPaintで PaintBoxのキャンバスを使って描けばいい。
具体的に書くと 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)
という構成だと大きな画像でもちゃんと扱えていい感じ
野球は糞
929 :
デフォルトの名無しさん :02/04/19 00:41
ScrollBoxでホイールマウスのMouseWheelUp/Downが拾えないが俺だけでしょうか?
ごめんなさい、わかりました。 ScrollBoxの内容物にフォーカスがあると拾えるみたいです。
>>860 >867さんのようにパネルを使うのが簡単だと思います.
・パネルを置く
・パネルのBevelOuter を bvLowered に
・パネルの上にラベルを置く
・ラベルの Align を alClient に
・ラベルの Alignment を taCenter に
・ラベルの LayOut を tlCenter に
StringGridでCell上をドラッグすると同時に文字を書き込む事って出来ますか? どうやればいいのでしょうか。 ┼┼┼┼┼┼┼┼┼┼┼┼ ┼┼┼┼┼┼┼┼┼┼┼┼ ┼┼┼┼┼┼┼┼┼┼┼┼ ┼┼┼┼┼┼┼┼┼┼┼┼ →→→→→→→→→→→ ※ドラッグすると文字が順次書き込まれて行く 1 1 1 1 1 1 1 1 1 1 1 と言う風に どうやれば良いのかわからないので・・・
>>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;
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」がいいとおもふ。
>>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の枠(リストじゃなくてボックスのほう)を 消す方法を知ってる方いませんか~
>>955 自分用コンポーネントパッケージを作れ
漏れは再インスト時IDEの設定の保存/復帰がしたい...
どのレジストリキーをとっておけばいいのやらサパーリ
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
↑これを実行すると何が起こりますか?
967 :
デフォルトの名無しさん :02/04/20 11:08
XXX.Batというファイルにして テキスト保存して実行すると D6Toolbars.reg とか、いくつかのファイルがXXX.Batと同じフォルダに 書き込まれますよ んで、それがD6の設定になるので 再インス後に*.regを実行したら設定が元に戻るです  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ∧,,∧ 他のマシンに設定移行するときも ミ,, ゚Д゚彡 便利っす 〃 つ旦~~ ~ミ,,,n,,n[ ̄ ̄ ̄.]  ̄ ̄ ̄
>>968 やっぱりさぁ、レジストリよりiniファイルの方が便利だよなぁ、この辺りの設定もiniでやってくれて
た方が良かった、フォルダを丸ごとコピーするだけで良いのだし。
レジストリで管理するかiniファイルで管理するか設定出来るようにしてくれたら嬉しい > Borland
>>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方式で。
>>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 (゚ω゚)> <はっ! /( ) <'\
2000!!
v <(゚ω゚)> <うっ! ( ) /'>
v w (゚ω゚)/ \(゚δ゚)<ジーンギスカーン! /( ) ( )ゝ <'\ / >
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。