モナーの *やさしい* Delphi質問スレ Ver.7
1 :
デフォルトの名無しさん :
02/05/13 12:54 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
( ) .| Delモナーは時に私であり、時には別の人。
| | | | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
(__)_) \_________________________
前スレ モナーの *やさしい* Delphi質問スレ Ver.5
http://pc.2ch.net/test/read.cgi/tech/1017803412 >>2-10 あたりに関連情報あり
○過去スレ
○関連スレ
○Delphi製品情報
○関連リンク
○質問者へ
○ソース置き場案内
_____________ (つかえねぇ奴らだな。氏ね!!)  ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄ ̄ ̄ ̄ ̄| ___________ | ∧_∧ | ∧_∧ / | ( ´∀`) | (´∀` ) <オマエモ・・・オレモナー?? | ( ???:bI ) .| ( Id:??? ) \ | | | | .| | | |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | (__)_) .| (_(__) . ̄ ̄ ̄ ̄ ̄ ※偽者防止のため、IDは必ず出しましょう。
3 :
デフォルトの名無しさん :02/05/13 12:58
4 :
デフォルトの名無しさん :02/05/13 12:58
5 :
デフォルトの名無しさん :02/05/13 12:59
6 :
デフォルトの名無しさん :02/05/13 12:59
7 :
デフォルトの名無しさん :02/05/13 12:59
8 :
デフォルトの名無しさん :02/05/13 13:00
9 :
デフォルトの名無しさん :02/05/13 13:00
最新情報とかは確認してません。 あしからず。
-------風俗の総合商社・MTTどこでも-------
〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●露出オナニーの会●アナル愛好会●痴漢痴女同好会●母乳人妻不倫の会
○楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
http://www.mttdocomo.jp/ -----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/
11 :
デフォルトの名無しさん :02/05/13 14:00
っつ〜かダブってるよこのスレ。
ていうか、まだこのスレには質問がないものね
>>1 せっかくで申し訳ないけど削除依頼してもいいかも
このスレたてたのDelモナーじゃないじゃん。
でもたててくれた心意気はよし。
>>1
なんだと。このやろ。
17 :
デフォルトの名無しさん :02/05/13 19:59
重複スレがあるのでage
19 :
デフォルトの名無しさん :02/06/07 22:52
age
いまさらなんであげるんだか… というわけでsage
21 :
デフォルトの名無しさん :02/06/07 23:09
初心者・中級者・上級者の3スレあればよい。 ここは初心者向けかな。 フサフサが中級、相談室が上級。という棲み分けはどうだろうか。
pCharをファイルに書き込む際、 var p: pChar; f: file; begin (略) BlockWrite(f, p, StrLen(p)+1); (略) end; としているのですが、読みとり方が分かりません。 #0が出るまで1Byteずつ調べていかねばならないのですか?
>>23 ヌルターミネートなら当然そう。
それを避けるんだったら普通は文字列の前に長さを書く。
26 :
StringGridで :02/06/11 00:53
FAQにもなってる、StringGridの右寄せなんですが、OnDrawCellにサンプル ソースを真似て書き込んでもどうもうまくいかないのです。 他の方のコンポーネントを導入しようとおもったんですが、Delphi5用とか 3用とかでうまく入れられません。 Delphi6用で動作する、右寄せ可能SringGridの定番ってありましたら、ご 教示願えないでしょうか?
>>26 D5用とかD3用とかのコンポでもソースがあれば、
D6に入れることはできる。
うまくいかないとすれば多分DsgnIntfまわりだと思うが、
その場合はusesのDsgnIntfをDesignIntfに書き変えてみ。
28 :
StringGridで :02/06/11 02:13
すみません。
あれから、この深夜まであちこちサイトを探したりしてたんですが、いまだ
うまくいかず。
Vectorで
http://www.vector.co.jp/soft/win95/prog/se128144.html を見つけたんですが、これに同梱してあるHELPファイルのインストール
方法でやってみてもうまくいかず…。
「通常は Delphi のインストールフォルダにある \Lib\dclusr40.dpk
(または\Lib\dclusr50.dpk)〜」って、Delphi6だと無い…
作者の方はDelphi4の環境しか無いようで、質問するのも気が引けるので
申し訳ありませんが、Delphi6の環境がある方、上記Vectorの奴か、
他にもいいコンポーネントがあれば、紹介願います。
P.S.
>27様。その域まで達してないです。すみません。
1) FAQ をそのとおりにやってもうまくいかない 2) 他人のコンポーネントをつかおうとしてインストールできない うーむ、普通は 30 さんのいうとおり、1)の問題を解決するべきだと思ふ コードを示せば簡単に解決できるのに!
32 :
デフォルトの名無しさん :02/06/11 23:34
自作コンポをインストールしようとしているのですが、 「パッケージ C:\program files\borland\delphi5\Projects\Bpl\MyComponents.bpl を読み込めません。 システムに装着されたデバイスは動作していません。」 と出ます。 この、「システムに装着されたデバイスが動作してい」ないことと、 .bplファイルのインストールがどう関係するのか意味不明です。 当然Cドライブは生きていますし、 MyComponents.bplも読み取り専用ではありません。 尚、今回インストールしようとしたコンポーネントは、 TCustomControlを継承したもので、特別なことは何も実装していません。 強いて挙げればTCollection及びTCollectionItemを使っていることぐらいです。 データベースなどとも関係していません。 どなたか、正常にインストールする手立てをご教授ください。 宜しくお願いします。
>>33 情報ありがとうございます。
僕も見ましたが、なんかこれじゃぁ再インストールするしかなさそうで・・・。
アップデートなど、IDEに影響するようなことは、
最近した覚えはありません。
引き続き、お願いします。
タイトルバーに、日付を 2002/06/12 (木) とか出したいんですが、 VBみたいに書くと、Caption:=Format('yyyy/MM/dd(ddd)',Date)とかだと 思うのですが、Delphiでの正式な書き方はどうなるのでしょうか? m(_ _)m
>>35 FormatじゃなくFormatDateTime
DelphiのFormatの後ろに何も付かない方の関数は VBのFormat関数よりもC言語のprintf系関数の書式に近い。 VBからの移植はFormatFloatかFormatDateTimeを使うべし。
ありがとうございます。 関数が豊富なのはいいのですが、VB対応表みたいなのないかしら?
39 :
どこにも載ってないよ〜 :02/06/12 00:45
FillRectなどでTRect型を要求されたとき、いつも var Rect : TRect ; begin Rect.Left := 100 ; Rect.Top := 100 ; Rect.Right := 200 ; Rect.Bottom:= 200 ; って感じで変数を作ってひとつひとつ代入して使っているのですが、 もって一括で代入したりする方法ないですか? Rect := ( 100, 100, 200, 200) ; ↑こんな感じ
41 :
デフォルトの名無しさん :02/06/12 00:50
>>41 俺もCからDelphiに移ってきた当初は
構造体そのものを関数値で返せるんでびっくらこいた。
同様な関数にPointやBoundがあるな。
∧,,∧ /前から気になっていたんですがTRectって ミ,,゚Д゚彡 < TopとBottom、及び、LeftとRIghtの値の大小が ミつ つ \ 逆転してたりしても、正しく処理できるんだろうか?? @ミ ミ ∪''∪ TRect系の処理を書くときは みんなそういうところ、注意しているのかな?
>>41 こ、これは・・・
ヘルプの例題で見かけてはいましたが、まさか関数だとは思ってませんでした(型キャストかなにかだと・・)
お手数かけました、すいませんでした・・・(汗
名前入れ忘れました。44=39です。
>>43 いまさっき試して見たらちゃんと正しく処理されてましたよ
>>42 Cで構造体を返せないあなたにマジびっくらこいた。
>>43 ペイントソフトで矩形描くとき、必ず左上から右下に
ドラッグしろって指定されてたらイヤだろ?
関数値ってなんじゃらほい?
関数の戻り値でない?
返値?
びっくらこきまろ
>>40 お気に入りに登録させて頂きました。m(_ _)m
53 :
デフォルトの名無しさん :02/06/12 12:39
>>46 ごめん、Cで構造体は引数でのポインタ渡ししか使った事ないもんで。
どうやるの?
#typedef struct (
int x;
int y;
) HOGE;
HOGE h;
h = getHoge;
の実装は?
>>53 >h = getHoge;
>の実装は?
この2行について説明求む。
>>54 ごめん。
h = getHoge(50, 100);
の関数getHogeの中身。
>>53 何がわからないの?
struct HOGE getHoge(int x, int y)
{
HOGE Result;
Result.x = x;
Result.y = y;
return Result;
}
>>42 =53 本当にCをやってたのかと小一時間…ハァハァしたい
ResultはgetHoge内のスタック領域に取られたローカル変数だよね。 関数を出ると破棄されるのでは? メンバ単位のコピーが正常に行なわれるの?
>>58 , 59 いや、スマソ。確かに間違ってるとこある。C++やってるとstruct付けるの忘れる…
struct HOGE Result;
だな。
いや、#typedefしてるから合ってる。
>>60 ガタガタ言わずに試すのが吉。
メンバ単位とか言う前にsizeof分メモリコピーすれば住む話。
>>60 正常に行われる
>>62 Cは変数の宣言の前にもstructいるだろ。
そもそも「#typedef」て何という疑問
ぐぁ・・・失礼
>>64 為になった。ありがとう。(ANSIのいつからなんだろう?)
BCC32でアセンブラのリスト出して確認した。
確かにメンバ単位のコピーは行なわれてる。
>>70 K&Rでは無かったような?
_getHoge proc near
?live1@0:
;
; HOGE getHoge(int x, int y)
;
push ebp
mov ebp,esp
add esp,-8
mov eax,dword ptr [ebp+8]
;
; {
; HOGE h;
; h.x = x;
;
?live1@16: ; EAX = return
@1:
mov edx,dword ptr [ebp+12]
mov dword ptr [ebp-8],edx
;
; h.y = y;
;
mov ecx,dword ptr [ebp+16]
mov dword ptr [ebp-4],ecx
;
; return h;
;
mov edx,dword ptr [ebp-8]
mov dword ptr [eax],edx
mov edx,dword ptr [ebp-4]
mov dword ptr [eax+4],edx
;
; }
;
「メンバ単位」のコピーの話だったのか。 でも、仮にメンバ単位のコピーでなくても構造体を返せるかどうかとは関係ないと思うけど…。
ちなみにPascalでは配列を関数値にできる。
多分
>>42 はその辺と勘違いしたのでは。
type
THoge = array[0..9]of Integer;
function Hoge(i,j:Integer): THoge;
begin
//省略
end;
74 :
デフォルトの名無しさん :02/06/13 00:54
海外のサイトから、コンポーネントらしきものをダウンロードしたのですが、 中身を見ると、 about.dfm about.pas config.dfm config.pas fmod.dll main.dfm main.pas spectrum.pas testbed.dpr という内容でした。 fmodと言う、ogg形式のサウンドを再生できるプレーヤの delphi版らしいのですが、これを自作のアプリに組み込む事は可能でしょうか? コンポーネントのインストールがいまいちよくわかっておりません。 勉強できるサイトなどありましたらご教授頂ければ幸いです。 よろしくお願い致します。
>>74 (゚д゚) それ、ファイルが足りない気がするので、
~( )− 本家からアーカイブを落としなおして再構築シル
/ > (ちなみにプレーヤーのサンプル デシタ)
>>76 (゚д゚) アーカイブの中にfmod.pasとfmoderror.pasがあるから、
~( )− それらをサンプルプロジェクトに追加して再構築シル
/ >
あるルーチンを実行すると、 そこから呼び出していない関数内でエラーが起こります。 しかもエラーの起こる関数は毎回違っていて、 たまにエラーを出さずに強制終了されることもあります。 環境はDel4(ServicePack2,3)+WinMeなんですが、何か前例はありますか?
出来ましたぁ〜(T-T ありがとおございます。 いぢり倒します。
sage忘れましたぁ(T-T
>>78 そのルーチンをステップ実行してみましょう
1、帰った直後で->スタックを壊した
2、どこかのメソッドで->イベントか仮想メソッドを壊した
82 :
デフォルトの名無しさん :02/06/13 12:27
DOSのコマンドを入力した結果を知りたいんだが、、、 たとえば、DOSで ver と入力すると、 Windows 〜〜〜〜 と結果が表示されるのだが、、、 それを変数の中に入れたい。 DOS窓はいちいち開かずにやりたいのだが・・・
84 :
デフォルトの名無しさん :02/06/13 12:52
Perlで言う「crypt」を、Delphiでできませんか?
>>84 出来ますよ トリップ解析用に一時流行しましたね
方法はGNUからでも crypt.c を そしてボーランドからBCC32 を手に入れてコンパイルし
delphiから objファイルを呼び出せば良いだけです。
それが面倒なら DESCrypt+Delphi で検索してコンパイル済みのを手にいれるといいでしょう
87 :
デフォルトの名無しさん :02/06/16 12:42
Delphiで株のチャート分析&予想をするソフトを作ろうとしています。 色々とネットを検索したらTeeChart?,Tchart等を使う方法やPaintBoxを 使っている人等がいて、何でトライしたら良いのかいまいち良く分かりません。 お薦めの方法、あるいは参考になるサイトやスレがありましたら教えてください。 今まで画像系の処理はした事ないので四苦八苦してます。 開発環境はD6パソ(自宅)&エンプラ(会社)です。
89 :
デフォルトの名無しさん :02/06/16 13:45
誰も教えてくれない。鬱だ。相談室逝って来る。
>>89 複数やり方があって自分で自分にとってベストなやり方も見つけられい。
プログラマーってもっと高尚なお仕事。
91 :
デフォルトの名無しさん :02/06/16 14:26
>>90 高機能はいらないので、とっつきやすい簡単にできる方法を探してます。
>>87 折れなら、TImageを貼って自分で Image1.Canvas で書いてみる
再描画とか考えなくてもいいし駱駝ろ
ギコナビって、登録しないと巡回できなくなったのかよぉ・・・。 他のに移行しようと思うけど、どれが一番使いやすい?
誤爆してしまった、ごめんなさい。
Delphiに限らず、Excelとかでもなんですが、aaaという表示形式で、 平成とかになるのは、OSがやってくれてるんでしょうか? つまり、平成の次の新元号になった場合、WindowsのファイルをUpdate すれば、ExcelでもDelphiでも新元号を表示してくれるようになるんで しょうか?
すみません。gggでした。
97 :
デフォルトの名無しさん :02/06/17 00:36
質問があります。 現在テキストエディタを作っています。 プログラム終了時に、ファイルが変更されたか否かをチェックしたいのですが どのような方法があるでしょうか? メモ帳などでも編集したあと保存せずに閉じようとすると、「hogehogeを保存しますか?」 と、ダイアログが出ますよね? あれを実装したいと思っています。
すいません、バージョン書き忘れました。 ウチのはDel5です。
>>97 TMemo や TRichEdit の Modified プロパティーを見れ
>>99 ありがとうございます!解決しそうです。
すばやい対応ありがとうございました!
101 :
デフォルトの名無しさん :02/06/17 04:16
ツリービューでドラドロを行おうとしています。 OnMouseDown で、 TreeView.BeginDrag(False, 5); を書いているのですが、マウスのボタンを押すとすぐにドラッグが 始まってしまいます。 TreeView以外のコンポーネントなら正常に動きます。(TPanelとか) TreeViewの場合は何か必要なのでしょうか?? Windows2000 SP2 + IE6.0 Delphi6 + UP2
>>93 最近メンテされてないみたいだけど「かちゅーしゃ」がいいとおもう。
しかし、ここに誤爆するってこたー、Delphi使えるんだろ?ソース見て修正できないのか?
103 :
デフォルトの名無しさん :02/06/17 11:14
すみません、全角カタカナ+全角濁点の2文字を 全角カタカナ1文字に、しようとしています サンプルを利用してつぎのソースを書いてみたのですが、置き換えられません、へんな部分を、御指摘いただけないでしょうか? function ReplaceCharInString(S, FindStr, ReplaceStr: string): string; var I, L: Integer; begin Result := ''; L := Length(FindStr); I := AnsiPos(FindStr, S); while I <> 0 do begin Result := Result + Copy(S, 1, I - 1) + ReplaceStr; Delete(S, 1, I + L - 1); I := AnsiPos(FindStr, S); end; Result := Result + S; end; function dakuonHenko(s: string): string; var dakuon,dakuten :array[1..29] of string; moji1,moji2 :string; i,j,k : integer; begin Result := ''; j := 1; k:= 1; for i := 1 to 27 do begin moji1 := 'ガギグゲゴザジズゼゾダヂツヅデドバパビピブプベペボポヴ'; moji2 := 'カ゛キ゛ク゛ケ゛コ゛サ゛シ゛ス゛セ゛ソ゛タ゛チ゛ツ゛テ゛ ト゛ハ゛ハ゜ヒ゛ヒ゜フ゛フ゜ヘ゛ヘ゜ホ゛ホ゜ウ゛'; dakuon[i] := copy(moji1,j,2); dakuten[i] := copy(moji2,k,4); Form1.Memo1.Lines.add('dakuon'+IntToStr(i) +'='+ dakuon[i]); Form1.Memo1.Lines.add('dakuten'+IntToStr(i) +'='+ dakuten[i]); j := j + 2 ; k := k + 4; end; for i := 1 to 27 do begin ShowMessage(s+ ' '+dakuten[i]+' '+dakuon[i]); Result := ReplaceCharInString(s,dakuten[i],dakuon[i]); end; end; procedure TForm1.Button1Click(Sender: TObject); var st :string; begin Memo1.Lines.Add(dakuonHenko(Edit1.Text)); end; end.
Memo1.Lines.Add(ReplaceCharInString(s,'タ゛','ダ')); とすると、'ダ'に変換されるのですが ただ、次のように変数になると動かない。不思議。 Result := ReplaceCharInString(s,dakuten[i],dakuon[i]);
>>104 あの、質問なんだけど漢字を表現するには何バイトいるか知ってる?
最強を誇るプログラミング言語「C」 Cはそのまま「シー」と発音します CとC++はプログラマを目指す人には憧れであり、絶対に通らなければならない言語です このC言語は、現在のプログラム言語の中ではもっとも強力な言語で 優れたアプリケーションのほとんどがC/C++で開発されています では、そんなすごいプログラム言語「C」の特徴とはなんでしょう 当然、他のプログラム言語にはない優れた能力があるはずですよね。簡単に説明すると プログラムの移植が比較的容易である メモリやCPUなどを直接利用するプログラムに適している(OSやデバイスなど) C言語プログラムの中でC++の関数や変数を利用可能 高速でコンパクトなプログラムを実現できる といったところでしょうかね う〜む、これまでインタプリンタ言語をやってきた人には夢のようなことです さて、ここまで読んで「そんな優れたC言語のコンパイラってどうやって作られたの?」っと疑問に思いませんか? コンパイラももちろんプログラムでできてますよね。ということは、なにかの言語から作られたということです じつは、C言語のコンパイラはアセンブラという言語から作られたのです 最初に小さいCコンパイラがアセンブラで作られて、その後にC言語でC言語のコンパイラを作り上げてきたそうです ICをICで作ってLSIになったような感じかもしれませんね(^^
>ICをICで作ってLSIになったような感じかもしれませんね(^^ (゚Д゚)ハァ?
時間式(XX時YY分ZZ秒)から一日の経過時間割合を出す式わかりませんか? Windows2000、Delphi2.0Developerです
109は荒らし
>>109 あっちで答えでてるは小学生以下の質問を繰り返すわたまらんな。
初めてなもんで。すみません>ALL
>>112 初めてとかの問題じゃないと思うぞ。
小学生でもわかる質問は普通にウザイ。
おまえが幼稚園児なら、頭良すぎでウザイ。
>>113 dakuten[i],
これはdakutenのi文字目でしょうか?
それともdakutenのiバイト目でしょうか?
>>114 怒りながらも三行目で笑わせるあなたが素敵。
117 :
デフォルトの名無しさん :02/06/17 14:13
>>115 103のソースの一部で
var
dakuten:array[1..29] of string;
として
dakutenのi番目の、string変数です。
誤解を与えるかきかたですみません。
118 :
デフォルトの名無しさん :02/06/17 14:18
>>106 質問スレなのに
質問にも、回答にもなってなさそ。
これに対応する質問ってあった?
>>117 ANSIPosって2バイト対応?
まぁ、要所要所にShowMessageかませるかデバッガ使って書く変数の流れおってくダサイな。
>>118 ちょっと前にC言語は何から出来たんですか?と言うのがどこかのスレであったよ。
マシン語で書いたとか言う愉快な奴がいて散々叩かれてたから仕返しじゃない?
>103 ReplaceCharInStringって関数自前でつくってるけど StringReplaceじゃだめなんすか?
>>106 面白すぎる。
で、インタプリンタって何?
>87 使いまわしとか考えるなら、コンポーネントつくるのがベスト。 といっても、どんなものつくっていいかわかんないときは92さんのほうほうで Canvasに書き出してからTGraphicControlやTCustomConstrolから 派生させて自前のコンポつくったら、別のソフトを作っても簡単に表部分は移行できるとおもわれる。
124 :
デフォルトの名無しさん :02/06/17 17:24
DateTimePickerコントロールを、凹んだ状態ではなくて、 平らな状態で表示させたいのですが、 どうすればよいのでしょうか?
Bevel*あたりを変更かな?
124です。 Bevelをいろいろ変えてみたのですが、 見た目に変化がありませんでした・・・ 他になにかあるのでしょうか(T T)
>103 > for i := 1 to 27 do begin > ShowMessage(s+ ' '+dakuten[i]+' '+dakuon[i]); > Result := ReplaceCharInString(s,dakuten[i],dakuon[i]); // これが間違い > end; 『sの中のカ゛をガに置換して,その置換した文字列の中のキ゛をギに置換して…』 とやらなければならないところを 『sの中のカ゛をガに置換して,(その置換した文字列を放置して)sの中のキ゛をギに置換して…』 となってしまっています. 結果としてsの中のウ゛をヴに置換したものが戻り値になってしまうわけです. ところでブレークポイントやステップ実行などのデバッグ機能はお使いですか? こういうミスも見つけやすくなりますよん. デバッグ用にメモコンポーネントに書き出したりShowMessageを使うのは 上の方法が使えないときだけでよいと思います.
128 :
デフォルトの名無しさん :02/06/17 18:03
>>128 イベントが無いので、ソースを弄るしかないかもしれませんね
ただ、リンク先を見ると OnChangePositionイベントというのがあるようです
これでEqualizer[Index: Integer]: Integer; というプロパティを見て表示すればいいのでは?
MP3からスペアナ表示をするには一般的に
1、MP3のエンコード情報を使う。
2、デコード結果から
>>129 さんのいうFFTを使う
3、デコード結果から2次帰還フィルターで分析
(Qを無限大にする方法もある)
>>93 >ギコナビって、登録しないと巡回できなくなったのかよぉ・・・
俺一人の判断で規制しているわけじゃない。って何度も書いているんだけどなあ。
132 :
デフォルトの名無しさん :02/06/17 21:16
音に同期して他のアプリからデータを取ろうとしているのですがうまくいきません。 あるアプリが処理を終わると音を鳴らしてtxtファイルに結果を出力して開いてくれます。 この、音が鳴った事に反応して、自動的に 1、音の検出 2、キー入力とマウスを一時的に無効化 3、開かれたファイルを探し出し、データをコピー 4、そのアプリの終了ボタンをクリック 5、自作アプリにコピーデータを表示 と言うことをやろうとしています。 5は出来るのですが、1〜4がうまくいきません。 1と2は全く分かりません。 3と4はハンドラの見つけ方が分かりません。 ハンドラさえ分かればそれをアクティブにするなり、終了ボタンにSendMessage出来るのですが。 どうかヒントだけでも結構ですのでご教授願います。
すみません、書き忘れていました。 開発環境はD6Proです。
>>133 たったそれだけのために音声解析するのはバカらしい。
>>134 音は音声ではないです。
あるwavファイルを毎回鳴らします。
なので、そのwavファイルが使われているかどうかを検出出来れば
と思っているのですがとっかかりさえ分からない状態です。
>>132 >あるアプリが処理を終わると音を鳴らして
>txtファイルに結果を出力して開いてくれます。
アプリがtxtファイルを作成・変更するのを検出したら?
>>136 その方法も考えたのですが、出力するデータが何も無い場合、
txtファイルは変更すらされません。
txtファイルの作成や、変更を監視していても
txtファイルは毎回閉じられるわけではないので、駄目なのです。
毎回アプリの終了ボタンを確実に押せればその方法も可能なのですが、
連続して音が鳴る場合があるので、その時はtxtファイルは開きっぱなしで
一部データが追加されたり、何も変更されなかったりします。
色々と考えたのですが、どうも音で監視するしかないみたいでして。
>>137 音声データの意味も理解してないのに無理。
プログラム呼び出し。30秒変化がなければタイムアウト。
音声出力を標準出力にリダイレクトしろ。
>>138 サウンドファイルが使われているかどうかを監視しようと思ったんだけど
無理なのかなあ。
>>139 標準出力にしたらどうなるのか意味が分からないので調べてみます。
あれ?すみません誤解があるようですのでちょっと捕捉します。 >1、音の検出 はマイクで音を拾ってそれが希望の音かどうかを判断して・・・等という事を やろうとしているのではないです。私のスキルではとてもできないですし。 毎回使われるサウンドファイルは決まっているので、そのサウンドファイルが 使用中かどうかを検出しようとしています。
対象のアプリケーションが音声ファイルを開こうとするのを フック出来ないですかね?
>>143 はい、それを狙っているのですが、やりかたが分からないもので。
ヒントややり方だけでも結構ですのでどなたかよろしくお願いします。
>>131 今頃気が付く辺りからして、マメにホームページ見たりバージョンアップとかしてないんしょ。
それはそれとして、巡回はいらんけど「お気に入り」は絶対ほしいです、
昔は、それこそ巡回をお気に入り代わりに利用してたんですけど、今はとても不便に
なりました。(登録すりゃいいだけなんでしょうがね^^;)
あれなら、履歴リストの中身を前回終了時の状態でiniファイルにでも書き出して次回の
起動時に再表示させてくれてもいいけど。
>>144 WinSight32で該当アプリを監視してみたら?
音で判断なんて馬鹿げてると思うよ、終了のアクションが他にあるだろうに。
遠回りしているようにしか思えない。
因みに、そのアプリは何?一般には出てない物なの?
まさか、競馬関連か?(藁)
147 :
StringGridの現在行の取得 :02/06/18 03:58
すみません。色々やっているのですが、どうしても出来ず、こんな深夜になってしまいました。 StringGridで、マウスクリックやカーソルキーで、セルを選択した場合の現在行を取得したい のですが、OnSelectCellイベントで、Rowを取得しても選ぶ前の行の値になります。 今回選んだ行の値を取得するにはどうしたら良いのでしょうか? (今日はもう寝ます…)
>>147 はぁ?
OnSelectCellのイベントの中でARowの値を参照したらモロに現在行になるだろ?
荒しか?
そういや少し前に株式の更新を知りたいからって画面を監視して更新があったら音を鳴らす アプリを作ってるって奴がいたな。 もしかして、そういつが作ったアプリが鳴らす音を検出しようとしてるんじゃあるまいな?
>>146 それやりました。
と言うかずっとやってました。
どうしてもWinSightが掃き出す、膨大な量のデータの中から
該当データを取れなかったのです。
きちんとした使い方を学びたい・・・
そのアプリはアメリカの会社が出しているアメ株の取り引きソフトです。
画面には該当銘柄の値動きが表示されているので、それをHook出来れば
一番良いのですが、私には出来ませんでした。
このソフトは注文が約定するとピンポーンと音が鳴り詳細を表示してくれます。
持ち株の売り指し値の5セント上で空売りを注文していると音が連続して鳴って
両方の詳細がほぼ同時に表示される事もあるので。
どなたか良きアドバイスを。
>>150 という事はFindWindowとかEnumWindows で探してGetWindowTextで取得というのは
もうやってるわけね?
>>151 いえ、WinSightが掃き出した膨大なデータの中から該当ソフトのハンドラを
見つけられなかったのでやれませんでした。
WinSightの使い方をきちんと学ぶべきなのでしょうけど、FDELPHIや
DELPHI-MLの過去ログを検索しても無いですしお手上げ状態です。
153 :
デフォルトの名無しさん :02/06/18 14:36
最近のバージョンのヘルプって使いにくくないですか? 俺はVer. 2の形式が好きだった。 説明文の中にリンクがいっぱいあって、すぐに目的の所まで 行けた。プロパティとかも、一覧表示だったからスクロール させなくても全部見えたし。 Ver. 6で元に戻るのでは、、と淡い期待を抱いていたけど、 やっぱだめか。。 ごめん、誰かに言いたくて。。
なのに言えなくて。。
>>132 等
目的のウインドウをタイトルバーの文字から探す>FindWindow
見つかったウインドウの子ウインドウを列挙してシラミつぶす>EnumChildWindow
探すよりもフックかけるほうが初心者には難しいかと。
VCLとCLXの違いが ヘルプを何度読んでも理解できない自分は 逝ってしまったほうがよろしいですか? と 書いてみるものの 実際のところ素でやさしいレスを期待しています ごめんなさいごめんなさいごめんなさい 馬鹿な質問なのでしょうか。。。それすらわからない初心者です
。。。ごめんなさい わかりました 開発者ガイドに思いっきり書いてありました ヘルプにも軽く書いてありました 逝ってまいります
>>156 思いっきり厨な発言で申し訳ないけど、
【VCL】
delphiで利用するクラスライブラリ(コンポーネント)
コンパイル時にexeにリンクされるので、別途ランタイムを
添付する必要が無い。
delphiで作成可能。
【CLX】
kylixで利用するクラスライブラリ(コンポーネント)
こちらは配布時にQtを添付する必要がある。
kylix・pro以上のdelphi で作成可能。
>>148 あっ!そうなんですか。氷解です。一生懸命、悩んでました。
WEBでは、ArowとかがただのRowになっていたりして(Version違いだから???)
これは、何?状態でした。荒らしではありません。
早速出来ました。Thanksです。
ぐあー!GPLて何!?「フリーだけど、これ使うたらソース公開すれ!あと GPLだって書きやがれ!」ってことなんか? 日本語にしる!
>>161 そっかー。どうも腑に落ちないなー。好きになれん<GPL
GPLとは・・・ ・ソースを公開しなくちゃいけない。 ・GPLのソースを使って作られたソフトはGPLに従わなくちゃいけない。 ・それ以外は何をやってもいい。 で良いでしょうか?
・イエローモンキーに著作権は存在しない これ以外に重要
>>164 >そのダラダラ長いのを読むのもイヤ(藁
好き嫌いの前にお前生きてるだけで無駄に地球の酸素が消費される。
shine
お前生きてるだけで× ↓ お前が生きてるだけで○ 日本語覚えてこい。ハゲ。
170 :
デフォルトの名無しさん :02/06/19 01:35
>>152 WinSightは慣れが必要だから、取っつきにくいだろうね。英語だし。
該当ウィンドウとメッセージの監視方法は、
1.該当アプリ起動
2.WinSight起動
3.Spy→Follow Focusをクリック
4.該当アプリをアクティブにする
5.すると、WinSightのツリーが該当アプリのところへ移動する
6.FollowFocusのチェックをはずす
6.ツリー表示の見方は、例えばエクスプローラのウィンドウだと
Overlapped 000301EE {ExplorerWClass} Explorer.EXE (816,114)-(1678,750) "ローカルディスク(C:)"
必要なのは {ExplorerWClass}と"ローカルディスク(C:)"
前者はクラス名、後者はキャプション。両方ともFindWindow(Ex)で使用する。
これを基にしてFindWindowしてハンドルを取得し、
SendMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, 0);
を送れば、該当アプリは終了できる。
7.該当ウィンドウのツリーを選択
8.View→Message Traceにチェック
9.Message→Selected Windowにチェック
10.Helpメニューの左側が「Start!」となっていたら、クリックすると
メッセージのトレースが開始する。「Stop!」となっていたら、もう
トレースが開始している。
11.下にメッセージがだーっと出てくるので、音を鳴らして根気よくメッセージを
探っていく。WM_XXXXXというのがメッセージの名前。何を意味するかは、
Win32.hlpを参照。
12.ただ、音を鳴らすメッセージが見つかっても、該当アプリで送受信されるから
ブロードキャストされてない限り何もせずにキャッチすることは難しい。
フックDLLを作らなきゃならないかな…フックしたくなければ、音が鳴るときに
該当アプリに何か目に見える変化がないかよーく探して、その変化を
FindWindow(Ex)で1秒おきにチェックする、みたいなことをしなきゃならんか。
171 :
デフォルトの名無しさん :02/06/19 08:29
>>127 ありがとう
なんか、捜し物のペンが、あきらめかけた頃に
目の前の書類の下から出てきた、みたいな心境。
すぐ目の前にあったのに気ずかないみたいな
いやあ、お恥ずかしい。
ブレークポイントや、ステップ実行は、使って無いです。
使い方について、よく分かってないもので、デバック
について解説してるWebも、みつからないもので。
>>155 見つかりました!
Delphi壁の穴と言う所を見つけてWinsightを見ながらいじったらきちんとハンドルを
取得出来ました。
しかし、出来たのはここまでで変更があった時にどこが変わるのか、どのような
トリガがかかっているのか等さっぱり分かりません。
どなたかヒントをください。
170さんも答えてくださってたんですね。取り込み忘れてました。 じっくり読ませていただきます。 読んだあとで再チャレンジしても駄目だったら再度発言します。 ありがとうございました。
GPLってかいつまんでいうとこんな感じ。 俺の物は皆の物 オマエの物も皆の物 っつー博愛ジャイアニズムみたいな感じ。
>>174 アフォだな。本質からわかってないじゃん。
すべての人がジャイアンですべての人がスネ夫になり得るんだ。
>>121 正直なところ StringReplace関数の存在を、知りませんでした。
ん?いや、だから、ソフトウェアの自由は誰のためかっていえば、皆のためじゃないのか? 少なくともGPLを使っている人々はそう思っているわけじゃないの?
GPLが嫌って言うなら今すぐgcc使うのやめてもらおうかと。 ソラリンでも使ってなと。
>>172 そろそろ自分でなんとかする気にならんか?
>>181 すみません、馬鹿なもんで。
ただ、最初からソースくれくれ厨にはなりたくないので少しづつヒントください。
今、自分でフォームにLabelとタイマーだけ貼りつけて
毎秒、カウントアップするアプリを作って、それをフック出来ないか
試してます。
今はWinsiteで変更のメッセージは見つけられたのですが、どうやって
中身を覗くかが分からなくて色々と調べている状況です。
むつかしいっす。
>>182 馬鹿とかは問題でないと。しばらく試行錯誤してから帰ってくる手はとれんのかと。
そこそこヒントもらってみたいだし、と。
まとめ: ヒントきぼんぬ→つまづく→ヒントキボンヌ→よくわからん→・・・ このように延々と繰り返しいては、最終的にソースくれくれ厨となんら変わらないのでは? よく考えればわかるとこなので焦らず前進!
どうして平気でマルチポストすんのかねぇ? 誰って言うわけじゃないけど。 今もマルチ見てしまった…。
1.類似スレが多いから 2.頭悪いから 3.ド初心者だから 平日の昼頃に書き込んでから数十分書き込みがないと アゲたり催促するのは2.か3.
関係無いから、これっきりにするけど…。
>>186 こないだ「ほぼ同じ時間にマルチ」がいた…。トホホ。
やっぱり答える側の気持ちになったら「アカン」ってことが子供でも分かると思うんだが…。
ま、答える側になんてほとんどならんけど(藁
188 :
デフォルトの名無しさん :02/06/20 17:48
TBitmapの内容にぼかし処理をしたいんですが、どうすればできますか?
>>188 TBitmap.ScanLine で直接操作。
190 :
仕様書無しさん :02/06/20 19:15
エクスプロ−ラ風コンポーネントでいいのがあったら 教えてください (Delphian World以外)
そーいや、D6からなかエクスプローラの偽者みたいなコンポが付いてるなぁD5でもあったっけか? でも、あれって居様に重いような気がするがきのせいかな?
193 :
デフォルトの名無しさん :02/06/20 23:26
>>188 StretchDrawで1/8くらいに縮めてから、元の大きさにStretchDrawし直せば
モザイクがかかるぞ。
ブラーとかかけたいんだったら、画像処理スレにでも行って勉強した方が早い。
>>196 ネタだってばよ。多分な。また来たら放置しる。
198 :
DateTimePickerと日付型 :02/06/21 00:11
DateTimePickerは、どんどん数値を下げると、1752/09/14まで設定可能の ようですが、これって、この日付以降だったら、日付計算はうまくいくので しょうか? DateTime型は、Double型が元との事で、マイナス値でもいい感じですが… それと、DateTimePickerは1752/09/19の次が、1752/10/01になるのですが 何故でしょうか? m(_ _)m
>>198 うん、暦って矛盾だらけなのよ。
サイトで太陽暦とかシリウス歴?とか検索してくださいな。
201 :
DateTimePickerと日付型 :02/06/21 00:56
暦のユリウス歴→グレゴリオ歴はわかっていたのですが、各国で切り替えた日が 違うようですので、はてこの日付の飛びは当然日本じゃないだろうし…と思いま して…。(Delphiってオランダ生まれでした??) Excelのシリアル値などは、1900年システムや1904年システムですので、1800年代 の人(明治初期など、まだ生存している方)の年齢計算は独自の年齢計算マクロと かを組んでいました。 Delphiでは、1900年より前(正確には1899/12/30より前)をDateTimePickerで 指定しても構わないのかしらん?と思ったのですが…。 いかがなものなんでしょうか? m(_ _)m
>>199-200 え、まじで1752年にはそこが抜けてたの?
つーかDateTimePickerはグレゴリオ暦で記述されてるんじゃないの?
単なるバグなんじゃ・・・
でも不安だから調べたら
http://www.borland.co.jp/products/borlandcpp.html >日付クラスであるTDateクラスは、1901年1月1日を基準(0)とする
>通算日数をもとにしています(1900以前は負の値として表現されます)。
>グレゴリオ暦が始まった1752年9月14日より前では正しく動作しません。
>なお、Borland C++ 5.02 ではグレゴリオ暦から対応するユリウス暦への
>変換に問題があります。この問題を回避するために、この date.cpp を
>使ってください。
だそうだ、Delphiも多分同じだろう。賢くなたーよ。
203 :
DateTimePickerと日付型 :02/06/21 01:06
DateTimePickerの9/19→10/1への飛びは、単なる「一週間単位」での 表示の都合上という事でいいんでしょうか?
204 :
DateTimePickerと日付型 :02/06/21 01:54
1752年というのは、英国だったようです。お騒がせしました。 でも、何か変ですよね?1752/09/14以降は通常どおりって事なんでしょうけど 9/19→10/01への飛びは、やっぱり変?????
ローマ法王グレゴリオ13世は、ユリウス暦の1582年10月5日をグレゴリオ暦の10月15日と定めました。 日本がグレゴリオ暦へ切り替えたのは、1873年1月1日からです。
1952年9月2日の次は1752年9月14日で、全体として19日間。 それを1から19に詰めて書いてしまう間抜けなDateTimePicker。 そのくせ1-13日はしっかり選択できなくしてある。 マイクロソフトが悪いんだよね? September 1752 S M Tu W Th F S 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
PostgreSQL(7.1)をPQコンポというフリーのコンポを使って使おうとしていますが、 ロックをかけて、ロックのかかったテーブルを触ろうとするとタイムアウトが発生 しない為に永久に待ち状態になってしまいます、なんとか逃げの方法はない でしょうか・・・。
デッドロックと言うか、2つのPCで同じレコードを更新しようとしたような状態です。 先に更新しようとしたプログラムが該当レコードをロックしたままだと、この先のプログラムが 開放するまで、後から更新しようとしたプログラムは止まってます。 先の更新が終了すれば、後の処理が開始されて正常には終わります。 希望としては、「ロック中ですので更新できません」のメッセージの一つも出せたら 良いのですが、SQLを投げて固まるまでこれを判定する手段がないみたいなのです。
スレッドで動かして一定時間経過し帰ってこなかったら破棄したらどだろか
でも、破棄したついでにDB側が壊れなきゃいいけど、やはりちょっと乱暴かな
ありがとうございました、スレッド破棄とか色々と実験してみます。
subject: [FAQ] ActionManager はどこですか?
Q. Delphi 6 Personal をダウンロードし、インストールしました。
Delphi は初めてだったので、同梱されている「クイックスタート」の
チュートリアル "TextEditor" をすることにしました。
ところが、このチュートリアルでは、ActionManager コンポーネントを
使うように記述されていますが、それを見つけられません。
ActionManager は、どこでしょうか?
A. 残念ながら、ActionManager は、Personal には、*付属していません。*
Professional 以上に付属するコンポーネントです。
しかし、ActionManager を使わない、古いチュートリアル "TextEditor" で、
Delphi を体験できます。
Delphi 5 クイックスタート・アップデートファイル
<URL:
ftp://ftp.borland.co.jp/pub/delphi/d5onlinedocup/D5DOCTET.zip >
これを解凍して、TextEditorTutorial.pdf を読みましょう。
---
投稿する勇気の無いヘタレのためここに書き込みます。
>>214 自ら「FAQ」であると認識していることを、改めて書き込む意図はなに?
>>215 よ
>>214 の真意はここにある。
>投稿する勇気の無いヘタレのためここに書き込みます。
つまりじゃ、てめーが
「投稿しょうかな〜でもなぁ〜はずかしいな〜 誰か俺の代わりに投稿しろよ〜
でもまってても誰も書いてくれないし・・・ ええい!書いてみよう!!」
っつって勇気をふりしぼって投稿したことを誇りたいんじゃ。
よくやったの。
>>214
google で検索すると、 Delphi 6 Personal には、ActionManager は無い。→既知 Delphi 5 のチュートリアルは、ActionManager を使っていない。→既知 Delphi 5 のチュートリアルは、Borland のサイトからダウンロードできる。→知られていない。 だから、FAQ を更新する。 ”繰り返される質問”は、回答とセットで意味を待つと思います。 それから、投稿しようとした宛先は、Borland の news group です。 Delphi 5 のライセンスを持っていないユーザーが、Delphi 5 のチュートリアルを 使うのは、目的外の使用とも解釈できるので、情報の公開の前に、著作者の 了解が必要かもしれない。おそらく、怒られることは無いと思うけど、 この辺の確認は、省きたい。→2ちゃんねるにしよう。 それが、何か?
ところでActionManagerて便利なのか? わしは相変わらずActionList使ってるけど。
未だに使い方解りません・・・ list も manager も
220 :
デフォルトの名無しさん :02/06/23 00:04
ツカッテナイ<ActionList
頼むから、ActionListぐらいは使ってくれ。
>>221 俺も使ってない、無理に使う必要がないように感じるのですが、使うとどの辺りで幸せになれる?
>>214 [FAQ] ActionManager はどこですか?
この FAQ の答えになってないと思うけど?
*付属していません。* という答え以外は、単なるおせっかいでしょ。
どうしても TextEditor を作りたいのならともかく。
>>223 それは、"subject" ですが?
"Q." をよく読んでください。
これから出てきそうな(よく出てくる)質問に先回りして答えるのがFAQだと思う
>>223
>>224 >"Q." をよく読んでください。
読んでも、 ActionManager を使わない TextEditor を作りたい、とは
書いてありませんが?
>>225 >これから出てきそうな(よく出てくる)質問に先回りして答えるのがFAQだと思う
Frequently Asked Question の意味を(以下略)
先回りするのはよくあること。
>>228 先回りして、しかも著作権の確認が面倒なので、他スレに書き込む、って
よくあることなの? そうなんだぁ。
>>229 何で勝手にいろいろ付け足すの?変な奴。
教えてください。 TMemoryStream に読み込んだ任意のデータをクリップボードを通して やり取りしたいのですが、どうしたらよいでしょう。受けとるほうも、 TMemoryStream に読み込んだ形にしたいです。
>>230 229 は 214 と 217 について粘着してるのよ
>>232 そうか、サンクス。
FAQについてレスしただけなのに困ったもんだ。
234 :
デフォルトの名無しさん :02/06/23 14:01
>>231 質問はageたほうがいいよ。(俺は知らないのでパス)
235 :
デフォルトの名無しさん :02/06/23 15:20
>>232 粘着して、先回りして、しかも著作権の確認が面倒なので、何で勝手にいろいろ付け足すの?
他スレに書き込む変な奴、って
よくあることなの?知らなかったなぁ。本当に?そうなんだぁ。
キモイのは放置。
238 :
デフォルトの名無しさん :02/06/23 16:02
RichEdit で、あるタイミングで赤い文字を追加したいのですが function AddRedText(AText:string); var Col:TColor; begin with RichEdit do begin Col := DefAttributes.Color; DefAttributes.Color := clRed; Lines.Add( AText); DefAttributes.Color := Col; end; end; としても赤い文字にならないのですが… なにが悪いのでしょうか。
DefAttributesをSelAttributesに変えてみれ。
>>239 ううむ、変わらなかったです…
ちなみに、先頭に赤い文字を追加しようと思って以下のように書きましたが、これもうまくいかないのです。
色は変わりますが、その後に追加した文字列もすべて赤色に…
function InsertRedText(AText:string);
var
Col:TColor;
begin
with RichEdit do begin
Col := DefAttributes.Color;
Lines.Insert(0,AText);
SelStart := 0;
SelLength := Length( Lines[0] );
SelAttributes.Color := clRed;
DefAttributes.Color := Col;
end;
end;
漏れが書いたのはこんなカンジ。 Button1を押した時は赤文字のテキストが、Button2を押した時はデフォルトカラー の文字列が追加できとるよ。 procedure TForm1.Button1Click(Sender: TObject); var Col:TColor; begin with RichEdit1 do begin Col := SelAttributes.Color; SelAttributes.Color := clRed; Lines.Add(Edit1.Text); SelAttributes.Color := Col; end; end; procedure TForm1.Button2Click(Sender: TObject); begin RichEdit1.Lines.Add(Edit1.Text); end;
242 :
デフォルトの名無しさん :02/06/23 17:40
キモくて、粘着して、先回りして、しかも著作権の確認が面倒なので、 何で勝手にいろいろ付け足すの?って放置されて 他スレに書き込む変な奴、ってよくあることなの?まじっかなー。ウソクセー。 知らなかったなぁ。本当に?そうなんだぁ。へー。マジ情報?な?な?答えろよアフォ
あの、 実行ファイルの作成日時というか、自分自身のコンパイル年月日を知ることはできませんか? たとえば、[バージョン情報]というボタンをクリックすると、その プログラムがコンパイルされた日時を表示するようにしたいのですが…
実行ファイルの作成日時を取得すれ。 FileDateToDateTime(FileAge(Application.ExeName))
>>231 たしかクリップボードはGlobalAllocなんかで確保する形式だったかな。
なので、Moveでメモリーコピーすれば充分な気が。
凝ろうと思えば、TStream派生の、確保済みのメモリーに読み書きするクラスを作るなんてどうでしょう?
TAccessStream.Create(ポインタ, サイズ) なんて。
そうすればCopyFromでTMemoryStreamとやりとりできると思います。
…ここで確認のためヘルプを見る…
CLXの方にはTClipboard.GetFormatなんてそのまんまのがありますね。VCL側には無いみたい。
なのでもしCLXを使っていれば一発です。
あ、やっぱり実行ファイルの作成日時=コンパイル日時でいいんですね。 ファイルを移動した場合とか変わっちゃうかと思ったらそうじゃないんですねえ… どうもありがとうございました
コピーや移動、圧縮などではタイムスタンプも大抵保存されますけどね。 でも、リソース書き換えツールなどでいじられたら変わってしまいそうな。
>>246 それがいやなら、自分で定数ででも定義しておくしかないでしょうな。
その場合バージョン=年月日なんかにしておくと楽かも。
>>245 >たしかクリップボードはGlobalAllocなんかで確保する形式だったかな。
>なので、Moveでメモリーコピーすれば充分な気が。
あっ、そうですか。ちょっと調べて、いろいろ試してみます。
あいがとうございました。
× あいがとうございました。 ○ ありがとうございました。 訂正。スマヌ
>248 バージョン情報のリソースに日時を埋め込む手もあるな。
252 :
デフォルトの名無しさん :02/06/24 01:00
無料のDelphiを入手しました。 XMLを処理というか、読み込むコントロールは無いですか? ギコナビという、たしかDelphi製のアプリでXMLを読んでいたので、自分のソフトにもXMLを 読み込む方法が無いか探しています。
254 :
デフォルトの名無しさん :02/06/24 01:32
>>252 まず第一に
TXMLDocというクラスはEnterPrise以上と説明があり、
ヘルプもないが、なぜかヘッダーファイルが存在する。
実は使えるという可能性がある。
第二に
MSXMLを使うということ。
メンドクセーが可能ではある。
根性があればどうにかなるが
数日徹夜することになるかもしれん。
255 :
デフォルトの名無しさん :02/06/24 01:33
>>252 まず第一に
TXMLDocというクラスはEnterPrise以上と説明があり、
ヘルプもないが、実は使えるという可能性がある。
BCB5パーソナルではヘッダがあったから怪しい。
第二に
MSXMLを使うということ。
メンドクセーが可能ではある。
根性があればどうにかなるが
数日徹夜することになるかもしれん。
256 :
デフォルトの名無しさん :02/06/24 01:34
すまそ、ダブルクリックしてもうた
258 :
DateTimePickerと日付型 :02/06/24 10:43
もしかして、すごーく恥ずかしい質問かもしれませんが、ご教示願います。 EditBoxのKeyPressを監視して、Enterが押された時点で、Buttonに設定した イベントをさせたいんですが、何か良い方法はないでしょうか? 今は、その処理させたい内容をサブルーチン化して、EditBoxからとButtonの 両方から呼んでいるのですが、処理はButtonのイベントハンドラにそのまま 書いて、EditBoxで、if key=chr($13) then [buttonのイベント]みたいに したいんですが… SetFocusして、キーを押したように見せかけるとか、考えてるんですが、はて??
259 :
デフォルトの名無しさん :02/06/24 10:47
【Q】 質問です。 DirectoryListBoxで選択したパスに指定フォルダ名を付加したいのですが、 ルートの場合だけ「C:\\hoge」となってしまいます。 C:\program files\hoge とやると¥マークが重複せずに済むのですが・・・ hogeが付加したいディレクトリ名です。
>>258 何のイベントだかわからないけど・・・
[buttonのイベント]=> Button.Click みたいな感じ?
261 :
デフォルトの名無しさん :02/06/24 11:11
>>260 そうです。procedure TForm1.Button1Click(Sender: TObject);
の処理を、EditBoxで、Enterを押したら、実行させたいのです。
今は、EditBoxのイベントでSetFocus(Button1)させて、もう一度
Enterを人間に押させてますが…
>>258 //key_unit.pas
unit key_unit;
interface
type
ken_key = Integer;
const
key_Ent = 13; // Enter
key_Esc = 27; // Esc
key_F1 = 112; // F1
implementation
end.
>>258 (さっきの続き)
//にkey_unitを追加
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, kt_unit, StdCtrls;
(中略)
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('ボタンが押されました!');
end;
//Edit1でEnterを押したときの処理。
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
key_Ent : Button1Click(Sender); //Enterを押した処理
end;
end;
>>261 だから Button1.Click じゃん
Dialogs, kt_unit, StdCtrls; ↓ 訂正 ↓ Dialogs, key_unit, StdCtrls;
259は仮想キーコード知らないのか?
267 :
デフォルトの名無しさん :02/06/24 11:35
QuickReportを使っているのですが、プレビュー表示ができません。 ソースは、 procedure TForm1.cmdPreviewClick(Sender: TObject); begin frmreport.qRep.Preview; end; です。何も表示されずに、処理が終わります。 何かプロパティを設定しないといけないのでしょうか? どうか、ご教授お願いします。
>>266 Delphiじゃなくてkylixで育ったからこんなコードになっただけ。
それに直にマジックナンバー使うの嫌だし。
269 :
デフォルトの名無しさん :02/06/24 11:49
もしかして、要はButton1Click(Sender);を付けるだけ?? 大変大変、失礼しました!!!!!
>>268 少しはヘルプファイルを読んだ方がいいと思われ。
>>269 普通は Button1.Click を使うと思うけど。オブジェクト指向するなら。
271 :
デフォルトの名無しさん :02/06/24 11:53
>>269 なるほど、手続きの呼び方が分からなかったって事ね。
ひとつ勉強になったね。
>>266 あのやり方は普通だと思うけど。
仮想キーコードを使うにしてもconstで切った方があとで修正するときに手間省けるよね。
>>259 ドライブがrootかどうか調べて・・・
ごめんこれ以上わからん。
家に帰れば本が有るんだが。
GetDriveなんとかって言うので調べれなかったっけ?
>>259 パスの末尾の文字を調べればいいと思うけど。
仮想キーコードを自前でconstで定義されている方々は Windows.pasを"VK_"で検索してみると発見があるかも知れませんよ。
>>272 そうなんだけど、日本語ファイル名を考慮すると 末尾が2バイト文字の2バイト目でない事も考えないと
275 :
デフォルトの名無しさん :02/06/24 13:34
パスのサイズが3バイトかどうかで判断すれば? C:\はルート。 D:\でもE:\でも同じ。 var size : Integer; begin size := Length(WideString(パス));
いろいろ調べたら、どうもReportに使っているADO Queryコンポーネントが悪さをしているようです。 引き続き、がんばってみます。
良く関数の最初に Sender: TObject とあるのですが,これはなんでしょうか? Delphiのソースを読んでいるのですが,これがわかりません
>>277 イベントハンドラだね
そのイベントを起こしたもの(主にコントロール)が引数として渡されるんだよん
複数のコントロールのイベント処理をひとつのイベントハンドラに書くような場合
呼び出し元によって処理を振り分けたりできるんだよん
おまえら、 Del用のドキュメント生成ツール(VB仕様書工房のようなソフト) 使ったことがある奴がいたら、 使い勝手を教えてください。
>259 別の考え方を提示すると。指定パスの \hogeの\を削ってはどうですか? IncludeTrailinjgbackslash関数を使えば 選択したパスに\つけられますからね。
ありゃjがミスって余計にはいってしまった。 誤 IncludeTrailinjgbackslash関数 正 IncludeTrailingBackslash関数
manifestを使った状態でTComboBoxでBackSpaceを押すと 日本語でも1バイトしか削除されなくて文字化けしてしまうんですがどうすれば解決出来るでしょうか?
delphi6のCDから落としておいたほうが良いファイル って何がある? とりあえず、古いAPIの日本語版helpとWin32.hlpは落としたけど。 お薦めがあったら教えて。
>>252 ソース見てないでしょ。。公開してるのに。
ギコナビでは海外のSAXコンポーネントをインチキ改造して無理やりSJIS通しています。
ただ、外人さんのコンポーネントなので、SAX自体のソースは添付してないです。
ソースダウンロードすれば、そのコンポーネントのダウンロード先が書いてあるよ。
でもギコナビのは、適当に読んでいるだけなので、参考にならんかと。
もし参考にするならb15じゃなくてb16のを見てください。
DOMを使うなら、
>>254 氏のやつか、XDOMかな。
XDOMは日本語対応した人がいたはず。
MSXMLは、IEとかに標準でついてくれば利用者が増えると思うのに。。。
(あれ?付いてたっけ?)
>>282 今ならIncludeTrailingPathDelimiterかな?
>>283 manifestを使ったことないんで分からんけど、AutoCompleteをFalseにしたらどうなるかな?
>>284 アメリカ版のDelphiヘルプ
>286 そのとおりでした。 私のほうも D6だと機種依存があんたらかんたらとでてしまいます。
288 :
デフォルトの名無しさん :02/06/25 07:45
Delphiでプロジェクトを作成しプログラムを組んでるとバックアップファイル(unit.~pas)などが出来ますよね? これって出さない方法ありますか? もしくは別のディレクトリに一括にまとめる方法など。
289 :
デフォルトの名無しさん :02/06/25 08:46
Delphi初心者です。 文字列の先頭を持って来るにはどうしたら良いのでしょうか? Mid関数みたいなものがあればと思ってます。 くだらない質問で申し訳ありません。
>>283 >manifestを使った状態でTComboBoxでBackSpaceを押すと
>日本語でも1バイトしか削除されなくて文字化けしてしまう
再現しました。QualityCentral 行きにします。
>>289 StrUtils に MidStr 関数があります。VB 互換。
>>288 危険なオプションだから GUI では設定できないようにしているのかな?
レジストリの borland\delphi\6.0\editor\Options に "Create Backup File" が
あるから、False に設定。
>>288 DelDel.BAT
--------------------------
CD /D %1
del *.tds
del *.~*
del *.dsk
del *.dof
del *.dsm
del *.dcu
--------- ここまで -----
これを SendToにでも入れておいたら いいんじゃない?
ADO Queryで集計関数を使わずに、QRExprコンポーネントを使用して集計を行うと、 きちんとプレビュー表示できました。 みなさん、どうもありがとうございました。
296 :
大きいフォントにした場合 :02/06/25 10:33
デザイン時に小さいフォントで作っていて、そのEXEファイルを大きいフォント の環境で実行すると、コンポーネントに位置がずれずれになります。 これって、上手い具合にdpiを上手く計算とかしないと駄目なんでしょうか?
ばかばかしい ツール-エディタオプション-表示-バックアップファイルの作成
299 :
デフォルトの名無しさん :02/06/25 12:21
オラクルのストアドファンクションから値(OUT引数)を取得するには どうすればよいですか?
音を監視するのはやめてプログラムに表示されている数字が変化するのを 監視するように変えたのですが、WinSightで見てみると WM_Paint Sentで座標を指定して書いて、 WM_ERASEBKGND Sentで消してました。 数字を送っているだけだろうからそれをフックして抜き取れば と思っていたのですが、甘いでした。 なかなか高いハードルみたいです。 これはペイントデータを抜き取ってOCRするしか方法は無いのでしょうか? ご存じの方がいらっしゃいましたら教えてください。
>>300 普通はソレしかない事が多いです GetWindowText 出来るのは滅多にありません
しかし、数字だけに限ればそれで十分実用になりそうですが?
>>302 ありがとうございます。
すみません。それとStringGridの内容をマウスでドラッグして、他の
アプリに持っていきたいんですが(TEXT情報)、コピーできません。
別個クリップボードに内容をコピーしてやるルーチンを組まざるを得ま
せんでしょうか?
何か、コピーを許すとかいうプロパティは無いでしょうか?
>>300 わりとウザがられてるし。
いい加減にどのソフトをクラックしたいのか教えなさい。
そうすりゃすぐに答えが出るはず。
VCLのDrag&DropはVCL内で勝手に処理しているので他のアプリと互換性は無いです。 OLE Drag&Dropのコンポーネントが、付録CD-ROMに入っていたと記憶。 手書きしてもいいけれどそれなりに手間はかかります。
306 :
Delphi好き ◆0YAPhEjk :02/06/25 14:35
TDBGridコンポーネントのオプションを変更して複数行選択可能にした時に、 SelectedRowsプロパティを見れば選択されたレコードを取得できますが、 実行時、SelectedRowsにレコードを追加することはできるんでしょうか。 TDBGridコンポーネントの全レコードを選択するボタンを作りたいので、 よろしくお願いします。
説明不足でした。 Drag&Dropでなくて、単純にセルを選択して、Ctrl+Cで持って行きたかった んですが、無理でしょうか?。 やっぱり、Buttonでも作って、コードでクリップボードに送ってやるしか ありませんか?
308 :
Delphi好き ◆0YAPhEjk :02/06/25 14:43
>307 ボタンを配置せずとも、TStringGridのOnKeyDownで駄目ですか。 中で、 if (ssShift in shift) and (Key=VK_C) then // クリップボードに送る処理 みたいなんじゃ?実験してないし思いつきですけど。
309 :
Delphi好き ◆0YAPhEjk :02/06/25 14:47
>308 スマソ。これじゃ、Shift+Cになっちまいます。
>306 TBookmarkList.CurrentRowSelectedを調べてみ。
>>301 レスありがとうございます。
そうですか。
ではとりあえず、文字を覗き見てImageに貼りつけられるか頑張ってみます。
難しそ〜。
>>304 うざくてスマソ。
アメちゃんの証券会社のソフトだから言っても分からないですって。
顧客にしかソフトを配布してないですから。
日本には超マイナーな国の株も投資出来る証券会社って無いんですよねえ。。。
312 :
Delphi好き ◆0YAPhEjk :02/06/25 17:26
>310 ありがとうございます。 最初、チラと見たときに、「これじゃ一つのレコードを選択・非選択にするだけ じゃん」と思ったんですが、なるほどTrueにして次のレコード・・・と処理させれば うまくいくのですな。助かりました。(ただ、ちょっと遅いけどしょうがないです かね)
313 :
デフォルトの名無しさん :02/06/25 21:54
すいません、少し皆さんのお知恵をお貸しください。 ホームページで使用するDLLを作成しているのですが、 毎回ユーザー毎にデータベース接続の接続をしているので、 ページが表示されるまで待ち時間が長くかかっています。 接続を1つにまとめて、 それを使い回す様なことをしたいのですが、 可能なのでしょうか? 可能であれば、どのようにすればよいのでしょう m(__)m よろしくおねがいします ちなみに・・・ ホームページ側は、クラスではないライブラリしか呼べないです
>>313 >ホームページで使用するDLL
の時点で、
>にデータベース接続の接続をしているので
こんなもん扱えるわけがないと思うのは俺だけでしょうか?
>>314 >>にデータベース接続の接続をしているので
>こんなもん扱えるわけがないと思うのは俺だけでしょうか?
接続の接続ではなく・・・
接続だけです。入力ミスです、すいません
ASP・Perl・JSPなどのサーバサイドスクリプト -> DLL -> DB
ここでのDLL部分で悩んでいます。
サーバサイドスクリプトなので、ユーザーには結果だけが表示されるのですが、
処理時間が遅いのです。
∧,,∧
>>303 >>307 さん
,ミ ゚Д゚彡 Ctrl+Cを使いたかったら
ミ ∪ Actionを作ってShortcutKeyを設定して
ミ〜,, ミ Action。Executeを記述するといいと思われ
∪ ∪
>>313 さん
Webアプリは難しいですよね。
ASPしかわかないですが
ASPのApplicationオブジェクトとかSessionオブジェクトで
管理できるといいんですけどね。
ASP.NETに逝こうした方が素直でいいかもね。
317 :
デフォルトの名無しさん :02/06/25 22:59
Windows2000プロフェッショナルで作成したDelphiのEXEを WindowsNT4.0WorkStationで実行すると、 「アプリケーションエラーが発生しました」と表示され、 プログラムが起動せずに強制終了します。 BDEを使ってオラクルに接続だけ確認しているプログラムなのですが、 何が原因なのでしょうか? BDEを後からインストールしましたが解決しませんでした
>313 googleでもどこでもいいから「セッション管理」で検索してみれ。 可能かどうか、と言われれば可能だけど問題も色々あるからよく検討するように。 >317 BDEやオラクルのバージョンも書かないで質問を投げられても判断不能。 問答無用で逝ってよし。
>>297 p-chanハケーン!!
>>TeamBさん
QualityCentralって某アメリカなんですか?
ジャパーンのイパーンユーザがニホンゴでバグ報告できるところはないの?
>>317 NT4 WorkStation...
・最新のコモンコントロールがインストールされていない
でしょうか。まだ Delphi の CD に収録されているかな?
>>315 ASP・Perl・JSPなどのサーバサイドスクリプト -> DLL -> EXE -> DB
DLLでEXEが動いていなければEXEを動かす
DLLとEXEはプロセス間通信(メッセージとかパイプとか 簡単にメモリマップファイルとか)
こうしておけば、DLLやサービスより動作状態も目で見えてデバグも楽
>>319 おはようございます。
QualityCentralって某アメリカのです。
某 ML の方々はまだ誰もポストしていないようです。
日本語で書き込んだら何が起きるかな。
「ジャパーンのイパーンユーザがニホンゴでバグ報告できるところ」
ここでよろしいんじゃないですか?
323 :
デフォルトの名無しさん :02/06/26 10:07
Word が 2 バイト、LongWord が 4 バイトだとすれば、 以下の構造体のサイズは 14 バイトになるはずなのですが、 SizeOf 関数を通してみると 16 バイトになっています。なぜですか。 program Project1; {$APPTYPE CONSOLE} type TBitmapFileHeader = record FType: Word; FSize: LongWord; FReserved1: Word; FReserved2: Word; FOffBits: LongWord; end; begin WriteLn( Sizeof( TBitmapFileHeader ) ); ReadLn; end.
>>323 アラインメント調整。
いやならpackedをヘルプで轢く。
おお、なるほど! たしかに packed をしないと 4バイト境界にあわせられるとかいてありますが… すると、Word の部分がすべて4バイトぶん確保されて 4 * 5 = 20バイトになるのでは…?? いや、関係無いのですが。
みなさま、こんにちは && おつかれさまです。 (1) EditコントロールにはAlignmentプロパティ(右寄せ、中央揃え等)はないんでしょうか? (2) オブジェクトをサブクラス化するサンプルコードはどこを探せばあるでしょうか? (3) VBのMeキーワード(自己参照)に相当するものはDelphiにありますか? (4) ShowDialog等で、VBのMsgBox関数の、vbDefaultButtonX(既定のボタンの変更) に相当することは可能でしょうか? また、ダイアログのタイトルの変更(おなじくMsgBox関数の第3引数に相当)は可能 ですか? 以上、ご存知の方、いらっしゃいましたら、ご教示ください。
>>326 Windowsメッセージ投げる。
オブジェクトって色々な物の呼び名なので特定不能。
self
メッセージ
検索かけてもわからなかったので、質問させてください。 環境はWin2000+Delphi6.0personalです。 mona : array[0..255] of Char と宣言した変数に返り値がPCharの関数を代入しようとしたら、 「'Array' と 'PChar' には互換性がありません」と言われます。 どうしたらいいんでしょうか… つーか、キャストとか良く分かりません(汗 (型変換とまでは理解してるんですが…) 検索で見つけたページに >ただし、NULL文字を含む固定長文字列(宣言:変数名 : Array[0..文字列長] of Char)、 >文字リテラルは型キャストの必要はありません。 と書いてあったんですが、API関係は特にわからなくて、つまづいています。
>>330 mona := 'omaemona';
とかしたわけ?
Strcopyを使いましょう。
332 :
nanasi :02/06/26 21:08
Delphi-ML でよく発言される 戸田英夫さんの言い方には、カチンときます。 みなさんはそんなことないですか
匿名掲示板でよくみられる 個人名を晒してあげつらうようなやり方には、カチンときます。 みなさんはそんなことないですか
>>332 あなたのレス、コピペして投稿しました。
_____________ ∧,,∧ /最近のメールソフトには ミ,,゚Д゚彡 < メール振り分け機能がついているので U つ \不必要なメールは自動削除すれ @ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪
>>335 Delフサは、彼のメールは自動削除している。と。
>>330 var ウルトラマンコスモス:string;
begin
ウルトラマンコスモス:='タイーホ';
なんたら関数(Pchar(ウルトラマンコスモス));
end;
ではダメ?ダ…ダメ?ビクビク…。
先生!全角ってなんですか?
>>336 彼のメールの内容は「過去ログ嫁」しかないから削除しても誰も困らない。
けれど過去ログがいつも/いつまでも正しいとは限らなし、 初心者の質問は常に新鮮な目で見ないと。 何事にも謙虚さが大切ですね。
342 :
デフォルトの名無しさん :02/06/27 09:17
Delphiのちょっとしたテクニックをお聞かせ下さい。 Labelがいくつか有ったとします。 プロパティに直に書き込むのはあれなのでストリングテーブルを作ろうかと思うのですが、 Delphiの場合はみなさんどのようにやってますか?
>>342 なぜ"プロパティに直に書き込むのはあれなので"と思うのですか?
|
>>336 してます
電 |
>>338 剥げ同意
|∧,,∧
>>341 その通りだと思います
柱 ミ,,゚Д゚彡
⊂ ミ 誕生日計算ネタも
|, ,,ミ 新たな発見がイパイでしたね
|∪
, ' , ; ' ;
>プロパティに直に書き込むのはあれなので
ああ、あれですね。あれ、あれですか?
あれ?ってどれ?
StringListを使うのがいいんじゃないでしょうか。
>342 「あれ」が何なのかわかりませんが... 通常のクラスと異なる動作をさせたければそれを実装したクラスを再定義するのが 正しい道だと思いますよ。 プロパティデフォルトを変えたければ Create コンストラクタで値を設定する クラスを定義すれば余計な作業は必要なし。 たとえば .INI ファイルやレジストリ、リソースから読み込みたいときは 簡単に実装したければ ReadFromIni のような手続きを用意して Form の OnShow で初期化。
346 :
デフォルトの名無しさん :02/06/27 10:19
TStringListって、SaveToFileが使えて便利なのですが、 TListで簡単にファイル保存するような仕組みって無いのでしょうか? 例えば、TStringListへ一旦入れ込んでSave出来ないか?とか試して みましたが挫折しました。
347 :
Delphi好き ◆0YAPhEjk :02/06/27 10:25
>346 まあ、TListはTObjectを継承した単純な仕組みですし。継承してSaveToFile定義 するのが楽なんじゃないでしょうか。TListは何型の値が入るか決まってませんし、 そういう状況を考えると、TListに保存機能を求めるのってナンセンスでは・・・?
>>347 >TListに保存機能を求めるのってナンセンスでは・・・?
ですよね・・・、SaveToFileを定義するのであれば、いっそ、毎回手書きで
保存した方が読み込み時の事も考えると見通しが良いですよね・・・。
ご意見ありがとう!
>>331 ありがとうございます。
コンパイルは通りました。が、別のエラーが(汗
ここにソース貼っていいですか?50行ちょっとありますが。。。
3年ほど前までDelphi4、AS/400の組み合わせで仕事していた
元職業プログラマーだったんですが、当時からAPIはほとんど
触らなかったんで、未知の領域っす。
今は、印刷関係の仕事をしてて、テキスト処理をDelphiでやり
つつある所です。
ものすごくくだらないことで悩んでいる気がしてるのですが いくら調べてもわからないのです プロセスの終了記述って どうすればよろしいのですか?(汗 プロセスがあがったままなんです。。。 自分で自分がいやになる質問だ。。。(鬱
351 :
Delphi好き ◆0YAPhEjk :02/06/27 13:42
>350 プロセスの終了・・・って、アプリケーションプロセスのことでしょうか。 だったら、Application.Terminate;で終わりますけど・・・違うのかな? ちなみに、Win98系でアプリケーション終了後に残るタスクバーのボタンは、あれは Win98の問題らしいですよ。BorlandのDelphiFAQページに載っていたと思うんです が・・・。 見当違いかもしれませんけど、よろしく確認ください。
>>351 あぁ。。。
優しい対応うれしいです
アプリケーションを動かすと、プロセスが残ってしまうのです
プログラムを終了させる記述が必要なのでしょうが、
Delphi6.0でありえるWindowsアプリケーションのプロセス終了記述が、
わからないという。。。
ご回答いただいたApplication.Terminate;以外にも方法はあるのですか?
いくつかあるようでしたら、調べて最適な記述をしたいと思っています。
353 :
Delphi好き ◆0YAPhEjk :02/06/27 13:46
>352 昔はHalt;なんて使っていましたが、これはどうなんでしょうか。強制終了みたい なものだから、状況によってインスタンスが何か残るかもしれません。 適当な回答で申し訳ありませんけど、お試しください。
>>353 ありがとうございます。
Application.Terminate;
でプロセス終了いたしました。
手元にある本がDelphi関連だけなのですが、
API関連も必要ですね。。。
Delphiで(Pascal?)自プログラム(プロセス)終了の記述というのは
しないものなのか、そもそも存在しないものなのか。。。。
Windows単独アプリケーションなのですが、セオリーってどのようなものなのか。。。
>354 Application.Terminate;は、API呼び出しではなくってDelphiのTApplication クラスのメソッドを呼び出しています。 TApplicationは、作成したアプリケーションの情報を色々もっているので、ヘル プで見てみると中々面白そうで役に立ちそうな機能満載で楽しいですよ。 ・・・ちなみにここはsage進行がよろしいのでしょうか?(あげてた・・・)
セオリーはGUIアプリなら メインフォームをClose コンソールアプリなら普通に リターンしていけば終るかと
>>355 おー
そうですか
TApplicationをよく調べてみまする
ありがとうございます!
質問の内容が恥ずかしいのでsageておりました(w
多謝です!
>>354 フォームがあればメインフォームをCloseでは?
>>356 GUIアプリです
TCustomForm.Close
これですか?
おお。。。なるほど。。。確かに終了するとの記述がありますね
TApprication.Terminate
とどちらでも良いのかな。。。
勉強いたします
>>358 CloseとTApprication.Terminateとで 悩んでおりまする。。。
>>356 , 358
その通りですね。その方が確かに楽チン・・・。
>>361 おぉ。。。
そうですか。。。
両方をよくみてみます
結果は同じでも、命令が違ければ何かが違うはず。。。(w
楽チンぢゃないほうが何かいいことがあるんではないかと。。。
探ってみまする
メインフォームが閉じられる時に、自動的にTerminateが呼び出されると ヘルプに書いてありましたぁ みなさま ありがとうございます
>362 うーん・・・。 将来、当該フォームを他のアプリケーションで流用する可能性がある場合に関して は、CloseとTerminateはしっかり分けた方がいいのかもしれませんね。 Terminateはアプリケーションの終了 Closeはウィンドウを閉じる わけですので。 このフォームをメインフォーム以外として使用した場合にはウィンドウが閉じられて 予定外の結果になるかもしれませんし。もちろん、流用することなんてありえないの であれば、関係ないですけど。
>>364 あ〜。。。そうですね
自分もその辺の応用がきくように。。。と考えているので、
検討しなくてはならないですよね
かなり拡張していく可能性がある状況ですので
ご意見助かります
TLabelのFontColorプロパティにて プルダウンで出てこない色を使用することというのは 可能なのでしょうか?
>>366 普通に代入すればいけそうですが。
詳しくはヘルプにてTColorを参照していただくとよろしいかと。
>366 ダブルクリックしたら例の色指定のダイアログボックスが出ませんか?
フォームにタイトルバーを出したくないのですが、 フォームの概観を少し浮き出た感じにしたいのですが。 BorderStyleをbsNoneにすると、タイトルバーは消えますが、 概観がまったいらになってしまいますし、 BorderStyleにbsToolWindowを設定して、BorderIconsを全部Falseにしても、 タイトルバーは消えてくれませんし。 何か方法があるのでしょうか?
ADO Express + TClientDataSet で キャッシュアップデートしたいのですが、 なんかApplyUpdateするときに Insert Into の構文がおかしいよとか言われてしまいます。 もしかして、ADOExpress + TClientDataSet って使えないの?
>>371 (1)フォームのBorderStyleをbsNoneにする
(2)フォームのところにprotectedを追加して以下の宣言をする
procedure CreateParams(var Params: TCreateParams); override;
(3)以下のコードを書く(サイズ変更したけりゃ、コメントの位置を逆にする)
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
//Params.Style := Params.Style or WS_THICKFRAME;//サイズ変更可
Params.Style := Params.Style or WS_DLGFRAME;//サイズ変更不可
end;
374 :
デフォルトの名無しさん :02/06/27 23:07
Delphi5なんですよ。 で、日付の計算をしたいんですけど、何月何日から何日あとの日付、ってのは、どうやって計算すればいいんですかねえ。 標準の関数では何ヶ月経過後、しか計算できないみたいですけど。
>374 TDateTime型をヘルプでよく調べろ。 例えば現在の日時から一日後の日付を得たいのなら a := Now + 1; でOKなことが分かる筈。
376 :
デフォルトの名無しさん :02/06/28 00:02
基本的な疑問なのですが、TutobPascal時代は置いといてWindows環境になってからだけでも、 Delphi2->3->4->5->6と買って、ついでに、JBとCBとKylixまで持ってるのですが、ボーランドから 感謝状もなんも来ません(藁 そりゃいいとして、Delphi4辺りから、劇的に何かが変わるってのが無いようなのですが、 今度出るDelphi7も似たようなものなのでしょうか。 もっと心配なのは、コンパイル後のexeのサイズが同じソースであっても太る傾向にあるようですが、 なぜでしょう?
早く直す早く!
378 :
デフォルトの名無しさん :02/06/28 00:11
delphi6 personalの使用者登録の仕方がわかりません。 誰か教えて下さい。おながいします。
>>378 青い紙に「祈願・登録」と書いて、「オン・アブラウンケンソワカ!」と3回
唱えた後に南の方角に向かって印を結びながら紙を飛ばしなさい。
いいことあるでしょう。
>>378 osorano hoshini inorinasai
ネタデナカッタンデスカ。
>>378 インストールできますた。
どうもありがd。
384 :
デフォルトの名無しさん :02/06/28 01:32
ガ━━(゚Д゚;)━━ン! 自分にレス! そーゆー時代? ナウイ? 新人類?
>>385 なにいってんだボケ、激しくスレの進行を妨げてるんだよ!逝け。
最近は再帰呼び出しが流行ってるんですか?
388 :
デフォルトの名無しさん :02/06/28 03:57
program Project1; {$APPTYPE CONSOLE} uses ShellApi; begin ShellExecute(0,ParamStr(0),'','',0,SW_SHOW); end.
>375 なんだ、そうだったのか。関数ばかり調べてたよ。算楠
390 :
デフォルトの名無しさん :02/06/28 08:08
タスクバーもどきを作りたいのですが、 タスクバーに表示されているアプリケーションは どのようにして取得すればよいのでしょうか。 FindWindow で、Parent ハンドルが 0 のものだけを探し出す ようにしているのですが、タスクバーに出ていないものまで 引っかかってしまいます。 逆に、タスクトレイに登録されているアプリケーション名もしくは アイコンもしくはウィンドウハンドルを取得するにはどうすればよいでしょうか。
391 :
Resource Hacker :02/06/28 08:08
Delphiで作成されたと思われる Resource Hacker というリソース解析ツールが ありますが、これを使ってDelphiアプリをチェックしても、たとえばスピードボタ ンのGlyphで読み込んだりImagelistで保持しているビットマップは、Resource Hacker のBitmapのところを調べても表示されません。これはどういうわけなんでしょ?
>>391 ビットマップリソースとして管理してないからです。
>>391 Delphiアプリのリソースは、フォームに保存されます。
で、フォームは、リソースのどこか(名前忘れた)に保存されてる。
>>391 DFMがそのまま覗けるからそこからテキスト編集中のフォームへコピー。
>>390 プロセスを取得するAPIなかったっけ?
それか、findwindowでparentがnullでvisibleなやつとか。
396 :
名無しさん◎書き込み中 :02/06/28 10:25
TOpenDialogを使ってファイルを選択するダイアログを出そうとしてるんですが、 これを呼び出すボタンってどのコントロールを使うのが一般的ですか? よく[・・・]ってなっているボタンをみかけるんですが。 たとえば、オブジェクトインスペクタのTOpenDialog.FileNameプロパティに 表示されるあのボタンです。 TButtonのCaptionを"..."にしてみたんですが、なぁんか違うなぁと。
>>396 TEllipsisEditとかいうコンポがある。
399 :
名無しさん◎書き込み中 :02/06/28 11:35
>>399 VCL ソースをお持ちなら、Grids.pas の TInplaceEditList.PaintWindow を
見てみては?ボタンの幅に合わせて小さな黒丸を三つ描画しています。
お手軽に作るときは、スピードボタンに ... でしょうか。
401 :
デフォルトの名無しさん :02/06/28 12:27
Delphi初心者なんですけど 10個の実数を読み込んでそれらを昇順に並び替えるにはどうすればいいんですか お願いします 教えてください
>>401 丸投げ
自分で作ろうという気がないのか?
403 :
デフォルトの名無しさん :02/06/28 12:46
>>401 フローチャート書いて見たら?
マジレスダヨ。
じゃあサービス
>>401 program Project2;
uses
Windows, SysUtils, Classes;
var i:Integer;
var s:string;
begin
AllocConsole ;
with TStringList.Create do try
for i:=1 to 10 do begin
write(i,'>');readln(s);Add(s);
end;
Sort;
writeln(text);
finally free;end;
end.
どうかな。 begin for i:=1 to 10 do readln(a[i]); i:=1; while i<10 do begin p:=a[i]>a[i+1]; if p then begin s:=a[i]; a[i]:=a[i+1]; a[i+1]:=s; end; i:=i+ord(not p or (i=1)) shl 1-1; end; end; これで動くかしらん?
補足しますと、 a : array[1..10] of real; i : integer; p : boolean; です。どうかな。参考になれば。パスタですが。
すみません やってくれてから言うのも悪いと思いますけど まだ if while for repeat 配列 しか習ってなくて これで作らないといけないんです。
>>414 宿題ではないけど、先生に聞いても、
ちゃんと教えてくれないんです。
もう、ココくらいしか聞ける所がなくて
>>415 んー。言語を教えてくれている先生が教えてくれないなら、酷い先生ですナァ。
>>412 配列はわかる?
もしかして、フローチャートって知らない?
配列はわかりますけど フローチャートはよくわかりません
>>418 フローチャートは、プログラムの流れ図で、
プログラムを組む前段階の作業っす。
白い紙に、矢印や記号を買って、
プログラムの流れ作業を書いていく。
ここじゃ図解するのめんどくさいから
http://www.am.chs.nihon-u.ac.jp/~yaku/cai/pascal/p0102.html ここ参照。ノイマン形の方。
あとは、自分ならどう言う手順で並び替えをするか文章化して見る。
で、その文章をフローチャート化し、フローチャートから
コーディングっていう流れが理解しやすいかも。
数字のソートの文章化なら、
数字が書いてある紙が不規則に散らばっている。
1・それのうち、一番近くにある1枚を拾う。
2・2枚目を拾う。2枚目が1枚目より大きければ上へ。小さければ下へ。
3・3枚目を拾う。3枚目が一番上のカードより多ければ上へ。
小さければ1枚下へ。
a:その下のカードが3枚目より小さければさらに1枚下へ
(a:を繰り返し)
って、感じでしょうか。かえってわかり辛いかも…。
>>419 >白い紙に、矢印や記号を買って、
訂正
>白い紙に、矢印や記号をつかって、
>>419 ありがとうございます。
とりえずやってみます。
すいません、ちょっと教えてください。 function F54_GetPrinter(PrintIndex : Integer) : PChar ; //プリンター情報取得 var device, driver, port: array[0..80] of Char; h: THandle; Str: array[0..255] of Char; begin Printer.PrinterIndex := PrintIndex;//プリンタを指定 Printer.GetPrinter(Device, Driver, Port, h); // win.ini の [windows] の device に書き込む文字列を作る。 StrCopy(str, Device); StrCat(str, ','); StrCat(str, Driver); StrCat(str, ','); StrCat(str, Port); strcopy(Result,Str); //CharをPCharにキャスト end; これの、最後のstrcopy(Result,Str);で 「EAccessViolation クラスの例外を生成」 がでてしまうんですが、さっぱり原因がつかめません。 どなたか、ヒントでもお願いします。
>>422 Resultのメモリ領域が確保されていないのでは。
>>423 Resultのメモリ領域確保って必要なの?(汗
えーと、えーと、どうやって確保するんですか?(大汗
Delphiのヘルプってわかりづらい…
>>424 この関数の場合返り値がpchar型ですんで、4バイトのポインタを返すだけです。
領域の確保、破棄は自動的には行われません。
string型で文字列を返すようにするか、あるいは、getmemを使ってメモリ確保する
か(この場合、別途破棄も必要です)、あるいは、呼び出し元でメモリを確保する
ようにするかですねー。
問題が無いならstringを推奨です。(DLLとかだと逆に面倒ですが)
426 :
デフォルトの名無しさん :02/06/28 15:13
>>419 流れ図なら構造化プログラミング図(SPD)ってのもなかなかいいですよ。
フローチャートに比べると各処理のブロック化(構造化?)がし易いので、
長文のときは全体の構造がすっきりしてくる。
俺は実際に図を書くことは殆どないけど、
脳内でSPDをイメージしながらコーディングしてるよ。
まぁ、読みやすさは書く人のスキルによって変わってくるんだけどね。
pascalにはソート関数はないのでしょうか?
Cにはqsortなんてのがあったんですが、、、、
>>425 サンクス(゚∀゚)コ
動きました。
実はこれは職業プログラマー時代にサンプルソースを切り張りして作った
通常使用プリンター切り替え関数の一部。
MLにも投稿したことがある(汗
なのに、このざま(爆
>>427 私なんか、TurboPascal暦4年で癖が染み付いちゃってて、Delphiに移ったときに
オブジェクト指向を全く理解せずに5年半くらい?使っておりました。(爆
ようやくクラスの設計をし始めたのがここ1年。(泣
429 :
デフォルトの名無しさん :02/06/28 15:30
NTにSP6aで使っているのですが,DELPHI6大丈夫ですか? オフィシャルの動作環境では SP5なんで…
>>428 職業プログラマー時代、
オリジナルの入力制限Editを作ってみて、
なんとかオブジェクト指向理解しかかったけど、
開発プロジェクトの他のメンバーがそのEdit使ってくれず、
結局、サブルーチンの共有化に落ち着いた…。
今は、Parsonalを使ってるけど、
データベールコンポーネントが使いたくてたまらない…。
↑付きのやつ高いしなぁ
雑談sage。
データベールってなんじゃねん。 データベースです。
>>430 あり。
Personalって商業ベース配布不可じゃなかったでしたっけ・・・?
一応私の所では、Personalは商業ベース配布が不可だったからDel5のProfessionalを
購入したような気が・・・。おかげで、一応データベースコンポーネントがついておりま
すが、これまで趣味のゲームプログラマだったのでデータベースなんか使ったことが無
く、今、色々試しながらアプリケーション開発中です。
>>432 >Personalって商業ベース配布不可じゃなかったでしたっけ・・・?
フリーソフトなら配布可能です。
サポートにメールして聞きました。
まあ、ほとんどが社内向けのツールですが。
(会社っていっても10人みまんだし)
ちなみに、いままでに作ったヤツ
・文字電卓(文字数から必要な大きさを計算)
・テキスト自動変換(一括置換&タグ付け)
・HTMLの表自動生成
・進行表(ネットワーク対応)
・PDF自動印刷
・フォント見本帳タグ作成
とかっす。去年からDelphiにでもどったので、
月産1本程度。小物ばかりですが。
いやぁ。プログラムってほんっとに面白いですねぇ〜
>>433 なるほどー。
私も、会社で半分が社内で利用するツール作成、半分が他社製品のカスタマイズ
ですねー。
最近になってようやく会社オリジナル作品の制作を行えるようになりまして。そ
んなわけで、オリジナル作品の制作中です。
ほんとにプログラムって面白いですよねぇ〜。
(他人のプログラムいぢくるのはもうウンザリですケド)
435 :
デフォルトの名無しさん :02/06/28 18:03
勉強の為に数値入力コンポーネントを作成したいのですが、 何かシンプルな作りで参考になるようなお勧めコンポーネントありませんか?
>>436 これだったら機能が多くないので私でもなんとなく読めます(^^;
これを使って勉強させて頂きますありがとうございました
ttp://homepage1.nifty.com/ht_deko/junkbox.html ここから落としてきた数値入力コンポなんですが、設計時にプロパティのvalueに
9999999999999 を設定すると実行したとたんに、
EReadErrorがモジュール Project1.exe の 〜
NumEdit1.Value の読み込み中のエラー: 不正なプロパティの値です.
と、アプリケーションエラーが出るようです、
ソースを眺めてみたんですが、何処で出ているのか全然分りません(汗
因みに、ソースの中で Valueに 9999999999999 を送ってもエラーは出ません
Create時の処理が悪いのでしょうか?
こーいった場合には、何処から探れば宜しいでしょう。
>>438 ValueがCurrencyだからじゃないか?作者にメールしる
>>438 ちらっと見た所 プロパティの型がCurrencyなので、デフォルトのプロパティエディタが
無い為の現象かと思います。
自分でプロパティエディタを定義するか currencyをやめたら?
442 :
デフォルトの名無しさん :02/06/28 22:02
テキストファイルを読み込む→編集→保存をしたいのですが、 適したコンポーネントはありますか? TMemoのような簡単な画面で、LoadFromFileとSaveToFileが使えれば 充分なのですが。
>>442 >TMemoのような簡単な画面で、LoadFromFileとSaveToFileが使えれば
TMemoのLinesはTStringクラス。
TStringクラスにはSaveToFileとLoadFromFileがある。
頼むよ・・・。
むあー。そうだったのか。すまんす
>>443 TMemo.Text見て「はてー?」と思ってました。
445 :
デフォルトの名無しさん :02/06/29 01:39
cleateprocessで起動させたアプリケーションを、逆に終了させる方法を お願いします
実行時型情報って何ですか? 利点みたいに言われてることが多いけどいまいちよくわかりません。
>446 例えばイベントとかでSenderに対し if Sender is TEdit then begin 〜 とかってやるのは実行時型情報を利用してるってこった
RTTIは知らず知らずに使ってて、すでに恩恵にあずかっているという罠。
最近、Delphi6personalを使い出して、その素晴らしさに惚れました。 それまでVisualC++やJavaをかじったものの、不満ばかりが残っていたのですが。 そこでいずれはproを買いたいのですけど あの値段は。。。。 personalとproの価格に差がありすぎではないですか? これではDelphiに感動した人のお布施みたいなものです。 とても価格の差ほどの差がpersonalとproにあるとは思えない。。。 一般ユーザーは納得して買ってるのでしょうか?
>>446 C++にも実行時型情報というのはありますが、これはクラス名の比較に限定された
情報でしかありません。
delphiの場合
クラスのpublished 節で定義されたものには
メソッドには、そのメソッド名がアドレスと一緒に実行ファイル内に保存されています
プロパティも同じです。型名、列挙型などはアイテム名まで実行ファイルに保存されています
これらは設計時にフォームポトペタする時に利用されます。フォームの情報は
実行ファイルにはリソースで保存されていますが、このリソースからフォームを作り
直す時にも利用されています。
この実行時型情報は、プログラムからも呼び出して使う事が出来ます。
自作スクリプトを作るような時には非常に重宝します。ギコbasicで使われてます
>>449 proの値段は、あの値段でVCLソースがついてるだけでも、納得出来る値段
だと思っていました・・・最近のデフレでちょっと高いかなとも思うけど
企業が存続するには 仕方ないのでしょう。
ヤフオクで古いバージョンのユーザ未登録のものを買い
バージョンアップで買うのが一番廉くあがるパターンですね
FormのCanvasに描画した際、 上にほかのウィンドウを重ねると消えてしまいます。 消さないようにするにはどうしたらいいでしょうか
上に重ねたウィンドウに描く
>>453 1、フォームのOnPaintで描く・・・これが普通の作法、描画は常にOnPaintでね
2、フォームにImageを貼って それに描く
>>455 それでも上にウィンドウを重ねるとだめでは?
あっ、失礼、再描画の問題ね
>>450 > 'c:\program files\borland\delphi4\imports\vcl50.dpk'
delphi4 で Delphi5 用のパッケージをインストールしようとしましたね?
今ちょっと調べられないんだけど、蛸薬師さんのコンポーネントですから
説明書きに何か書いてあると思います。
>>453 TBitmapのオブジェクトをTFormのメンバで持っておいて、フォームへの描画を行い
たいときは、基本的にTBitmapオブジェクトへの描画を行い、描画したらフォームを
Invalidateして。そんで、455さんが仰っているようにOnPaintでそのBitmapオブジ
ェクトを転送・・・という方法が良い場合もあります。
>>458 Delphi4の場合、っていうヘルプの記事に従っているんですが・・・。
タイプライブラリの取り込みの画面ですでにヘルプの内容と違うんです。
>>445 いきなりTerminateProcessというのも手ですが、あまりにも乱暴と思うので、
CreateProcessならスレッドのIDがわかっているはずなので、PostThreadMessageでWM_QUITを送ってみるとか、
EnumWindowsで起動したプロセスのウィンドウを探して、片っ端からWM_CLOSEを送りつけるとか。
>461 パッケージじゃなく個別に入れてみたら。
>>462 >PostThreadMessageでWM_QUITを
Window持ってない奴にはノーダメージな罠。
保存しますか?ダイアログが出た場合切ない罠。
132=300=311です。 色々やったのですが、どうしても当該アプリの覗き見が出来ませんでした。 確認の為IEの画面を覗き見ようとIEのCapitionでFindWindwsして Sendmessageを監視して内容がWM_PaintだったらClipboardにコピーして それをまた自分の所のImageに貼りつけるようにプログラムをしました。 しかし、何もコピー出来なかったり、自分のフォームの画像がImageに取り 込まれるだけでした。 丸一週間頑張ってみましたがお手上げ状態です。 すみません、ソースくれくれ厨にならせてください。 どなたかどうかよろしくおながいします。
466 :
デフォルトの名無しさん :02/06/29 19:59
>465 ここは質問スレでソースキボンヌスレじゃない。
>>469 DelphiのMLには参加してないです。
>>465 ようするに文字認識でデータを取るなら 窓ハンドルを得たら
GetWindowRectで表示位置を取得して
h:=FindWindow(nil,PChar(title)) ;
if h<>0 then begin
GetWindowRect(h,rct);
Caption:=Format( '%5d %5d',[rct.left,rct.top]);
mcanvas:=TCanvas.Create;
mcanvas.Handle:=GetDC(0);
try
Image1.Picture.Bitmap.Width :=rct.Right -rct.Left;
Image1.Picture.Bitmap.Height:=rct.bottom-rct.top;
Image1.Picture.Bitmap.PixelFormat:=pf16bit; //色数は適当に
with Image1.Picture.Bitmap do
Canvas.CopyRect( Rect(0,0,Width,Height) ,mcanvas,rct);
finally mcanvas.Free;end;
end;
end;
>>450 正直、最初はUIWebBrowserにお世話になろうとしてたけど、
インストール出来なかったり(2ちゃんスレの過去ログのは試した)、
いろいろ思うことあって、「embeddedwb」にした。ちょっとつっかかったけど、
インストール出来たし、とてもいい!英語だけどネ。
後は、「フリーウェアとして、特に断ったりしないでもアプリケーションとして
自由に配布出来るのか?」がよく分からんとこだけど、2ちゃんブラウザも使ってるのが
あるみたいだし、「フリーウェア」って書いてあるから、GPL(?)ではないか…
と結論してるのだが。
単なる意見でした。
>>465 つーか、「おながいします」じゃねーよな。「おな」(藁
どっか他で真面目な書き込みして、ソースもらえば?
>>132 DelphiのMLには参加してないです。
参加するのに5分もあればOK。タダだし。
ちゃんとしたところで質問すると、ちゃんとした回答が
得られる確率が高くなる
ここで質問してしまった手前、MLでアドレスがバレテ、ひょっとメール爆弾でも 喰らったら寂しいと思っているの鴨
ソース
>>471 で出てるんじゃないの?
他の窓に隠れたらとれないけど、それはしょうがない
>>471 ありがとうございます。試してみます。
>>476 ちょっと待ってちょ。
昨日から試してます。
TopWindowにバックグラウンドで動かせる方法が無いか
試してるんですけど、難しいです。
一時的にトップに持ってきて元に戻すしか無いんですかねえ。
グローバルフックでなくて他のアプリからアクセスが無ければ
DLL化しなくてもいいと、昨日初めて知った。
>>477 って言うかメッセージ投げればいいのでは?
WM_MOVE
>>477 >>TopWindowにバックグラウンドで動かせる方法
そもそも描画領域が隠れていたら描画そのものをしない場合も多いでしょ
そこまでやりたいなら、そのアプリをデバッカにかけて 内部データの位置を
見つけた方が速いんじゃないの?
>>478 えっ?すみませんそれはどういうことでしょうか?
SetWindowsHookExではWM_Moveはフック出来ないようですが・・・
私がとりあえず今考えているやりかたは、
ターゲットのアプリのCaptionは分かっているので、
1、FindwindowsExで子Windowsのハンドルを取得
2、SetwindowsHookExでWM_GetMessageを覗き見
3、覗いたデータをImageにコピー
4、取り込んでOCR
これだったら隠れていても上手く取得出来るのではないかと思い1〜3までを
とりあえず完成させようとしているのですが、四苦八苦していまして
まだ動作確認できていません。
>>479 すみません、私デバッガを使ったことがないものでして、その方法は
検討していませんでした。
良いデバッガや参考になる方法、URL等がありましたら教えてください。
デスクトップに絵を直接描画するプログラムを作っています。 デスクトップのハンドル(?)をTCanvas.Handleに代入してDrawする、 という方法を用いたところ、別のウィンドウ上に描画された場合、 そのウィンドウをドラッグしても絵がウィンドウに張り付いたままになってしまいました。 これを防ぐにはどうしたらいいでしょうか?アドバイスお願いします。
>>481 それこそ UpdateWindow(hwnd) でも投げたらいいんじゃないの?
>>482 これはすべてのWindowに送らなければいけないのですか?
>>480 = 132
>2、SetwindowsHookExでWM_GetMessageを覗き見
>3、覗いたデータをImageにコピー
>4、取り込んでOCR
>これだったら隠れていても上手く取得出来るのではないかと思い
メッセージフックして、WM_PAINT でのイメージを覗くわけですか
隠れているウィンドウが WM_PAINT を受けとるはずはない、と思ふ
なんか壮大な計画を一気に完成させようとしているみたいですが
ひとつひとつ簡単な確認用のコードを確かめてから、それらを組み合わせて(以下略)
>>484 えっ?WM_PaintはアプリからWinへ出力はされるけど隠れていたら
描画されないんじゃないんですか?
それだったらほんとにデバッガのお世話になるかも。
最初からアプリを作るのは無理だと思っていますので、とりあえずは
隠されたIEの再描画をフックしようと色々四苦八苦してます。
WH_GETMESSAGE じゃ まだ描画前だ
>WM_PaintはアプリからWinへ出力はされるけど ウィンドウメッセージを勉強する必要があるね
488 :
デフォルトの名無しさん :02/06/30 14:53
キャプチャを作ってます。 各ウインドウ矩形での選択をしたいのですが (タスクバーだけ選択とかボタンだけ選択とか) どうすればできますか?
>>488 Windowsハンドル取ってDCを取得してその内容読む。
>>488 スクリーンに表示されているのなら 471 のコードの応用
492 :
ScrollBoxをカーソルキーでスクロール :02/06/30 15:28
ScrollBoxの上にイメージコンポーネントを置いて、AutoSize=Trueはよくある パターンですが、このスクロールをカーソルキーやPageUpDownキーで行えないで しょうか? 特に何もプロパティを設定しなくても、マウスのホイールではスクロールしてく れますが、カーソルキーではスクロールしてくれません。 キーイベントを別個に書かなくてはいけませんか??
皆さん何度もありがとう。
>>486 描画前のメッセージキューに送られた時にフックしようと
思っているのですけど、無理なのでしょうか。
これが出来ないのとなるとデバッガを使うか471さんが
書いてくださった方法しか手がなくなってしまうので。
>>493 いっそ TextOut DrawText をフックしたらいいんじゃないの?
DLLは関数ポインタによる呼び出し(間接コール)になってるから
そのアドレスを探して、この2つを書き換えてしまえば全部の描画文字列を
取得出来るよ
>>494 そのアプリをWinsightで覗いてみたのですが、WM_Paintと
WM_EraseBkgndしか出力してなくて駄目でした。
四角(Rect構造体)で指定した枠内にあるウィンドウのハンドルを 取得する方法を教えてください。
>>496 FindWindowでせっせとやれば?
>>496 1点だけならWindowFromPointでできるけど、
矩形の場合だとウィンドウを列挙して、IntersectRectで
領域内に入っているか地道に調べていくしかないと思われ。
>>497 FindWinowは使い方がよくわからないのですが・・・。
>>498 なるほど・・・。しかし秒間10回ほど行う処理なので少し厳しいですね。
或いは画面全体を再描画させる関数が有ればそれで良いのですが。
>>500 何だ、その話か。
InvalidateRectすれ。
>>501 GetDC(0)で得たハンドルに描画しているので、
InvalidateRect(0, )としてしまうと、画面全体がちらついてしまいます。
高速に繰り返す処理なので・・・、何か方法はありませんか?
>>502 再描画の必要な領域だけ無効化するとか、最後の引数をfalseにするとかしてる?
>499 既に>498が回答になっていると思うが。 >秒間10回ほど行う処理なので少し厳しいですね。 実際にコーディングして試してみたのか、おい? >FindWinowは使い方がよくわからないのですが・・・。 APIのリファレンスはDelphiについてるでしょ。 使い方だってネット上をちょろっと漁ってみれば大量に出てくるぞ。
>>502 前者は、第二引数の話ですか?
後者はやっています。
>>504 >実際にコーディングして試してみたのか、おい?
連続描画でアニメを表現しているので速度は変えられません・・・。
>>495 = 132
>そのアプリをWinsightで覗いてみたのですが、WM_Paintと
>WM_EraseBkgndしか出力してなくて駄目でした。
アプリがこのメッセージを出力してるんではない、と何度いったら
理解できますか? WM_PAINT をフックしても、それで隠れたウィンドウ
の描画をのzくことができる、なんて保証はないよ。
確認したいのですが、WM_PAINT を<受け取って> クライアント領域を
描画しているのはアプリのコードであると知っていますか? ウィンドウ
関数にわたる前にフックして何するつもりなの?
>>492 >キーイベントを別個に書かなくてはいけませんか??
いけませんね。
>>500 >連続描画でアニメを表現しているので
アニメをデスクトップに描画するなんて、どうかしてるよ。
なんで自分のウィンドウに描画しないの?
>>508 ユーザーのマウスやキーボードの入力に反応するようにしているので、
所謂、デスクトップアクセサリのようなものを作っているのです。
>>506 すみません、アプリがWM_PaintをWindowsに渡して、
それを受けとったWindowsが描画していると思っていました。
解決策のヒントをいただけないでしょうか?
>509 普通、デスクトップに直書きするのではなく、 ウィンドウリージョンで変形ウィンドウを作ると思いますが、如何?
>>510 =132
>解決策のヒントをいただけないでしょうか?
例の音の出力検出以来、ずっと助けてやりたいと思っていたんだけれど
どうもオレの知識じゃ足りないみたいなんだよ。否定的コメントばかり
ですまん、とは思っているんだが、間違った方向へは行かないように、
とすこしは助けてるつもりなんだよ。
それで、確認したいんだが、音の出力検出についてはまったく知らない。
それが無理だとして、そのほかにどのような変化があるわけですか。
TMemo や TListBox などのウィンドウコントロールに変化はないのですか?
これがあれば、メッセージをフックできると思うんだが。たんに、GDIを
もちいた描画だけが変化するんだったら検出は難しいぜ。特に、隠れていて
表示されていない時は。
文字列の変化には、VCLの TLabel みたいにGDIで描画せれているのと
スタティックコントロールのようにウィンドウテキストを変更している場合
がある。VC++で作られているダイアログアプリなら後者の場合が多いので
メッセージをフックできることもある。前者の場合は難しい。
>>511-512 いえ、デスクトップに直接描画したいのです。
ウィンドウがあると重なった部分のウィンドウが使えなくなってしまいますし。
一人の厨房に振り回されちゃって大笑いだねこりゃ
>>514 アニメをデスクトップに描画するなんて、どうかしてるよ。
ウィンドウを最前面に保つようにするコードがあったはず。
おれは知らんが。
どうしてもデスクトップというなら、画面の更新にも責任もってね。
手段や方法よりも先に目的が間違ってることってあるよな。
以後>500と>132は放置ということでよろしいか?
目的にいちゃもんつけるのは余計なお世話。
>519 132 はまともだと思う。知識がたりないだけだし。
↑ × >519 ○ >518 スマヌ
>>513 たびたびありがとうございます。
音と同時に数値が変わるだけでして、その子Windowを
WinSightで見てみたら前に書きましたWM_PaintとWM_EraseBKGNDが
出力されただけでした。
> 文字列の変化には、VCLの TLabel みたいにGDIで描画せれているのと
> スタティックコントロールのようにウィンドウテキストを変更している場合
> がある。VC++で作られているダイアログアプリなら後者の場合が多いので
> メッセージをフックできることもある。前者の場合は難しい。
この両者の違いが分からないのですが、バイナリエディタでそのアプリを覗いたら
msvbvm60.dllやc:\Program Files\Microsoft Visual Studio\VB98\VB6.OLB
等の記述があるのでたぶんVBで作られていると思います。
523 :
デフォルトの名無しさん :02/06/30 23:45
(´-`)。o ○ (なんか、粘っこい人が増えたなぁ…)
↑自分がわからない質問を続けられるのがイヤな人
525 :
デフォルトの名無しさん :02/06/30 23:54
524=自分がわからない質問を続けられるのがイヤな人
?
で?
俺は526だけだが。真っ赤にしてるのは誰?
俺は527だが、顔は赤くないがなにか?
526=527=530(プ
赤いのは523と525と528。
ああ、嘘ついた。526だけじゃなくて524も俺だ。恥ずかしくて真っ赤だよ。
>>522 =132
>この両者の違いが分からない
えーと、TLabel は TGraphicControl の派生クラスで、親ウィンドウの
特定の領域の描画をしているだけ。これは外のアプリからはみえない。
一方、スタティックやエディットやリストボックスのようなVCLの
TWinControl の派生クラスなら、子ウィンドウなのでそれは外のアプリ
からも見えるし、それを制御するためのメッセージをフックすることもで
きる。この両者の違いは大きいです。
>音と同時に数値が変わるだけでして、その子Windowを
>WinSightで見てみたら前に書きましたWM_PaintとWM_EraseBKGNDが
>出力されただけでした。
ふーむ、だとするとVBアプリであることも考慮すると TLabel 相当
なんですかね。そうなら、おれの知識では、その変化を検出するのは
無理みたいね。すまん。
真っ赤で泣いてるのが533
長編な質問はMLで質問したら?読みづらいし期間が長いと飽きちゃうよ(w;
>>537 そうだよね。ML加入を何回もすすめてるんだよ。
>>538-539 うむ・・・ (汗
MLに自分の意思で入らない人もいるんだねぇ、初めてそのような人々の存在を知ったYO!!
>>540 おれもいろいろなMLに加入したけど、Delphi-ML はかなりまともな
MLだと思う。FreeMail からハンドルネームでの投稿を非難されない
し。基本的なエチケットさえちゃんと守れば、どんな質問だってOK
だし。「過去ログ見ろ」の回答だって、「そうですね、ありがとう」
といえばそれなりの情報は手に入るし。加入しても損はないと思う
>>535 > えーと、TLabel は TGraphicControl の派生クラスで、親ウィンドウの
> 特定の領域の描画をしているだけ。これは外のアプリからはみえない。
> 一方、スタティックやエディットやリストボックスのようなVCLの
> TWinControl の派生クラスなら、子ウィンドウなのでそれは外のアプリ
> からも見えるし、それを制御するためのメッセージをフックすることもで
> きる。この両者の違いは大きいです。
詳しい説明ありがとうございます。良く分かりました。
MLに参加しなかったのはメール鯖が会社の管理する寮の鯖でして、
一日20通を超えるメールを受信すると会社から「共用リソースを大切に・・・」
とメールが来る非現実的な所にいるもので、参加していませんでした。
Freeメールでも大丈夫、とのお話だったのでさっそく参加させていただき
ました。
まだ場の雰囲気が読めないので雰囲気が分かってきたら質問させて
いただきます。
皆さんありがとうございました。
>>514 恐らく、ウィンドウにしてしまうと、表示してしまった部分は
下のウィンドウが操作できなくなることを危惧しているのでしょうが、
それにはちゃんと方法があって、WM_NCHITTESTでHTTRANSPARENTを返せば、
マウス操作を素通りさせることができたはず…
// 試したことはないのでできなければごめん
>514 デスクトップマスコットがいて、その絵の下のウィンドウに触れるってほうが 俺は気持ちが悪いぞ・・・
>>543 MSDN Library より
HTTRANSPARENT
In a window currently covered by another window in the same thread
(the message will be sent to underlying windows in the same thread
until one of them returns a code that is not HTTRANSPARENT)
同じスレッドのウィンドウじゃないとダメ、みたいに読めるが?
>>542 =132
Delphi で Timer を使って、Label1 にランダムな数値を1秒ごとに
表示している、と想像してください。これを Label1 のプロパティーを
使わずに、その変化をどうやって検出するか、という問題と同じです。
それでは、MLでまた会えるかもね。
>>546 訂正
× Label1 のプロパティーを使わずに
○ Form1.Handle だけをつかって
>>547 さらに訂正すまぬ
WM_TIMER をフックするというのは、なしでお願いします。
>>514 とても独創的な発想の持ち主とお見受けしました。
TEditorはpersonalで使えないのでしょうか? 何とか使う方法はないのでしょうか?
QuickReportで、Accessの帳票みたいに サブレポート様なことは実現できないのかのう?
TListViewでアイテムの移動ってどの様にすれば良いのでしょう?(;´Д`) ぐぐるで検索しても出てこない……
質問です。よろしくお願い致します。 TStudent というクラスを作って、広域的に?public?に、どのコントロールからも使えるように オブジェクトを使いたいのですが、どこで、「student :TStudent;」と書けば良いでしょうか? unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} type TStudent = class private Name : string; public function GetName:string; procedure SetName(N:string); end; function TStudent.GetName:string; begin result := Name; end; procedure TStudent.SetName(N:string); begin Name := N; end; end. 本見ると、概念的な説明はのってても、実際の使い方はほとんど載っていなくて、 判らず困ってます。昔VCはやってたんですが・・・ ご教授お願いします。
>>553 感謝です。
Assignでコピー出来るなんて知らなかった……。
>>554 そのまま、{ Public 宣言 }のところじゃないかな
>>555 そうすると、
[エラー] Unit1.pas(16): 未定義の識別子 : 'TStudent'
と、出てきてしまいます。
定義する前に宣言しちゃっているからだと思うのですが・・・
どうすればいいか、わから〜ん! ヽ(;´Д`)ノ
TStudent = classがstudent :TStudent;より上に存在しないとエラーな様な……
実現部に定義してるクラスはインターフェイス部では使えないよ 別のユニットに書いてusesするなり、インターフェイス部のTForn1より上に書くとかしてみれば?
>554 implementation以下は実装部分なのでここでクラス定義はしないのです。 unit〜implementationの間がCで言うところのヘッダみたいな場所なの。 ヘルプの「ObjectPascal言語ガイド」で「プログラムとユニット」を見てちょ。 余談だがTStudentは別ユニットに分割した方がいいと思う罠。 type TStudent = class private Name : string; public function GetName:string; procedure SetName(N:string); end; TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation (以下省略)
>>560 & All
どうもありがとうございます。ヽ(´∀` )ノ
562 :
デフォルトの名無しさん :02/07/01 19:55
Formのiconに設定するアイコンを作成しようと思いました。 ピクセルを32×32にして、アイコン描写後、Formのiconで読み込んでみると、「イメージが不正です」と怒られてしまいます。 どうしたらいいでしょうか?よろしくお願いします。
モザイクかけないと
ごめん。書いてから後悔した。くだらなすぎる。
565 :
デフォルトの名無しさん :02/07/01 20:00
>>564 ちょっと笑いましたけど。w
誰か教えて下さい。 ・゜・(ノД`)・゜・
お詫びに考えてみる。 あれだ、拡張子を.bmpから.icoに変えただけのエセアイコンファイルを使ってるんだな、きっと。
Delphi6を使用してます TLabelをインデックスで管理したいのですが、 lbl_memo[0]とかってできませんでしたっけ? プロパティにIndexがあった気もするのですが、ないですね。。。 久しぶりにDelphiで開発するのでとまどいが隠せない今日この頃。。。 お助けください
>>566 保存する時に、16色bmpで拡張子を.icoにしたので、その状態かもしれません。
どうすれば治るのでしょうか?
properttyでIndex使ってもできるけど、簡単なのはこっち。 -- var lbl_memo: array [0..5] of TLabel; begin lbl_memo[0]:= Label1; lbl_memo[1]:= Label2; :
>>568 添付のImageEditor使ってアイコンにすれば?
嫌ならアイコンエディターなんてフリーでいくらでも転がってるよ。
>>568 .icoファイルをサポートするソフトで読み込んで.ico形式で保存し直しだな。
くだらないは、かぶるはで鬱だ氏脳状態
>>570-571 ImageEditorの存在忘れてました。w
それなら拡張子変えない方法で.icoで保存できるっぽいですね。
その方法でやってみます。
ペイントで.icoで作れる様にもしたいので、サポートするソフトとやら、探してみようと思います。
お二方、ありがとうございました。
すいません、FormのCaptionの左にあるアイコンは変えられたんですが、 マイコンピュータから見た、ファイル名の左にあるアイコンはどうやって変えるんでしょうか? プロパティでできるかなと思いましたが、無理でした。 もう一回教えて下さい。m(_ _)m
>>574 プロジェクトオプション→アプリケーション→アイコンの読み込み
>>575 できました。
真にありがとうございました。m(_ _)m
>>569 ありがとうございます
オブジェクトインスペクタでIndexが見つからなくて(w
>>550 最新版ふつうにインストロールできましたが。
>>569 申し訳ないです
これをどこに記述すればよいのかわかりません
この場合 Label1〜 はあらかじめフォーム等に作成しておくのでしょうか?
すんませんすんません
>>569 で教えていただいた方法がわかりません
オブジェクトインスペクタでIndexの定義をすることって
できませんでしたっけ?
なぜか見当たらないのですが。
以前はありましたよね?
。。。見えていないだけですか?
うーん。。。。。
コードで記述するにしても 今ひとつわからなくて
すんませんとしか言い様もなく すがってみたい
583 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/01 21:54
こういう場合、なんのコンポーネントにキーイベントを記述すべきでしょうか? EditBoxを配置して、常にSetFocusでFocusが移動しないようにして、 if key= vK_Up then とかで、Scrollbox1.VertScrollBar.Positionを変更と いうことでよろしいでしょうか? それとも、ScrollBarを配置して、ScrollBoxと連携??? (当然、Visibile:=Falseで)
584 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/01 22:02
ありゃ? ScrollboxのScrollBar.PositionのMinとMaxは、どうやって 取得したら良いのでしょう??? キーをとらえたとして、際限なくUpDownしていいのかしらん???
>>581 例えば、以下の様な関数(メソッドが良いか)を作成するのも吉かと。
function TForm1.GetLabelByIndex( Index : integer ) : TLabel;
begin
result:=nil;
case Index of
1 : result:=Label1;
2 : result:=Label2;
...
end;
end;
いかがでしょ?
>>584 TScrollBoxコンポーネントは、多分ですけどHorzScrollBarプロパティで水平、
VertScrollBarプロパティで垂直のスクロールバーデータが手に入るかと。で、
範囲は、0〜Rangeの値まで。その辺はヘルプに載っていますけどー。(当方Del5
ですが)
587 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/01 23:17
ScrollBar.Positionプロパティを操作するんじゃないんですか? 普通のScrollBarには、Max,Minとかあるけど、ScrollBoxには、 ScrollBoxの水平垂直ScrollBarのさらに、Positionを操作??? RangeとPositionの関係が???です…。
>587 落ち着いてヘルプをよく読む。
???
590 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 00:21
横方向だけを考えるとして、ScrollBoxのRangeを内部のImageBoxの大きさに 合わせて(これって自分で設定するんですよね?)、例えば、ImageBoxのWidth が300だと、ScrollBox1.HorzScrollBar.Range:=300にしたあと、Positionを 半分に設定したら、半分が見えると思ったんですが、Position=79です! この79という数字はどこから????? ScrollBox自体のWidth=241なんですが、241+79=320。この300との20の差は、 ScrollBar自体の幅???
?????
>>590 縦スクロールバーの幅も考慮に入れる
というのは面倒なので、WidthじゃなくてClientWidth使うべし。
593 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 00:29
おせーろハゲ
594 :
デフォルトの名無しさん :02/07/02 00:35
?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ??????????????????????????????????????????????????
>>595 思わず保存して grep かけてしまったではないか。
あっはっは
しかし
>>594 は大丈夫だろうか。母さんあなたが心配です。
600 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 00:41
600ゲット!!!1!111
601 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 00:42
本来の質問である、カーソルキーで、という奴は、EditBoxでキーを捕まえて とやってみましたが、通常はどう処理するのが一般(という言葉が適切なのか な…)なのでしょうか?。(捕まえて、Position変えて、key=#0にする。) keyのイベントがあるものならなんでもいいようですが…
605 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 00:51
駄レスすんなやDel厨。
606 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 00:51
>>592 すみません。お礼を書くのを忘れてました。
なんで、ScrollBoxは、キーボードでScrollBarがうごかせないんだーーーー
607 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 00:54
ごふっごほっっ、、、、ごほほっご」ほおっおっおほほっほっっおっおほおお
608 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 00:57
.。o○プクプク
609 :
デフォルトの名無しさん :02/07/02 01:01
ようするに、構って欲しいワケ?>492
610 :
492 :ScrollBoxをカーソルキーでスクロール :02/07/02 01:07
なんだこの糞スレ。
612 :
本当の492 :02/07/02 01:11
いえ。なんでホィールでScrollBox動かせるのに、カーソルキーやPageUp Downキーで、動かせないのかな?と。 キーボード派で、いちいちマウスの持ちかえるのが面倒なだけです。
1行1列のリストビューを作ってオーナードローすれば楽チンさ! と思ったけどキーでは横にしか動かせませんでした。てへっ。
614 :
本当の492 :02/07/02 01:14
黙れハゲ!
615 :
デフォルトの名無しさん :02/07/02 01:37
(´-`)。o ○ (だんだん、「某スレ」に似てきたなぁ…)
うっさいハゲ。つるっぱげ。
スレと関係ない書きこみは放置厳守でよろしく
>578 最新版を入れると普通にインストールできました。。。 何で悩んでたんだろう。。。
619 :
デフォルトの名無しさん :02/07/02 17:22
(´-`)。o ○ (またぁりな雰囲気だたのに…)
すんまへん。。。
>>569 をどこに記述しればよいのか
わかりまへん。。。
あちこちに書いてみましたが、えらぁ。。。(鬱
>>585 えーと。。。
あぁ
なるほど
できるのかな 自分に。。。
試してみまする
ありがとおございまっす!
あ〜〜〜 わかりまいた。。。 あたしゃアフォだな(w ありがとうございました
>>620 横槍スマソ。
>>569 のは二つに分けて考えましょう。
var lbl_memo: array [0..5] of TLabel;
部分はTFormクラス内(Publicがよろしいかと)に。
begin
lbl_memo[0]:= Label1;
lbl_memo[1]:= Label2;
:
は、TFormのCreate内に書きましょう。
ということで。
さらに追記スマソ。
>>585 にはプロパティ宣言を入れると、お好み通り(まるでインデックス指定して
いるような)感じになるかと。
property Label[Index : integer] : TLabel read GetLabelFromIndex;
・・・こんな書き方で良かったと思いますが。間違ってたらゴメンナサイ。
これで、参照時は、
messagebox(handle,pchar(Label[1].Caption),'実験',mb_ok);
みたいな感じにできるかと。
・・・書きすぎてスレ汚しになったかナァ。
>>622 あ。
ご丁寧にありがとうございます
なんかテンパっててわけわからないことで悩んでしまいますぃた(恥
>>623 そこまで書かせてしまって申し訳ないです
いくつかの手段があるのを知るのはとても必要なことなので
大変助かります
多謝です!
>>492 :ScrollBoxをカーソルキーでスクロール
507 でレスしたものです。
>なんでホィールでScrollBox動かせるのに、カーソルキーやPageUp
>Downキーで、動かせないのかな?と。
ホイールはスクロール専用の入力デバイスです。キーデバイスは、
スクロールとは本来無関係ですから、キー入力でスクロールするため
には、プログラマがコードで関連付けなくてはなりません。
矢印キーで ScrollBox をスクロールするのは、フォーカスの移動
があるため、思ってたより難しいですね。フォーカスの移動を防ぐ
ために、Application.OnMessage でキー入力を処理するとうまくい
きます。以下のコードでは、ScrollBox1 には Image1 があって、
TAB キーで、または、マウスでクリックするとフォーカスが
ScrollBox1 に移動して Label1 が赤色になります。このとき、矢印
キーで ScrollBox1 をスクロールできます。試してみてください。
type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Image1: TImage;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure ScrollBox1Enter(Sender: TObject);
procedure ScrollBox1Exit(Sender: TObject);
private
{ Private 宣言 }
public
procedure AppMessage(var Msg:TMsg; var Handled:Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin Label1.Font.Color := clWhite; Label1.Color := clBlue; Label1.Caption := 'Exit'; ScrollBox1.TabStop := true; Application.OnMessage := AppMessage; end; procedure TForm1.ScrollBox1Enter(Sender: TObject); begin Label1.Color := clRed; Label1.Caption := 'Enter'; end; procedure TForm1.ScrollBox1Exit(Sender: TObject); begin Label1.Color := clBlue; Label1.Caption := 'Exit'; end; type TScrollKind = (LineUp,LineDown,LineLeft,LineRight); procedure ScrollBoxScroll(SB:TScrollBox;ScrollKind:TScrollKind); const LineScroll = 5; begin case ScrollKind of LineUp:SB.VertScrollBar.Position := SB.VertScrollBar.Position-LineScroll; LineDown:SB.VertScrollBar.Position := SB.VertScrollBar.Position+LineScroll; LineLeft:SB.HorzScrollBar.Position := SB.HorzScrollBar.Position-LineScroll; LineRight:SB.HorzScrollBar.Position := SB.HorzScrollBar.Position+LineScroll; end; end;
procedure TForm1.AppMessage(var Msg:TMsg; var Handled:Boolean); begin if (ActiveControl = ScrollBox1) and (Msg.message = WM_KEYDOWN) then case Msg.wParam of VK_DOWN:begin ScrollBoxScroll(ScrollBox1,LineDown); Handled := true; end; VK_UP:begin ScrollBoxScroll(ScrollBox1,LineUp); Handled := true; end; VK_RIGHT:begin ScrollBoxScroll(ScrollBox1,LineRight); Handled := true; end; VK_LEFT:begin ScrollBoxScroll(ScrollBox1,LineLeft); Handled := true; end; end; end; procedure TForm1.Image1Click(Sender: TObject); begin FocusControl(ScrollBox1); end; procedure TForm1.ScrollBox1Click(Sender: TObject); begin FocusControl(ScrollBox1); end;
すでにあるカレンダーコンポーネントを使用せずに カレンダーを作成しなくてはならなくなりました すでにあるTMonthCalender等を使用して 年月日の取得は可能でしょうか? うるう年の計算もしたくないですし 指定した月が何日まであって 何曜日から始まるのか等を取得したいのですが。。。
∧_∧ ( ´Д`) / \ __| | 629 | |__ \  ̄ ̄ ̄ ̄ ̄ \ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
>うるう年の計算もしたくないですし IsLeapYear()で閏年かどうか分かる >指定した月が何日まであって 閏年かどうかわかればこれは簡単 >何曜日から始まるのか EncodeDate() で TDateTime に変換し、DayOfWeek() で曜日を取得 すこしはヘルプをみたらいいのに
>>630 おっさるとおりで
えーと記述いただいた件は理解しているのですが
既コンポーネントから情報を取得するという手段があったら
やってみたいなぁと思ったのであります
不愉快にさせてしまったのでしたら ごめんなさい
>>631 ありがとうございます
閏年の計算の仕方も一応理解はしているのですが
カレンダーコンポーネントを使ってみたかったんです。。。
表示はしてあげられませんが
お世話になりました
>>632 TMonthCalender はユーザ入力のためのコントロール
これをつかってもできるかもしれないが、630 の方法より
めんどくさそう
DelphiってVBとかVC++用に発売されている各種OCXって使えるんですか? 例えば、旧文化オリエント社のオレクトラチャートとか、VsFlexGlidとか。 あと、VC++で作ったDLLなんかもDelphiから使用することは可能ですか? 出来ればVBからDelphiに乗り換えたいんですけど、今使っているライブラリや ツールが使えなくなるとちょっとつらいので...
>>634 OCXは使えます。
コンポーネント(C)→ActiveXコントロールの取り込み(X)です。
DLLもVBで使える範囲なら問題なく使えます。
しょーもない質問です。 VBでは、予約語、メソッド、プロパティ、オブジェクト名等すべて、コードエディタ での入力時に勝手に大文字・小文字を変換してくれるので、誤字、脱字があるかない か、一発でわかるのですが、Delphiではこのような機能はないのでしょうか? (大文字、小文字を区別しないでも正常動作するようですが、なんとなく気持ちが悪い) ※ 煽りではありません。(W
>>634 昔(Delphi4)、TrueDBGridを試しに取り込んで見たけど、
見た目は大丈夫そうだったが、挙動が不審で全然ダメだった。
pdf.ocxとか、レイアウトソフトのocxは普通に使えてます。
>>636 [Ctrl]+[Space]を試して見ましょう。
>> 635 THXです。 んじゃ、ちょっくらObjectPascalと戯れてみます。
>>636 追加。
誤字脱字はこまめにコンパイルしてもわかる。
一区切りついたら[Ctrl]+[F9]
コマ切れのレススマン
>623 わからないことがひとつある、 動的にTLabelを作成したほうがよくないかと...
>>642 左様ですな。
例えば、定型のフォームを作成して、Labelをデザイナ上で配置して・・・という時に
動的にラベルを生成してそれらのプロパティを指定しようとするのはいかにも面倒
ですし。
そういう意味では、こういった手法というのが必要なのではないかナァ・・・と。
もちろん、動的に作成しても問題無いような処理だったらそれでいいとは思います
がね。
ま、その辺りは状況に応じて使いわけましょうってことでス。
644 :
本当の492 :02/07/03 00:58
>>625 ありがとうございます。やってみます。
>キーデバイスは、スクロールとは本来無関係ですから、
言われてみると、なりほど!という感じです。
でも、せめて、PageUp、Downキーとかで動いて欲しいな…
Delphi5をお使いの方に質問です。 TNMUDPコンポーネントを使ったことのある方なら誰でも良いのですけど、TNMUDP コンポーネントのSendBufferメソッドを使用してフォルダ内のディレクトリリスト を送信するプログラムを作りました。で、受け側のプログラムを使って受信データを 表示させたところ、「D:\*.*」などのフォルダ情報は表示できるのに、「D:\WinNT\ *.*」フォルダは送信できませんでした。考えられるのは、サイズがでかくて送れな かったとかの原因だな・・・と。(空メッセージが届く) 誰か、この辺りの情報をご存知の方いらっしゃいませんか?
>>643 配列をつかっていちいち代入するのではなく、
Label1.Tag ← 1
Label2.Tag ← 2
..........
のようにオブジェクトインスペクタで設定すると、配列なしで
function TForm1.GetLabelByIndex(index :integer):TLabel;
var
i:integer;
begin
result:=nil; i := 0;
while (not Assigned(result)) and (i < ComponentCount) do
begin
if Components[i] is TLabel then
if Components[i].Tag = index then
result := TLabel(Components[i]);
Inc(i);
end;
end;
のようにできると思います。
647 :
デフォルトの名無しさん :02/07/03 09:07
Del付属のQuickReportが激しく使えないので、 市販のレポートツール買おうと思っているのだが、 お前のお薦めがあったら教えれ。
>>647 有料でよいのなら QuickReport のソースを購入するという手があります。
どの程度複雑なことに手を出すかにもよりますが。
>>647 用途によると思うんだけど…。
自分は今、印刷関係の仕事してるから、
レイアウトソフト用のタグを書き出して印
刷するのが言いように思えてしまうし(w
ポストスクリプトを書いてしまうのも手だよ。
自分はかけないが。
(=゚ω゚)ノ ひさしぶりにこのスレ来た。懐かしい。お母さん元気ですか?僕は元気です。
>>646 これ好きになりました
なんかスマートですね
ありがとうございます
>>646 Σ( ̄□ ̄;)
>if Components[i] is TLabel then
Components[i]
がわかりませんっっっ
配列ではないTLabelコンポーネントのお話ですよね?
>>652 もしかして ComponentsというTLabel型の空配列をあらかじめつくっておくということでしょうか?
>>653 全てのコンポーネントには Components[] プロパティがあるのです
>>652 ,653
ComponentsプロパティはTFormをヘルプで検索して、そのプロパティを見れば分かって
いただけるかと思います。
TFormの継承元にTComponentクラスがあり、そのクラス内のプロパティです。
>653 ヘルプのTComponentのプロパティを参照。 別の方法でTWinControlのプロパティも参照(Controls と ControlCount)。
>>654 おおおおおお
そうでしたか
>>655 なるほど
ご丁寧にありがとうございます
ということは これはこのフォーム内でのタグ設定されたラベルは
配列にしたいものにだけしているということが前提になると解釈したのですが。。。
>>657 左様ですね。
この方法でアクセスするためには、配列に含めたくなければtagに-1をいれておく
とか、あるいはIndexに0は使わないとか約束事を決めておいてやるべきでしょうね。
BoolToStrって関数がありますが、 ヘルプには、 function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string; と書いてあるにも関わらず、 function BoolToStr(B: Boolean): string; のようにしか受け付けてくれません、なぜでしょうか? 因みに、 Bが、self.checkbox1.checked なら ヘルプ通りに使える var B:Boolean; で定義してあるもので使おうとすると UseBoolStrs が余分だ!って怒られる。
> var B:Boolean; > で定義してあるもので使おうとすると UseBoolStrs が余分だ!って怒られる。 _______________ ,,,,,,,,,,,,,∧,,∧ / 〜′,,,,,,,ミ,,゚Д゚彡< うちのは怒りません。 UU""" U U \日ごろの行いがいいからか?
マジっすか? なんか壊れたんだろうか・・・・。
>>660 =662 BoolToStrって関数を自分で作ってて、忘れてるとかってオチでは?
それにしても、なんだかな。関数ですね。 自作しるとか思うですが.... 列挙型のすべてをこういう変換できれば 意味があるんだが... RadioGroupに対して列挙型を関連づけたりとか いまだにできんのかしら? コードが面倒っす。 \_ ____________ |/ ∧,,∧ ミ,,゚Д゚ミy━~~ U ミ 〜ミ ミ U''U
665 :
もしかしなくても何も解っていない男 :02/07/03 22:30
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); を、他から呼び出す時ってどうしたらいいのでしょう?Clickとかじゃないし。 StringGrid1.SelectCell?????
>>665 インスタンス名.StringGrid1SelectCell
668 :
もしかしなくても何も解っていない男 :02/07/03 22:50
TForm1.StringGrid1SelectCell(TObject,0,0,true); ???
670 :
もしかしなくても何も解っていない男 :02/07/03 22:58
なんだか、パラメータの指定の仕方が全然わかんないんです。 実パラメータが云々とか言われます。 procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); で書いた処理を、他の、例えばButton1をClickした場合にCallしたいのです。
>>670 SelectCellの中身を別の関数に移して、
両方で同じ関数を呼ぶようにするのが簡単確実。
procedure TForm1.StringGrid1SelectCell(……);
begin
hoge;
end;
procedure TForm1.Button1Click(……);
begin
hoge;
end;
procedure TForm1.hoge;
begin
実際にやりたい処理
end;
>>664 パブリッシュなプロパティにした列挙型は 実行時型情報で相互変換出きると思うけど?
>>670 呼び出し元がTForm1のスコープ内だったら、メソッド呼び出し自体は
StringGrid1SelectCell(...);
で良いはずですよね。違えば、(例えば、var Form1 : TForm1; の宣言がinterface
部にある場合には
Form1.StringGrid1SelectCell(...);
ですよね。
パラメータに関しては、
Sender ... メッセージを通知するオブジェクト
なので。例えばButton1Clickの中から呼び出したいならば、SenderをButton1にすれ
ば良いかな。場合によっては、Senderの値が何かによってStringGridに与える影響
を変更したい場合もあるはずなので、その辺りは多少考えるとして。
で、あとのパラメータは知っての通り。ただし、var宣言している項目に関しては変数
を与えないといけないので、var dummy : boolean; で宣言した変数を与えましょう。
例
procedure TForm1.Button1Click( Sender : TObject );
var CanSelect : boolean;
begin
CanSelect:=true;
StringGrid1SelectCell( Sender, 0, 0, CanSelect);
end;
こんな感じかな?
>>673 いいえ、StringGrid1.SelectCell(...);ですが何か?
>>660 BoolToStr…?ヘルプを調べたけど載ってない…。
…はッ!?もしかして、Del6の新関数?
>>676 メソッド呼び出しは、
インスタンス名.メソッド名()
じゃないの?Del3厨だから仕様変更は知らないけど。
>>674 きっと、フォーム名がStringGrid1…いやいや。フォーム名をStringGrid1にしたら
クラス名はTStringGrid1になてしまう。
どうやったんだろう。
…まさか、新しいフォームをコード入力で生成ッ!?面倒なことをするなぁ…などと
逝ってみるテスト。
>>674 , 677
いやいや。これは通常のSelectCellメソッド呼び出しではなく、どうやらOnSelectCell
イベントの呼び出しのようですな。
引数がそんな並びになってマス。
procedure TForm1.StringGrid1SelectCell(……); ↑ 揚げ足は良いがコンパイルエラーが起こるようなコードでけんけん言わんでくれるかw
>>680 因みに…
674は、最初メソッドとは思わずに「そんな宣言の仕方あんのかよー。知らないぞー」
と思い悔し紛れに書いたレスです。もし、「せっかくレスしてんのに揚げ足とんなよ
逝ってよし!」と気を悪くされてたのなら誤りますんで。
|ヨクワカナイガ
|,,∧
|Д゚彡 言ってよし
⊂ミ
| ,;゙
|´
>>672 "出来る"んだけど、逝ってヨ仕様って感じるです。
procedure TForm1.Button1Click(Sender: TObject);
begin
//列挙型から文字列へ
Label1.Caption := GetEnumName(TypeInfo(TAlignment), Ord(Label1.Alignment));
//文字列から列挙型へ
Label1.Alignment := TAlignment(
GetEnumValue(TypeInfo(TAlignment), 'taRightJustify') );
end;
こんなの使えない(役立たない)っすわ。
BoolToStrなんて関数作っている場合なの?>>某
>こんなの使えない とは? 型が強い言語、かつパラメタイズ機構(C++ テンプレート相当)が存在しない ので強制キャストが頻繁に出てくるのは仕方が無いでしょう。 しかし、テンプレート相当が無くても自分で定義すればすむ話ですよね? function TAlignmentToString( const a : TAlignment ) : string; begin result := GetEnumName(TypeInfo(TAlignment), Ord(a)); end; こういった変換関数群を自動生成するツールがあると面白いですね。 使わない関数はスマートリンクで削除されるから、結果として必要なものだけが リンクされますし。 ... アイデアいただきます。> Delフサギコさん
教えて厨ですいません。タダと言うのでパーソナルをDLしたのですが ビジュアルパスカルが分からずに苦労しております 昔開発をやったことがあるのでプログラム感はあるのですが 関数が分りません 試しにバージョン情報(サイトへのリンクボタン付き)のウィンドウから作り始めたのですが ・Bitbtnへの画像の貼りつけ(バナーボタンをつけたい) ・ブラウザ起動−引数としてURLを渡す ができずに早速詰まっています そこで 上記2点のプログラム デルファイでのビジュアルパスカル関数一覧が出ているサイト アフォな漏れにでも分かるデルファイでの開発で役に立つサイト 等ありましたら教えて下さい
BitBtnにはGlyphがある。そこから画像つけるべし。 ブラウザ起動ならShellExcuteを使うがよろし。 ShellExcute(Application.Handle,'open' 'ブラウザ名','URL','ブラウザのDir'); だったきがする...間違ってたら指摘してください。
687 :
デフォルトの名無しさん :02/07/04 11:32
変な単語が飛び出すとネタかと思って煽ろうとするが、
スレタイトルを思い出してハッとする俺がいる。
・ネタでない場合はこちらをお読みください
> ビジュアルパスカル
ObjectPascalのことですね
> デルファイでのビジュアルパスカル関数一覧が出ているサイト
付属のヘルプ、「ObjectPascal言語ガイド」、「VCLリファレンス」を見るのが手っ取り早いです
> アフォな漏れにでも分かるデルファイでの開発で役に立つサイト
このスレッドの
>>2-10 を参照してください。
特に、Delphi-ML検索
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi 大概のことは上記サイトで解決するのでブックマーク必須です。
> ・Bitbtnへの画像の貼りつけ(バナーボタンをつけたい)
> ・ブラウザ起動−引数としてURLを渡す
これらの質問も、ヘルプとDelphiML検索で容易に解決しますが、一応。
前者は、プロパティエディタの「Glyph」から設定できます。
詳しくは、ヘルプの「TBitBtn」→「TBitBtn の使い方」を調べてください。
後者は、uses に ShellAPI を追加して、
ShellExecute(Handle, 'OPEN', '
http://hogehoge/ ','', '', SW_SHOWNORMAL);
とすればよいです。
これは、googleで「Delphi ブラウザ URL 起動する」を検索して最初のサイトで出てきました。
・ネタの場合こちらをお読みください
> ビジュアルパスカル
プププ
列挙型一つ一つにToString関数作るのは かなり手間だと思うです.. function TRecordToString( const a: TRecord; Value: TRecord) : string; こんな関数テンプレがないから作れないんですよね。 悲すぃです〜 ∧,,∧ また,includeで作らなきゃいけないのかしら... ミ,,゚Д゚彡 それも浦和座みたいで、美しい言語Pascalの ミ つ旦)~~ 理想からは程遠い... 〜と,,,~),,~)
689 :
デフォルトの名無しさん :02/07/04 14:31
俺もつくづくテンプレートほすぃと思ってます
Delphiのテンプレートを活用すべし。 IDEに"notepad Delphi6\bin\delphi32.dci" って登録して開いて(IDEからの登録は論外) [code_EnumToString | enumを文字列に変換] // |REPLACEMEを文字列に変換 function REPLACEMEToString( const a : REPLACEME ) : string; begin result := GetEnumName(TypeInfo(REPLACEME), Ord(a)); end; って貼り付ければ良し。
コンパイル時のテンプレートではなく コーディング時のテンプレートか。。。 確かにテンプレートという言葉だけ捉えれば間違ってはいない?
こんなへたれな質問に答えていただきありがとうございます うーん。まだ分からないことが続々と… とりあえずヘルプ内のサンプル作ってから考えることにする >> ビジュアルパスカル >ObjectPascalのことですね VBと混同してしまったYO… 当方以前にパワービルダーしかやったことないんで…
693 :
デフォルトの名無しさん :02/07/04 21:59
任意の部分の文字色を指定できて、URLやメアドを自動認識して、画像も表示できる エディタコンポーネントってありますよね?
エディタじゃないね。
696 :
デフォルトの名無しさん :02/07/04 23:02
TWebBrowser の凹んで見える「枠」を無くしたいんだけど、 どうすればいいのでしょうか?
列挙型を文字列にする機会なんてそんなにないと思うけどなあ・・・ ラジオグループに列挙型を関連付けるってのは、今現在でいえば TagとOrd関数で比較して結びつけるような操作のことじゃないの?
>>688 集合型がこんな感じで作れるんだから列挙型もいけるだろ
//使用例 SetToString(TypeInfo(TFontStyle), Byte(Font.Style))
function SetToString(Info: PTypeInfo; Value: Integer): string;
type
TIntegerSet = set of 0..SizeOf(Integer) * 8 - 1;
var
S: TIntegerSet;
I: Integer;
begin
S := TIntegerSet(Value);
Result := '[';
for I := 0 to SizeOf(Integer) * 8 - 1 do
if I in S then
begin
if Length(Result) <> 1 then Result := Result + ',';
Result := Result + GetEnumName(Info, I);
end;
Result := Result + ']';
end;
Delphi 6 Personalで TCustomRichEditを継承したクラスで Createを begin inherited; Self.Color := clBlue; end; とすると EInvalidOperation コントロール''は親ウィンドウを持っていません となるのですが。 Self.Color := clWindow; だとうまく行くのですが。
>>699 OnCreateのイベントは、クラスのコンストラクタであるCreateとはちょっと違うの
です。
すでに、OnCreateの時、コンストラクタ呼び出し後なのです。しかも、上位クラスの
Createはしっかりと自動呼出しなのです。
inheritedは要らないのです。
>>700 ぐあ。スマソ。
激しく嘘こきました。TCustomRichEditにはOnCreateなんてイベントありもさんな。
激しくスマソ。
えと。多分、そのエラーはParentプロパティが指定されていないせいかと。
self.Colorに値指定する前にParentを指定しましょう。
デフォルトがclWindowなので、clBlueの時は色を変えようとしてまだウインドウが無いのでエラーだけど clWindowの時は何も起きないというだけでは… コンストラクタでColorを変える時は、経験上何故かParentColor := Falseを事前に行っておかないと うまくいかないケースもちょくちょくありました。(理由は不明)
_____ ∧,,∧∩ / 頒゚Д゚;彡< 1行かよ! ,;゙⊃,ジ \_____ 〜ミ ,,○ ∪ function RecToString(Info: PTypeInfo; Value: Integer): String; begin Result := GetEnumName(Info, Value); end; procedure TForm1.Button2Click(Sender: TObject); begin Button2.Caption := RecToString(TypeInfo(TAlign), Byte(Form1.Align)); end; ちょっとキャストが気になるけど、なかなかよさげ 次は文字列から列挙型変換ですが...
Self.Parent := AOwner as TWinControl; でうまく行きました。ありがとうございました。
フォームのOnCloseイベントでActionの返値にcaFreeを割り当てても、閉じたフォ ームのコンポーネントにアクセスできるんです。なぜでしょうか。 (以下の例で、) @Form1のButton1をクリック > Form2が表示される AForm2のButton1をクリック > Closeされる BForm1のButton2をクリック > 何故か例外が発生しない! この方法では正常にForm2のインスタンスを開放できていないんでしょうか。 ただし、Bの前にForm2:=nil;を実行すると例外が発生しました。むぅ〜。 --------Unit1.pas procedure TForm1.Button1Click(Sender : TObject); begin Form2:=TForm2.Create(nil); Form2.Show; end; procedure TForm1.Button2Click(Sender : TObject); begin Label1.Caption:=Form2.Edit1.Text; end; --------Unit2.pas procedure TForm2.Button1Click(Sender : TObject); begin Close; end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end;
>>705 Show/Closeは表示の切替だからインスタンスの解放とは無関係。
解放したいんだったらForm2.Releaseすればいいんでない?
>704 ちょっと待って下さい。OwnerとParentは別の概念です。 パネルの上に貼る時でもOwnerはフォームが渡されてくるのですが…。 設定するタイミングを送らせた方がよさげ。(AfterConstruction, Loaded, CreateWndなど) それと、調べてみましたが、色を変えた時に、 問答無用でメッセージを送っているのが元々の原因みたいです。 継承したコントロールを作っているのですから、CM_COLORCHANGEDを自前で処理して、 ウィンドウハンドルが無い時はメッセージを送らないようにするなど、 望む動作に置き換える方法もあります。
>>706 んー。TCustomFormのOnCloseは、Actionの値をcaFreeにすると開放されるってヘルプ
には書いてあったんですが、ダメなんですかねぇ。
この例で言えば、Form2側でボタンを押したときに開放したいんです。できれば、元ウィ
ンドウからは作りッぱなで抜けたい処理があるんですけど…。ダメですか…。
>>706 705を読まずに書くけど、showに対してはhideでなかったっけ?
visibleをtrue/falseにする…
あー手元にDelphiがない
>706 OnCloseでcaFreeにすると、内部でReleaseが呼ばれるので、一緒のはずですけど。 …まさかと思いつつ、Form2がVisible = Falseのまま自動作成の対象なんてことはないですよね?(w
>>710 …まさか。いや、大丈夫ですとも。
じゃあ、開放されて無効な空間をアクセスしにいってるのに例外が出ないんでしょう
か?それも不気味な気が…。
でも、見に行ったForm2.Edit1.Textに値を入れた状態でCloseしても、値無しで返っ
てくるので、やっぱり開放されてるのかナァ…。
中規模システムの一部に使いたい処理なので、メモリリーク起こされると怖い…(-_-;)
>711 調査完了〜♪ コンポーネントは、解放される時Ownerの自分の名前と同じpublishedフィールドをnilに設定します。 この場合、Form2は解放済みメモリを指しているので、その後メモリが他の用途に使われていなければ Form2.Editに相当するアドレスにはnilが入っています。 TextプロパティはTWinControl.Perform経由で取得されますが、このPerformが、Self = nil の 無効な呼び出しのときは何もしないようになってました。 従って、nilが入っているコントロールのTextプロパティは常に空です。
>>712 うぉう!
ありがとうございます。助かりました!
っつーか、どこでそんな情報を調べたんですか。Del付属のオンラインヘルプですか?
…ここまで調べたということは、VCLのソースも持っているんでしょうね。(私も持っ
てるんですけどね)
本当にありがとう御座います。これでメモリリークの不安もなくコーディング続けら
れます!
>>708 脊髄反射で嘘書いてしまった。スマソ。
そーいやMDIではよくやる手だな。
716 :
デフォルトの名無しさん :02/07/06 02:56
VCLに検索とか痴漢のダイヤログがありますが、その使い方がサッパリわかりません。 某ランドのQAページにあるサンプルコードどおりに作ってもうまく動作しません。 これらは、TMemoでは動作しないのでしょうか?
717 :
デフォルトの名無しさん :02/07/06 02:58
TMemoでもう一つ質問です。 ファイルにある文字列を貼り付けて、その後、カーソルを上に移動する、というような処理をするときは、Memo1.Perform...の手順ではダメなのですか? 実際、どうすればいいのですか? ヒントを頂ければ幸いです。
>>716 あれはただダイアログ出すだけなので、実際の検索・置換は自分でやってください。
コモンファイルダイアログがファイル選ぶだけで、実際にファイル開くところまでは
面倒みてくれないのと同じ。
>>717 よくわからんがSelStartいじるんじゃ駄目なの?
>>713 Delphi好き ◆0YAPhEjk さんは仕事で使っておられるようなので、当然Professional以上ですよね。
プロジェクトオプションの「デバッグ版dcuを使う」をチェックして再ビルドすると、
デバッガのステップ実行でVCLソースまで入れるようになるので、
あとはひたすら追いかけていくだけです。
>>719 うあ。知りませんでした。今度試してみます。
有難う御座いましたー!!
721 :
デフォルトの名無しさん :02/07/06 17:02
Jabber.JPのサイト
http://www.jabber.jp/ で紹介されているExodusというメッセンジャークライアント
を使ってみたんですけど、メッセージを入力するウィンドウ
ではIME変換中、確定後とも文字化けしてしまって困っています。
具体的には、全角文字は全て白抜きの四角で表示されます。
ちなみにメッセージ自体は文字化けせずに送信されて、
メッセージ表示ウィンドウ(入力ウィンドウの上にあります)
にも文字化けされずに表示されます。
ExodusのソースをCVSから取得し自分でビルドもしてみたのですが
文字化け現象は変わりませんでした。詳細はJabber.JPメーリング
リストに書きましたのでそちらをご覧いただけたらと思います。
(ウェブサイトのアーカイブにはまだ載っていないのですが、
Jabber.JPのメーリングリストに参加後、
[email protected] という宛先にメールを送れば
記事が添付されたメールが返信されてきます。)
どうすれば、文字化けを解消できるのか、何かヒントを頂ければ
幸いです。よろしくお願いします。
ちなみに、Jabberの利点は、 ・ソースが公開されている ・自分でサーバを立てられる ・SSLで暗号化できる だと思っています。 MS Messengerなどではチャットのメッセージが平文でネットワークを 流れるのがいやだなあと思っていたので、Jabberでメッセンジャー 環境を構築したいと思っているのです。 入力時の文字化けさえ解消すれば結構使えそうですので、ぜひとも 何か解決の糸口を頂ければと思います。情報お待ちしています。
亀のごときスピードで前進し、 メニューからの別ウィンドウの作成と開放もできるようになった… チュートリアルのテキストエディタの作成で "[Additional]ページにある ActionManager"が無いのは 1パーソナル版だから. 2.以前のバージョンにはあったが無くなった。ヘルプが直ってない とかなんでしょうか? それとも漏れが猛烈な勘違いしてるだけ? 先に進めませんので教えて下さい
ガイシュツ
725 :
デフォルトの名無しさん :02/07/06 23:26
(´-`)。o ○ (もういい加減に「アクソンマネージャー」関係は終了しないかね…。 パソナル無料版のインストール時に、でっかいダイアログ出して「アクソンマネージャーは 付いてないよーん!」ってやるとか…)
Help見ればわかると思うんだが
TreeViewのツリー項目となるTTreeNodeのtextプロパティはString型になってるけど 受け入れる文字列のサイズに制限はないのかな。 実際にはこのtextプロパティに大きな文字列を入れることはまずないと思うけど。 TTreeNodeのソースの以下のところをみたら問題になるような気がするが。 procedure TTreeNode.WriteData(Stream: TStream; Info: PNodeInfo); var I, Size, L, ItemCount: Integer; begin L := Length(Text); if L > 255 then L := 255; Size := SizeOf(TNodeInfo) + L - 255; Info^.Text := Text; Info^.ImageIndex := ImageIndex; Info^.SelectedIndex := SelectedIndex; Info^.OverlayIndex := OverlayIndex; Info^.StateIndex := StateIndex; Info^.Data := Data; ItemCount := Count; Info^.Count := ItemCount; Stream.WriteBuffer(Size, SizeOf(Size)); Stream.WriteBuffer(Info^, Size); for I := 0 to ItemCount - 1 do Item[I].WriteData(Stream, Info); end;
>>727 自分で、でかいサイズを入れて見れば分かると思うがどうか?
>>727 ソースを無断で公表してはいけません
Borland に許諾を得ましたか?
(宣言部はタダだけど、実装部は....)
(´-`)。o ○ (どうして質問の前に自分で試すってことをしないんだろう)
オープンソースでもないのに晒しちゃってる時点でアウトだろ
_____________ / | バグ議論しようとしているのに | 「ソース晒しダメ。人間失格」 | ってな応答は、ちょっとカワうそうでは? \_ ____________ |/ ∧,,∧ ミ,,゚Д゚ミy━~~ U ミ 〜ミ ミ U''U 多めに見ない? それにしても、なんで Size := SizeOf(TNodeInfo) + L - 255; こんな事してるんでしょうか? -255 って記述は必要ないような機がするんですが 違うのかしら。
全てのフォームのフォントを日本語フォント(MS UI Gothic, 9ポイント)に 設定して再ビルドすることで文字化け問題は解決しました。 これで日本語も普通に入力できるようになって嬉しいです。やったー!
以下に記述したclassでHogeを呼び出した時、Executeで生じた例外をHoge内 で捕らえる事が出来ません。どのようにすれば可能でしょうか? uses Classes; type TKusoThread = class(TThread) public constructor Create(CreateSuspend: Boolean); destructor Destroy; override; procedure Execute; override; procedure Hoge; end; implementation uses SysUtils, Dialogs; constructor TKusoThread.Create(CreateSuspend: Boolean); begin inherited Create(CreateSuspend); end; destructor TKusoThread.Destroy; begin inherited Destroy; end; procedure TKusoThread.Execute; begin Exception.Create('Aborn'); end; procedure TKusoThread.Hoge; begin try Resume; WaitFor; ShowMessage('mazu-'); except ShowMessage('uma-'); end; end;
だってtryしてないもん。
>>735 それはHogeとは別のプロセスでExecuteは実行されているのでExecuteで
生じた例外をHogeで捕らえる事はできないという事ですか?
>>735 実現したいのはHogeとは別プロセスで実行しているExecute内での例外をHogeで
捕らえたいという事なのですが。
>737 734のHogeでは、どこにも"別プロセスで実行している" 他のインスタンスを参照してないので無理。 スレッドの管理をスレッドで行う事は可能だが、 同一クラスにその両者を押し込める設計は関心しない。 別のThreadクラスなりメインスレッドで処理したほうが良い。
…737の内容から外れるが、ひょっとしてこういう事がしたいのか? procedure TKusoThread.Execute; begin try ReturnValue:= 0; raise Exception.Create('Aborn'); except ReturnValue:= 1; end; end; procedure TKusoThread.Hoge; begin Resume; if WaitFor = 0 then ShowMessage('mazu-') else ShowMessage('uma-'); end; --- 呼出元 procedure TForm1.Button1Click(Sender: TObject); begin with TKusoThread.Create(True) do begin Hoge; Free; end; end;
>>738 分かりにくい質問ですいません。
type
TKusoThread = class(TThread)
public
constructor Create(CreateSuspend: Boolean);
destructor Destroy; override;
procedure Execute; override;
end;
TKuso = class(TObject)
public
constructor Create;
destructor Destroy; override;
procedure Hoge;
end;
implementation uses SysUtils, Dialogs; constructor TKusoThread.Create(CreateSuspend: Boolean); begin inherited Create(CreateSuspend); end; destructor TKusoThread.Destroy; begin inherited Destroy; end; procedure TKusoThread.Execute; begin Exception.Create('Aborn'); end; constructor TKuso.Create; begin inherited Create; end; destructor TKuso.Destroy; begin inherited Destroy; end; procedure TKuso.Hoge; var Thread1: TKusoThread; begin Thread1 := TKusoThread.Create(True); try Thread1.Resume; Thread1.WaitFor; ShowMessage('mazu-'); except ShowMessage('uma-'); end; Thread1.Free; end; メインスレッドからTKusoのHogeを呼び出したとします。TKusoThreadが生成して 実行され、WaitForの地点で別プロセスで実行されてるTKusoThreadのExecuteが 呼び出されます。'aborn'の例外がメインスレッドとは違うTKusoThreadのスレッ ドで生じるのですが、この例外はメインスレッドには伝達されないのでHoge内の tryで捕らえられず、ShowMessage('mazu-')が実行されてしまいます。そのため どうにかしてこの例外をHoge内で捕らえ、ShowMessage('uma-')を実行する事が できないかという事なのです。 以上で分かりましたでしょうか。スレッドを用いたprogrammingは初めてなので とんでもない間違いをしてるかも知れません。
ますます意味不明。ここはどんな厨房疑問でも答えるスレって事に なってるが質問の意図がわからなくちゃ答えようもないわな
742は741 見ずにかいちた。 で。妙に例外に拘けど、739のようにReturnValue使っちゃ駄目なの?
>>738 そうですか。それでは、
並列に実行されているスレッドがあり、そのうちの1つのスレッドで例外が
生じた。この例外を他のスレッドへ伝達したいがどうすればよいか。
でどうでしょうか?
>>743 指摘されている様に、関数の返し値を使用して解決する事はできます。しか
し、例外処理を途中で関数での処理に変えてしまうのは好ましくないと思う
のです。ですので、例外を直接別のスレッドへ伝える方法はないかと聞いて
みたのですが。まあ、無ければ無いで諦めるのですけど。
もの凄く要約させてもらうけど、スレッドAからスレッドBを動かして、スレッドBで 発生した例外をスレッドAで検知したいってこと?
748 :
デフォルトの名無しさん :02/07/07 20:35
デルファイで大儲けできるプログラムを作りたいので、 作り方を教えてください。
デルファイよりプログラミングしやすい環境を組ぬ。
>>744 できる。少なくともDelphi IDEはやっているね :-)
で、期待したのとは違うだろうが、こんなのはどうか。
type
TKusoThread = class(TThread)
public
FThreadException: Exception; //ホントはprivateとかに
FOnException: TExceptionEvent; //ホントはproperty化
procedure Execute; override;
procedure OnException;
end;
implementation
procedure TKusoThread.Execute;
begin
try
FThreadException:= nil;
raise Exception.Create('Aborn');
except
on e: Exception do
begin
FThreadException:= e;
Synchronize(OnException);
end;
end;
end;
procedure TKusoThread.OnException;
begin
if Assigned(FOnException) then
FOnException(Self, FThreadException);
end;
--- 呼出し側(手抜きでFormに記述したがThreadでも可能な筈)
procedure TForm1.Button1Click(Sender: TObject);
begin
with TKusoThread.Create(True) do
begin
FOnException:= ThreadException;
FreeOnTerminate:= True; // WaitForは使えない
Resume;
end;
end;
procedure TForm1.ThreadException(Sender: TObject; E: Exception);
begin
ShowMessage('uma-');
end;
>748 1.シリアルジェネレーターを作成する 2.Del CDを複製コピーする 3.アキバの裏通りで売る。 なお、当方は一切関知しない。
バッカじゃねーの?コイツ
753 :
デフォルトの名無しさん :02/07/07 23:49
Delphi6 RTLアップデートとかって出てるけど、なにこれ? RTLってランタイムライブラリィ?なんじゃらほい。
754 :
デフォルトの名無しさん :02/07/07 23:52
質問しつつ、DLしてみたよ。 | デッドロックが発生するという Delphi 6 での問題が解決されます。 って事らしいです。 \lib\SysUtils.dcu \lib\Xmlxform.dcu \lib\debug\SysUtils.dcu \lib\debug\Xmlxform.dcu \MergeModules\BaseRTL.Msm \source\Rtl\Sys\SysUtils.pas \Windows\System32\rtl60.bpl \Windows\System32\rtl60.map が中身みたいなんで、当てといた方がよさげ。
森の木陰でドンジャラホイ
>>754 >>755 アップデートパック#2入れてあるのに、RTLインストールしようとしたら
英語で「アップデートパック#2が見つかりません。先にインストールして
下さい。」と出やがった。
でも無理矢理強行インストールしたら、うまくいったみたい。バグなのか?
「※お詫び」って所にね。
759 :
デフォルトの名無しさん :02/07/08 00:40
小数点付きWideString型から小数点切り捨てて数値型に変換するVCLのルーチンってどういった物がありますか? ヘルプ漁ってみたがサパーリ解らん。
具体的には 254.68というWideString型文字列があったとして、ここから254という数値型を取りたいのですが。
>>760 いったん、val手続き使ってReal型に入れてからFloor関数を使うとか?
ウプ2を当てるとWin95で動かなくなるやつの対処?? それよりUP3はでるのかな?Delphi7になるのかな?
>>759 StrToFloatとかStrToInt使うべし。
>>759 strtofloat,trunc,formatfloatを使えば出来ますな。
小数点切り捨てはどーすんのか、ちょっと悩んだけど、あっさり検索出来るやん(^^;。
作ったプログラムを印刷しようとしたら、 「一般保護違反」っていうエラーが出て印刷できません。 なぜこうなったのか自分ではわからないので わかる方、教えてください。 ホント厨房でスマソ
「作ったプログラムを印刷しようとしたら」…ハテ? 1.作ったプログラムの実行画面キャプ印刷 2.〃 ソース印刷 3.〃 ダンプ印刷 4.電波 さて、どれでせう?
>>766 レスありがとうございます。
2のことです。
>>767 2だと、ちょっと回答は無理です。どんなスーパープログラマーでも。
100%正しい答えは出せる人はいないでしょう。なんつったって、
あなたのPCの問題だから。
常駐してるアプリケーションを外してみるとか、再起動するとか…。
がんがれ。つーか、delphi関係無い♥
プリンタのドライバをチェックしてみるとか… どんな物を印刷しようとしてもそーなるのかチェックするとか… メモリ周りのチェックとか…
結局、StrToFloat=>floorでうまくいきました。 しかし、なんで小数点付いて返ってくるんだか‥‥>FlashのW/Hサイズ
>>750 レスが遅れてすいません。
スレッド自身に例外を伝達する別スレッドのmethodへのポインタを保持
させるのですね。TForm.ThreadExceptionでraise eと記述して例外を
再生成できれば望んでる事ができます。が、実際に実行してみると
runtime errorがでてうまくいきませんね。簡単には行きそうに無いの
で
>>743 で指摘されている様にReturnValueで処理する事にします。
レス有り難うございました。
772 :
デフォルトの名無しさん :02/07/08 17:21
TDriveComboBox の change イベントが2回連続で 発生してしまうんだけど。 1回でいいのよ。 情報きぼんぬ Win2k + Del6.0Up2
773 :
デフォルトの名無しさん :02/07/08 20:20
Integer型のデータをPCharとして扱うにはどうすればいいんですか? というのも、Application.MessageBox関数で、 Application.MessageBox('…' + Integer型のデータをPCharにしたもの + '…' , …); という風に使いたいのです。 よろしくお願いします。
一時的なstringをPCharにキャストしても、その文の中でだけは有効なので、 PChar(IntToStr(100)) でいけます。
775 :
デフォルトの名無しさん :02/07/08 20:56
>>772 Tagプロパティに1回目は1を代入し、
2回目が来たらTagを調べてifではじき、
0を代入しておく。
776 :
デフォルトの名無しさん :02/07/08 22:13
(⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒
( どうやって誘拐しようかなぁ〜。。
O ( 最近溜まってるからナぁ。
ο 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
。 そんな犯罪をしないで、
http://fun.to/muke ___∧_∧__
( ・∀・)
――( )―┘、 マツデチ! キャッキャッ!!
‐――┐ ) )――┐ ≡≡∧,,∧ ≡≡∧ ∧
(__ノ__ノ . | ≡≡ミ,,>∀<ミ ≡≡(,,・∀・)
≡≡ミ_u,,uノ ≡≡ミ_u,,uノ
"~" """ ::: "~""~"
""" :::
777 :
名無しさん :02/07/08 23:04
Editに表示されている数値などをキーボード入力イベントとして別アプリに渡したいんですが、 どうすればいいか教えて欲しいっす。お願いしまっす。
SendMessage
>>777 別アプリのハンドル取得方法は心得てゴザルか?
別アプリのハンドルと、そのまた渡したいとこのハンドル取得してから
778さんのでOKでは。
やってみるっす。
C#を始めて購入したんですが、どーも使いにくくてDelphiパーソナル版を入手して Delphiに乗り換えを検討してます。 結論が云えば、JavaよりC#よりDelphiが私には一番マッチしています! なぜこんなに素晴らしい言語が広まっていないのかイマイチ理解できませんが、 VCLって凄いですね、マジで関心しました。 早速Pro版を購入しようかと思っていますが、Delphi7まで待ってから購入した方が 得なのでしょうか?それとも、今の時期にDelphi6を購入して例えば6ヶ月以内に Delphi7が発売されたら無償アップグレードとか特別割引とかあるのでしょうか? 今まで買った事がないのでアップグレードに関してイマイチ仕組みが分りません 教えてください。
>>781 >VCLって凄いですね、マジで関心しました。
これがわかってて.NetFrameworkが使いこなせない理由がさっぱりわからない。
お前は言語覚える努力したくなだけちゃうんかと問いたい。問いつめたい。
>>781 帰れ!
C#をDelスレに持ち込むな!
=============以後、C#話は他のスレでどうぞ=============
781のってそういう発言だったの? ところで、Delphi7っていつでるのかな。
インストール中に、EXEファイルの末尾に 暗号化した「WindowsのプロダクトID」を埋め込んで 他のパソコンにコピーしても起動できないようにしようとしています。 データの結合には成功したようなのですが(EXEファイルのサイズが大きくなったので) そのEXEファイルに埋め込んだデータが何度読み出しても 'ZP'としか出てきません。 読み出し側のプログラムが間違っているのでしょうか? わかる方がいましたら是非ご教授お願いします。 procedure TForm1.Write1Click(Sender: TObject); var Password: shortstring; FromFile, OutFile: TFileStream; AddData: TMemoryStream; begin //出力先EXEファイルを作成 OutFile := TFileStream.Create('C:\Test\New.exe',fmCreate); //結合元EXEファイルを開く FromFile := TFileStream.Create('C:\Test\Test.exe',fmOpenRead or fmShareDenyWrite); //〜レジストリ関係省略〜 //結合用データ作成 AddData := TMemoryStream.Create; PassWord := 'テスト'; AddData.Write(Password, Sizeof(Password)); //結合 OutFile.CopyFrom(FromFile, 0); OutFile.CopyFrom(AddData, 0); FromFile.Free; OutFile.Free; AddData.Free; end; procedure TForm1.Read1Click(Sender: TObject); var Password: shortstring; Exe:TFileStream; begin Exe:=TFileStream.Create(Application.ExeName, fmOpenRead or fmShareDenyWrite); Exe.Seek(Sizeof(Exe)-sizeof(shortstring), 0); Exe.ReadBuffer(Password, Sizeof(shortstring)); Exe.Free; end;
Exe.Seek(Sizeof(Exe)-sizeof(shortstring), 0); ナニシテルンダロ コレ
AddData.Write(Password, Sizeof(Password)); テユーカ カキコメテルカカクニンシロヨ
>>785 ううむ。あなた、重大なミスをおかしております。
ためしに、Read1Clickイベントの中で、
MessageBox(0,pchar('Exeのサイズ:'+inttostr(SizeOf(Exe))),'確認',mb_ok);
を実行してみましょう。
実験してわかると思いますが、Sizeof(Exe)はファイルのサイズではなく、Exeオブ
ジェクトへのポインタのサイズを返します。(32bit環境では常に4)
ネタか?
791 :
デフォルトの名無しさん :02/07/09 15:36
とある条件の時をif文でひろって、条件が一致した場合は何もしないで処理を継続し、 一致しなかった場合には処理をさせたいのですが、 ・何もしない もしくは ・何もしないで処理を継続する というような命令はあるのでしょうか? フォームのボタンが押下された場合の動作です
>>792 if not(今までの条件) then begin
...
end;
ではダメなのでしょうか。
あるいは、
if (条件) then begin end else begin
処理
end;
のようにbegin endの間に何もかかないのもありですけど…。
>>793 ご返答ありがとうございます
not を使用したくなかったのですが
begin end の間に何も書かないのもアレですよね(w
そのような命令があるのであれば この機会に知りたいと思うのですが。。。
ループ文の場合だと continue があるようですが
これに匹敵するような命令は ないのでしょうか?
単なる興味ではありますが ちょっと疑問を解き明かしたい。。。
ない
>>794 私もちょっと聞いたことがないですねぇ。お役に立てずに申し訳ないです。
でも、notを使いたくないっていう理由を知りたいですなぁ。差し支えなければ…?
差し支えまくり。
あー ないですか ありがとうございます 理由としては んー。。。 なんか言い訳してるみたいなコードな気がして(w go文のような 好みの問題なだけです お付き合いいただいてありがとうございます
>>794 今気づいたんですが、お勧めしませんけど、もしどーしてもやりたければ、
repeat
if (条件文) then
break
else
実行したい命令
until true;
でどうでしょう。動くかなぁ。
ま、面倒なので私なら多分おそらく思うに絶対notを使いますけど。
他にいい方法があれば…ナァ。
>>799 これ おもしろいですね
でも やはり素直にnotを使うのがセオリーでしょうか
いくら好みでも やはり(w
>>800 そうですねぇ。
個人的には、continueやbreakみたいなのは好きではないですね。
うまく使えばすっきりするんですけど、多用するとソースを追いにくくなったりしま
せん?
私、使ったことないんですけど…。みなさん、結構使ってるのかなぁ。
>>798 あらかじめいっておきます。ネタです(w
if (条件) then
Flag:=False
else
Flag:=True;
if Flag then
begin
処理
end;
>>798 じゃ、私もネタってことで。
if boolean(1-ord(条件)) then
処理
ってことで。
>>798 if true then else 処理;
はコンパイラを通りますね。(then,else間のbegin endは要らない)
でも、さすがに
if true else 処理;
とすると、怒られますた。
>>803 あ、この書き方すっげー参考になった(w
いままでboolean形の変数をIniFileに書き込む時、
if文使ってたからなぁ(汗
>>807 ordは順序型のインデックスを返します。
条件式の結果が論理型(Boolean)であればTrueが1、Falseが0に対応します。ので、
1-ord(True)が1-1で0。1-ord(False)が1-0で1になって、True、Falseのインデック
スが逆転しますので、それをBoolean型にキャストすると、「not 条件式」と同じ結果
になります。(なら、そう書けよ・・・と。)
>>782 結局MS言語で努力したくないんで Delphiを選んだんだが悪いか?悪くねーだろ!
>>783 うるさいよオマエ、C#の質問なんてしてねーんだよ、氏ね
結局誰もアドバイスくれないので、VCLのソース欲しさに今日Delphi6proを注文した。
Delphiは素晴らしいけど、Delphi使いはこんな奴等ばっかりなのか?
なんかガッカリしたよ、もーいいです、さような。
(´-`)。o ○ (809を削除するにはどうすればいいのかなぁ…)
本当は皆もろ手を上げて大歓迎なんだよ・・・・・・。 でも、嘘だよばーかDel厨死ねといわれるのが怖いんだ・・・・・・。
812 :
StringGridを共有イベントで :02/07/10 00:45
すんまっしぇん。StringGridで、色を付けたり、センタリングしたりするのに、 W := StringGrid1.Canvas.TextWidth(StringGrid1.Cells[ACol, ARow]); というコードが途中にあるんですが、これをStringGrid1とStringGrid2の共有 イベントとして利用するのに、 with TComponent(sender) begin 〜 W := Canvas.TextWidth(Cells[ACol, ARow]); 〜 end; とすると、[エラー]未定義の識別子 : 'cells'と怒られます。 W := TComponent(sender).Canvas.TextWidth(TComponent(sender).Cells[ACol, ARow]); としても、うまくいきまっしぇん。 誰か、HELP!お願いします。
>812 TComponent(sender) → Sender as TStringGrid
814 :
StringGridを共有イベントで :02/07/10 01:28
おお!ありがとうございます。レスがつくまで起きてて良かった!! 動作確認しました。 ところでwith文を利用しない、後半の書き方では、「無理」という事でよろしい でしょうか? P.S. Delphi歴まだ1か月です。VBは長かったんですが…
>>後半の書き方 W := TStringGrid(sender).Canvas.TextWidth(TStringGrid(sender).Cells[ACol, ARow]);
816 :
StringGridを共有イベントで :02/07/10 02:15
あっ!じゃあ、with文の方も、 with TStringGrid(sender) do でOKですね。(あっ!今812みたら、doが抜けてた!!) 汎用的にはTComponentを使うって書いてあったから、これを使えば全てOKと 思ってました。(Buttonは、TComponentを使ってOKだったので…) TComponentが使えないものもあるんですね…(しらんかった) m(_ _)m
817 :
◆tare/k3c :02/07/10 02:37
>>802 そうかい?continueは便利だよ。
仕事でVBA使ってるけど、continueが無いので泣いてるよ…
あ、
>>801 へでした。寝酒飲んでるんで、すまん。
ふと思ったが、continueやbreakが性に合わないと言うことは、 exitもあまり使わないってことかな?
breakとExitとContinueはよく使うな。
goもbreakもコンパイルすれば 同じジャンプ命令になりそうな気がするんだが、、、 自分はnot使う方が自然だと思う。
>>819 できるだけ使わないようにしてますねぇ。
この辺も好みの問題になっちゃうのかな?
さすがに、数百行の手続き・関数になると上部で処理を行うかどうか判断するときに
exitを使わないとインデントばっか多くなって見難くなりますので、そういう時は
使用しますねー。…もしかして少数派?
>>821 ところで、どーしても気になるんですけど、go文ってなんです?Del5なんですけど
Help見てもでてこないし…。MSDNでも、Goはあったけれど、なんか違うよーな感じ
ですし…。
notを使わないなんてコーディング規約が会社にあったら、即行でやめるぞオレ。
not は boolを反転させるのにしか使ったこと無いなぁ
>>824 同意します。
まぁ、>794さんみたいな方もいらっしゃるんじゃないですかね〜。
notを使うのは論理演算上普通のことなんで、if (条件) then 〜 else 〜;が条
件演算後の論理値を元に分岐する処理っていう風に覚えていればいいですけど、そ
うじゃなく、「もし〜ならば」の覚え方をしている人にとっては、notをつけると言
い訳コードに見えてしまうのかもなぁ。…私は、そうは思いませんケド。
ま、not使ったほうがイイよってことで。
すみません、チョト聞きたいんですが、 dosコマンドを実行して、そのコマンドが吐き出すメッセージを受け取るには、リダイレクション以外になんか方法はないでしょうか?
>>823 goto 文の間違いでしょう。
ネタにマジレスか?
>>828 ですか。なるほど。
…ってか、ネタですか。すんません。
exitはfinallyをちゃんと処理してくれることを知ってから よく使うようになったな。 try if foo then exit ... finally ... <- 常に実行される end; continueはインデントが低くなる=ブロックが減るようなケースで良く使う while foo do begin if bar then ... end end; ↓ while foo do begin if not bar then continue; ... end;
TPopupMenu で、popup したあと、 メニュー以外のところがクリックされてメニューが消える ことを関知するにはどうすればいいでしょうか? クリックされて消えるのは OnClick にイベントを設置すればいいようなのですが
>>830 thanx
しかしそこのサンプルを実行しると、CreateProcessが失敗する…
ナゼナンダー
失礼、解決しますた。 dosコマンドはCreateProcessの第1引数(アプリ名)ではなく第2引数(コマンドライソ)に渡さなきゃいかんようです。
>>832 WM_MENUSELECTなど如何だろうとDelphi-MLにありました。
すみません、さらに質問しちゃいます。
>>830 の方法で、dosコマンド終了後に吐き出された文字列を取れますが、
実行途中に出ている文字列は取れないでしょうか。
たとえば、pingコマンドだと4回実行する際に間がありますが、それをその間に1行づつ取り出す…とか、
あとはformatコマンドなどでは進行状況が%でリアルタイムに出力されますが、それを同時に取り出せないか…
というかんじです。
コマンドの終了待ち中にlabelのcaption等に常に書き込むようにしても、うまくいきませんでした。
(コマンドが終了するまで何も表示されない)
横はいりになってしまうかな? 質問です コントロール上にマウスカーソルが入ってきたときと 出て行ったときをイベントで拾えるでしょうか? OnMouseMove ではなんだか違う気がしますし。。。 ImageコントロールをWebで見かけるボタンのような感じで 押下できる場合にはコントロール上にマウスカーソルがきた場合に 画像を変えて、コントロール上から離れた場合にまた画像を変える。。。 ということがやりたいのですが。。。
CM_MOUSEENTERと CM_MOUSELEAVEメッセージハンドラで処理する。
>>838 APIですね?
ありがとうございます
初歩的な質問ですれよごし、申し訳ないです
助かりました
調べてみます
A (゚o゚)<APIじゃないよー。メッセージ。調べるうちにわかるだろうけど一応。 (ー)ー ))
>>840 あら 違うんでふか。。。
なんでしょお
調べてきまぷ〜〜〜
Imageコントロールって mouseenterイベント拾えるんですか?
フォーム上に貼り付けたか、フォーム上のパネルに貼り付けたかで 動きが変わってくるんだよね、このメッセージ・・・
844 :
デフォルトの名無しさん :02/07/10 22:12
>805 はげしく遅レスだが、IniFileにBool型を書き込む/読み込むのは ReadBool、WriteBoolを使うと思うのだが・・・
以下のようなコンポーネントを作成してみる方法を拾ってきたのですが、 これにCM_MOUSELEAVEを追加する方法がわからないのです privateにあるFMouseEnter:TNotifyEventの記述は何のためでしょうか? unit UMyImage; interface uses Windows, Messages, SysUtils, Classes, Graphics, ExtCtrls, Controls; type TMyImage = Class(TImage) private FMouseEnter: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage);message CM_MOUSEENTER; public constructor Create(AOwner:TComponent);override; destructor Destroy;override; published property OnMouseEnter: TNotifyEvent Read FMouseEnter Write FMouseEnter; end; procedure Register; implementation constructor TMyImage.Create; begin inherited Create(AOwner); end; destructor TMyImage.Destroy; begin inherited; end; procedure TMyImage.CMMouseEnter; begin Inherited; if Assigned(FMouseEnter) then FMouseEnter(Self); end; procedure Register; begin RegisterComponents('Gen',[TMyImage]); end; End.
つーか、このソース、晒してエエのん?
>>846 Delphi-MLの過去ログのものですが、問題があるでしょうか?
>>845 > これにCM_MOUSELEAVEを追加する方法がわからないのです
MouseEnterとまったく同じようにMouseLeave追加すればいい。
> privateにあるFMouseEnter:TNotifyEventの記述は何のためでしょうか?
OnMouseEnterイベントを追加するため。これもEnterをLeaveに変えて同じようにすればいい。
ぶっちゃけ、EnterをLeaveに変えたのを追加するだけでよさそう。
>>848 >>849 自分もそう思ったのですが、
type
TMyImage = Class(TImage)
private
FMouseEnter: TNotifyEvent;
FMouseLeave:TNotfyEvent;
procedure CMMouseEnter(var Message: TMessage);message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage);message CM_MOUSELEAVE;
と記述すると、FMおうせLeave:TNotfyEventで、
未定義の識別子のエラーがでてしまって。。。
FMおうせ?
>>851 。。。ごめ(w
てか できました
誤字してました(w
メインフォームから ボタンクリック等で別のフォーム(静的生成)を表示させ、 そのフォームが表示されたらメインフォームは背面に下がり、 すべてのイベントを受け取らないようにしたいのです 別のフォームの表示(TForm.Caption := True)とともに メインフォームのEnabledをFalseにしたら、 ウィンドウのアクティブ化も防げると思っていました。。 しかも メインフォームに配置してあるコントロールが、 イベントを受け取る始末 お助けください
>>853 TForm.Caption := True;
は
TForm.Visible := True;
の間違いだとして....
メインフォームとサブフォームの間に親子関係を指定しないと、二つのフォームは
独立して動いてしまいます。VCL のオブジェクトをどこで作成するかということと
Windows のウィンドウの所有者、および親子関係はそれぞれ独立して定義できます。
>>854 こんな時間にありがとうございます
フォームの親子関係の設定の仕方がわかっていないのですね>自分
親子関係の設定(もしくは定義)はどのようにするのが定石なのでしょうか?
オブジェクトインスペクタのみでおこなうものなのでしょうか?
えっとね。 いちばん簡単なのは, メインフォーム Form1 で サブフォーム Form2 を Form2.ShowModal; と呼び出す方法。
>>856 そうですか
ちょっと調べてみます
ありがとうございます(^^)
プログラム中にCtrl+Zを実行して、他のアプリケーションに undoをさせたいのですがどうしたらいいでしょう? メッセージ??とか使うみたいですが、そうゆうのは 専門書とか買わないとだめですかね。
>>858 Pro以上ならWin32プログラマーズリファレンス等のヘルプを見れば如何でしょう。
Del6Personalにはついてませんね。
あるいはMSDNとか。
WM_UNDOを送りつければいいはず(相手が対応していれば)
>>859 Personalにもついてるぞ。適当なこと書くな。
864 :
デフォルトの名無しさん :02/07/12 00:35
初歩的な質問で済みません。 フリーのコンポーネントを使う場合に、コンポーネントのインストールで パッケージにコンポーネントをインストールしますよね。 この場合、「既存のパッケージへの追加」と「新規パッケージへの追加」って 選べるじゃないですか。 この選択の基準てどういう風に考えればいいのでしょう。 自分はすべてデフォルトのパッケージに追加してしまうぞ! って言う人は、いつも「既存のパッケージへの追加」を選べばいいんでしょうか。 ある人は、追加するコンポーネントは新規パッケージを作ってそこにすべて入れるとか 人によって、やり方が違うんでしょうか。 それと、パッケージに追加した場合に、コンポーネントのパスが 追加されますよね。 コンポーネントを几帳面にフォルダー毎に分けておくと、コンポーネントを 追加するたびにこのパスが長くなってしまいますが、Delphi3あたりには バグが有って256文字以上のパスになると正しくコンポーネントを 検索できないような話も聞きました。 これを防ぐためには、追加コンポーネントはすべて一つのフォルダーに ぶち込んでしまえばいいのかも知れませんが、後でどのファイルが どのコンポーネントの物か判らなくなりますよね。 皆さんはこの辺はどうしているんでしょうか?
>>864 >自分はすべてデフォルトのパッケージに追加してしまうぞ!
>って言う人は、いつも「既存のパッケージへの追加」を選べばいいんでしょうか。
>ある人は、追加するコンポーネントは新規パッケージを作ってそこにすべて入れるとか
>人によって、やり方が違うんでしょうか。
そうです。
>これを防ぐためには、追加コンポーネントはすべて一つのフォルダーに
>ぶち込んでしまえばいいのかも知れませんが、
そうです。
>後でどのファイルがどのコンポーネントの物か判らなくなりますよね。
そんなことありません。コードエディタから開けるし、uses に追加された
名前からすぐ分かるでしょ。
866 :
デフォルトの名無しさん :02/07/12 03:11
>>864 コンポーネントをコンパイルした結果できるのが .dcu ファイルだったかな。
これだけを特定のフォルダへまとめてパスを通しておけばいいのじゃない?
>>859 ,860,861,862,863
皆さん、サンクスっ!
私お絵描きしてるんですが、頻繁にundoするので
ショートカットキーすらめんどくさい状態です。(w
>>863 そうだったんですか。text検索したけどダメなんで、
てっきり無いと思ってしました。でも、859さんの
意見は私にとって適当なことではなかったですよー。
868 :
デフォルトの名無しさん :02/07/12 05:15
無料のPersonalで作ったアプリってシェアウェアにしてもいいの?
>>867 普通にインストールすれば、
C:\Program Files\Common Files\Borland Shared\MSHelp
に入ってるはず。
870 :
デフォルトの名無しさん :02/07/12 06:22
872 :
デフォルトの名無しさん :02/07/12 07:20
多いひも安心
>868 名前:デフォルトの名無しさん :02/07/12 05:15 >無料のPersonalで作ったアプリってシェアウェアにしてもいいの? 僕にも、これ教えて下さい
>>873 そもそもシェアウェアというのはだな、
作者のソフトウェア開発に置ける経済的(略
>>873 公開できるのはGPLライクなライセンス
ソース付きで無料で公開するソフトのみなんじゃなかったっけ?
まぁ、PersonalでDelphiが使えるようになったら、
お金貯めてpro買ってください、VCLのソースも付いてますし、
コンポーネントとか作るようになればpro以上じゃないと辛いでしょ。
やっぱり、そうですよね。レスありがとうございました
>>863 ぐぉ。すんません。気づきませんでした。
Del5Proをメインで使っているんですが、こっちにはプログラムメニューからたどって
いくと見つかるでしょう?Del6Personalは無かったから無いと思ってたのです。
失礼。
>>876 GPL 縛りは Kylix Open ですね。
Delphi Personal で作成されたアプリに対する GPL の適用は
要求されません。
もちろんプログラマが GPL にしたければそのように宣言できます。
GPL とは独立して、Borland が要求している条件があって、それは
お客様は、直接的にも、間接的にも、お客様のアプリケーションプログラムの配布
または使用についていかなる報酬も受け取ってはなりません。
(
ttp://www.borland.co.jp/delphi/del6/license.txt )
というものです。立場によっては GPL より厳しい。
>>879 強制フリーソフトってことっすか。
まぁ、無料開発環境なんだからねぇ。
フリーで公開してて、ユーザーに寄付したいと言われても「氏ねよ馬鹿、オマエこっちが金貰えないの知ってて寄付したいとか言ってるだろ?」と、断らなければならないんですね(^^;
>>881 つぅか仕事に使うなと。まぁ、日曜プログラマ捨てたんだからそっちから金取るしかないわな。
>>881 速攻でPro版買って、リリースする。
そして、寄付をもらう。
同じソースでもPersonalとProでは 出来上がるバイナリが微妙に違うのかねぇ?
ごめんなさい。 最適化等のコード生成は同一です。生成されるユニットも同一。 リンカーが .EXE を作るときに印をつけるようです。 結果として出来上がるバイナリは異なります。
887 :
デフォルトの名無しさん :02/07/12 10:44
すみません、厨房質問なんですが、TButtonを Ctrl+クリック とか Shift+クリックっていうのの区別はどうかくのが正解ですか? OnClickで分けようとして悩んでしまいました。FAQだろうと思って調べてみても よくわかりません。
>>887 普通はボタンを CtrlやShiftで区別したりはしないものです
GetKeyState を使えば、シフト状態はわかりますが、
OnClickは実際には離された時に呼ばれますから、注意が必要です
889 :
デフォルトの名無しさん :02/07/12 11:15
ADOQueryコンポーネントのParameterで、ワイルドカードを用いた検索方法を 教えてください。 adoq.Parameters.ParamByName('hoge').value := '%' + txthoge + '%'; としても、%をワイルドカードとして認識してもらえず、文字列扱いされてしまいます。 よろしくお願いします。
ええっと、vb厨卒業しようと思ってdelphi始めたばっかりなんですが、 たとえばlistboxのadditemメソッドとかで、 第2引数にオブジェクトを指定するようになってますが、 何のオブジェクトを指定したらいいんでしょうか? ヘルプを見ても、いまいち要領を得ません・・・
>>890 単に文字列リストとして使用するだけならnilを指定すれば良いのでは。
あるいは、additemのかわりにItems.Add(...)を使うと良いかと。
>>891 にるほどー
さんくすです。
ちなみにどんなときに何のオブジェクト指定するもんなんですか?
>>892 リストボックスと関連付けて特定のオブジェクト、コンポーネントを動作させたいときに
使ったり、場合によってはTObject型に整数型、ポインタ型を格納できますので、様様な
データを関連付けできますよ。
私も現在、色を保存させてカラー選択リストなんかに使ったりしてます。
変な使い方ですけどね。
ま、人それぞれでなんでもアリってことで。
関連付けて動作?? …っと、疑問はきりがなく出てきますが、おいおい調べていくことにします。 ありがとうございました。
_____________ ∧,,∧ /クラスを自作って ミ,,゚Д゚彡 < それを格納しておくのが便利なんだな。 U つ \ @ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪
そみません。実行環境にてあるActiveXコントロールを表示する前に インストールされているか調べてもしインストールされてなければ、 表示しない、ロードされないようには出来ますでしょうか? おながいします。
>>896 そもそも無ければロードされないというより出来ないのでは?
>>896 フォームに貼り付けずに動的に生成させれば初期化でエラーが返るだろうから、それで判断すれば?
Delphiでは、プリフィックスはあまり使われていないんでしょうか?
>>898 ありがとうございました。先生、こんな感じで
だいぞうぶでしょうか?
try
Ctl := TCtl.CreateParented(Form1.Handle);
except
HandleErr;
end;
_____________
∧ ∧ /
(*゚Д゚) < Nineです
>>899 ( つ⊂) \_______
@| ,.|,.,
(ヾ''"_, _,."彡.
彡,,,,,o,...o,,..ヾ 脱ぎ脱ぎしますた
それじゃタダのギコじゃん(w
903 :
デフォルトの名無しさん :02/07/12 17:24
prefixはenumやTComponent.Nameでよく使われてるよ。 ハンガリアンは使われてないにしても。
もうそろそろ次スレ作成ですが、提案がありまして、 Delphiモナーもどこか行ってしまったし、相談室と区別するために 「Delphi *初心者* 相談室」に改名する案を出したいのですが。 タイトルを残すなら、1に初心者用と分かるメッセージを入れるとか。
こうすることで、 初心者→「Delphi *初心者* 相談室」 通常→「Delphi相談室」 雑談→「フサギコのフサフサDelphi談話室」 に明確に分かれると思います。 煽り結構。ご意見求めます。
落ち目のDelphiにスレ3本維持するトラフィックはもうないだろ。 1本に絞れ。
フサギコはこの時期になると毛が生え替わるんだよ。 フサフサの毛がサラサラの毛になるんだ。 で、毛を刈っておくと生え替わりがスムーズに行われるってわけ。
910 :
デフォルトの名無しさん :02/07/12 23:53
つーか、初心者って言葉、反対。ワケワカメなヤツが大挙する予感。
落ち目とはイワンが、そうそうスレを増やす必要もないと思われ。 初心者、通常&雑談で2つに一票。
Delphi初心者隔離スッドレ
一つに絞ることは無かろうが 相談室を破棄して2つにするのが良いかと
Delphi相談室、今月に入ってレスの数20くらい。その中で質問1つだけだ。 確かに3つは必要なさげ。
思い切りかぶったなw
質問と雑談
>>916 左様ですな。
わかりやすくて良いのでは。
……一票。
フサギコのスレなんかフサギコからの質問とAAばっかだし。
919 :
デフォルトの名無しさん :02/07/13 00:23
ヘルプにある「ASCIIファイルをDelphiがサポートするデータベース形式に変換する方法」を参照して作業をしてるんですが、一度としてうまくいった試しがありません。 オブジェクトが見つかりませんとか、メモリーが足りませんとかのエラーになってしまいます。 この、テキスト→DBへのインポート作業を行ってくれる、もしくは、テキストを分析してスキーマファイルを作成してくれるヘルパーアプリはありませんか?
>>919 Excel,Accessを使えばParadox等のデータベースファイル作成ができますよ。楽チン
です。
922 :
デフォルトの名無しさん :02/07/13 00:38
923 :
デフォルトの名無しさん :02/07/13 01:41
んじゃ、相談室に一本化するってのでいいのかな? でも立てちゃう人がいそうだが… どうしても立てたい人は、自らがDelphiモナーを引き受けてくださいね。
>>887 OnMouseDown で Shift 状態を保存しておいて、OnClick で参照するとよいでしょう。
var
SS:TShiftState;
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SS := Shift;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
case (Byte(SS) and $7) of
0: s := 'None';
1: s := 'Shift';
4: s := 'Ctrl';
5: s := 'Shift+Ctrl';
end;
ShowMessage(s);
end;
925 :
デフォルトの名無しさん :02/07/13 03:31
Delphiイイ! プログラミングは全くの初心者なんですが、なんとなくやってけそうなDelphi で、書籍を探しています。 プログラミング自体、全くの初心者なんで「変数」「関数」とかの 概念から書いてるような本で何かオススメなのはないでしょうか?
秋には Delphi7 with .NET がでるから、また盛り上がるんじゃ?
928 :
デフォルトの名無しさん :02/07/13 10:29
>>925 悪いことは言わんから、最初はC#かJavaからはじめた方が良いよ。
言語的にも比較的近いし、参考資料(特に入門書)の充実度がまるで違う。
Delphiは、ビジュアル化されすぎていたり、「よくわかんないけど動く」
部分がかなりあってプログラミングを基礎から学ぶにはやや不適な部分も
あるからね。
>>924 あ、ありがとうございます。そっかーMouseDownってこう使えばいいんですね。
勉強になりました。
930 :
デフォルトの名無しさん :02/07/13 10:43
>>927 今年の冬にDelphi7だけ出て、Delphi.NETは別製品で来年冬のリリース予定・・・。
931 :
デフォルトの名無しさん :02/07/13 10:46
>>928 いや、逆に今となってはどれでやっても同じだと思われる、
Delphiだと無償で環境が手に入るのでその意味ではお薦めでいいんじゃないの?
僕もDelphiで勉強したおかげで、C#も苦も無く理解できたし今でもDelphi使って
ますよ、ソフトを作って配布しようとしたら Delphiの方が楽みたいだから。
「よくわかんないけど動く」 ってのは C# も Java も同じだな。 「動かない理由がよくわかんない」 ってなりがちなのも同じ。
934 :
デフォルトの名無しさん :02/07/13 11:57
その点、D proにはソースが付いてるから安心できる。
936 :
デフォルトの名無しさん :02/07/13 12:00
>>923 荒された時とか双方が退避場所になってたりして良かったのだがね
937 :
デフォルトの名無しさん :02/07/13 17:08
Delphi7の話題ってどこにありますか? 新しいコンポーネントの情報とか。
>>939 > クジラ飛行机 ゼロから始めるDelphi講座
お前は中国人か?w
winAPIを使わないでaviをbmpに変える方法ありますか? Kylixでプログラミングしているのですが、 何を使えばいいのか分からないです
>>941 fopen
fread
fwrite
fclose
>>942 これはどのようにつかうのですか?
C言語のようですけど(ちょっと調べてみました)
944 :
デフォルトの名無しさん :02/07/13 22:45
>>944 aviのファイル形式を知らないでも読みとれるのですか?
>>945 UNIXではAVIのファイル形式を知らないとどうがんばっても無理。
ずいぶん茨の道を歩んでるねぇ…<KylixでwinAPIを使わないでaviをbmpに変える
948 :
デフォルトの名無しさん :02/07/13 23:26
(´-`)。o ○ (つーか、変数から始めるんじゃ、もっと簡単なのから…。 ぴゅう太とか、ファミリーベーシックとか…)
>>947 俺はKylixでWinAPIを使ってaviをbmpに変える方が地獄だと思われ。
>>949 茨の1.…「Kylixで」
茨の2.…「winAPIを使わないでaviをbmpに変える」
という意味。
「茨の1」ってブラック商会変奇郎みたいだ…
>920殿。 こんな簡単なことにどうして気付かなかったんだろう。 ありがとうございますた。
Javaじゃないと・・・とか言ってる奴は間違いなくウンコ Javaそのものがウンコというのは常識 最近、webはウンコを練り上げて作るのが流行ってるらしいですね
954 :
Excelを起動 :02/07/14 00:04
ExcelApplicationとExcelWorkBookをFormに貼り付けて(F_Passは、絶対パスが入っているとして) ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.Add(F_Pass +'aaa.xls',0)); とすると、なぜかファイル名に「1」がついたものが開かれます。(aaa1.xlsになる) なぜ1がつくのでしょうか??? aaa.xlsとして、Connectしたいのですが…
>>952 あっちでウンコウンコ言ってたのお前か。
Javaできないからってひがむなよ。
956 :
デフォルトの名無しさん :02/07/14 00:16
ウンコウンコ
>>941 ひとくちにAVIといっても、それはRIFF形式のファイルです。
RIFFは拡張性が高く、それを利用して(DivXやMPEG4V3やら)複数の
動画フォーマットがAVIという拡張子で保存されています。
Windowsではその ”複数の動画フォーマット”を管理するために
各フォーマット毎のCODECを持っており、実質はこのCODECが
動画のデータをBMPに変換しています
Kylixにはそれがない(?)ため、自前で変換しなければならず、
MPEG等の公開されたフォーマットでない場合は、内部構造を
解析するところから着手する必要があります。
皆が"茨の道"といってるのはそういうことです。おわかり?
>>958 おぉ、avifile というのがあるのか(恥
ということで、WindowsのCODEC をラップするavifileがあるので
このライブラリを叩けば内部構造の解析からは逃れられる、らしい。
>>940 中国では
幾→几
機→机
となります。だから
「テレビは電視机だ〜!ツクエなんだ〜!!」
と言ってる香具師はアフォです。くじら飛行机も当然アフォです。
だって、ひまわり・・・
>>961 ん?何か余計にわかりにくくなったような…
あれ見て普通に「クジラ飛行機」って読んじゃった漏れは変なのか?
>>961 中国ではってより簡体字ではでしょ、本来の書き方は中国でも機ですが、
略して机としているだけです、台湾では簡体字は使いませんので機ですね。
俺はてっきり「中国人は空飛ぶものは飛行機以外、足のあるものは机以外なんでも食べる」ことを言ってるのかと思ってたよ! スレ違い続きでスマソ
我不是日本人!!
おしえてください。 本のとおりDeleteMenuなるWinAPIをprocedureに書きました。 usesに宣言する方法がわかりません。 Delphi6のコードエディタでDeleteMenuをクリックしたら { Externals from user32.dll } ---snip--- function DeleteMenu; external user32 name 'DeleteMenu'; というのが出たのですがこれをどうにかするのでしょうか?
969 :
デフォルトの名無しさん :02/07/15 20:48
>>968 なんだろう。聞きたいことがよくわかりません。
procedureに書きましたって、
procedure DeleteMenu;
とかってしたってことでしょうか。
procedure TForm1.Button1Click( Sender : TObject );
begin
DeleteMenu;
end;
とかしたってことでしょうか。???
>>968 がVBユーザーでなおかつDeleteMenuの宣言を
自分で書かないといけないなどと悩んでいるなら
その必要は無くって単にuses Windows;するだけ。
>>969 構文はわかるんですが(たぶん)
var
MenusI:HMENU;
begin
Menus := GetSystemMenu(Handle,false);
DeleteMenu(Menus,SC_CLOSE,MF_BYCOMMAND);
DrawMenuBar(Handle);
end;
>>970 いままでコンパイルエラーでてたんですが書いたり消したり
繰り返してるうちにもとのコードでエラーでなくなりました
なんでだ?
とにかく、ありがとうございます。
>>973 ひょっとして、「DeleteMenu」という関数をソースに書いたりしたか?
つーか、全く意味不明。
誰か、次スレ立てないのですか?それとも、もう立ってるのかな? (人任せ…無責任かのぅ…)
>976 なるほど。そうケリがついたのでしたね。 というわけで、相談室の方に引っ越します。皆さん、有難う御座いました。よろしけれ ばまた、「相談室」でも会いましょう!
オープンソースブラウザってC++ばっかりだな。Delphi製のやつはないの?
>>978 HTML エンジンも Delphi 製?
うむ、聞いたこと無いなぁ。
おれは自分でIEコンポーネント使ったタブブラウザ作って常用してるけどね。
好き勝手にカスタマイズできるので便利。
Delphi製のHTMLエンジンとしては
http://www.pbear.com/ があるけど、二バイト文字非対応なんだよなー。
css等にも対応してるので惜しい。
981 :
デフォルトの名無しさん :02/07/16 15:05
質問です。他人の作ったdelphiのソース解析をすることになったのですが、 自作のコンポーネントなのかもともとのコンポーネントなのか区別がつけられず 困っています。どうやって見分けたらいいのですか? ちなみにdelphi5です。 全然初心者なのでくだらないとは思うのですがお願いします。
>>981 コンポーネント名(例えばTButton)にカーソル合わせて
F1押してヘルプがでたらBorland製。
またはマウスで右クリックして定義の検索して
どのソース=ユニットに所属しているかどうかで判断する。
あ、ごめん。意味を勘違いしてた。
985 :
デフォルトの名無しさん :02/07/16 16:03
え? 違うんですか? >984
使ってみればわかるけど、あれは使用しているコンポーネントを列挙するだけで、 製品に含まれているコンポーネントなのか自作したものなのか判別できないのよ。
>>981 IDEのエディタでコンポーネント名(例:TSomething)にカーソルを置いて
右クリックで「定義の検索」とやってごらんよ
正直、未だにinterface型が分かりません。 GUID?何じゃそりゃ?って感じです。 どなたか教えてください・・・。
次はver.8か?
立てないんじゃなかったか
過去スレは全部HTML化されてますってことで。
996 :
デフォルトの名無しさん :02/07/16 18:35
お、ついにスレ統合か。これですっきりするね。 よかった。
埋めていい?
てか 埋める
998
\==========/ \ =========/ \ \=======/ ゝ=======/ /== =\ \====| 〇 〇 |====/ /==== ===\ \==| ) ̄ ̄ | |==/ /====== =====\ \| | | |/ /======== =======\ ゝ | | / /========== =========\ \ ./⌒⌒ .| / /============ ===========\ ――┤ /============= ==============\;;;;;;; /================ ===============|;;;;;; ヽ .=================== ===============|;;;;;; ・ ・ ヽ ================== ===============|;;;;;;; ・ ::::・ ヽ==== ===============|;;;;;;;; ::●::: `、 / ヽ┌─┐ノ \ | ===============|;;;;;;;; ・:::::・・ | `、 l | | l | ===============|;;;;;;;; ・ ・ :・ | `、 l | | l / ===============|;;;;;;;; ・ | `、 \ トー─| / /
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。