1 :
デフォルトの名無しさん :
2006/09/29(金) 08:16:04
for i:=0 to 9 do って書いてるのにいきなり i に10が入ったりするんだけどこれはどういう事ですか?
8 :
デフォルトの名無しさん :2006/09/29(金) 13:18:09
たぶんおっぱい成分が足りないからだよ
for文の前後のコード晒してみ
最適化でそうなる場合がある。
11 :
>>7 :2006/09/29(金) 14:26:36
最適化つけたりはずしたりしてたら治った なんだこりゃ
コード実行的にはそれで無問題。
VBならiはきちんとするのにね
14 :
デフォルトの名無しさん :2006/09/29(金) 16:34:14
VBは最適化も満足に出来んのか。
最適化でコードを省略したりデバッグ情報吹き飛ばしたりできないどころか、 ブビは、 Exeの中身はインタープリタ。
それは大昔の話だろ?
ソースコードがなくて、dcuしかないファイルが中にあるときにビルドする方法を教えてください ソースコードの中にそのdcuだけしかないファイル内にて宣言されている識別子があって コンパイル中にそこで停まってしまいます。
日本語でおk
ソースコードが無く、dcuファイルしかないユニットを含むプロジェクトをビルドする方法を教えてください。 そのユニット内で宣言されている識別子を別のユニットで使うとコンパイルエラーになります。
プロジェクト→オプション→ディレクトリ/条件タブの検索パスにdcuファイルのパスを指定 uses節にdcuファイル名を記述 ビルド
>>19 校正ありがと
>>20 うまくできました。
ちなみに、プロジェクト登録されているファイル群の中に
dcuしかないファイルのpasファイルが登録されていて、
上記の検索パスの設定に加えて
このpasファイルの登録を削除したらうまくいきました。
ありがとうございました。
>>7 10から減算した方が速度的に速いから、最適化でそうなる。
iが使われている場合(表示など)は、きちんと0から増加する
>>22 詳しく。たとえばどんなコードでそうなるのか教えてください。
大昔からの FAQ だよね。検索するといっぱいあるんじゃないの。ML とか
25 :
7 :2006/09/29(金) 20:14:49
>>22 なるほど。
最適化つけたりはずしたりする事じゃなくてfor文の中を書いたから治ったのか。
ありがとうございました。
>>23 22じゃないが、なにも見ないでレスすると、
最後に0になるため、CPUのzeroフラグが立ち
zeroフラグジャンプが起こるので10から始めた方が速い。
(0からなら9との比較後に、条件ジャンプなのでちょっと遅い)
すみません、教えてください。 DelphiやBCBはバージョン6以降、認証方式をとっており、 何回かインストールするとインストール回数が多すぎて認証不可に なるそうですね。 レジストリに認証のキーがあるそうですが、私はレジストリを弄った ことがありません。どなたか、簡単にレジストリの関連のキーの退避と 復帰の方法を教えてください。かなりDel6とDel7を何回もインストールを 繰り返したので心配になりました。今後も使い続けたいのでお願いします。 BDS2006は結構アンインストールをしたのに、意図的にレジストリを消さないと キーが残っているみたいで、認証コードの入力が要求されませんね。 De7を例にお願いします。
田三キー + R → regedit → Delphiを検索 → 右クリックからキーを保存
>>27 某に電話すれば、回数が増えて、認証できるようになる。
>>29 めんどうなので電話は無しということで。
>>28 すみません、田三キーがわかりませんし、Delphiを検索で
右クリックからキーを保存とありますが、どのキーをどの様に保存して
どう復帰するのか、よろしければ、アドバイスください。
だれか、「Delphi認証キー保存復帰プログラム」なんてユーティリティー
つくってVectorでアップしてくれませんか。
Windowsキー + R → regedit → HKEY_LOCAL_MACHINE\SOFTWARE\Borland → 右クリックからキーを保存 そこに認証情報があるかは、知らんけど
今後も使い続けたいというような重要な場面に、電話は面倒だと? ふざけてんのか? 俺は知ってるけど教えるのやめた。
>>33 反論しますが、自前でほとんどのバージョンのDelphiとBCBをもっています。
それも全てプロ板。
>>32 ふざけていませんが、それでは8年後にDel6の認証回数がオーバーしたので
何とかしてくださいと電話をかけるなんてことをしなければならないのですか?
そのときは最新版を使えというのは無しです。マシンはそんなに簡単に買い替え
られません。私はマシンを4台持っていますが、Del1も2も現役です。必要なら
10年だって使います。
>>31 ありがとうございます。Regeditは無印と32がくっついているものと2つWINDOWS
ディレクトリで見つけました。なんだかよくわかりませんが、今あまり使っていない
Del6をインストールしたマシンで実験してみます。
ません。
>>34 > 8年後に
日某が潰れてなければ、それもOKでしょう。
潰れるなら、何らかの救済措置があるでしょうし。
電話が嫌なら
OS全体をバックアップするという手もあります。
単なるわがままボウヤのようだな。
時は金なり。電話しなさい。
>>35 メーカーにもよるとおもいますし、これは認証の問題ではありませんが、
I*MのVisualAgeシリーズでサポートの電話をかけたとき、とっくに販売停止
した製品についてはお答えできません。また、今頃そんな古いソフトの話を
持ち出すなんて非常識みたいなニュアンスの応対を受けたので、個人的に
電話でどうのこうのと助けを求めるのは個人的に嫌になりました。
OSは現在 PC-DOS2000. OS/2WarpV4、 Win98後期 Win2000、WinXp を
使っています。Del1はWarpで、Del7はWin2000、WinXpで使っています。
どのマシンもすでに複数のソフトをインストールしているので、OS全体をバック
アップするのは大変みたいですね。レジストリを勉強してみます。
>>36 54歳の中年を捕まえてボウヤ呼ばわりされるとは・・若作りし過ぎたかな(笑)
>>31 「Boland」のトップ(?すみません用語を知らないもので)で保存を選ぶと
それ以下のツリー構造のキーを全て同一ファイルにテキスト形式で保存するみたい
ですね。あとは適当な場所に適当なファイル名で保存して、必要なときにファイルを
ダブルクリックすれば復帰されるでよろしいでしょうか?
気になるのは「HKEY_LOCAL_MACHINE」以外にも「Borland」があるのでそれを全て
保存するかどうかですが、実験してみます。
認証はレジストリではなくて、どこかにテキストファイルを作っている可能性もある。
>>39 いいや54才であろうと何歳であろうと、精神年齢がボウヤの事はありうる。
いつまでも大人になれないお子ちゃまだって事さ。
Staticを複数行にしたいのですがどうすればいいんでしょうか…?
この流れだとまず教える奴は現れないだろうな
定数パラメータ(const)は、値パラメータと違い、手続き・関数本体の中で、 1. 代入できない。 2. 別の手続き・関数の、変数パラメータとして使えない。 3. 速度が向上する? という認識で良いのでしょうか。
45 :
42 :2006/09/30(土) 20:49:13
つーか4秒後にレスしてる!すげぇ!それともかぶっただけ?
47 :
デフォルトの名無しさん :2006/09/30(土) 22:52:03
Caption:='バーボンハウス'+#13#10+'(´・ω・`)';
48 :
デフォルトの名無しさん :2006/09/30(土) 22:58:36
バーボンハウス・(´・ω・`)
FormがOnShowとかしたときのイベントにCaption:='バーボンハウス'+#13#10+'(´・ω・`)';を使えばおkな希ガス
>>42 フォームを右クリック→「エディタで表示」を選択。
TStaticTextのCaptionプロパティに'hogehoge'#13#10'foofoo'と書き込んで
再び右クリック→「フォームとして表示」を選択しておしまい。
TLabelでも同じことが可能。
面倒だな 改行サインとかないの〜? \n とか
52 :
デフォルトの名無しさん :2006/09/30(土) 23:37:56
*Delphiには* 有りません
生きてるのも面倒だろ氏ね
VBにはあるのにね
あるフォームからモーダルフォームを表示する時に、 モーダルフォームを表示する前に、重い処理をしていると モーダルフォームがメインフォームの後ろに隠れて フリーズしたように見えるとこが時々あるのですが、 みなさんこのような症状を経験した事はないですか?
ない
どこかで見た記憶がある。 ニュースグループだったかな。
StringReplaceは試したのか?
61 :
デフォルトの名無しさん :2006/10/01(日) 09:36:04
>>51 Caption:='バーボンハウス' + sLineBreak + '(´ω`)';
> 長年の懸案だったメモリマネージャの問題や、XPでモーダルダイアログが > 後ろに隠れる問題の対処が盛り込まれています。 N先生によると Delphi のバグらしいぞ。 対処は、Delphi 使わないか、BDS Turbo を使う事。
63 :
42 :2006/10/01(日) 11:05:25
ありがとうございますた!
>>51 ヽ( ・д・)人(・д・ )<\n使えればいいのにねぇ
>>63 そうすると\を\\としなきゃいけなくなるしな。慣れの問題だと思う。
OS の仕様に対処してない開発環境のバグだろ
仕様・・・
XPが出る以前の製品については仕様. それ以降の製品についてはバグだといいたいな、それは.
OS の仕様に対処してない開発環境のバグだろ
あってもいいよ
function で、返り値は Boolean にして、返したい値を引数に持っているものを良く見掛けた気がするのですが、 普通にやると、スコープは独立して駄目なのですが、どうやっているのでしょうか? ……いざ、やってみようと思ったら、参考になるものが見当たらない orz
IndyのTIdTCPClientを用いてTCPサーバーを管理するプログラムを作っているのですが スレッドを作ってその中でTIdTCPClientの接続を維持する事はできるのでしょうか? また、複数のサーバーを管理・制御したい場合どのように設計するのが効率的なんでしょうか? 参考になる資料等があれば教えて下さると有り難いです。
アクティブなウィンドウ、または任意のウィンドウにキーの入力情報を送るにはどうすればいいのですか? 例えば一定時間ごとにdeleteキーを押したという情報を送る、みたいな・・ ちょっと正確な言い方が分からないので分かりにくいかもしれませんが・・お願いします。
>>74 FindWindowで任意のウィンドウ見つけてSendMessageでWM_KEYDOWN送る
アクティブのウィンドウならkeybd_eventでいいかもしれない
integerにはStrToIntDefみたいな関数がありますが、Colorみたいなとき文字列からの変換に失敗したときはどうしてますか?
StrToIntDefのソースを見よ
>>75 ありがとうございました
おかげでアクティブウィンドウは出来たので今度は非アクティブ状態のウィンドウを非アクティブのまま操作できるよう頑張ってみます
80 :
デフォルトの名無しさん :2006/10/01(日) 18:53:03
ColorToStr があった希ガス
strtocolor colortostring
StrToColorはありますね。Colorへの変換に失敗したときのために StrToColorDef(str:string, DefColor:TColor):TColor みたいなのを自作してる人いないかなって思ったんです。
自分で隅っこのほうにでも書いておけばいいと思うよ
作ったプログラムを実行しようとしてF9を押すと 「プロセスの生成が出来ません:アクセスが拒否されました」 となって実行できません。 Delphiを再起動して何もやっていない状態でやろうとしても同じです なにか解決法があるでしょうか?
OS再起動
>>87 さんへ
function StrToColorDef(str:string, DefColor:TColor):TColor
begin
try
Result := StringToColor(Str);
except
on EConvertError do Result := DefColor;
end
end;
と、つくってみますた。
Strに出鱈目な文字列を入れたけど、DefColorは返ってきません。
どこがわるいんでしょう?
どうでもいいけど宣言 function StrToColorDef(str:string; DefColor:TColor):TColor; begin #以下略 じゃない?
function StrToColorDef(str:string; ← あ、開発環境のエディタでは ; でやってます。
function tform1.strtocolordef(str:string; def:tcolor):tcolor; begin try result:=stringtocolor(str); except result:=clred; end; end; これでできたよ
>>90 デバッガオプションで無視する例外の種類にEConvertError を追加。
実行時にはちゃんと例外が処理されてDefColor が返ってくると思う。
except result:=def; でした
>>91-93 どうもあんがと!
>デバッガオプションで無視する例外の種類にEConvertError を追加。
ふーん、こんなのがあるんだ!
95 :
デフォルトの名無しさん :2006/10/02(月) 23:03:37
以前にも質問して少し前進したのですが、質問です。 MetafileにDrawし、それをA4縦サイズの別のMetafileにTopだけ変えながら Drawしています。つまりA4サイズに同じ画像が縦に並ぶ感じです。 このとき、画面(ディスプレー)のサイズを超えた分の画像が正しく表示 されない、という不具合が起こっています。96dpiでA4が少しはみでる縦1024 ピクセルの解像度にすると(下に少し余白があるので)正常に表示されます。 この件で何かご存知の方がいましたらよろしくお願いいたします。
コンパイル時、バイナリに自動的にビルドした日時とかを埋め込むってできませんか? できれば標準の環境だと助かります。 Cとかだと__DATE___とかで出来るらしいのですが。。。
98 :
デフォルトの名無しさん :2006/10/03(火) 00:33:24
こんばんは。教えてください。 プログラマの人からソースだけもらったのですが、実行すると 「fileaccess.dcuが見つかりません」と7行目を指すエラーが出ます。 7行目を見ると、usesの並びにfileaccessという項目があります。 エラーになったのはソースをくれた人と私のデルファイのバージョンが違うからなのでしょうか? 私はデルファイ6ですが、ソースをくれた人は仕事で使っているので6ではなさそうです。 よろしくお願いします。
fileaccessは標準ファイルじゃないと思う。 バージョン違いの問題とは違うと思われ。
そのソースで必要なfileaccess.dcuがないんだから ソースくれた人に言って貰え
101 :
98 :2006/10/03(火) 00:54:03
バージョン違いは問題じゃなかったんですね。 今度ソースくれた人に再度ファイル一式もらうようにします。 回答ありがとうございました(・∀・)
>>97 タイムスタンプが自動的に入るらしいぞ。
だからビルド時間が違えばEXEは同じでは無い。
103 :
デフォルトの名無しさん :2006/10/03(火) 10:01:50
WinExec等で外部プログラムを起動させています。 そこで、同一の外部プログラムが既に起動されていたら、 起動を停止、又はそのプログラムをアクティブにしたいのですが どのような方法があるのでしょうか?
俺はプロセスの一覧を取得して同名のexeが動いてたら起動させないようにしてる
外部プログラムが自前のアプリならMutex使う そうでないならFindwindowでハンドルを取得したのち CreateProccessもしくはSetForegroundWindow 起動にWinExec使うのはヤメレ 面倒でもCreateProccess使うことをお勧めする
>>104-105 ありがとうございます。
CreateProccessですね。
承知しました。
重ね重ね申し訳ないのですが
CreateProccessのパラメータ、
PCTSTR pszCurDir,// 起動時カレントディレクトリ
とは、ショートカットをプロパティで開いたときに出る
”作業フォルダ”という項目と同じと考えてもよろしいのでしょうか?
そう 普通はnilを指定して実行ファイルがある場所とカレントディレクトリにするけど ワーク用としてファイルを作る必要がある場合など 実行ファイルを同じ場所にゴミを残したくない場合はそこに任意のパスを指定する
108 :
103 :2006/10/03(火) 10:29:05
>>107 やはりそうでしたか。
おかげさまで確信がもてました。
ありがとうございます。
同一の外部アプリが存在するかどうかは
1.プロセスを列挙させる。
2.同名のプロセスがあれば、同一アプリが存在するとみなす。
列挙にはCreateToolhelp32Snapshot等を使う。
になるのかな?
FindWindowだとクラスが必要みたいだけど、
このクラスはどうやって知るのでしょうか?
ウィンドウのタイトルが予め分かるのなら FindWindowの第2引数にタイトル名を取得すればハンドルが得られる hndl := FindWindow(nil, PChar(タイトル文字列)); タイトル文字列が不定の場合はちょっと厄介 CreateProcessで起動した外部アプリのプロセスIDとEnumWindowsで ウィンドウを列挙して自前のコールバック関数内で判定させる
>>109 返信ありがとうざいます。
EnumWindowsという便利なAPIがあったのですね。
やり方をご教示していただいたので、よくわかりました。
早速実装にとりかかろうと思います。
貴重なお時間の中、ありがとうございました。
ハンカチ王子のようにさわやかな奴だな
おにーさんはいつでもキミみたいな可愛い男の子の質問待ってるよ
ごめんなさい54歳ですた
それはそれでまた別の味がある 還暦間近のおっさんってのもたまにはいいもんだ
ListviewのvsReportでカラムの幅を変えられなくするにはどうすればいいのか教えて下さい
カラムのMaxWidth MinWidthを同じにする。
Splitterの使い方がわからず困っています。 上下に配置した2つのコンポーネントの周りを囲むようにSplitterが表示されているのですが 2つのコンポーネントの間をドラッグして動かしてもサイズが変わりません。 どうすればいいのでしょうか
System.pasを使わないでコンパイルすることは不可能ですか
不可能。
>>118 例えば TMemo を 2つと TSplitter を 1つ配置して、
Memo1.Align を alLeft
Memo2.Align を alClient
Splitter.Align を alLeft
PageControlでコードの中からページを新規作成するにはどうすればいいのでしょうか?
実行時に新規ページを追加するには, 新規ページのオブジェクトを作成し, その PageControl プロパティを設定します。 NewTabSheet = TTabSheet.Create(PageControl1); NewTabSheet.PageControl := PageControl1; コードでアクティブページにアクセスするには,ActivePage プロパティを使います。 プログラミングによってアクティブページを変更するには, ActivePage プロパティか ActivePageIndex プロパティを設定します。 へるぷよめ
125 :
123 :2006/10/03(火) 23:48:41
ヘルプ見てみたのですが理解できなかったです。 NewTabSheetの宣言の仕方と以下の2行の意味もよくわかりません。 NewTabSheet = TTabSheet.Create(PageControl1); NewTabSheet.PageControl := PageControl1; 簡単なサンプルを書いて頂ければ助かります。
procedure TForm1.ButtonClick(Sender: TObject); var NewTabSheet: TTabSheet; begin NewTabSheet := TTabSheet.Create(PageControl); NewTabSheet.PageControl := PageControl; end;
procedure TForm1.Button1Click(Sender: TObject); var NewTabSheet: TTabSheet; begin NewTabSheet := TTabSheet.Create(PageControl1); NewTabSheet.PageControl := PageControl1; end;
128 :
127 :2006/10/04(水) 00:05:23
129 :
123 :2006/10/04(水) 00:19:15
NewTabSheet.PageControl := PageControl1; は親を教えてあげるみたいな感じなのですね。 あとはNewTabSheetからプロパティが弄れるので助かりました。 有難う御座いました。お手数をおかけしました。
>>72 function Hoge(var Ret: Boolean): Boolean;
で、
A := Hoge(A); なんて出来るのか? と聞いたいるのかな…
>>130 なんか違う気がする
変数引数を知らなくて、グローバル変数を引数に渡しても返り値がセットされてなくて
スコープがどうとかって悩んでるんではないだろうか
よくわからんけど
最近、質問者と回答者とバランスがよくなったな なんでだろ
気のせい
>>131 TryStrToIntのような関数を作りたいと言ってるんじゃなかろうか?
>>72 関数宣言で値を返したいパラメーターの前にoutを付ければOK。
最近のDelphiは、演算子のオーバーライドができるそうですが、 これを使えば、今まで出来なかった、レコード型の = による比較も可能ですか
YES
mrOKなんかの値にどんな数値が設定されているのかを知りたいときはどこを見ればいいんですか?
>>138 ありがd
ソースとやらの場所を探したんだけどわからなくて…
mrOKをAlt押しながらマウスでクリック
アクションマネージャーにカテゴリを追加するのはどうやるの?
TActionManagerを配置して右クリック→カスタマイズ
新規アクションはあるけど新規カテゴリがみあたらないんだけど・・・
>>143 アクションのプロパティのカテゴリ欄に新しい名前を入れると勝手に増える。
146 :
デフォルトの名無しさん :2006/10/05(木) 11:45:14
指定したファイルのアイコンをTImageに描画するにはどのようにしたらよいのでしょうか?
uses ShellAPI; var Icon: TIcon; SHFileInfo: TSHFileInfo; begin Icon := TIcon.Create; try SHGetFileInfo(PChar(edit1.Text), 0, SHFileInfo, Sizeof(SHFileInfo), SHGFI_ICON); Icon.Handle := SHFileInfo.hIcon; Image1.Picture.Icon := Icon; finally Icon.Free; end; end;
148 :
146 :2006/10/05(木) 12:11:29
早っ! もう確認したのかよw
別のアプリケーションにエンターキーを送りたいのですが、アプリケーション側でなにか 対策をしているらしく、keybd_event ではエンターキーだけが認識されません。 (そのアプリ上でエンターキーを直接押せば認識される) こういった場合、どのようにすればいいのでしょうか?
フォームが受け取ってんのなら知らないけど フォーカスが当たってるコントロールに送ればいいんじゃないの?
keybd_event でフォーカスが当たってるコントロール以外送れないわけだが
>>150 絶対勘違いしてる
エクスプローラの再起動でタスクトレイからアイコンが消え、かつ非表示中のウィンドウを表示させるような方法はあるでしょうか?
エクスプローラが不正終了し再起動した際、再起動以前にタスクトレイに登録されていたアイコンが消えてしまい ウィンドウが非表示状態の常駐アプリケーションを操作できなくなってしまいます。 この状態からウィンドウを表示する方法は存在しますでしょうか?
すれ違い
157 :
154 :2006/10/07(土) 22:53:45
>>155 どうもです、まさしくその通りです。
>>156 スレ違いですかね、自分はDelphi使ってますし、いたってプログラム的な事だとは思うんですが・・・。
何かメッセージを対象プログラムに送ると出来るのかなー?とか思って書き込みました。
>いたってプログラム的 日本語でおk
160 :
154 :2006/10/08(日) 01:10:58
>>159 まあ、そういうソフトを作りたいといえばその通りなんですが、キーポイントは非表示ウィンドウの表示な訳で。
教えて頂いた所のようなソフトは常駐が基本ですよね?
トレイアイコンが消えてしまってから起動し、ウィンドウを表示させるという事がしたいのです。
どのウィンドウなのかどうやって知らせるつもり?
162 :
154 :2006/10/08(日) 01:27:04
>>161 あらかじめ対象アプリのクラス名とキャプションを調べておき、FindWindowでハンドルをゲットします。
非常に汎用性の低いアプリになる予定です。
んで、ちょっと調べてたらどうやらShowWindowってAPIで表示には成功しました。
が、対象アプリは閉じるボタンでHideされるからかShowWindow(Handle,SW_SHOW)とかやると
閉じるボタンでHideされなくなってしまいます。もうちょっと調べてみます。
>>159 ノータスクトレイアイコン使ってるけど、これで、復帰したためしがねえw
ちゃんと、アイコン復帰できるソフトキボン
データファイルを別ファイルではなく、exeファイルの中に埋め込む方法はありますか?
165 :
164 :2006/10/08(日) 10:51:48
すいません。ageます。
リソースにするか、 あとは、exeの後ろに無理やりくっつける
167 :
164 :2006/10/08(日) 11:08:29
ありがとうございます。 リソース。でググってみます。
ちなみに、リソースコンパイラはDelphiに付属しているから、(brcc) 書き方だけわかればいけるよ
_____ ∧,,∧___ / /ミ,,゚Д゚ミ/\< おしえて /| ̄∪∪ ̄|\/ \_____ |____|/ 自アプリAAA.exeを BBB.exeにコピーして(これは出来る) そのときに、Exeのアイコンを変更したいんだが 出来たりしますか? ....もちろん、やり方を教えて。知ってたら。
プロジェクトオプションのアプリケーションタブのアイコンとかではなくて?
_____ ∧,,∧___ / /ミ,,゚Д゚ミ/\< じゃなくて /| ̄∪∪ ̄|\/ \_____ |____|/ すまん、説明が足りなかった。 AAA.exeの1機能として、別Exeを生成する。 という物を実装したいのです。 もちろん、Control.exeの機能として AAA.exe→BBB.exe、アイコン変更 ってのでもいい。 この場合、3つのExeは、自作のものと家庭しておきます。 (他作ができれば尚いいけどさ)
いまいち意味が分からんのだが、ようするにAAA.exeがBBB.exe なりなんなりの PEバイナリを吐くってことなのか? そういうことならBBB.exeのバイナリにリソース加えるとかやったらいけると思うけども、 詳しくは調べないと俺もわからねぇ
UpdateResource
_____ ∧,,∧___ / /ミ゚Д゚,,ミ/\< 何がわからん? /| ̄∪∪ ̄|\/ \_____ |____|/ >PEバイナリを吐くってことなのか? PEバイナリって言葉がわからんから、 何を疑問に思っているのかが、さっぱり。 例えば自分が Editor.exeってソフトを作っていたとして 場合によっては EditorHTML.exeとか EditorPerl.exeとか EditorDelphi.exeとかを Editor.exeからコピーして作りたくて (それぞれのexeの機能は全く同じでいい。Editor.HTML.iniで動作変更させるから) その際に、exeのアイコンをそれぞれで変更したい。 って質問です リソースハッカーとか?そういうソフトの機能の 実現方法が知りたい、って事になるのだろうね。
RichEditのスクロールバーをコードの中で動かすにはどうすればいいのでしょうか?
SetScrollPos
ini と一緒にアイコンもコピーしておく。自分と同じディレクトリからアイコンを 探してあったらセットする、ってコード書けばいい
って、実行時じゃだめか・・・
PageControlで三つのタブを作り、そのなかにそれぞれTEditを配置してます。 クリアボタンを押した際に、アクティブなタブのエディタの中だけをクリアしたいのですが、どうすればいいのでしょうか??
pagecontrolのactiveindexで拾えるようにeditの名前を付けてfindcomponent
四つくらいだなら、アプリつくるよりIDEに読み込んでアイコン変更するほうが 速い。5,6分でできる
procedure ChangeAppIcon(AppPath: String; IconFile: String; ResName: PChar; LangID: SmallInt); (* 引数 * AppPath: アイコンを書き換えたい実行ファイルへのパス * IconFile: 書き換えに使用するアイコンファイルへのパス * ResName: リソース名, PCharにキャストすることで整数値もOK * LangID: 言語識別子。日本は1041 *) var hUpdate: THandle; IconBuf: array of byte; fs: TFileStream; dwFileSize: Cardinal; begin hUpdate := BeginUpdateResource(PChar(AppPath), false); if hUpdate = 0 then Exit; if not FileExists(IconFile) then Exit; fs := TFileStream.Create(IconFile, fmOpenRead); dwFileSize := fs.Size; SetLength(IconBuf, dwFileSize; fs.Read(IconBuf[0], dwFileSize); fs.Free; UpdareResource(hUpdate, RT_GROUP_ICON, ResName, LangID, @IconBuf[0], dwFileSize); EndUpdateResource(hUpdate, false); end;
テスト中に書き込んでしまったorz たぶんこれでいけると思う。
>>181 できました、ありがとうございます! FindComponentの使い方がやっとわかった(;´Д`)
>>183 未テストでミスって書き込んだから中途半端にアイコンを書き換えるコードだった。
すまん。修正版。実際のアイコンデータを0からの連番で書き込むから、
自作アプリ以外では使わないほうがいいと思う。
procedurenbsp;ChangeAppIcon(AppPath:nbsp;String;nbsp;IconFile:nbsp;String;nbsp;ResName:nbsp;PChar;nbsp;LangID:nbsp;word);
(*nbsp;引数
nbsp;*nbsp;nbsp;AppPath:nbsp;アイコンを書き換えたい実行ファイルへのパス
nbsp;*nbsp;nbsp;IconFile:nbsp;書き換えに使用するアイコンファイルへのパス
nbsp;*nbsp;nbsp;ResName:nbsp;リソース名,nbsp;PCharにキャストすることで整数値もOK。DelphiアプリならMAINICON
nbsp;*nbsp;nbsp;LangID:nbsp;言語識別子。日本は1041
nbsp;*)
type
nbsp;nbsp;tagICONDIRnbsp;=nbsp;record
nbsp;nbsp;nbsp;nbsp;wReserve:nbsp;word;
nbsp;nbsp;nbsp;nbsp;wRcType:nbsp;word;
nbsp;nbsp;nbsp;nbsp;wRcCount:nbsp;word;
nbsp;nbsp;end;
nbsp;nbsp;PICONDIRnbsp;=nbsp;^tagICONDIR;
nbsp;nbsp;tagICONDIRENTRYnbsp;=nbsp;record
nbsp;nbsp;nbsp;nbsp;bWidth:nbsp;Byte;
nbsp;nbsp;nbsp;nbsp;bHeight:nbsp;Byte;
nbsp;nbsp;nbsp;nbsp;bColorCount:nbsp;Byte;
nbsp;nbsp;nbsp;nbsp;bReserve:nbsp;byte;
nbsp;nbsp;nbsp;nbsp;wPlanes:nbsp;word;
nbsp;nbsp;nbsp;nbsp;wBitCount:nbsp;word;
nbsp;nbsp;nbsp;nbsp;dwBytesInRes:nbsp;cardinal;
nbsp;nbsp;nbsp;nbsp;dwImageOffset:nbsp;Cardinal;
_____________
∧,,∧ /
>>178-179 さん
ミ,,゚Д゚彡 < そそそ。設定ごとのExeアイコンが作りたいので....
U つ \
>>177 さん
@ミ ミ すいません、私には
∪''∪ ものすごくわからない事だと思いました。
>>182 さん、だから「四つくらいだなら」ではなく例として出しただけで
実際のねらい所は
設定変更毎にユーザーに任意個数のexeを生成してもらったりだなあ、、、、ぶつぶつ
まあ、一太郎メイクみたいなもんですよ。
一太郎もってるけど、メイク機能は使った事ないけどね。
やっぱり難しいのかなあ、出来ないのかなぁ、、、
>>183 、
>>186-187 さん
_____________
∩∧,,∧∩ /
゙ミ;゚Д゚ミノ < まぢか!
ミ ミ \____________
ミ ,, ミ
ノ∪ ∪ すごいニャ
∧,,∧ ハーハー ,,ミ;゚Д゚ミ=3 .とミ,,,,,U,,U ちょっと昂奮してきた。 そう、そして興奮気味に質問。 > 引数 > ResName: リソース名, PCharにキャストすることで整数値もOK 何を指定すればよろしいのでしょう....? っっと、、ともかくも、ありがとうございます。 まさかこんなのサラっと書ける人が おったとは。ドキワクです。
191 :
デフォルトの名無しさん :2006/10/09(月) 01:47:33
視覚効果の「デスクトップのアイコン名に影をつける」みたいなのを ListViewでもやりたいのですが、できますでしょうか。 なにもかも全て自前で描画するしかないのでしょうか。(泣) DelphiQ&Aに同様の質問をしたけどレスが付かないまま3ヶ月過ぎました。
で、あちらには、こっちに書き込んだ旨は書かずと。 マルチポスト乙
>>189 DelアプリならMAINICONじゃねぇの
TTableにフィルタをかけた場合、フィルタに該当する個数ってのはデータソースのDataSet.RecordCountで知ることができます。 ここで、フィルタに該当する内部での順番号を取得する方法ってないんでしょうか? DataSet.RecNoでは、総レコードでの位置が出てしまいます。
Action Toolbarの使い方がサッパリ分からん!!
ソース読め。 (ツンデルだから)
ロダがメンテ中のようだ。 procedure ChangeAppIcon(AppPath: String; IconFile: String; ResName: PChar; LangID: word); (* 引数 * AppPath: アイコンを書き換えたい実行ファイルへのパス * IconFile: 書き換えに使用するアイコンファイルへのパス * ResName: リソース名, PCharにキャストすることで整数値もOK * LangID: 言語識別子。日本は1041 *) type tagICONDIR = record wReserve: word; wRcType: word; wRcCount: word; end; PICONDIR = ^tagICONDIR; tagICONDIRENTRY = record bWidth: Byte; bHeight: Byte; bColorCount: Byte; bReserve: byte; wPlanes: word; wBitCount: word; dwBytesInRes: cardinal; dwImageOffset: Cardinal; end; PICONDIRENTRY = ^tagICONDIRENTRY; var
hUpdate: THandle; IconBuf: array of byte; fs: TFileStream; dwFileSize: Cardinal; ret: Boolean; lpicdr: PICONDIR; lpicde: PICONDIRENTRY; i: Integer; begin hUpdate := BeginUpdateResource(PChar(AppPath), false); if hUpdate = 0 then Exit; if not FileExists(IconFile) then Exit; fs := TFileStream.Create(IconFile, fmOpenRead); dwFileSize := fs.Size; SetLength(IconBuf, dwFileSize); fs.Read(IconBuf[0], dwFileSize); fs.Free; lpicdr := @IconBuf[0]; for i := 0 to lpicdr.wRcCount - 1 do begin lpicde := @IconBuf[i*16 + 6]; UpdateResource(hUpdate, RT_ICON, PChar(i), LangID, @IconBuf[lpicde.dwImageOffset], lpicde.dwBytesInRes); lpicde.dwImageOffset := i; end; ret := UpdateResource(hUpdate, RT_GROUP_ICON, ResName, LangID,
@IconBuf[0], lpicdr.wRcCount*16+6);
if ret = false then
ShowMessage('failed UpdateResource');
ret := EndUpdateResource(hUpdate, false);
if ret = false then
ShowMessage('failed EndUpdateResource');
end;
ResNameは
>>194 も言うようにDelphiアプリならMAINICONを渡せばおk
202 :
デフォルトの名無しさん :2006/10/09(月) 12:07:12
MessageDlg で mbYes,mbYesToAll,mbNo,mbCancel を指定しているのですが、 実行すると、「はい」「いいえ」「キャンセル」「すべてはい」と なります。これを指定した順番通りに表示させることはできますでしょうか。
>>199 うぉうサンスク。
これ色々応用利きそうだね。
>>202 ないんじゃないかなー。
自前でダイアログ作る?
204 :
183 :2006/10/09(月) 13:29:50
もうちょっとまじめに書き換えるなら LoadLibraryEx で対象ファイルをロードして、RT_GROUP_ICON を読み出して 得られたデータを tagICONDIRと tagICONDIRENTRY にマップして tagICONDIRENTRY.dwImageOffset にリソース上のアイコン単体の番号入ってるから これをもとに一回削除してから新しくついかするほうがいいかも。 このコードだと、9種類の色深度と解像度をもつアイコンで書き換えた後 1種類のみ色深度と解像度をもつアイコンで再度書き換えすると前回のアイコンが8個のこってしまうし。
Form2がShowModal中で、Form1が操作不可能のとき、 Form1がClickされたらForm2を閉じるなどの処理を行うことは出来ますか
仮定により「Form1が操作不可能」なんだから出来ない。出来たら、質問がおかしい。
操縦不能な飛行機を操縦するにはどうすればよいですか?
操縦可能にする
>205 Windowsの仕様によりモーダルフォームが閉じられない限りユーザーは親フォームを操作できない。 どうしてもやりたければ、ダイアログ開いている間はクリックしたら閉じるようにするとか、 自前でコード組むしかない。
メインフォームからモーダルなフォーム(Hoge)を開いて、Hoge上のボタンを押すと更にもう1つ別のモーダルなフォームHogeHogeを表示させる事は許されますか?
212 :
183 :2006/10/09(月) 21:01:36
許されます
214 :
211 :2006/10/09(月) 21:19:01
サンクス
これからコード書いてきます
>>212 不可能な事を実現しようとして何時間もドツボにはまるのが怖かったのです
ドツボにはまって、必死こいて何時間も、 時には何日もググッたり資料探したりするのも良いことだぞ 調べる過程で沢山の知識を得られる
216 :
デフォルトの名無しさん :2006/10/09(月) 21:33:35
>>202 CreateMessageDlg(Message = Msg,Dlg = Dialog かも)
を使えば、ボタンのキャプションは自由に変えられる。
217 :
デフォルトの名無しさん :2006/10/09(月) 21:39:05
>>205 自前でややこしいことやるしかないね。
Modal をやめる。
子画面を表示するときに、親フォームのコントロールをすべてDisableにして
親クリックされたらもどす。
こんなんしかないんちゃう?
218 :
191 :2006/10/09(月) 22:04:53
>>192 さすがに3ヶ月経ってレスる人はいないだろ。マルチ言われるとは思わなかったよ。
だが気に入らなかったのならスマン。
まぁ、自分で悩んでみることにするヨ。
219 :
案山子 :2006/10/09(月) 23:15:51
すごく初心者的質問なんですが、 TMemoに書かれた文字をSaveToFileで保存できますよね。 でもこれだと毎回上書きされてしまいますよね。 前回保存してあったデータに追加するかたちで保存するにはどうしたらいいんですか? Addなんかを使えばいいの?
ファイル開いてケツに追加する。
221 :
デフォルトの名無しさん :2006/10/10(火) 00:09:18
教えてください。ソースに type TcellData = Array of Array of string とあるのですが、どういう状態なのか分かりません。 TcellData = Array of stringなら文字型の配列と分かるのですが、 なぜ2つArrayが繰り返されているのでしょうか? よろしくお願いします。
>>219 TextFile型てのがあるからそれ使え
ググリャ多分わかる
ありがとう。
>>183 さん。
今日は肉体的に立ちくらみするくらいの運動をしてきたので
ちょと無理なんですが
近いうちに動作確認させてください。
感謝っす
>>218 >>191 気にスンナ。
漏れはマルチだとは思わん。
むしろ、マルチポストする事に狭量にならんでも。
心を広くもった方がいい。
>>225 218の文章をあちらに書き込んでみたら?
出入り禁止か、誰も相手にしてくれなくなると思うが。
227 :
デフォルトの名無しさん :2006/10/10(火) 00:24:23
多次元配列ですか。どうもありがとうございます。 次々と分からない事が出てくるー(´・ω・)勉強しなきゃ…。
>>219 >>220 http://delfusa.main.jp/delfusalibrary/20060527212010/SystemUnit/SystemUnit.pas ここの、outputlogtext
あたりで実装したのだが、
ファイル追加は面倒だったので
全部テキスト読み込んで追加して書き込む
という、やや遅そうな実装を漏れはしている。
賢い人は、きっと、普通にファイル追加するコードを書いて実装するでしょう。
ファイル追記の実装方法は知っているんだが、
自分のライブラリに久美子む所まではやっていないし、やや自分で動作確認はしていない。
procedure FileAddText(const S, FileName: String);
var
F : TextFile;
begin
try
AssignFile(F, FileName); // 既存のファイル
if not FileExists(FileName) then
Rewrite(F) {ファイル新規作成}
else
Append(F); {ファイル追加モード}
Writeln(F, S);
finally
CloseFile(F);
end;
end;
try,finallyの付け方に自信ない。 こっちが正しいのかも。 AssignFile(F, FileName); // 既存のファイル if not FileExists(FileName) then Rewrite(F) {ファイル新規作成} else Append(F); {ファイル追加モード} try Writeln(F, S); finally CloseFile(F); end;
>>226 じゃあ、まず一人目として、君が漏れのことを相手にしてくれなくてもいいよ。
そうすることで、誰も漏れのことを相手にしてくれなくなる人が増えるんじゃない?
どーせ、某界隈は閑散してるんだし、
新規質問同時カキコでもなく
3ヶ月も回答ない質問、再質問くらいいいだろ。
>>230 広げるつもりは無かったんだが。
よく分からん。
「3ヶ月経てばOK」ってルールも分からん。
「検索してたまたまあちらの書き込み見て書き込んんじゃう人」は絶対
現れないってこと?
まぁ、あなたはマルチポスト肯定派だってことで。
すまん、ちょっとあおってしまいました。 いや、まあ、マルチポスト絶対反対ではない派。ってことで。 だって、漏れ、自分でも回答が得られない場所に投げた質問、 やっぱり、別の所で質問したくなるもの。人情だものフサヲ 質問する場所を選んで、やっぱり回答がなくて ああ、この場所で質問するんじゃなかった。とかしょんぼりして 永遠にその質問を他の場所で出来ないとしたらつまんねーし。 >「3ヶ月経てばOK」ってルールも分からん。 フィーリング(死語?)で... >「検索してたまたまあちらの書き込み見て書き込んんじゃう人」は絶対 >現れないってこと? まず、そんな奴いない。 過去の質問をたどるほど、Delphi好きで スキルの高い人間で、数ヶ月も前の発言に対して元質問者が見ているわけもないのに コミュニケーションを発しようという人を、日常的に見たことはない。
ビミョーだわな。 マルチか、どこで質問してもわからんかったのか。
1週間待っても回答が付かなかった余所に投げてもいーと思うけど. それで付かなかったらまず付かないから仕方ねーやん. それをマルチっていうようなやつは、そもそも回答返してやれよ、とっとと. 自分が回答を返せない無能なくせにけちだけはつけるんだな.
1週間は長いな。 3日くらいかな。
マルチって言うやつは、本当にアホが多い。 揚げ足取りたいだけ。 問題は、そこじゃないだろうと。 回答を返せないなら、「私は、無能なので、わかりません」と一言つけくわえるべきだと。 質問と関係ないレスつけんなよ、と思うわけですよ。
237 :
デフォルトの名無しさん :2006/10/10(火) 08:18:19
マルチする方もサポートに聞いても解らなかったんでってつけるべき。
三ヶ月待ったら絶対にマルチじゃないよ。 でも、一生懸命調べて回答したのに反応ないなと思ったら、 他スレで回答をもらった後でしたって時は、がっかりしちゃうよな。 まぁ、素早く回答できない自分が無能なんだろうけど。
何日か待って回答がなかったら素直に質問を取り下げる旨を書いておけばいいだけなんじゃないか 例えば 「質問をしたものですが、どなたもご存じない様子でしたので申し訳有りませんが余所に質問させていただきます また別の質問に来るかもしれませんが、その時はよろしくお願いします」 とかなんとか。これがあおりに見える人もいるかもしれんが一番適切だと思う
マルチだろうがシングルだろうが何でもいいよ。バカばっか。
MultiSelect := true;
Delphiスレって超初心者用のココしかねーのか!
244 :
デフォルトの名無しさん :2006/10/10(火) 11:03:56
サービスで他PCのデータベースにアクセスできません 同じサービスで自身のデータベースにはアクセスできます。 データベースはMSDEです データベースにアクセスするツールはBDEです 何が問題で接続できないのかまったくわかりません 解る方教えてください。
まさか、vi$taじゃないだろうね?
246 :
デフォルトの名無しさん :2006/10/10(火) 11:20:28
VISTAじゃありません
MSDEって、ローカル専用じゃね。
接続ユーザー数制限があったような。
あ、ユーザー数の制限だったか。
251 :
デフォルトの名無しさん :2006/10/10(火) 11:51:05
ご親切にありがとうございました SQL Server板で聞いてみます
252 :
デフォルトの名無しさん :2006/10/10(火) 22:17:49
Turbo Delphi をインストールできたのですが、起動時に表示されるホームページを 操作することが出来ません。IE6はちゃんと入ってますし原因が思いつかないのですが どうすればいいでしょうか。
TPageControlにPopupMenuを付けているのですが どのタブの上でPopupMenuが出たか知ることができず困っています。 どうすればわかるのでしょうか?
TPopupMenu.PopupComponent TPageControl.ActivePage
アクティブになっていないタブ上でPopupMenu出した時はどうすればわかるのでしょう?
どうやってアクティブになっていないタブシート上でPopupMenuを出すの? それができるんなら、どのタブの上でPopupMenuが出たかわかってるはずでしょ?
タブシートじゃなくてタブの上でメニューだしたいのでは? 自前でPopupさせればすぐできそうなもんだが。
258 :
256 :2006/10/11(水) 00:21:10
なるほど、PageControlにPopupMenuを付けてるわけね よく読んで無かった すまん
で、どうやったらできるんですか?
260 :
256 :2006/10/11(水) 00:38:51
知らん マウスの座標からマウスがどのタブ上にあるか自分で判断して、自分でPopupさせるというクソ面倒な手段しか思い浮かばん もっと詳しい人頼む
OnContextPopupとGetHitTestInfoAtを使う。 自分でPopupさせるのと大差ないけど。
RichEdit 内にある「Hoge Fuga Hogehoge」とあるテキストから、Fuga だけ強調表示にしたいと考えています。 前後の Hoge 部分は毎回共通ではないので、BregExp を使った正規表現で Fuga を取り出しているのですが、 Fuga が何文字目から始まるのかを調べる方法が分かりません... ご教授いただけないでしょうか。
copy(pos( 'Fuga' , richedit.lines[ ]) , length( 'Fuga' ));
部分抽出用のものがあったんですね、勉強不足でした。 Fuga も中身が変わったりするので、マッチした結果をいったん保存して、 Pos と Length で開始場所から、文字数を調べることが出来ました。ありがとうございます。
横やりですまんが、仮にFugaが何箇所かあっても、一箇所だけでいいのか?
リッチテキストに×を追加したいんですが『Richeditでの行の挿入エラー』になってしまいます。 これを回避する方法はありますでしょうか?
×の後に全角スペースを付加する
どうやら解決方法はないみたいだね。 使いそうなプロパティだと思うが、用意しなかったのかねぇ。
BorlandのDelphiのQ&Aに TDBGrid コンポーネントの現在選択中のレコードの位置を知るには,どうすればよいでしょうか? てのがあるけどそれと違うのか?
>>269 普通にダミーフィールドつけて、フィルタ前とフィルタ後で連番いれたら?
>>269 個々の仕様によりどうにでもなるよ。
272の方法とか作業ファイル作るとかメモリ上で操作するとか100までは数えるとか。
工夫することこそがプログラミングの醍醐味ではないか?
つまり最大2G(だっけ?)にユニークな番号振ってたらとてもまともなもんにはならないから こういう仕様になっていると思われる。
275 :
269 :2006/10/11(水) 21:49:36
たぶん、
>>274 さんの言うとおりなんでしょうね。
スピードとか優先させたんでしょう。
>>271 さんの教えてくれたものは「Gridに表示されている(見えている)」行のうちの何行目か、ってことだと思います。
実は試したんです。
一旦、全部のレコードに0でも代入
↓
Filter後に、FindNextなどで1から順に連番をつける
って流れになるんでしょうか。
276 :
269 :2006/10/11(水) 21:51:33
ダミーフィールドにですね、 重いですね。
277 :
デフォルトの名無しさん :2006/10/11(水) 22:51:50
DBGridで、レコード(行)レベルで入力可、不可を制御するにはどうしたらいいですか。 DBGridのイベントで制御できればすごく幸せです。
>>265 やっぱり駄目でした。
出来たと思っていたのはRichEdit の一行目のみに対してで、色々と試してみたのですが、
RichEdit 上の指定した行で、指定した文字列のみ書式を変更する方法が分かりませんでした。
行指定ではできないもんなのでしょうか。
>>269 ぶっちゃけ、何件DBGridに表示させてんの?
>>277 あふたーすくろーるとかでかんし。
あとはてきとおにどおぞ。
280 :
269 :2006/10/11(水) 23:35:13
>>279 4000件くらいです。
GridのRowの数とインジケータの位置がわかってるんだから取得できそうな気もするんですがね。
ちょっとあきらめかかってます。
>>280 なんつーか、なんでSQL投げて処理しないの?
TTableにこだわりすぎとおもうが。
普通にTClientDataSet経由でいろいろやったほうが、
あとあとよくねぇか?
Del厨、できないこと大杉wwww
>>282 ワロタ
ところで、どうしてVIPでやらずに
わざわざム板でやるのか
簡潔でいいので説明していただけませんか?
BVってデータベース使えるの?
>>275 ちげーよ。
TTable使うんなら、Indexの設定をして、
tbl.First;
while not tbl.Eof do
begin
あーたたたたたたた、ほあたぁ!!!!!
tbl.Next;
end;
ってやるほうがいい。
RichEditってハイパーリンク機能つけられんの?
変数の型を調べるにはどうすればいいのでしょうか??
自分で書いたソースを穴が空くほど見つめる
穴が開く
C#から戻ろうと思うんだけどDelphi6からIDEは成長した? フリー版とDelphi6を比べた方の感想希望
beginを作って改行したら勝手にendを入れてくれるとか 慣れないうちは、余計なことを勝手にしてくれる感がつきまとう もっともオプション次第だろうけどさ。
for って書いたら for i := 0 to List.Count - 1 do って勝手になって しかも var i: Integer が勝手に追加される
>>292-293 dクス
Class、Interfaseの新規生成とかは?
あとuses追加とか?
>>279 ありがとうございます。
試してみます。
298 :
デフォルトの名無しさん :2006/10/12(木) 08:10:44
visual C++ 5.0ではビルドできたソリューションやソースがVisual Studio 2005 Express ではビルドできないってことあるんでしょうか? visual C++ 5.0でかかれたオープンソースがマニュアルに従ってビルドしようと思ってもどうしてもできなくて困ってます. ヘッダファイルがないとかじゃなくて「';'が'&'の前にありません」とか,そういうソースの書き方に問題があるらしくエラーが出てしまうんです.
なんでここ?
300 :
デフォルトの名無しさん :2006/10/12(木) 08:25:04
ああ.うっかりしてました. どうもありがとうございます.
>>295 それって、Delphi6からでもできるぞ
>>291 6から比べると細かい部分でかなり変わってる
>>301 D6Proならできるけど、D6Perはむりよ。確か。
まず、エディタがユニコードになったせいか糞重い
あ、uses追加は今でもできんけど、
PrivateにF〜って変数うったら、セッターとゲッターも作ってくれて、かつプロパティにしてくれる補完はないのか?
>>306 プロパティから書けば勝手に保管される。
308 :
295 :2006/10/12(木) 15:27:36
皆さんとんクス
>>301-302 新規作成はテンプレートが出来たか聞きたかった
空Unitから書き始めるんじゃなくて
>>305 ここは相変わらず手書きなんだ。
C#, D6Pro, DFree 趣味でやるならどれ使う?
c# d6 dfree
趣味とか自作開発ツールにドトネトは使わない。
311 :
295 :2006/10/12(木) 15:44:43
>>309 そうですな、おかしいですな。
VSExpress(C#), D6Pro, DFree でお願いします
DFreeって何さ
>>308 > ここは相変わらず手書きなんだ。
昔からユニットの追加があったと思うが
Alt + F11
314 :
295 :2006/10/12(木) 16:24:37
>>313 ずっとD6使ってたけどしらなんだ・・・orz
ありがと
315 :
デフォルトの名無しさん :2006/10/12(木) 16:28:03
タブブラウザでTabControl使ってるんだがタブ切り替え時のイベントってどういう事書けばいいんですか? ブラウザがパネル上にある時に、 Panel1.Controls[TabControl1.TabIndex].BringToFront; だとブラウザがずれるんだが(´・ω・`)
TabControl1.Parent := Panel1; 上の1文を頭にを記述してみるとどうだろう 質問が意味不明なのでこれぐらいしか言えん
TListViewに入っているデータすべてを一括削除するにはどうすればいいんでしょうか? Items.delete でループさせるしかないのでしょうか??
普通に考えたらclearじゃない
>>315 Visible 切り替えがいいんじゃね?
現在起動中のプロセスのファイルパスを取得するにはどうすればよいのでしょうか?
>>321 CreateToolhelp32Snapshot
どうやったらMainMenuをCoolbarに乗せられるのでしょうか?
>>322 出来れば、もう少し詳しく・・・。
ごめんなさい・・・。
>>323 CoolBar に ToolBar のせて
ToolBar のMenu プロパティに メインメニューを設定
>>325-326 ほんとうにありがとうございました。
ばっちりです。
あぁ、よかった・・・。
330 :
デフォルトの名無しさん :2006/10/14(土) 01:26:11
角度が変化するレールから落ちるボールの毎秒ごとの高さを測定してそこから角度を割り出そうと思っています。 このような微分などのライブラリか関数は何か無いでしょうか。 今後も数学系の処理を多くやりそうなので、もし便利なもの、あるいはサイトがありましたらご教示願いいます。
ゲーム作るときにそういう場面はたくさん出てくるけど、基本は自分で計算。 数学の勉強にもなるからいいよ。 まあ、Quadruple Dのs_mathpack.pasとか見ると楽しいかも知れない。
333げっと。 > 微分などのライブラリ 一つ前のデータから引き算して、それを時間差で割るだけでいいんでないの?
335 :
デフォルトの名無しさん :2006/10/15(日) 14:53:50
配列変数の数を動的に変える方法は無いでしょうか。 Array hoge[0..MaxDataNo] of integer; と出来ればソースをいじる数が少なくて済むので楽なのですが出来ないので。 また、最大値をMaxValueで抜いてるのですが、何番目のデータが最大だったのかが 簡単に分かる方法がありましたら教えてください。 今はこれが出来ないため、総当りをしています。
SetLength 非ソートのデータ群からは総当たりしかない。 最大値を求める関数も内部ではこれをやるしかない。
>>336 ありがとう。
それにしても1年ぶりに来たら閑古鳥が鳴いてるね。
質問しまくって活性化してもいいですか( ;´・ω・`)
338 :
デフォルトの名無しさん :2006/10/15(日) 16:05:46
PNG画像を重ね合わせて表示し、上の画像の一部を綺麗に透過させる方法はありますか? Delphi6にGLDPNGを入れ、TimageにLoadFromFileでPNG画像を読み込んでいます。 読み込むPNGの形式を変えることによって透過の具合が変化しまして、PNG8でインデックスカラー透明、マットも透明にすれば Delphi上での透過自体は綺麗にできるのですが、PNGそのものの画質が落ちてしまいまして・・・ PNG32など、PNGがどんな形式であっても綺麗に透過させる方法があれば、どなたか教えて下さらないでしょうか。
340 :
デフォルトの名無しさん :2006/10/15(日) 16:42:17
>>339 pngcomponents・・・そ、そんな便利なものがこの世にあったんですね・・・
凄く助かりました、ありがとうございました。
GLDPNGは、GPL禁止ライセンスからBSDライセンスに変更した上で開発中止したのはともかく、 zlibの脆弱性問題に全く対応していないので不安といえば不安。
>>341 .objを1.1.4のに変えれば大丈夫なんじゃない?
1.1.4って、安全だっけ? 1.1系と1.2系って全然違うとか言う話もあったっけ
WebBrowserでローカルのファイル(html)等を読み込んで表示するという事は出来ますでしょうか?
file:// じゃなくて?
つまりNavigate()に 'file://C:\hoge.htm' みたいな感じで投げれば良いという事ですね ありがとうございました
完全な蛇足だけど「file://」は、必要無いと思う。
QuickReportって、印刷するんじゃなくて指定したCanvasに出力することって出来ましたっけ?
Delphiのバージョンいくつになったら、 forでstepを指定できるようになりますか
ヘルプよくよめ
>>349 それは Delphiと言うよりPascalの話じゃね
RichEditの中に入っている、 2006/08/03 10:00 ... 2006/08/03 10:02 ... 2006/08/03 10:01 ... 2006/08/02 09:00 ... という具合のデータを日時順でソートしたいのですが、どうすればいいのでしょうか?
353 :
295 :2006/10/18(水) 01:31:32
>>352 lines:TStringList;
lines := TStringList.Create();
lines.AddStrings(RichEdit1.Lines);
Lines.Sort;
RichEdit1.Lines := lines;
適当だけど、これじゃ駄目なん?
名前消し忘れスマン
>>353 希望通りに動作しました、ありがとうございます!
訳あって、delphiで作ったexeのファイルサイズを20MBを超えるサイズにしたいです。 プログラム自体は 「hellow world」 を出力するだけのもので、 このexeはサイズが500KB程度しかないので 100MBに増量したいです。 ファイルサイズを簡単に増量出来る方法があればご教授を。m(_ _)m
>>356 リソースつかえ。
あーっというまに、どでかいファイルの出来上がり。
358 :
356 :2006/10/18(水) 19:44:25
↑20MBでも100MBでもどちらでも良いです。
359 :
356 :2006/10/18(水) 19:45:07
>>357 リソースですか、ありがとうございます。 早速調べてみます。m(_ _)m
360 :
356 :2006/10/18(水) 20:12:34
>>357 .rc ファイルを生成すればいいんですね、解決しました! 感謝!m(^^)m
delphiユーザってあやしい人が多いの?
なんの意図があってやるんだ?
何の意図もない。イカレてるだけ。きっと。それともなにかのテストかな あ〜あ はふ ためになる質問解答、あんま無いね〜
別アプリケーション内に四つあるComboBoxのなかに、それぞれ別のテキストを いれたいのですがどうすればいいのでしょうか??
TimerのTabプロパティを0〜240くらいまで振ってるんですが、 連番で振っていくときに楽な操作方法はありませんでしょうか?
>>365 dfmとpasファイルを直接編集、連番ふるようにマクロコピペ。
動的に生成しろよ
>>365 こういう事でなくて?
i,n:integer;
cmp: TComponent;
n := 0;
for i := 0 to Form1.ComponentCount -1 do
begin
cmp :=TComponent(Form1.Components[i]);
if (cmp.ClassType = TTimer) then
begin
cmp.Tag := n;
inc(n);
end;
end;
369 :
デフォルトの名無しさん :2006/10/19(木) 11:47:59
for i := 0 to 10 do begin if Pos('ここから',RichEdit1.Lines[i]) > 0 then i := i+2; end; のようなエディタを使った時に、2つ下にスキップしたいのですが、 i に +2 すると i は制御変数に代入できないエラーがでます。 スキップさせる、何か良い方法はありませんか?
>>369 こんなんで
冗長かな?
var
i: Integer;
begin
i := 0;
while (i < 10) do
begin
if Pos('ここから',RichEdit1.Lines[i]) > 0 then
begin
//ループ内でやりたい処理
i := i + 2;
continue;
end
else
begin
//ループ内でやりたい処理
Inc(i);
end;
end;
end;
>>371 できました! ありがとうございました。
何つくってるのかわからん。
374 :
デフォルトの名無しさん :2006/10/19(木) 17:46:24
Turbo Delphi で作成したWin32の プログラムってビスタで動作するのですかね?
動く
動くみたいですね。 今度買いに行きます。
377 :
デフォルトの名無しさん :2006/10/19(木) 19:41:25
TBitmapのビットレートを落とすコードを教えて下さい。 あと、ビットレートってenumになっていますか?
言っていることがちょっとヘンテコだぞそれ。 ビットデプスとかビットカウントのこといってんのか? 俺はツンデレだから教えてやるが、pixelformatをいじれ。
なんかこのごろ変なの多し
いまいち文字処理がよく分からないのですが、Memoの中に入っている文字列が 「空白行だったら行ごと削除する」や「特定の文字が含まれている行は削除する」にはどうすればいいのでしょうか?
procedure TForm1.Button1Click(Sender: TObject); var i:integer; memo:tstringlist; begin memo:=tstringlist.Create; memo.Assign(memo1.Lines); memo1.Clear; for i:=0 to memo.Count-1 do if (pos('hoge',memo[i])=0)and(memo[i]<>'') then memo1.lines.add(memo[i]); end;
あ memo.free; するの忘れてた
それだと hoge があったら追加だろ > 「空白行だったら行ごと削除する」や「特定の文字が含まれている行は削除する」 ぜんぜんちがうがな
いや、そうでもないか、失礼しました。それでいい。
×それだと hoge があったら追加だろ ○ hoge がなく、かつ、空白行でもないときは追加 だから正しいね。すまん。
procedure TForm1.Button1Click(Sender: TObject); var i:integer; sl:TStringlist; begin sl:=TStringlist.Create; try sl.Text:=memo.Text; for i:=sl.Count-1 downto 0 do begin if (ansipos('何か文字',sl.Strings[i])<>0)or(sl.Strings[i]='') then sl.Delete(i); end; memo.Text:=sl.Text; finally sl.Free; end; end; とか
>>381 >>386 さん
一度別の配列を作ってから、条件に合うだけのものを入れ直せばいいだけのものみたいですね。
とても勉強になりました、ありがとうございます!
PrinterSetupDialogで変更したプリンタ名を取得するんにはどうすればいいんですか? PrinterNameみたいなプロパティが無いっス。
389 :
デフォルトの名無しさん :2006/10/20(金) 08:43:50
memoの最後から2行分を削除したいのですが、どうすればいいですか?
>>389 Memo1.Lines.Delete(Memo1.Lines.Count-1);
Memo1.Lines.Delete(Memo1.Lines.Count-1);
>>389 tempList := TStringList.Create;
for i := 0 to Memo1.Lines.Count - 3 do begin
tempList.Add(Memo1.Lines[i]);
end;
Memo1.Lines.Clear;
for i := 0 to tempList.Count - 1 do begin
Memo1.Lines.Add(tempList[i]);
end;
tempList.Free;
>>389 こいつコピペだけで何とかしようとしてねぇか?
32bitの数値の操作について質問です i の上位8ビットを$00にしたいのですが、各Byteが$FFではないので 単純にandでマスクできません これ↓より高速にする方法はあるでしょうか? var i: LongInt; begin i := $A05C9940; //適当 i := i shl 8; //$5C994000 i := i shr 8; //$005C9940 end;
>各Byteが$FFではないので単純にandでマスクできません ここの意味がよく分かんないけど $00FFFFFFとandじゃだめなの?
>>394 > i の上位8ビットを$00にしたいのですが、各Byteが$FFではないので
> 単純にandでマスクできません
意味不明。
俺はツンデレだから、解法は教えるけど。
例1: i := i and $00FFFFFF;
例2: 共用体を使う
例3:ポインタを使う という方法もあるな。 (pByteArray(@i))[3]:=0;
398 :
388 :2006/10/20(金) 10:11:40
>>390 どうもありがとう!
Printer. 使うしかないのか…
StrToInt('$' + Copy(IntToHex(i, 8), 3, 8))
400 :
394 :2006/10/20(金) 10:12:17
うわー orと勘違いしてたorz まだ頭が寝てるのか俺は・・・ 駄質問スマソ
いや
>>392 はネタだから
効率がいいやり方でやってくれ
>>402 ありがとうございます。
どうすれば動くのか悩んだんですが、これで動きました。
procedure TForm1.Button5Click(Sender: TObject);
var
tempList :TStringList;
i :Integer;
begin
tempList := TStringList.Create;
for i := 0 to Memo1.Lines.Count - 3 do begin
tempList.Add(Memo1.Lines[i]);
end;
Memo1.Lines.Clear;
for i := 0 to tempList.Count - 1 do begin
Memo1.Lines.Add(tempList[i]);
end;
tempList.Free;
end;
これは難易度が高いので、Deleteで削る方法にしました。
ありがとうございました。
>>403 大丈夫だと思うけど、Deleteするとき
インデックスエラーにならないようにな
配列の要素の平均を求めたいんだがほかにいい方法あるかな hairetu: array[0..3] of byte; inc(goukei, hairetu[0]); inc(goukei, hairetu[1]); inc(goukei, hairetu[2]); inc(goukei, hairetu[3]); heikin := goukei div 4;
ヘルプで、mean関数について調べてみ
>>406 thx
ヘルプと、あとソースも調べてみたよ
結局やってることはいっしょか・・
手続きを呼び出す手間だけ実行速度は遅くなるのかな
>>407 考えられる実装方法を全部実装してみて、
コンパイルして実行してCPUウィンドウ眺めて、
アセンブラの命令数が少ない奴を選べばいい
普通にループで足していっても十分な速さが出るとおもうけど、 いったい何をしているの?
>>409 実効速度に無頓着な方はみなさんそうおっしゃいます
>>410 独りよがりなスピード追求は邪魔なだけだお
つか、速度にこだわるならそもそもDelphiで書かないと思うが。
Concat関数の存在理由を教えてください
ループで遅いなら、別スレッドでちょっとずつ計算しておくとか。
超初心者な質問です。 乱数の結果をメモ欄に出したいのですが、どうすればよいのでしょうか?
>>416 // 0 <= X < 100 の乱数を Memo1 に出力
Memo1.Lines.Add(IntToStr(Random(100)));
ありがとうございました。 早速試してみます。
419 :
デフォルトの名無しさん :2006/10/21(土) 10:17:09
StringGrid に TPopupmenu を割り当てているのですが、これを実行時に 無効(というかポップアップしないように)したいのですが、どうすれば できるでしょうか。Del7です。
StringGrid.PouupMenu := nil;
421 :
デフォルトの名無しさん :2006/10/21(土) 11:59:08
>>420 ありがとうございます。やってみました。419で書きもれていたのですが、
TabControl 内に StringGrid がありまして、両方に別の PopupMenu を
割り当てています。で、StringGrid に割り当てている PopupMenu1 := nil;
としたら、TabControl に割り当てている Popupmenu2 がポップアップされて
しまいました。いったいなぜなんでしょう。
空のメニューを割り当てる
423 :
デフォルトの名無しさん :2006/10/21(土) 12:17:12
早々の解答ありがとうございます。空のメニューを割り当てたところ、 ポップアップはされなくなりました。 ただ、セルを編集時(インプレースエディタ)のデフォルトのポップアップは させたいのですが、それもされなくなりました。で、 StringGrid1.PopupMenu := nil; TabControl1.PopupMenu := nil; としたらうまくいきました。ありがとうございました。
ちっぽけなことなんですけどね、 for i:=0 to 20 do memo1.Lines.Add('文字列足します!'); とやったとします。 で、memo1に出た文字列を眺めてると、キャレットが最後の行の「文字列足します!」の下にきてるわけですよ。 これって、memo1が勝手に改行文字を入れたってことですよね? もし、改行文字を入れたくない場合とかはどうするんですか? 最後の行をDelete?
425 :
424 :2006/10/21(土) 13:40:07
要は、最後の「文字列足します!」のすぐ後ろにキャレットをつけたい、ということです。
SelStartとSelLengthプロパティを使ってキャレット位置を移動させればいいかも
428 :
424 :2006/10/21(土) 13:57:54
>>426 いやいや、それじゃ、1行だけしか入らんでしょ? しかもシングルクォートないし…
>>427 キャレットの位置を移動させるんじゃなくて、memo1の裏にあるデータの最後の改行を抹殺したいのでつ。
>>428 なあ、少しは自分でも考えてみないか?
426の「文字列」と'文字列足します!'の違いの意味を。
>>428 >1行だけしか入らんでしょ? しかもシングルクォートないし
ちょっとは自分で考えようよ。
21行分(i=0〜20)の文字列を別の変数で組み立てておいて、
その変数をLines.Textプロパティに代入したら末尾に改行は入らない
431 :
424 :2006/10/21(土) 14:07:10
>>229 あぁ、そういうことか。
だけど、Addで付足していく、って方法を取りたいわけですよ。
文字列 が一気に出ないケースなので。
>>431 じゃあ、Add(文字列)の代わりに
memo1.Lines.Text := memo1.Lines.Text + 改行 + 文字列
Addじゃなきゃいやでつ。
じゃあそろそろ自分で考えような ヒント ・Addを使うと必ず末尾に改行が入る ・Lines.Textプロパティを使ってMemo内の文字列を編集できる
435 :
424 :2006/10/21(土) 14:15:36
>>432 それはしんどい。なぜならAddする項目が多いから(笑
説明不足だけど、何がしたいかっていうと、memo1上に現れたデータを目で確認してから、その文字列を暗号化して保存しようとしたかったわけですよ。
ところが、一番最後に改行が付け加えられてるもんだから、この改行も暗号化されちゃって保存されてしまうと。
暗号化されたファイルをデコードしたときに残滓みたいに変なデータがくっついていたから何だ?こりゃって感じで。
436 :
424 :2006/10/21(土) 14:18:29
>>434 ちなみに433は俺じゃないです。
最後の改行だけ取るってのはあっさりできるんじゃないかなって目論見だったんですけどね。
「しんどい」の意味がわからん 長いプログラムを打つのが面倒ってことか?
VBなら最後に改行つかないのにね
>>436 >>432 であっさりできてるじゃん
Addしてから末尾の2バイトをDeleteしてもいいけど、それはしんどいでしょ?
>435 > 暗号化されたファイルをデコードしたときに残滓みたいに変なデータがくっついていたから何だ?こりゃって感じで。 エンコード、デコードがバグってるのになぜ関係ない部分を直そうとする? こういうやつはマには向かん(キッパリ)。
Delには親切な人が多いなぁ
443 :
424 :2006/10/21(土) 14:26:22
あ、今ググッて#13#10をReplaceする方法でなんとかいけそうなんですけど、何かユニコードとか文字コード上、問題ないですかね?
それって全部の#13#10が消えちゃうような・・・・
>>443 439をスルーして
それが自分で考えた結果か。それならそれでよいぞ。うんうん。
446 :
424 :2006/10/21(土) 14:30:11
>エンコード、デコードがバグってるのになぜ関係ない部分を直そうとする? >こういうやつはマには向かん(キッパリ)。 ? だからAddによって付け加えられた改行文字も一緒にエンコードされちゃったってことじゃないんですか? そう認識してるんですが。
447 :
424 :2006/10/21(土) 14:33:26
>>445 >Addしてから末尾の2バイトをDeleteしてもいいけど、それはしんどいでしょ?
末尾の2バイトをDeleteするっていうのは、Copy関数で0からオリジナル.Length-2までをコピーするって方法しか思いつかないんですけど、後ろから2バイトだけ削除する方法ってあるんですか?
>>447 何でそこだけ英語で書いてくれたか考えてみると良いよ
ところで、したいことはMemoの全部の行の改行を消したいのか?
それとも最後の行の改行だけ消したいのか?
全部を消したいなら
>>443 のreplaceでもいいかもしれん
>>447 "Delete"でヘルプを検索しろ。アホか。
451 :
424 :2006/10/21(土) 14:41:13
なるほど、メソッドか! Delete(Length(Memo1.Text)-1); Delete(Length(Memo1.Text)-2); で最後から2バイト消えますね。
うんうん。成長したな。おぬし。鍛錬を怠るでないぞ。
もちつけ、どこのDeleteを見てるんだ?
454 :
424 :2006/10/21(土) 14:42:53
455 :
424 :2006/10/21(土) 14:44:09
>>453 Memo1.Lines.Deleteでいいですよね?
>>455 TStrings.Deleteは指定された行を丸ごと削除するメソッド。
ヘルプをよく読め、アホアホ野郎。
459 :
424 :2006/10/21(土) 14:49:04
>>456 あー、そうか。
行ごと削除されてしまうのか。
>>457 はずれです。全部僕の自作自演です。自己解決しました。
>>432 が駄目な理由を教えてくれたらもっといい案が出るかもしれん
ってか
>>432 でいいじゃんよー
462 :
424 :2006/10/21(土) 14:50:32
Delphiをアンインストールしたら全ての問題が解決しました。 今日はぐっすり眠れそうです。
464 :
458 :2006/10/21(土) 14:51:43
いやです。
465 :
424 :2006/10/21(土) 14:54:11
>memo1.Lines.Text := memo1.Lines.Text + 改行 + 文字列
@Addによってくっつけられた最後の行の改行だけを削除したい。
Aのに、さらに改行をつけ、さらに文字列をつけるの? って認識してます。
最後の行だけを取っておいて、改行+最後の行とやるんですか?
ちなみに
>>462 は俺じゃないです。
466 :
458 :2006/10/21(土) 14:55:08
本当はVB使いです。 今から回線切って氏にます。
463=424とみた。
468 :
424 :2006/10/21(土) 15:00:08
いまちょっと書物で調べました。 memo1.text := Delete(Memo1.Text, Length(Memo1.Text)-3,2); でいけそうです。
469 :
458 :2006/10/21(土) 15:00:12
要するに最後の改行を外せばいいんだろ? var Text: string; Len: Integer; begin Text := Memo1.Lines.Text; Len := Length(Text); if (Text[Len - 1] = #13) and (Text[Len] = #10) then Delete(Text, Len - 1, 2); 後はTextをお好きなように。
>>465 Add(1行の文字列)ってのは、
Lines.Text := Lines.Text + 1行の文字列 + 改行;
と等価なわけ。だからAddすると行末に必ず改行がつく。
この順番をかえて
>>432 のようにすると、各行の間は改行で
区切られかつ末尾に改行はつかない。
ただし最初の1行目を代入するときは改行は不要なので注意が必要
473 :
424 :2006/10/21(土) 15:03:38
>>469 親切にありがとうございます。
#13#10のチェックを入れたほうがいいですね。
あんまり高坊をいじらないでください。質問しにくいです。
>>467 ハズレです。
>>468 どんな書物にそれが載ってたのかが気になるのだが・・・
475 :
424 :2006/10/21(土) 15:08:04
>>470 ありがとうございます。
なるほど、次の文字列を下の行に足すために改行が入っちゃうんですね。
>>471 Delete(Memo1.Text, Length(Memo1.Text)-1,2); でいいですか?
>>468 つっこみどころ満載だね。
Deleteはprocedureなので値は返しません。
プロパティはDeleteの第一引数には使えません。
stringの添え字は1から始まります。
Delphiが根本的に理解できてないと思いますよ。
477 :
424 :2006/10/21(土) 15:11:39
>根本的に理解できてないと思いますよ。 そうかもしれません。 動くようにいろいろいじってみたいと思います。
>>476 Delphiの本かどうかもわかんないんだから良いんじゃね?
ここは超がつく初心者板なんだし
>>477 気にスンナー
479 :
424 :2006/10/21(土) 15:13:09
s:=''; for i:=1 to 20 do begin s:= s + '追加したい文字'; if i <> 20 then s:= s + #$0d#$0a; end; Memo1.Text:=s; でうまくいきました。ありがとうございました。
今まで出た案完全無視な結論に絶望した!!
しかし、答えをズバッと書けばすぐ済むのに、なんでこんなにレス消費したんだ? 上司にこういう答え方してると「もういい!」って怒られそうだ。
そうゆうときは、だいたい上司の聞き方が要領を得ないんだよ
うちの上司も「簡潔に!」とかいいそう
485 :
デフォルトの名無しさん :2006/10/21(土) 15:33:42
簡潔なだけで何の役にも立たなかったけどな。
VBは簡潔で役に立つのにね
TBitmapの一面を真っ黒に塗りつぶすのに、最も高速な方法ってなんですか?
488 :
デフォルトの名無しさん :2006/10/21(土) 16:43:37 BE:313463-PLT(11151)
テキスト入力用の右クリックメニューに、 自分で作ったアプリを呼び出すメニューを追加したいんだけど やり方わかる?
わかる
>>487 Canvas.FillRect
速いかどうかは知らん
492 :
488 :2006/10/21(土) 17:21:46 BE:418638-PLT(11151)
教えて
>>490 487だが、とにかくスピードがほしいんだけど、本命で速いのは予め真っ黒なBitmap1でもつくっといて:=で渡すのかなって思ってる。
クラスはポインタだからね。それかAssignするか。
でもこれだと余計なBitmapつくるんでメモリが無駄になる。
CanvasのメソッドのFillRect使う手があるけど、速度的に速い手続きってどうなのかなって。
工学部出身じゃないから、裏でどうなってるのかまでわからん。
低速なのはCanvas.FillRectなんじゃない?
でも、こんなこと聞いて何になるの?
TBitmap 同士なら Copy On Write なので Assign が一番早い。
>>494 サンクス!
やっぱ余計にBitmap作るか。
速度最優先だからね。
わたくしめの部下がおろかな質問をして申し訳ありません。 今後、簡潔迅速に回答するよう厳に指導してまいります。
同じサイズなら多分FillRectやCopyRectよりAssignのほうが早い。 でも、たいして変わらんので小さいサイズでBitMap作って、 cmBlacknessでCopyRectが合理的。
498 :
デフォルトの名無しさん :2006/10/21(土) 18:22:36
>>489 オレも知りたい。TEdit を貼り付けただけで、実行して TEdit を右クリック
すると表示されるメニューに、独自のアイテムを追加したいってことでしょ?
499 :
488 :2006/10/21(土) 18:32:58 BE:157133-PLT(11151)
>>498 ちょっと違う
TEditに限らず、メモ帳とかIEのアドレス欄とかの右クリックメニューに
自作アプリを呼び出すメニューを付けたい
500 :
デフォルトの名無しさん :2006/10/21(土) 18:43:00
それは難しそうだなぁ マウスの右ボタンダウンをフックして、本来のポップアップが表示されないようにして 自前で用意したTPopupMenuを出すのはできるけど・・・ もっと簡単な方法ありそうなきがする。レジストリいじるとか。
501 :
デフォルトの名無しさん :2006/10/21(土) 18:43:11
コンテキストメニューに項目を追加したいってことだろ? だとしたらShellAPIなんじゃないの。初心者には難しすぎるかもね
それはDelphiと関係ないような・・・
EDITコントロールをシェルが管理してるとは知らなかった。
>>503 先生、もったいぶらずにヒントだけでも教えてください!
505 :
503 :2006/10/21(土) 18:46:01
507 :
デフォルトの名無しさん :2006/10/21(土) 18:47:21
>>503 サーセンwwwwそれはオレも知らなかったわ
508 :
506 :2006/10/21(土) 18:49:13
あっ正確にはInno Setupだったっけ?
>>508 これってポップアップメニュー改造できんの?
510 :
488 :2006/10/21(土) 18:51:40 BE:417683-PLT(11151)
改造というか・・・・・
>>510 まあつまりはDelphiとは関係ないということだ。
InnoがDelphi製だから引き続きお兄さんたちがやさしくアドバイスしてくれるかも知んないけどな
先生あんたもじらすねえ
514 :
512 :2006/10/21(土) 19:06:49
ああごめんごめん勘違いしてたわ。 無理無理。そんな機能無理。 常駐させてホットキーで起動ってやった方が速いぜ? わざわざ作らなくてもそんなソフト五万とありそうだけど
ホントに無理なの? IEの右クリックメニューにアイテム追加するソフトとかあるけど あれは違う仕組みなんかな
>>515 そういう機能追加を想定してあるとこではできるよ。
それ以外では絶望的。
できるんだったらとっくにどんなアプリのメニューにも忍び込むランチャとかありそうな気がする。
どっから Inno の話になっちゃったんだろ? ポップアップメニューの取得は GetMenu API とかでできないものかな? で AppendMenu かなんかで追加とか。適当に書いてるんでよろしく
IEで可能なのはIEがそのような機能を持っていて、その仕様が公開されているから。
519 :
515 :2006/10/21(土) 19:15:57
>>516 ,518
なるほど納得です
でも無理といわれると余計にフックしたくなるな
520 :
512 :2006/10/21(土) 19:16:27
>>517 Explorerのメニューと勘違いしてたスマソ
>>519 実現できたら結構使う人いるかもね。
どんなアプリにも忍び込めるランチャ
522 :
517 :2006/10/21(土) 19:19:08
あ、フック… ワタシも勘違いしてました。
523 :
488 :2006/10/21(土) 19:19:14 BE:522656-PLT(11151)
ダメなのか エクセルの右メニューとかも無理?
>>522 いや別にフックじゃなくてもいいでしょ
GetMenu APIってポップアップメニューも取得できるんだろうか
ポップアップメニューはウィンドウに関連付けられてないから_
>>523 個々のアプリのことはよう知らんがホットキーで起動じゃだめなんか?
なぜメニューにこだわる?ホットキーでメニュ-出した後起動でもだめか?
527 :
デフォルトの名無しさん :2006/10/21(土) 19:26:15
他のアプリケーション内のPageControlを取得したのはいいのですが タブを選択させるのがどうすればいいのか分かりません 知ってる方いらっしゃったら教えてくださいまし
タブを選択って? そこんとこ詳しく
>>525 EnumWindowとかでも無理なんだよな・・・
ハンドルさえ捕まえられたら・・・
531 :
488 :2006/10/21(土) 19:30:05 BE:469793-PLT(11151)
>>526 そのほうがスマートかと思ったんだけど無理ならしょうがない
ホットキーって常駐するのがアレだなと思った
>>531 軽そうなランチャソフト常駐させとけば?探せばいくらでもあんだろ
VBならできないことなんてないのにね
534 :
527 :2006/10/21(土) 19:33:04
例えばコントロールパネルのシステムで言うと 「全般」「コンピューター名」「ハードウェア」「詳細設定」・・・等のタブが並んでいる部分です 自分のプログラムからこれのうち一つをを選択させたいのです
>>534 目的のタブがアクティブになるまでCtrl+Tabのキーイベントを送信する
>>534 普通のタブコントロールなら
TCM_SETCURSELメッセージを送ればなんとかなるかも
みんな優しくて勉強になるなあ
VBならもっと勉強できるよ
VBはもうマスターしたので聞くことも勉強することもありませぬ
>>535 あ、すいません、コントロールパネルのシステムだとそれでできますね・・・
Delphi内で言う上のほうの「Standard」「Additional」「Win32」「Svstem」・・・と一緒っぽいです(´・ω・`)
>>536 それはだめだったのでしたorz
最後の手段 mouse_eventでマウスポインタをタブのところに持っていって マウスボタンダウンのイベントを起こす
542 :
527 :2006/10/21(土) 19:50:35
>>541 とりあえずそうします(´・ω・`)
答えてくれた皆さん有難うございました
543 :
541 :2006/10/21(土) 19:52:45
あわてんな、もっといい答えがあるはずだって。
つか全然初心者レベルな悩みじゃないよな
545 :
527 :2006/10/21(土) 19:59:54
あ・・・なんか間違ってたかもです
>>536 さんの言うTCM_SETCURSELはPostMessageは使わないですか・・・?
今TObjectからの派生クラスを作っています。 ですがFree とDestroyの違いが分かりません。 どうか教えてください。 それと変数のFindConponentみたいなのも探しています。 ぜひ教えてください。お願いします。
TObject(nil).Free; -> おk TObject(nil).Destroy; -> あぼ〜ん >変数のFindConponent 日本語でおk
コピーするアクションのShortCutに Ctrl+C を指定しています。 これは機能しています。で、SecondaryShortCutに Shift+Ctrl を 指定したのですが、機能しません。どうしてなのでしょうか。
>>549 最小限のプロジェクト組んで試してもダメ?
>>547 >変数のFindConponent
変数を、変数名の文字列で探したいってことなら無理。
変数が全部同じ型なら配列で管理してインデックスで
アクセスするのはできるだろうけど
552 :
488 :2006/10/21(土) 21:48:25 BE:783195-PLT(11151)
ちょっと聞いてくれ 右クリメニュー出すときpopupメソッドの引数にx,yを送るけど ホットキーでメニュー出す場合のx,yはカーソル位置だとまずいから なんとかしたいのだけど、どーすれば右下のアイコンの位置のx,yを取得するんだろ?
VBなら変数のFindConponentできるのにね
>>552 ScreenToClientまたはClientToScreenを使う
>>548 そこまでは分かるのですが次の場合DestroyとFreeをどのように実装すればいいのか分かりません。
TTest = Class(TObject)
private
FID:Integer;
FName:String;
public
Constructor Create;
Destructor Destroy;override;
Procedure Free;
published
Property ID:Integer read FID wirte FID;
Property Name:String read FName write FName;
end;
この場合のFreeとDestroyの実装の違いが良く分かりません。
>>551 が書いたみたいに変数名で変数を探したかったのです。
うまく表現できなくてすみません。
>>551 無理なんですね。教えてくださいまして有難うございます。
VBなら右下のアイコンの位置のx,yも一発で取得できるのに
557 :
デフォルトの名無しさん :2006/10/21(土) 21:52:01 BE:314429-PLT(11151)
VBとかいーから 邪魔寸菜よ
>>555 Freeは実装しなくていいよ
親クラスのTObjectに実装されてるからTTestに書かなくていい。
Destroyだけoverrideすればいい。
で、外からTTestを破棄するときはFreeを使う。Destroyを使ってはダメ
559 :
デフォルトの名無しさん :2006/10/21(土) 21:53:30 BE:556984-PLT(11151)
VBならFreeいらないのにね
VBいらないのにね
VBならコードを書かないでもテレパシーでコードが自動で生成できるのにね
565 :
デフォルトの名無しさん :2006/10/21(土) 22:38:40 BE:1409999-PLT(11151)
>>554 難しいかも
もう少し詳しくお願いします
>>565 >>554 は間違ってる。
トレイアイコンの位置取得は無理ぽ。
何でカーソル位置だとまずいのか知らんが、それがダメならアクティブウィンドウの (0, 0) とか、画面の中央とかそんな感じで。
>>565-566 すまん勘違いしてたみたい
Popup(Screen.Width, Screen.Height)
ってしたら画面の右下にでると思う
ここのところ、やたら変な空白入れた書き込みするやつがいるが、 これは何かのネタ?
570 :
デフォルトの名無しさん :2006/10/21(土) 22:54:36 BE:696285-PLT(11151)
>>566 キー操作してるときにホットキー使う
↓
マウスが予想してないところにある
↓
変な場所にメニューが出る
↓
(゚д゚)マズー
>>567 やってみたけど微妙な位置…
>マウスが予想してないところにある ?
>>570 てかポップアップメニュー必要なのか?
ホットキー押下で直接アプリ起動じゃダメなんだろうか
573 :
デフォルトの名無しさん :2006/10/21(土) 23:01:00 BE:696285-PLT(11151)
>>571 ほら、マウス使ってないときってマウスの位置は気にしてないでしょ?
そんで、そのままホットキーで呼び出したときに
GetCursorPosすると変な位置を取得しちゃうじゃん
>>572 アプリに送るコマンドラインがあるからメニューは必須なのよ
>>573 別にマウスの位置を意識していようといまいとマウスの位置でいいじゃん。
tu-ka,マウスの近くにポップアップしてくれたほうが使いやすいよ。
>>573 ごちゃごちゃやったら実現できそうだけど…。
簡単にやるなら、ホットキー押したらマウスポインタを
画面中央に移動させて、その位置にポップアップを表示させるのが楽そう
576 :
デフォルトの名無しさん :2006/10/21(土) 23:13:52 BE:1253489-PLT(11151)
>>574 の言うことも一理あるな
メニューはキーで選択するってイメージがあったから
>>575 ポインタが勝手に動くのも気持ち悪いな
ここは
>>574 の案を採用してみることにするよ
VBならお好みの位置にポップアップできるのにね
Delphiだってお好みの位置にポップアップできるぞ!!!
>>579 SysPagerの中の何番目なのかがわからない
VBなら何番目かわかるのにね
VBならSysPagerなんて不要なのにね
>>580 調べるのはSysPagerじゃなくてその中のToolbarWindow32。
自分のアイコンがツールバーの何番目のボタンなのか探す方法は
TrayExpandのソース転がってるからそれ見たらわかる。
まぁでもいろいろめんどいといえばめんどいからマウスの位置でいーじゃねーかと思う。
>>494 遅レスだけど、AssignよりもBitBltの方が速くないですか?
いや、VBのが速いよ。
は?HSPの方が何倍も速いし
bitmapをエンコードする関数を説明しているサイトがあったんだけど、 RandSeed := キーとなる数; としておいて、 そのあと、一つ一つのピクセルにRandom(256)をXorしてエンコードしてあるんですよ。 ところが、Randomって、ヘルプに >Random 関数は,各言語やバージョンにより実装方法が異なることがあります。 >ある RandSeed が将来に渡って同一の乱数列を生成する保証はありません。 >暗号化などの目的のために Random 関数を使うことはお勧めできません。 って書いてあるわけですよ。 これって、どういうことですかね?一度コンパイルが済んでさえしまえば、OSや環境なんかが変わってもちゃんとデコードできるんですかね?
現在のRTLの実装なら期待通りに動作するはず。 大した手間じゃないから乱数生成部分も自前で組んだ方が確実だけど。
>乱数生成部分も自前で うーん… テーブルにしようかなって思ってたんだけど(速いから)、テーブル以外に方法あります?
>>590 うんにゃ、自分で作りたい。試行錯誤も楽しいじゃまいか。
テーブルにしたけど、1個ずつRandomでxorするようにバラけない。
なんでだろうかと、研究中さ。
研究 → 思っていたより面倒 → その辺のフリーのコンポで間に合わせる ふ、オレ様のいつものパターンさ。
研究 → 思っていたより面倒 → その辺のフリーのコンポが見つからない → Cのコードをマンドクセ言いながら移植する ふ、オレ様のいつものパターンさ。
ピタッとくるフリーのコンポってないこと多いね… シェアだといいのがあるけど、いろいろ機能ついて重かったり。 暗号化で思い出したけど、Waveを暗号化してファイルに保存する方法知ってる人いる? 文字列やBitmapなんかはよく落ちてるけど、以前「バイナリ」でどうにかならないか研究してて頓挫したままだったの思い出した。 (´・ω・`)
既存の暗号化アルゴリズムを使うのならデータの内容は関係ないと思うが
俺もバイナリ苦手だ(´・ω・`) 普通の文字列を加工するならTrimなんかの関数つかっていろいろ出来るようになったけど、 バイナリって聞いただけで尻ごみしてしまう。 だからこの前の方のレスで「上位?ビット」とか「マスク」とかいってた人はすごいと思うよ。
>>584 BitBlt はビットマップ自体への読み書きが発生するじゃん。
おれもバイナリ苦手だポ(´・ω・`)
599 :
594 :2006/10/22(日) 16:12:56
いや、バイナリっていうか、Waveを暗号化できれば別にバイナリに拘るわけじゃないけど。 でも、バイナリなんだろうねぇ(´・ω・`) memStreamかなんだかをいじろうとした記憶がうら覚えである。
暗号化って言ったらバイナリっていうかビット単位でやるもんだとばかり 思っていたんだが。なので、当然 BMP だろうが txt だろうが wav だろうが exe だろうが関係ないハズなんだけど…
wavファイルを暗号化してzipファイルのように見せかけるプログラム RenameFile(wavファイルパス, ChangeFileExt(wavファイルパス, '.zip')); これでいいんじゃね?
つか暗号化しないといけないwavってなんなんだ!? と逆ギレ
そのへんの正体もわかってないのが素人
3へぇ
文字列の暗号化が落ちてるってんでググッたらこんなのがあった。
http://lupin.client.jp/delphi/index.html#11 で、この関数をコピペして、Memoに
for i:=0 to 20 do memo1.Lines.Add('セーブする文字列' + IntToStr(i));
と文字列をAddし、
>>469 にかいてあるやりかたで最後の改行をはずす。
この文字列でEncodeを実行→ Memo1.Lines.SaveToFile('Test.dat'); としてセーブ。
で、このTest.datを読み込んで、デコードすると
>>435 のいうとおり、
セーブする文字列20
みたいに20のあとに残滓みたに変な情報がくっついてる。
このよけいな情報の正体はなんなの?
エンコードしたものをSaveToFileで保存するのがまちがってるのか!?
バイナリか!?
>セーブする文字列20 セーブする文字列20・・ ね。 この「・・」 が何モンだろう?
日帝残滓です
黙ってtwofishかAES使っとけ。悪いことはいわん。
急にスレが伸びてるかと思って覗いてみればやたらとレベル低下してないか? ここ数日で一体何があったんだ。
でました選民思考
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、 他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが、 お礼はDelphi(の布教と初心者の救済をお願いします。
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、 他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが、 お礼はDelphi(の布教と初心者の救済をお願いします。
615 :
デフォルトの名無しさん :2006/10/22(日) 17:45:51
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、 他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが、 お礼はDelphi(の布教と初心者の救済をお願いします。
>やたらとレベル低下してないか? へぇ?
VBなら高レベルな質問と解答ばかりなのにね
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、 他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが、 お礼はDelphi(の布教と初心者の救済をお願いします。
みんな安心しろ
>>611 が光臨した
どんな答えもサクッと書いてくれるぞ
622 :
デフォルトの名無しさん :2006/10/22(日) 17:51:02
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、 他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが、 お礼はDelphi(の布教と初心者の救済をお願いします。
UNICODE サポートはいつできるんですかね? 人名漢字くらいサポートしたいんですが,Delphi ではできないからこの時点で使えません。
できますが何か?
>>607 >このTest.datを読み込んで
どうやって読み込んでるの?
読み込んだときに末尾に何か付いてんじゃない?
黙ってtwofishかAES使っとけ。悪いことはいわん。
>>611 週末だからかな… 明日から元に戻るよきっと。ってオレも参加してたけどナ
>>627 オマイも天才の仲間か?それならさっさと解決してやれよw
わざわざ初心者版にきて初心者を見下す方って香ばしいですね
VBなら週末でもさわやかなのにね
>>631 の人(達?)って、なぜかいつもちょうどいいタイミングで書いてる
みたいなのですが、常に監視しているのでしょうか?
VBなら監視なんてされないのにね
>>624 2004年に人名漢字が拡張されて,SJIS に無い文字が利用できるようになりました。
これらの文字を扱うためには UNICODE をサポートしなければいけません。
まずこの点で標準の VCL は,官公庁やその周辺の案件では使えなくなります。
元々,住所等を表記する場合に第二水準では足りないことを解決する
ことが JIS の改訂の目標でした。その結果,住基ネットデータを扱うには,UNICODE が
必須です。
業務アプリでは Delphi/VCL は使えないのです。
>>223 >Delphi ではできない
これが間違ってる。
正しくは
VCL は使えない。
VCL使わなけりゃおk。
TNTでも使ってろよ。
VBなら業務アプリでも使えるのね
VCL.NETでいいじゃん。
>>625 Memo.Lines.LoadFromFile('Test.dat');
とやったんだけど…
荒れてるね、今日
>>640 デバッグの仕方知ってる?ステップ実行しながら
文字データを監視して、最後にごみが付く瞬間を
探したほうが早いよ
>>640 暗号化した文字列をMemo.Lines.Textに代入すると暗号化されていない
改行が末尾につく。それで復号化すると暗号化されていない#13#10と
xorを取るから変なデータが2バイト付くことになる。
何でもTStringListで済まそうとするな。頭を使えよ。
暗号化した文字列をそのままTFileStreamでも使って書き出せばOKなのにね。
>>424 別の解 Memo1.Text := TrimRight(Memo1.Text)
>>475 ×です.Delete手続きの1番目のパラメータは変数そのものでなければなりません.
>>584 >>494 の『Copy on write』がキーワードです.
複製した時点では見た目上複製したことにしているが内部的には同じものを使いつづけて,
どちらかの中身が変わるときに本当に複製する仕組みのことです.
ここではわかりやすいように文字列を例にします.
たとえばこんなコンソールプログラムがあったとします.
var
s1, s2: string;
begin
s1 := 'Delphi';
s2 := s1;
PChar(s1)^ := 'H'; //※1
writeln(s1);
writeln(s2);
readln;
end.
※1はs1が指している文字列の1バイト目を直接書き換えていますが
実行すると両方とも"Helphi"になったはずです.
これはs1, s2の両方が内部で同じデータを指しているということを意味しています.
次に※1を以下のコードに差し替えたらどうなるでしょうか.
s1 := s1 + ' 6';
今度はs1が"Delphi 6",s2が"Delphi"になりました.
s1 := s2の時点でs1とs2は同じデータを指していたはずなのに今度は片方しか変わりませんでした.
s1の内容が変わるにあたって内部で複製が行われたというわけです.
以上,文字列の例を出しましたがTBitmapでもやっていることは基本的に同じです.
>>645 なにか偉そうな説明だが、そのサンプルちゃんと動くか自分で確かめてからにしろよ。
>>646 なんか、動かねーぞボケっていってるようなレスだが、動いたぞ。
>>645 これ、コンソールプログラムじゃないと、
Hを代入するところでぬるぽなんだけど、なぜなんかね。
650 :
デフォルトの名無しさん :2006/10/22(日) 19:58:02
VBならコンソールプログラムじゃなくてもぬるぽじゃないのにね。
>>649 'Delphi'が定数として扱われて書き換え不可能な領域に配置されるからでは?。
ふつうの操作だとCopy on writeでうまくいくがポインタを取り出して
書き換えだとあぼーん。
あれ、もしかして。 ヒープに文字列変数取った場合は、メモリ直接書き換え可能とかそんなことなんか。 で、スタックだとダメだとか。 結構興味深いなこれ。
文字列変数がひとつの場合はいけるな
655 :
654 :2006/10/22(日) 20:14:30
ごめんやっぱだめだた
>>649 s1 := 'Delphi';
s2 := s1;
pChar(@s1[1])^ := 'H'; //※2
// Char(PChar(s1)^) := 'H'; //※1
MessageBox(Handle, pChar(s1), 'てすと1', MB_OK);
MessageBox(Handle, pChar(s2), 'てすと2', MB_OK);
にしたら、とりあえず動いたよ。
ただ、s1は"Helphi"で、s2は"Delphi"と出てくるっぽ。
657 :
デフォルトの名無しさん :2006/10/22(日) 20:24:12
s1 := 〜 を SetLength(s1, 3); s1[1] := 'A'; s1[2] := 'B'; s1[3] := 'C'; とかにすると動く。 つまり、 s1 := 'Delphi'; とすると、 ローカル変数の場合は関数内で文字列の書き換えを行っていないので、読み込み専用の定数領域に配置された文字列を直接参照しているので書き換え不可能。 グローバル変数の場合は文字列の書き換えを行わない保証が無いのでちゃんとコピーされるってことかね?
なんか、最初の話題とは全然関係なくなっている上に 全然、超初心者用のネタじゃないけど 面白いな
>>643 別にそんなツンデレ口調で教えなくても・・・
意外な方向に話が展開してしまいましたね. もちろんコンソールでの動作チェックは一応したのですが. "Copy on write"の意味は理解したぜ!っていうレスがないところを見ると 失敗だったかなぁ,すいません(´・ω・`)
"Copy on write"の意味は理解したぜ!
すんません、メシ買いにいかされてて、、 >複製した時点では見た目上複製したことにしているが内部的には同じものを使いつづけて, >どちらかの中身が変わるときに本当に複製する仕組みのことです. へぇ〜
Copy and Paste は理解しているぜ!!
>>647 違うけど、なんで?
>暗号化した文字列をそのままTFileStreamでも使って書き出せばOKなのにね。
これをヒントに考えようと思ってます。
ふぅ〜しんど。(部活で)
ちょっと難しいや。
>>664 なんで596宛のレスなのにお前が考えるんだよw
最初の質問に戻るけど、なぜ bitmap を黒で塗りつぶしたいかが問題。 次に、なにかを書き込むための初期化だとしたら、Assign() なんか無意味。 すなおに FillRect() したほうがいい。
scanlineで黒に埋めるだけじゃだめなん?
これは実用的かどうかはともかく幾分に興味深い検証だ。興味深い。
「幾分に」の使い方が変
670 :
488 :2006/10/22(日) 22:59:19 BE:313092-PLT(11151)
昨日いろいろ教えてくれた先生ありがとう 思っていたようなものが一応完成したよ…フヒ
おめで10
673 :
488 :2006/10/22(日) 23:17:46 BE:469793-PLT(11151)
今更だが起動したいアプリを常駐するように直した方がはやかったかも…テヘ
調べてもわからなかったので、教えてください。 TListViewでViewStyleをvsReportにして エクスプローラーの詳細表示を再現しようとしてるのですが デフォルトではドラッグで列移動ができないようになっております。 これをエクスプローラーのようにドラッグで列移動できるようにしたり 右クリックから列の表示非表示を選択できるようにしたいのですが これを実現するのは簡単でしょうか?難しいでしょうか?
>>674 列移動するにはFullDragプロパティをTrueにする。
右クリックから列の表示非表示は他の人頼んだ。
>>674 フォームにポップアップメニューを予め用意しておく
ListViewのonColumnRightClick内でListviewのポップアップメニューをマージ
列のカラム分だけ動的にサブメニューを作成する
表示しているメニューにチェックを付ける
アイテムが選択されたらカラム再表示処理を行い
チェックが付いているアイテムだけを表示する
ウチにDelphi4があるんですけど、これで作ったものはWindowsVistaでも問題なくうごきますか?
1でも2でも3でも4でも5でも6でも7でも動きます
問題なくうごく保証はありません。
Vistaは今までで一番糞なOSだと言われている。
>>662 >すんません、メシ買いにいかされてて、、
そのくらい先輩をぶん殴って「てめえの飯くらいてめえで作れ。ヴォケがっ!」とぶち切れるくらいの
ド迫力を見せて、即座にレスするくらいの気力を見せ(ry
>>680 APIを.netFrameworkに変更するのはお流れになったので
WinAPI32がそのまま残ってる以上、動くとは思うが
Vistaはまだリリースされてないので本当のことは誰にも分からない
ついでに言えばこの問題はDelphiに限らずVCでもVBでも有り得る
>Vistaはまだリリースされてないので本当のことは誰にも分からない 出ても無いのにわかりませんよね。 じゃ、TurboDelphi買うとしても様子見にしといたほうがいいですかね?
基本的にはVistaでも問題なく動くから本格的に始めても大丈夫じゃないのかな
そもそもDel4のVCLは自前で手直ししないとXpですらまともに動かんが
>本格的に始めても大丈夫じゃないのかな 早いめにやったほうがいいかなーって思ってるんですよ。 新機能とかあるだろうし、やっぱ買うべきかなと。 でも製造元が怪しくなってるって噂も… だから無料でできるなら家の使おうかとも思ったわけです。
>自前で手直ししないとXpですらまともに動かんが ちょっとコワイ気もしますが、はじめてみますよ。
>>690 超初心者スレで知ったかぶりするような奴は相手にしないのが吉だよ
Delphi5で作ったアプリを試しにVista RC1上で動かしてみた。
・ADOでSQL Server2000に接続
・DevExpressとかTMSなど使いまくり
そんなにさわりまくってないけど、結果は、
・通常動作はほとんど問題なし。
・Application.MessageBoxの引数ICON_EXCLAMATION系が効かず、アイコンのないメッセージボックスが
表示される。メッセージボックス自体の動作には問題はない。これは
>>687 のリンクで説明されているように、
TaskDialogを使えばOK。
・TPopupMenuのMenuItemのDefaultプロパティをTrueにしてそのメニューを太字で表示しようとすると、
そのメニューが見えなくなる。Defaultプロパティを使用しないことで回避するしかない。
あまり凝ったことをしなければ、かつ、動作検証をきちんとすれば大きな問題にはならないでしょう。
674で質問した者です。
>>675 >列移動するにはFullDragプロパティをTrueにする。
素早いレスを頂き、ありがとうございます。
こんなに簡単にできるとは驚きです。
あやうく車輪の再発明をするところでした・・・。
>>676 詳しい解説ありがとうございます。
私はDelphi初心者なので、すぐに実装というわけにはいきませんが
大体どうすればいいかという方向性は見えてきました。
また、わからない事があったらよろしくお願いします。
VCL 特有の見えないApplicationトップレベルウィンドウのせいで Vista 対応も大変そうだな・・
Delphi製のエディタ(TeraPadとか)で挿入、上書とか判定してありますが、あれはどこで調べてるんですか?
>>696 bool型でフラグでもつくって、キーで判別か…
TMemoとかにプロパティはないんですね。あんがと。
フリーのTurboDelphiを使っています。 入力した文字列をMySQLにインサートしていくデータベースアプリケーションを作ってみたいのですが、何をどうすればいいのか、取っ掛かりすら分かりません。 参考になるソース、サイトを教えていただけないでしょうか。
Bounds Checker for Delphi って最新(最終?)バージョンって 何番でしょう?
700 :
699 :2006/10/23(月) 21:39:08
ちなみに、所有しているDelphiは7です。
>>699 よく知らんが、7.0 以降はVS 専用になっているような気が。
バージョン6(たぶん6.5)じゃね。
>>698 TurboDelphiにはDemos\Adoってディレクトリないん?
Demos以下にはサンプルがいっぱいある
Turbo は知らんがProfessional には無いな。
釣りでしょ。 Delphi MySQL でぐぐっただけで 9,150,000もヒットするし。
>>705 漏れEnterpriseだ。
でもインスコする時選択したような気がする
>>706 初心者スレだしいいんじゃね?
>>704 はサンプルいっぱいあるから参考にしてみたらって意味だった。
TTrackBarとかにフォーカス移されたくないので、 OnEnterにFocusControl(nil);とするのはアリ?
TabStopプロパティをFalseにするだけでいいのでは
見せるだけならenabled := falseでいいんじゃない?
それだとマウスでクリックしたときにフォーカスが移ってしまうので。。。 MPCやfoobar2000のシークバーのように、キーボードからは受け付けず、マウスで操作するだけにしたいのです マウスが押された・離された時に特定のイベントを発生させるのは難しそうですが
それと、 TrackBarが ------------ロ----- という感じとして、 - のところをクリックしたら、PageSize分そっちの方向に ロ を動かすのではなく、 クリックした場所に ロ を移動するというのも実現させたいんですが、TTrackBarクラスをうまく改造するしかないですかね・・・
OpenJaneからだがこれは? //メインウィンドウからフォーカスを奪わないように設定 procedure TPopUpTextView.CreateWnd; begin inherited CreateWnd; Windows.SetParent(Handle, 0); CallWindowProc(DefWndProc, Handle, WM_SETFOCUS, 0, 0); end;
>マウスが押された・離された時に特定のイベントを発生させるのは難しそうですが 蝶簡単 TTrackBarはonMouseUp、onMouseDownイベントを持つ TControlからの継承なのでTTrackBarExとかって名前で独自コンポーネント作って その中でonMouseDownとonMouseUpイベントを定義して上げればよい
716 :
698 :2006/10/24(火) 10:14:54
MySQLは5.0を使用してます。 TTableを使って、ODBC経由で接続しようとしていたのですが、 ODBCに入力しているユーザー名が認識されずに困っていました。 SQLconnectionとQueeryだとうまくいくようなので、これでやってみます。 ありがとうございました。
ある文字列のなかに0〜9以外の数字がある場合の判定方法ですが、 Pos関数で0があるか? ってかんじで0から9までやる方法しか思いつきません。 スマートなやりかたおしえてください!
0〜9以外の数字ってあんのかよw 16進数か?
>ある文字列のなかに0〜9以外の数字が ある文字列のなかに0〜9以外の文字が 訂正します。すんません。
>>717 自分でスキャン。
半角数字以外ならLeadBytes, TrailBytesの判定もいらないのでこれだけ。
Result := False;
for i := 1 to Length(S) do
begin
Result := not (S[i] in [0..9]);
if Result then
Break;
end;
for i:=1 to Length(s) do begin if not(s[i] in ['0'..'9']) then ・・・・
被った
var I: Integer; begin for I := 1 to Length(S) do if not (S[I] in ['0'..'9']) then begin Result := False; Exit; end; Result := True;
ExitとBreak、どっちがいいですかね?関数をぬけるExitのほうが速いですか?
被ったお詫びに p: PChar; while p^ <> #0 do begin if not(p^ in ['0'..'9']) then ・・・・・・・・・ Inc(p); end;
>>724 ループをbreakした後に何も処理がないならどっちでも同じ
727 :
724 :2006/10/24(火) 12:27:54
みなさん、ありがと…
>>728 ソース付いてるんだから自分でDelphiに移植するか、
VCとかでDLLにして呼べばいいんじゃない?
StrToIntで例外キャッチするとか
TryStrToInt
桁がめちゃくちゃあったらこまらね?
それもあるし、+とか-とかついててもエラーにならないから、717の条件には合わないな。
例外キャッチでもいいし、TryStrToIntでもいいし、正規表現でもいい。 用途にあったのをどうぞ。
Delphi6のHotkeyコンポにOnChangeイベントある? 5にはない。7にはある。6がどうなのかしりたい。
5でTHotKeyの継承クラス調べてみろ TCustomHotKeyからの派生でなければない そうでないから隠蔽してるだけ
>>735 D6
THotKey イベント
TWinControl からの継承
OnEnter
OnExit
TControl からの継承
OnMouseDown
OnMouseMove
OnMouseUp
TWinControlからの継承ってことは6もonChangeイベントはないんだな
>>737 6にも無いみたいですね。ありがと。
>>736 5について調べると6のことがわかるんですか?
THotKey ってウィンドウズのコモンコントロールのラッパですね。 OnChange って、何が変化したら起こってほしいの? そんなメッセージはないけど。
EN_CHANGEがとんでくるよ
>>719 これが多分最もスマート
function f(s:string):boolean;
var
E,I:integer;
begin
val(S,I,E);
result:=E=0;
end;
スマートとか以前に要求を満たしてないじゃん
質問です。超初心者です。 プロシージャのスコープ?についてよく分からないのですが、 『implementation以下にのみ宣言したシンプルな関数(以下、A)から、 VCLの機能を使用している関数(以下、B)を呼び出し、その機能を使用すること』 (例えば単純計算用のAから、チェックボックスをオンにするBを呼び出す等)は可能ですか? AからBを呼ぼうとすると、VCL関連の命令の箇所で「未定義の識別子」と言われてしまいます。 一応、Aもinterface部に宣言すれば問題はないのですが、 単純に、 「VCLを使う関数にアクセスする関数を作った場合は、 その都度interface部にも宣言しなければいけないのか」が知りたいです。 的外れな質問でしたらすみません。よろしくお願いします。
言っていることがめちゃくちゃなので、まずなんかの入門サイトの最初から読みあされ
>>744 implementationに実装の記述だけしかない関数は使用する関数より上に記述されて
いなければならない。
interfaceに宣言した関数はユニット内のどの位置からも見えるし他のユニットからも
使用できる。
VCLは関数のスコープとは関係ない。
interface内にも上下はあるけどね、一応
1. そのシンプルな関数Aを、チェックボックスをオンにするメソッドB と同じクラスのメソッドにするか、 2. シンプルな関数Aに、チェックボックスをオンにするメソッドB を呼び出すためのインスタンスを渡してそれ経由でメソッド呼び出しするか、 3. フォームが1つしかないなら、フォームのインスタンスを格納している 変数を使って、メソッド呼び出しをする。
Bを先に宣言すればいいだけじゃん
Delphiどころかプログラム自体始めたばかりのもんですが… 自作のクラスをCreateして、Freeするっていうのはわかった、 つぎに「継承」ってのをやってやろうとして行き詰まっています。 TMyClass=Class(TBitmap) ←こうすればTBitmapを継承できるのはわかった、 問題は、継承元(ここではTBitmap)のprocedureのふるまい等です。すっかりハマってしまいました。 で、procedure naniyara; override; ←こうすれば手続を「まったく書き直し」できると考えているのですが、(違います?) 仮に、継承元の手続をやらせた後に、自作クラスの手続を(付け足しで)やらせたいときは、恐らく名前からしてinheritedを使う気がするんですが、 例えばTBitmapのCreateをやらせた後で、自作のCreateを(付け足しで)やらせたいときは TMyClass=Class(TBitmap) private constructor Create; desutructor Destroy; override; ←(Destructorには無条件でoverrideが必要らしい…) end; 実装部で procedure TMyClass.Create; begin inherited −自分がやりたい処理− end; でいいんでしょうか?Createのうしろにoverrideが必要でしょうか?継承した手続の上書き関係が まったく曖昧でわかりません。
コンストラクタのcreateにoverride付けなくても、inheritedを入れてあれば動くには動く。 しかし、コンパイラに「コンストラクタを覆い隠した」と怒られるし、 普通じゃない使い方(たとえば「クラス参照型」)をしようとすると問題が出る。 基底でdynamic宣言されているコンストラクタには素直にoverrrideを付けておくもんだと覚えておいた方がいい。 C++ともJavaとも考え方が結構違うから難しいんだよなぁ…
>>752 まあ、Delphiじゃ、dynamicはあんまり使うべきじゃない。
大抵virtualでおk
>>752 怒られるのは継承もとのメソッドが仮想や動的、抽象の場合だろ。
性的なら怒られない。
TMyClass=Class(TBitmap)
private
constructor Create; override;
desutructor Destroy; override;
end;
実装部で
procedure TMyClass.Create; override;
begin
inherited
−自分がやりたい処理−
end;
で、おk?
>>751 のサンプルじゃoverrideついてないようですが…
自身持って判断できるようになるには時間かかりそうかなぁ
いきなり解るもんじゃねぇ
継承元が仮想や動的ならオーヴァーライド。以上。
>>757 まあ、継承元がvirtualなのに、overrideを付けないクラスデザインは
するべきじゃないだろうしな
TBitmapのソースをなんとか探し出したんですが… public constructor Create; override; ←←← destructor Destroy; override; procedure Assign(Source: TPersistent); override; procedure Dormant; procedure FreeImage; ・ ・ のように、TBitmap自体のConstructorは仮想でも動的でもないみたいなんですが、 TBitmapの継承元のTGraphicのCreateがVirtualのようです。 こういう場合もoverride? うーん、ますます解らん、、
一晩でわかろうとするな
> TBitmapの継承元のTGraphicのCreateがVirtualのようです。 > こういう場合もoverride? 当然。
>>759 そこらへんを知りたくなったら、
塚越たんの名著、「Delphiオブジェクト指向プログラミング」を買って読むといいぞ。
一度絶版になったが、最近ようやく再販されたんだが、これはナイス。
>>762 >>759 ではないですが、その本を読めばDelphiだけでなく、
C++やJavaのOOPにも参考になりますか?
>>763 なるね。
C++とJAVAとC#とDelphiの、オブジェクト指向という屋台骨の部分は一緒だから、
どれかの言語でオブジェクト指向を習得(というか体得かな)すると、
他の言語の習得がめちゃくちゃ簡単になる。
あ、でも、今言ったうち、C++だけ、クラス変数が参照じゃなくて値だということに気づかないと泥沼にはまるけどね。
便乗して質問。 constructor Create; override; ↓ ↓ constructor Create(x, y:integer); override; みたいに引数取っ付けちゃったりしてもいいわけ?
それは overload。
この議論を見ていると、 コンストラクタをオーバーライドする理由をもう少し考える必要があると思うわけだ。 クラス参照についての理解が前提で、普通のメソッドのオーバーライドとはちょっと違う。
overloadすると、継承元のメソッドは実行されないんでそ?
コンストラクタはオーバーライドしないことがおおいなぁ。 コンポだったらたいていするけど。
reintroduce ってのはなんにつかうの?
文字列が有効なファイルパスであることを確かめるにはどうすればいいんでしょう
fileexists
自分でクラス作るときに、 コンストラクタでoverloadつけないといけないのは、 普通は、コンポーネントを作るときだけだよね。 Delphiのコンストラクタは、クラスメソッドだから。
>>765 同じ名前のメソッドを引数で判別するのがオーバーロード
継承元のメソッドを継承・追加したりすんのがオーバーライド
だと思ってる。違うやもしれない
>>776 簡単だよ
WM_DropFilesメッセージを捕まえて処理するだけ
下に例を書く
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
procedure WMDropFiles(Var Msg: TWMDropFiles); Message WM_DropFiles;
end;
implementation
uses
ShellAPI;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle,True); //Form1がD&D出来るように設定
end;
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
FileName: Array[0..MAX_PATH] of Char;
Begin
DragQueryFile(Msg.Drop, 0, FileName, SizeOf(FileName)); //D&Dされたファイル名を取得して
Edit1.Text := String(FileName); //Edit1に表示
DragFinish(Msg.Drop); //D&D処理で使用したリソースを解放
end;
>>778 ご丁寧にありがとうございます
最初の段落はどこに書けばいいのかさっぱりなんですが…
ちっとも簡単に感じないorz
ソースの上にあるだろ
>>778 みたいな親切な人、久しぶりに見た。
もしかしてキリストさん?
>>779 最初の段落ってimplementationの前か?
この部分はprocedure WMDropFiles(Var Msg: TWMDropFiles); Message WM_DropFiles以外は
フォームにコンポーネント置いたりイベントを設定するとDelphiが勝手に記述するから自前で書かなくてよい
むしろ書くとDelphiのお怒りを買う
Windows Vistaの価格はすべてオープンプライスとなっているが、発表された参考価格は以下のとおり。 ●通常版 Ultimate:48,800円 Vista Business:37,800円 Home Premium:29,800円 Home Basic:25,800円 いつからVistaなんだ? みなさん、Vista対策どうしてます?
> いつからVistaなんだ? 企業版は11月。 一般消費者向けは1月。 > みなさん、Vista対策どうしてます? 来年の夏以降。
> みなさん、Vista対策どうしてます? 一番の悩みはアイコンかも。 WPF もそうだけど、格好の良いデザイン無理。
発売してない以上、対策のしようがない
質問があります。Delphi6を使っています。 ClientSocketを使って、Webサーバの80ポートに接続し、HTMLを取得するのは出来たんですが、それがUTF-8と言うものみたいなんです。 これはどうすれば読める状態にできますか?
Utf8ToAnsi
Form1の中でしか使ってない自作のprocedureなんかもまとめて一箇所に宣言してるんだけど、 (publicでもprivateでもないところ、typeとprivateの間) コンパイルしたときに他のクラスから使われてないprocedureとかは最適化というやつで自動的にprivate扱いになるんだよね?ね?
790 :
デフォルトの名無しさん :2006/10/26(木) 18:03:05
>>787 に便乗です。IndyでYouTubeのページ取得をしようと思い、Button1とMemo1を配して
procedure TForm1.Button1Click(Sender: TObject);
var
HtmlSource : String;
DecodeSource : String;
begin
HtmlSource := IdHTTP1.Get('
http://www.youtube.com/watch?v=GuRZjwzg3go ');
DecodeSource := UTF8Decode(HtmlSource);
Memo1.Text := DecodeSource;
end;
こんなふうにやってみたのですが、ソースが表示されませんでした。
>>788 のようにUtf8ToAnsiでもできません。何か良い方法はありますでしょうか?
IdHTTP.Getってhtmlページ以外も取得できんの?
>>790 Utf8ToUnicodeの中でコケてる
malformed trail byte or out of range charってコメントあるところ
ナンデカナー
>>791 出来る。
只のHTTP GETメソッドだし。
794 :
792 :2006/10/26(木) 19:42:42
2文字前 1文字前 コケてる文字 1001 1111 1110 0011 0000 1010 1文字前が3バイトコードの先頭バイトなので本来ならコケてる所は 10XX XXXX にならないと いけない。それで「この文字列不正です」と判定されてる。 無理矢理変換を進めるとして、どうすりゃええんだろう。
795 :
790 :2006/10/26(木) 19:57:57
何がやりたいのかさっぱり見えないのだが・・・・
797 :
792 :2006/10/26(木) 20:32:27
>>795 まぁそんなかんじ。
おかしいところを無視するなりダミーで埋めるとかして強制的に最後まで変換
してしまえばよいとおもう。
質問者も解答者もこれじゃあ・・・・
言いたいことは最後までハッキリ言いましょう
>>789 コンパイルしたdcuのレベルじゃ他のクラスから参照されるかされないか分からないから
privateにはならないんじゃないの?
最適化ってリンクの段階でも効くんだろうか。
詳しい人よろ↓
なぜか「ノーマネーでフィニッシュです」が頭に思い浮かんだ
804 :
789 :2006/10/26(木) 23:50:49
publishedなのは知ってるんだけど、自動的にprivateになったりしないの? このままだとメモリの無駄使いしちゃう? 30個ぐらい何も考えないで追加しちゃったからprivateのとこに移動させる必要があるか1個ずつ判断して移動させるのが面倒で
ひどすぎ。published の部分は普通は IDE 専用。自分で入れるところではない。
コンパイラが勝手にスコープ変えたら大変。だいたい、それメモリの使用量と関係ないし
807 :
789 :2006/10/27(金) 00:40:14
どうもとんくす 吊って来ますね
スマートリンカの事か?
delphi使いはそんなことも知らないのか
ボタンのonClickでウィンドウサイズを変えるとき、Client付きで指定するのとそうでないのとでは、どっちがベター?
タイトルの高さ、メニューの高さ、ボーダスタイル等などによって 設計時と実行時でHeigthやWidthは変わることがある ClientHeight、ClientWidthは環境に関わらず常に一定 そのあたりを考慮し、状況に使い分けるのが良いかと
なるほど、じゃClient付きにしよ♪
数値で指定するならPixelsPerInchも考えような
('A`)マンドクセ
DelphiでUTF16は使えますか?
UTF16?Unicodeってことでいいのかな? Delphiは使えるがVCLは使えない VCLでUnicodeと使いたい場合は Borland製じゃないけどUnicode対応のVCLセットがあるから それを使うとべし
WideStringがUTF16 でもUCS4はサポートしてない
> UTF16?Unicodeってことでいいのかな? UTF8は色々あるみたいですが UTF16はどうなのだろうと思って質問しました。 UTF16でないとUCS4は使えないと聞いたので。 騙されてます?
WideStringは、UCS2で、 UCS2ってのは、UTF-16のうち、UCS-4でサポートされた文字を表すサロゲートペアが無いものと考えて良いから、 UCS4をサポートしないWindows上では、 WideStringは、UTF-16と考えても大抵問題ない。
WindowsでUnicodeと言えばUTF-16を指す UCS4はWindowsじゃ使えない(はず)
823 :
816 :2006/10/27(金) 15:09:59
投稿が前後してしまいました。
>>819 > WideStringがUTF16
WideString=UTF8だと思ってました。
UTF8はStringですか?
>>821 > UCS4をサポートしないWindows
知りませんでした。
Vistaではどうなるのでしょう。
>>822 > WindowsでUnicodeと言えばUTF-16を指す
ということは
WindowsではUTF8は使われていないという事ですか?
UTF8用の型としてUTF8Stringという型が用意されている 実際はUTF8もAnsiStringも1文字8ビットで扱っているので情報量は同じ 内部的にもtype UTF8String = type stringと定義されている ただし、1文字を表す情報量は同じでも表現の仕方が異なるので AnsiString⇔UTF8Stringの変換を行うには UTF8ToAnsi、AnsiToUTF8といった関数で変換する必要がある 直接代入してもコンパイルエラーは起きないがDelphiの天罰が下る
>WindowsではUTF8は使われていないという事ですか? APIで「ユニコード文字列を渡してください」とある場合はUTF16の文字列を渡すということ
828 :
816 :2006/10/27(金) 15:24:00
頭悪くてすみません。 WideString=UTF16なのでUTF8も扱える。 UTF8=UTF8Stringでも表現できる。 WideStringはUCS2しかサポートしてない。 OSが対応していないので問題ない。 ということですか?
>>828 おまいさんは、UTF-16とUTF-8の何が違うのかとかまず勉強すること
Delphiと関係ねーところで根本的にわかってない
>>829 すみません。出直してきます。
またよろしくお願いします。
お礼を忘れてました。 ありがとうございました。
UTF8の文字列をWideStringに放り込むとしても、どのみちUTF8をデコードしないと
いけない。だから
>>792 みたいな問題がでてくるわけだ。
>>828 間違っちゃいない
「○○が××だからUTF16形式で△△したい」とか
具体例出してくれないと話が堂々巡りになってしまう
てっとり早く問題があるならそれ挙げて回答を貰い
合わせてUnicodeについての理解を深めるべき
まあ、きつく言い過ぎたが UTF-16ってのは、UCS-2の範囲内の文字を全て2バイトであらわすんよ UCS-4の範囲はサロゲートペアってのを使って4バイトであらわすんだけど、 そもそもWindowsでは、UCS-4に対応していないから関係ない。 で、UTF-8は、UCS-2を含めたUCS-4の文字を1〜3バイトの可変バイトで表すわけね。 そんなわけで、WideStringがUTF-16で、UTF-8も扱えるって日本語は根本的におかしい。 Windowsで動くDelphiのWideStringはUCS2なので、Windows上でUTF-8で表せる文字を全て使える、というのが正しい。
あ、UTF8をWideStringで扱うときは代入する前に 当然デコードしないとダメ
837 :
816 :2006/10/27(金) 15:42:08
皆さんありがとうございます。
(X) WideString=UTF16なのでUTF8も扱える。
(O) WideString=UTF16。 UTF8=UTF8Stringを使うか、デコードしてUTF16に入れて使う。
ということですね。
>>833 > 具体例出してくれないと話が堂々巡りになってしまう
AnsiToUTF8 という関数はあるのに
UTF16は探しても無いという疑問でした。
UTF16はWideStringという単語になっているという事ですね。
ListBoxでStyleをlbOwnerDrawVariableにした時、マウスホイールでスクロールした場合に 描画がヘンテコなことになるのだけど、これを回避するにはどうすればよかですか?
841 :
840 :2006/10/27(金) 17:37:24
フォームにListBoxを1つ配置。 マウスホイールもしくはスクロールバー右クリック”ここにスクロール”で発生。 アイテム高さ固定(lbOwnerDrawFixed)にすると発生しない。 Windowsの設定でメニューのアニメーションをOFFにすると発生しない。 procedure TForm1.FormCreate(Sender: TObject); var I: Integer; begin ListBox1.Style := lbOwnerDrawVariable; for I := 0 to 20 do ListBox1.AddItem(IntToStr(I), nil); end; procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin TListBox(Control).Canvas.FillRect(Rect); DrawText(TListBox(Control).Canvas.Handle, PChar(ListBox1.Items[Index]), -1, Rect, 0); InflateRect(Rect, 0, -3); Rect.Left := 20; Rect.Right := Rect.Left + (Index * 3); TListBox(Control).Canvas.Brush.Color := clRed; TListBox(Control).Canvas.FillRect(Rect); end; procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer); begin Height := 16; end;
ToolButtonのStyleをDropDownにするとボタンと右の▼が区切られて表示されるけど、これをひとつのボタンとして表示することはできますか?
それって、どういう挙動をするの?
ボタンの▼じゃない部分を押しても、メニューが表示されるようにしたいんですが
DropDownMenu プロパティにメニューを割り当てる
いやそうしてるんですけど、ドロップメニューであることを伝えたいのでw アイコンに書くしかないかなぁ
初めてデータベースをいじってみますた(TTable)。 これって、2つ以上のTableで1つの.DBに同時につないで操作したら裏で誤作動とか起こったりしないんですか?
>>837 こうやって無能が増えていくんだね
解答者も無能だからしかたないね
>>849 こういう所で優越感に浸らないとやってけないもん?
いるよね、こういう人。
いつものリストラVB厨だ。
>>848 2人以上が同時につなぐと誤作動を起こすDBがあるか?
>2人以上が同時につなぐと誤作動を起こすDBがあるか? いじり始めたばかりの奴がそこまで使って知ってると思うか? お前も無能回答者認定な。
無能だらけ
VBなら無能でも使えるのにね
無能でも使える物は、無能だけが使いたがる。
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、 他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 無能が優しくコメントを返しますが、 お礼はDelphi(の布教と初心者の救済をお願いします。
他アプリ上にある UpDown コントロールを操作するには、どうすればいいのでしょうか? UDM_GETPOS で現在の数字を取ってから、UDM_SETPOS してやればいいのかなとやってみたのですが、 数字は取ってこれるものの、変化がありませんでした。SetPos (Hoge: HWND) Hoge := FindWindowEx(hParent, 0, 'msctls_updown32', nil); ComPos := LOWORD(SendMessage(Hoge, UDM_GETPOS, 0, 0)); Inc(ComPos); SendMessage(Hoge, UDM_SETPOS, 0, ComPos);
var Msg: TMessage; begin 〜〜〜 SendMessage(Hoge,UDM_SETPOS,0,compos); Msg.Msg := WM_VSCROLL; Msg.LParam := Hoge; Dispatch(Msg); end;
>2人以上が同時につなぐと誤作動を起こすDBがあるか? 確かにいじり始めのもんに体験的に知る機会なんかないわなw〜 と、ブレイク中にプリン食べながらカキコ
質問は無能でも答えられるものに限定します
じゃ、何のために DB 使うのかと
866 :
848 :2006/10/29(日) 00:36:43
別にいまんとこ目的ないす。いじってみただけ。
867 :
デフォルトの名無しさん :2006/10/29(日) 03:28:49
お願いします。 実行中に、任意のコンポーネントをアクティブにする(Edit1にキャレットをもっていく、など) にはどうすればよいですか?
edit1.setfocus;
869 :
867 :2006/10/29(日) 03:36:21
>>868 さん、素早い回答、どうもありがとうございます。
871 :
デフォルトの名無しさん :2006/10/29(日) 15:40:35
前から気になってたんだがなんでStuffStringって使われないんだ? 俺はTabWidthの無いPageControlとかでよく使うんだが、なんか悪い点でもあるのか?
>>870 どの行で出たのかくらいは書いてくださいお願いします
>>870 procedure TForm1.Button1Click(Sender: TObject);
var
ret: Boolean;
// ecode: Integer;
ECode: DWORD; //integerじゃなくてDWORD
StartupInfo: TStartupInfo;
にしたら動いたよ。
Delphi 的には Cardinal だな。
質問させてください。 ShortString型のクラス名を元にクラスをつくることってできませんか? たとえば、 s = 'TStringList'だと、 t := TStringList.Create; になって、 s = 'TList'だと、 t := TList.Create; みたいにしたいのですが。
RegisterClass/FindClass 但し、TPersistent を継承したもののみ
>>875 あと、作るのはクラスじゃなくてオブジェクトな
878 :
876 :2006/10/29(日) 22:29:27
ありがとうございました。 その二つを使ったらできました。
TBitmapを継承して、TEffectBMP = class(TBitmap)をつくり、さらにこれ(TEffectBMP)に機能を追加してTExBMP = class(TEffectBMP)をつくりました。 そして仮に、 FEffectBMP := FBitmap;とすると「互換性がありません」とコンパイラにはじかれてしまいます。 ところが、 FEffectBMP.Assign(FBitmap); とするとコンパイルが通ってしまいます。.Assign(Source: TPersistent)となっているので、自分の考えではTBitmap〜TExBitmapがTPersistentを継承してるから相互にAssign可能なのか?コンパイル通ってしまうのか? と思ってるんですが、これは誤作動とかの心配はないんでしょうか? ちなみにC++やJavaの経験はありません。
時刻を表す文字列hh:mm:ssでhhが24以上になることもある文字列をTDatetime型に変換したいしたいのですが、 どのようにしたらいいでしょうか。 hh, mm, ssは一桁代の時は1文字です。例: 36時間1分2秒なら36:1:2となっています
その場合、TEffectBMP型変数に代入できるのは TEffectBMP か TExBMPのインスタンス。 Assignは TPersistentのインスタンスならなんでも渡せる。 それをどう解釈するかは 受け取り側の Assign か 渡される側の AssignTo の実装による。 どちらも override 可能。 今回は TEffectBMP.Assign を override して挙動を変えることが可能。
>>880 hhが24以上なら1日増やしたいわけ?
VarToDateTimeで希望の動作をしないなら、自分で分解する。
TStringList.CommaTextが使えるかも。
>その場合、TEffectBMP型変数に代入できるのは TEffectBMP か TExBMPのインスタンス。 やってみました。下位なら入るんですね。 Assign便利だな〜 ありがとうございます。
:=で入らんもんがAssignで素直に入ったらアレッって思うわな。 初心者なら。
>>882 ありがとうございました。
VartoDateTimeは24時間以上はエラーになってしまいましたが、TStringListで簡単に分解ができました。
propertyへの代入でAssignが呼び出される場合もあるから厄介。
GLDPNGは、zlibのバージョンが古く脆弱性に対応していないとのことで、 代わりを探しています。 みなさんは、PNGの読み込みは何をお使いですか?
>>887 俺はPNGImage
BCBにもそのまま使えるし
>>887 >>888 の言うとおりPNGImageが一番手っ取り早い。
次点でimgctl.dll。
ただ、これらは、確か64bitカラーとかのPNGの書き出しができないから、それが必要な場合は、libpng様のお世話にならなくちゃいけないね。
めんどいけど。
TMyRec=record hoge1: integer; hoge2: string; end; みたいなのを宣言して、これをクラスの外部からも出し入れしたいからPublic欄に TMyClass=class private … pubulic FMyRec:TMyRec; end; って書いたんだけど、ベテランの人ならこれはプロパティにすると思う。 Publicに書いたら、何か不都合なの?実際どうちがうのか教えてほしい。
オブジェクト指向がどうのこうのとえろい人達が怒り出す
893 :
891 :2006/10/30(月) 20:14:55
>がどうのこうのとえろい人達が怒り出す これだけ? プロパティってメソッド介して入れたり出したりするんでそ? ダイレクトにブチ込んだほうが軽くてすむように思えるんだけどな
TMyClassを継承してゴニョゴニョするつもりが無いならプロパティにしなくてもいいよ。 構造体をプロパティにすると代入するときにちょっと不便だし。
895 :
891 :2006/10/30(月) 20:19:17
>代入するときにちょっと不便だし。 どう不便なの?
>>891 実装をむき出しにすると、外部との結合が強くなって改良などの自由度が狭まる事がある。
例えば、何かの事情で管理方法をレコードから単独の変数に変えたくなっても、
アクセッサを介していればそこだけ書き換えて修正できる。
TMyClass=class
private
Fhoge1: integer; Fhoge2: string;
pubulic
property MyRec: TMyRec read GetMyRec;
end;
function TMyClass.GetMyrec: TMyRec;
begin Result.hoge1 := FHoge1; Result.hoge2 := FHoge2; end;
TMyClass=class
private
FMyRec: TMyRec;
pubulic
property MyRec: TMyRec read GetMyRec write SetMyRec;
end;
function TMyClass.GetMyrec: TMyRec;
begin Result := FMyRec; end;
GetMyRecを書き換えるだけで、データの保持方法を変える事ができる。これが実装の隠蔽。
この例なら後からどうにでもなるけど、ソースの規模が大きいとこういった保守性が馬鹿にならない。
>>895 レコードの要素を一個一個代入すると、要素ごとに毎回アクセッサが呼ばれてうざい。
>>891 DelphiじゃなくてC++の例だけど、
> メンバ変数をpublicにする
> 深刻度:★★★ - 重い深刻度
> [症状]
> 直接メンバ変数をいじられることでプログラムの挙動がおかしくなったり,
> クラスのバグ取りやバージョンアップがしにくくなります。
> [原因]
> メンバ変数をpublicにすると弊害が起きることをわかっていない。というか
> オブジェクト指向の基本理念をわかっていないのです。
> [対策/予防]
> 勉強しなさい。:-)
> [例外]
> なし。
> [備考]
> 残念ながら,これはオブジェクト指向の「理念」をわかっていないゆえに
> 起きる現象です。というか,わかっていれば,最初からメンバ変数を
> publicにするという愚かな行為はしません。
C MAGAZINE - プログラミングの禁じ手Web版 C++編 - 隠蔽とスコープに関するパターン
http://www.cmagazine.jp/src/kinjite/cpp/scope.html#index6
>>895 property MyRec: TMyRec;
とした場合
MyClass1.MyRec.hoge1 := 1;
といった代入はできない。
すんません超初心者なのですが、 通常TEditなどのEditコントロール上でマウス右クリックすると、「元に戻す(U)」「切り取り(T)」「コピー(C)」 などのPopupメニューがデフォルトで表示されますが、そのメニューの一番下に追加する形で「ぬるぽ(G)」など 自分で定義したメニューアイテムを付加することはできるでしょうか? 完全に置き換えることはできたのですが、追加がさっぱり・・・ ダメなら切り取りなども自分で定義してやるしかないんだろうけど。
切り取りとかコピーなんてのはアクションリスト使えばコードも書かないで実装できる だがログくらいよめと言いたい
>>900 その解はまさに正しいのだが微妙に
>>899 の要求と異なる気がする。
とは言えおれも正しく答えられないが。
ShellExtention使うような
902 :
891 :2006/10/30(月) 22:17:43
>外部との結合が強くなって ははぁ、なるほど。 しかし、クラスを使いまわすほどのベテじゃないんだよな(汗 みなさん、ありがと。
903 :
891 :2006/10/30(月) 22:22:42
しぶといようだけど、、 > 直接メンバ変数をいじられることでプログラムの挙動がおかしくなったり, 自分で使うだけなら問題ないね(^^;
>>903 後で見る事が無ければ問題なし
後で見て後悔する事間違いなし
俺様仕様でOKなら、こんなところでグダグダしないでパパッとコーディング汁。
TBitmapを継承してピクセルにアクセス->変化をさせるっていうのにチャレンジしてるけど、ダブルバッファみたく、 画面の更新停止→ピクセルを変化させる→画面をいっきに更新。 ってのをやりたいんですが、何か手がありませんか??
説明不足でゴメンね MonochroBMP=class(TBitmap) public procedure CopyMonochroData(var BMP: TBitmap); この手続のBMPに任意のBitmapを突っ込むとMonoChroBMPがもってる画像が白黒になったものがコピーされて出てくる。 ってのを作ってみてるんだけど、なんだかチラつくから… procedure CopyMonochroData(var BMP: TBitmap); begin BMP.Assign(MonochroBMPが持っている画像) とやって、AssignされたBMPに手を加えようとしてるけど、 BMPにMonochroBMPのデータを渡す方法もわからないし、計画自体がまちがってるのかな?とも思ってしまう。 下手クソでゴメンよ…
実行中はタスクトレイにアイコンを表示するアプリを作っています。 が、強制終了させるとタスクトレイにアイコンが残ってしまいます。 これを消す方法はあるでしょうか?(マウスでなぞる以外の方法で) また、強制終了を検出する方法はあるのでしょうか?
>>910 強制終了を検出するためにソフトを常駐させ、さらにその強制終了を検出するためにソフトを常駐させ、
さらにその強制終了を検出するためのソフトの強制終了を検出するためのソフトを常駐させ・・・ry
>>909 フォームの DoubleBuffered を TRUE じゃいかんのか?
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、 他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Delphi使いが優しくコメントを返しますが、 お礼はDelphiの布教と初心者の救済をお願いします。
>procedure CopyMonochroData(var BMP: TBitmap); >begin >BMP.Assign(MonochroBMPが持っている画像) で、function CopyMonochroData: TBitmap; にして、モノクロにし終わったものを受けようかとおもってる(´・ω・`) BMPにMonochroBMPのデータを渡す方法もわからないし… わけあって、procedureでやりたかったんだけどね。
915 :
910 :2006/10/31(火) 00:39:55
>>911 まじですか?w 何個くらい常駐させれば・・・なんて冗談はさておき、
アプリが強制終了される時ってどういう風になってるんですかね。
何か特殊なメッセージでも飛んでくるんでしょうか?
それともいきなりメモリから排除されるんでしょうか?
クラスをつくって、Freeできるようになったんですが、Freeし忘れるとメモリリークというのが起きるのを知りました。 メモリリークっていうのはどうやって調べるんですか? 今はタスクマネージャの「パフォーマンス」のメモリ使用量のところをじっと見ています。
>>903 どうせプロパティにするだけでは意味無いしな。
property MyRec:TMyrec read FMyRec write FMyRec;
とか、
procedure TMyClass.SetMyRec(Value: TMyRec);
begin
FMyRec := Value:
end;
とかw
919 :
デフォルトの名無しさん :2006/10/31(火) 03:21:43
ラジオボタンで、アイテム内にチェックの付かない 単なる見出しの行を加えることって可能ですか? ┌───┐ │○東京│ │◎埼玉│ │○千葉│ └───┘ これを、 ┌───┐ │[都] │ │○東京│ │[県] │ │◎埼玉│ │○千葉│ └───┘ みたいにしたいのですが…。
>>919 できない
GroupBoxにそれぞれ置いていくしかない
panel使えよ
922 :
919 :2006/10/31(火) 05:01:09
ショボイけどソフトつくって、InstallShieldExpressでインストーラにしたてました。 で、試しにインストールしてみたけど、アンインストーラがついていません。 市販のソフトなんかにはついてますが、これはどうやってつけるんですか? Delphi アンインストーラー 作り方なんかでググってみたけど、これといったサイトが見つかりません。 Delphiでは付けられないんでしょうか?
アンインストーラ、俺も知りたひ(;´Д`)ハァハァ
>>915 もうこれ以上どうにもならないから強制終了するんであって
まだ何かありようがあるならそもそも強制終了などしないのでは?
>>923 >>924 最近は使ってないのであれだけど昔使ったときは
何もしなくてもInstallShieldExpressもアンインストールもできたような・・・・
高機能で無料のInno Setupに乗り換えるとかはどう?
>高機能で無料のInno Setupに乗り換えるとかはどう? 選択肢の一つだと思うけど、データベースとか使ってたらアウトじゃね?
アンインストーラの資料ってないね。 みんなどうやってたのかな?
>>928 みんな普通にできてるから困ってないだけでは?
>>929 BDEなんぞが入ってない環境にインスコするときはどうすんかってことじゃね?
InstallShieldExpressなら確か一緒にインスコするように設定できなかったけ。
>>930 読む人の助けにもならず、お前の性格の悪さだけが臭うレスだな。
朝から気分悪い。
>>931 Innoだろうが他のセットアップソフトだろうがBDEインストールできるが・・・・
無知なお前が混乱させといて人のせいにすんなよ。師ね。
事故解決しました。 それにBDEの質問なんてしてません。
>>860 遅れてすみません。Dispatch を加えてみたのですが、動作しませんでした。
うーん、GetPos やらをしなくてもフォーカスを写して、
キーを押してやるだけでよかったりするのでしょうか。
ここの連中は関係ないとこでしか盛り上がれないからほっといてやれ あと解決したならそれを書け
Inno Setupです
このスレッドは何がなんだか分からないスレッドです。 お礼は.NETの布教をお願いします。
あんな糞重いものは布教する気にならん あれのせいでBDSまで重くなってみんな迷惑してる
Delphi7インストールしているのですが、最新版の Turbo Delphi(Win32)をインストールするとDelphi7は消えるのでしょうか?
消えない
>>940 消えないけど、*.dprとかの関連付けが上書きされてしまうかも。
>>940 >>943 Turboインスコのときに拡張子ごとに関連づけをどうするか聞いてくるので、上書きしたくないものを外してあげればよいです。
インスコウィザードで「はい」を連打すると見逃すかもしれないので、画面をよく見ながら進めませう。
Del7のコードエディタの文字列検索でコメント以外を対象にしたいの ですが、方法はありますでしょうか。
947 :
デフォルトの名無しさん :2006/10/31(火) 16:10:28
batファイルで内容を *** /install と記入しているんですが、これをDelphiで書くとどのようになるのでしょうか? 現在は、exeからbatファイルを起動するようにして処理していますが exeから***を起動したいので・・・ よろしくお願いします。
>>947 uses に shellapi追加。
ShellExecute(0, nil, '***', '/install', nil, SW_SHOWNORMAL);
var Si: TStartupInfo; Pi: TProcessInformation; begin FillChar(Si, Sizeof(TStartupInfo), 0); FillChar(Pi, Sizeof(TProcessInformation), 0); GetStartupInfo(Si); CreateProcess(nil, '***' /install', nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, SI, PI); end;
950 :
デフォルトの名無しさん :2006/10/31(火) 17:14:35
故意にいらだたせること書いている奴いないか?
ビミョーなこと書いてるが
>>946 とか。
952 :
 ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ :2006/10/31(火) 18:07:36
∧_∧ ( ´・ω・`) ∧_∧ / \ ( )何言ってんだこいつ .__| | .| |_ / ヽ ||\  ̄ ̄ ̄ ̄ / .| | | ||\..∧_∧ (⌒\|__./ ./ ||. ( ) ~\_____ノ| ∧_∧ / ヽ 死ねよ \| ( ) | ヽ \/ ヽ. 早く病院に逝ってこいよ | |ヽ、二⌒) / .| | | .| ヽ \∧_∧ (⌒\|__./ /
残りカス同士仲良くしなくちゃ・・・・ね!
Delphi 6 PersonalでのCOMオブジェクトの操作について分かりやすく書かれたサイトってありませんか? タスクトレイに常駐してiTunesを操作するプログラムでも手始めに作ってみようと思って、、、
COMオブジェクトなんて結局はクラスオブジェクトと大して変わらん。
Delphi 5 Enterprizeについてくるコード支援機能はどのコンポーネントを使用していいか分かりません。 TStringListやTComboBoxを使っても出来ませんでした。 どなたかお願いします。
Enterprize版ならWinSightが付いている。 それでどんなクラスが使われているか調べたらいい。
>>956 ちょうど今、僕が作成中のソフトにコード支援機能実装してるんでこないだ調べた
TCustomListBox から派生して作ってると思う
Delphiの動き丸々真似るのは面倒くさいんで簡易版て感じになったけど一応出来たよ
留意点としては
Formに貼り付けると画面からはみ出した部分が描画されないので別Windowにする
SynEditのソースなりを見ればいいのに
ちなみにLazarusのIDEのソースはもっと参考になるよ
VBのIDEのソースはもっと参考になるよ
963 :
デフォルトの名無しさん :2006/11/01(水) 19:11:06
>>961 有用な情報をいつもありがとう!!!マジで助かります!!
みんなでVBにいこうぜ!
そうだそうだ!
VBなら次スレなんて不要なのにね
過去スレはdelwiki避難所のまとめだけ貼れば、後はいらないよな
Wiki が突然死したら困るな。 Part 20 以前はWiki に任せるというのは、どうよ?
テンプレ作成中に失礼します。 BDS2006Proで左右のツールパレットやオブジェクトインスペクタの幅を変更しても 再度起動すると元の位置に戻ってしまいます。 これをきちんと記憶させるにはどうすればいいでしょうか?
>>972 画面右上にある、現在のデスクトップ設定を保存をクリック。
Default Layout の所に好きな名前を入力しても良い。
>>972 ツールバーの右端の方の「Default Layout」の隣のアイコン(現在のデスクトップ設定を保存)で
保存しましょう。
ネット上の更新時刻データを受信してDBに格納するプログラムを作っているのですが、 最初に受信データが空でないことを確認してからDBに入れる処理をしているのに、 1週間に1回ぐらいなぜか空白が渡されるみたいでエラーとなってしまいます。 エラーの原因を見つけるのはもう地道にやろうと思っているのですが、 とりあえずこのエラーが出た場合、5分経ってもエラー画面の ''は時刻ではありません。が表示されっぱなしだった場合、この画面を自動的に 閉じる方法は無いでしょうか。
そのエラーが出てるウィンドウを探せばいいFindWindowでもEnumWindowsでも あったらボタンにフォーカスがあたってるからスペースでも押させればいいんじゃない?
エラーが発生する箇所(おそらくStrToDateTimeの部分)を try〜exceptで囲めばダイアログは出なくなる 後は、except節の中でエラー時処理を書けばよい
問いに対する答えではないけど 空ではないが時刻にできない文字列を取得してるのでは?
画面上の指定した位置の色を採取したいのですが どのようにすればよいのでしょうか? フォトショップ等の画像編集ソフトにある スポイドツールのようなものをイメージしているのですが・・・。 どうぞよろしくお願いします。
>>981 ありがとうございます。
TImage上の色の取得。
画面のキャプチャ。
がわかりました。
自分のアプリを抜けたところに有る、マウス直下の色を採取したいのですが
どのようにしてマウスを追跡?するのでしょうか?
またデスクトップでマウスが移動したときに起こるイベントのようなものはあるのでしょうか?
983 :
980 :2006/11/02(木) 15:16:57
マウス直下の色はタイマーを使用して そのつど画面をキャプチャしその位置の色を読み取る事で成功しました。 画面の色を採取したいときに、その場所までマウスを移動ていますが、 どのウインドウ上でもマウスのポインタの表示を固定したいのですが どのようにすればよいのでしょうか? 色を採取する時のマウスのポインタは+(選択領域)を使用したいと思います。 以上、よろしくお願いします。
OpenOfficeのBaseをDelphiから使えますか?
>>983 Delphi マウスの位置取得 の検索結果のうち 日本語のページ 約 1,120 件
ググればすぐ答えは出てくる
ある程度わかっているのだから検索くらいしよう
986 :
980 :2006/11/02(木) 16:19:28
>>985 ありがとうございます。
先ほどその件については解決したのですが、
その条件で検索したところ、さらにいい方法がみつかりました。
(bitbltからGetPixelでマウス直下のRGBを取得するようにしました)
もしよければ
>>983 の質問にも答えていただけないでしょうか?
先ほどから検索しているのですが、よい方法がみつかりません。
以上、よろしくお願いします。
Screen.Cursor := crCross; try //処理 finally Screen.Cursor := crDefault; end;
988 :
980 :2006/11/02(木) 16:32:11
>>987 そんなに簡単だったのか・・・。
ありがとうございました。
989 :
984 :2006/11/02(木) 16:32:28
Baseの実体はJava製のHSQLDBというものだということまでは分かりました。 JREを入れずに(コンパイルして?)Delphiから使えたら便利なのですけど無理なんですかねぇ。
990 :
980 :2006/11/02(木) 16:34:35
>>987 と、思ったら、違ってました。
自アプリのウインドウ内ではカーソルの表示が変わるのですが
外に出てしまうと効果が持続されません。
おわかりの方がいらっしゃいましたら、引き続きお願いしたします。
SetCaptureでいけるんじゃねぇの?
992 :
デフォルトの名無しさん :2006/11/02(木) 17:20:26
>>990 それは記述するところが悪いんだなたぶん
993 :
980 :2006/11/02(木) 18:04:34
>>991 よくわかりません。
詳しくお願いします。
>>992 場所がわるい?
どういう意味でしょうか?
モツ煮込みカレー食いたくなってきた…(*´д`*)
997 :
デフォルトの名無しさん :2006/11/03(金) 03:09:00
ハ,,ハ ('(゚∀゚∩_ おいらをどこかのスレに送って! /ヽ 〈/\ お別れの時にはお土産を持たせてね! /| ̄ ̄ ̄|.\/ | .モツ煮..|/  ̄ ̄ ̄
998 :
デフォルトの名無しさん :2006/11/03(金) 03:10:53
∧ /´。 `ーァ モグモグ (( { 々,,゚l´ハ,__ / o ( :;;' ハ / ( /| ̄ ̄ ̄|.\/ U^∪ | .モツ煮..|/  ̄ ̄ ̄
999 :
デフォルトの名無しさん :2006/11/03(金) 03:13:15
┌───────────────────┐ │┌─────────────────┐│ |│ || || || || ,..-──- 、 || || /. : : : : : : : : : \. || || /.: : : : : : : : : : : : : : ヽ || ||,!::: : : :,-…-…-ミ: : : : :', ∩___∩. || ||{:: : : : :i '⌒' '⌒' i: : : : :} / ヽ. || ||{.:: : : : | ェェ ェェ |: : : : :}/ ● ● ヽ. || || { : : : :| ,.、 |:: : : :;!; (_●_) ミ|| || ヾ: : :i r‐-ニ-┐ | : : :ノ:彡 |∪| 、 || || ゞイ! ヽ 二゙ノ イゞ‐′/ __ヽノ /´>|| |│ /\` ー一'´丿 \ (___) | (.|| || /\ \___/ /` | | || |└─────────────────┘│ | | | OCT 21 2005 | | | | 親 友 と | | | | 秋の表にて | | | | | └───────────────────┘
1000 :
デフォルトの名無しさん :2006/11/03(金) 03:14:27
日テレはルパンにひどいことをしたよね(´・ω・`)
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。