1 名前:デフォルトの名無しさん [2009/02/22(日) 22:10:29 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その48 pc11.2ch.net/test/read.cgi/tech/1225641040/ <過去スレ> DelWiki避難所(Delphi 関連の過去スレッド) delwiki.info/?%E3%83%AA%E3%83%B3%E3%82%AF%2F%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%2FDelphi%20%E9%96%A2%E9%80%A3%E3%81%AE%E9%81%8E%E5%8E%BB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
175 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 23:08:33 ] はいはい破綻した破綻した ところで Extend Delphi Components Without the Need to Install in the IDE - Delphi Interceptor Classes ttp://delphi.about.com/od/delphitips2009/qt/interceptor.htm こんな手法はどうよ?
176 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 23:37:33 ] それTMemoでCtrl+A押した時に全選択とかの時にしか使ったことねーな
177 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 01:25:50 ] えーと Delphi7Lite ってキーワードで調べてみなさい
178 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 04:41:13 ] >>177 違法なもの勧めてんじゃねーよ厨房
179 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:30:50 ] >>175 日本でもちょっと前に紹介されてるね ttp://twc.xrea.jp/20080116/ 知ってる人は普通にやってるテクニックだとは思うけど
180 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2009/03/28(土) 00:54:36 ] すばらしいテクですな。
181 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 01:03:05 ] 〜Exと拡張していたコンポをそれでリプレースしたい誘惑に駆られるな・・・ フサは日常的に置き換えちゃったりしてる?
182 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2009/03/28(土) 11:00:35 ] 時々。 コンポインストールは最近は使わない。 複数のDelphiバージョンつかっていたりして 面倒だし。 コンポインストールしないほうが楽かと。
183 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 11:08:13 ] それじゃ Delphi 使う意味何所にあるのかしら。
184 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 11:16:56 ] コンポインストールするとIDE重くなるしな
185 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 11:20:50 ] インストールするけど使わなきゃ起動時間にも影響でないよ。 使いたいときに、プロジェクトオプションで有効にするだけですむ
186 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 12:05:01 ] パレットにロードする時間が増えるから影響がないことはないっしょ
187 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 16:05:47 ] それで遅くなるような PC / Video カードなら窓から投げ捨てな
188 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 17:12:00 ] 俺が拾ってやるから
189 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:12:03 ] IDEとコンポーネントが癒着しすぎてるのは確かだな。 プロジェクトごとにインストール出来るような仕組みが欲しい所。 現状一応チェックボックスで選べるようになってるけどもうちょっと進めて。
190 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:02:08 ] パッケージ化しなくても、プロジェクト内のソースファイルからプロジェクト限定でパレットに登録できるようになればなぁ
191 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 20:10:16 ] プロジェクト全体で定数を共有したいんだが方法ありますか?
192 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 20:33:18 ] uAppCommon.pas をusesしてるな
193 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:07:30 ] おれもそんな感じ
194 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 13:20:34 ] ファイルから読み込みたいお年頃
195 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 15:52:23 ] 2つ質問したいことがあります。 ・Indyについて質問 homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm このサイトの通りにIndyをインストールしようとしたのですが、 「開くメニューから読み込んで以下の順番でインストールします」 と書いてあるのですが、インストールとは何をすればいいのでしょうか? 一応コンパイルかと思い、順番にコンパイルしてみたのですが、画像のようにIndyのアイコンがでてきません。 ・プログレスバーについて質問 ウェブブラウザを作っているのですが、プログレスバーの記述の仕方がわかりません。 IEのようにページを表示してる最中に進度をプログレスバーにしたいのですがどのように記述すればいいのでしょうか。 WindowsXP SP3 Delphi6 Personal お願いします。
196 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 18:37:31 ] ttp://d.hatena.ne.jp/dayflower/20070926/1190787926
197 名前: ◆XcB18Bks.Y mailto:sage [2009/04/02(木) 19:19:30 ] 最近全然書き込みがないなぁと思ったら板移転していたのですね。 (お気に入りからだと移転に気づかない罠でした)
198 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 20:36:55 ] マウスがフォームから出たらフラグを立てるというのはどうすればいいんでしょうか OnMouseMoveではフォーム上でしかイベントが起きませんし
199 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:22:13 ] CM_MOUSEENTER CM_MOUSELEAVE メッセージが飛ぶからそれを捕まえる。 Delphi CM_MOUSEENTER で検索するとサンプルが出てくるよ。
200 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:38:03 ] 回答ありがとうございます さっきまさにその方法で解決した所だったんですが今度はフォームの外でマウスボタンを放したイベントをキャッチできないか悩み中です やりたいことは、えーとお絵かきソフトの消しゴムみたいな物で、クリック中に発動 操作中にカーソルがフォームの外に出てまた戻ってきてもボタンを押したままならそのまま作業できるが、 ボタンをどこかで離したら、無効になる というものです 乱暴に操作するとカーソルがフォームの外に出ちゃう事もあると思うんですがそれでいちいちボタンを押しなおすのが面倒だと思うので
201 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 22:04:07 ] MouseCaptureでできますた スレ汚しすみませn
202 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 22:45:28 ] delphi自体のツールバーでも使われてるようなアイコンって、何処にありますか? ネットで検索しててdelphiインストール時に一緒にインストールされると見たのですが、場所が分からずImageListに追加出来ません。 使用しているのはDelphi6です。
203 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 22:52:19 ] C:\Program Files\Common Files\Borland Shared\Images\Buttons にあるけど古臭すぎて使い物にならない。 Visual C# Express入れるとProgram Files\Common Files\MSなんちゃら にそこそこモダンなビットマップが詰まってるよ。
204 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:30:58 ] >>203 それってVC以外でコンパイルする物に使って良いの?
205 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:44:59 ] >>203 入れてみましたが見当たりませんでした。。。 「Program Files\Common Files\MSなんちゃら」というフォルダが見当たりません。 Pro版にはzipでアイコンが固めてあるという情報をグーグル先生が教えてくれたので、そっちを当たってみます。
206 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:51:17 ] \Common7\VS2005ImageLibrary\VS2005ImageLibrary.zip でそ
207 名前:デフォルトの名無しさん [2009/04/03(金) 03:05:58 ] SQLiteのラッパー、Simple Delphi Wrapperについての質問です。 ttp://www.itwriting.com/blog/a-simple-delphi-wrapper-for-sqlite-3 下記の様にして、テーブルのインスタンスを作るとします。 sqlTb := sqlDb.GetTable( 'SELECT * FROM hoge' ); この時、sqlTbのテーブルにある「カラム(列)の数」が知りたいのですが、 どうすればいいでしょうか? ちなみにsqlTbには、まんまColCountというプロパティがあるのですが、 何故か、値は常に'0'です。 Delphi 2009です。よろしくお願いします。
208 名前:デフォルトの名無しさん [2009/04/03(金) 03:39:59 ] 2009+indy10のsmtpを使用してメ−るを送信すると、 空白メール届くのです。 2005でコンパイルしたものは正常に送信できるのですが、 教えていただけませんか
209 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 03:48:50 ] 普通に文字コード絡みの問題だと思うが
210 名前:207 mailto:sage [2009/04/03(金) 03:54:51 ] すみません、自己解決しました。 colcountはCarginal型なのですが、表示の際にハマっていただけでした…
211 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 05:59:39 ] すいません、言語ではなくこのソフトに関する質問なんですが 左下にある(初期レイアウトでは)プロパティの中の設定する値が記述されてる部分のフォントの色って変えること出来ますか? ターボ、xpです。よろしくお願いします。
212 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 07:15:27 ] できません。
213 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 09:53:53 ] なんでBooleanは8ビットも使ってしまうん?(´・ω・`)
214 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 09:58:22 ] パソコンのしくみ
215 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 14:55:57 ] 8つのbooleanが詰まった1バイトのbooleans型を定義するといいよ。
216 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 15:20:02 ] 2009のサンプルコンポーネントが相変わらす古いものしか入っていないんですが、 使えるShellListViewって何処にありますか?
217 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 18:56:04 ] 指定フォルダ内のファイル数を、サブフォルダ内のファイルも含めて取得したいです。 hoge -test1 hogehoge -test2 -test3 というようなフォルダ構造の場合、3を得たいという事です。 何か簡単な方法は無いものでしょうか。 FindFirstとFindNextでやろうとすると、サブフォルダ内の処理をする時に対象フォルダが移動する為、 FindNextで親フォルダを正しく検索する事ができません。
218 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 19:26:54 ] はいはい再帰再帰 俺は太ってるから書けないけどね
219 名前:217 mailto:sage [2009/04/03(金) 19:48:16 ] FindFirstでフォルダを列挙して、それをFileListBoxに突っ込んでCountを足す事でファイルカウントにしました。 再帰は良く分かりませんが、動くので取り敢えず上記ので実装しますorz
220 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 21:53:05 ] >219 つ ttp://www.google.co.jp/search?q=delphi+findfirst+%E5%86%8D%E5%B8%B0&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_ja___JP225
221 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 22:40:14 ] ttp://ja.uncyclopedia.info/wiki/%E5%86%8D%E5%B8%B0
222 名前: ◆XcB18Bks.Y mailto:sage [2009/04/06(月) 19:11:33 ] >>199 Turbo Delphi Explorerとか最近のバージョンだと OnMouseLeaveイベントが実装されていますね。 最初は知らなかったので今までのように 自分でメッセージに応答するコードを書き終わってから見つけて涙目でした。
223 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 09:32:11 ] Delphi7でFirebirdのクライアントアプリケーションを開発してましたが、 この度Delphi2009にバージョンアップしました。以前のソースを一部修正して コンパイルは出来たのですが、実行すると一部文字列フィールドでサイズ不一致のエラーがでます。 データはVARCHAR(8)のSJIS_0208の項目に半角英数字で10文字セットされた行でエラーが出ていますが 対処法がわかりません。テーブルのデータ構造をVARCHAR(16)に再構築すればいけるかと思いますが、 できればテーブルはそのまま使いたいのですが、無理でしょうか?
224 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 20:45:23 ] ∧__∧ (´・ω・) 無理どす ハ∨/^ヽ ノ::[三ノ :.、 i)、_;|*く; ノ |!: ::.".T~ ハ、___| """~""""""~"""~"""~"
225 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 13:07:58 ] TMenuItemに複数のShortCutを設定するにはどうすればいいでしょうか?
226 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 13:55:40 ] パーテーションなどディスク上のデータを直接読みたいのですがどうすればいいでしょうか? Delphi3です。10年くらいブランクがあるのでほとんど忘れてしまったorz 低レベルなアクセスだとやっぱりAPIを駆使でしょうか? Delphi側で手軽に扱える便利な手続きが用意されてると有り難いのですが。。。 詳細はググりますんで、検索キーワードだけでもご紹介くださいませ
227 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 14:07:16 ] >>225 TActionList&TActionだとセカンダリを指定できる。 MenuItemよりAction使っといた方が全体的に便利だよ。
228 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:01:38 ] >226 それはWin32APIスレにいったほうがいいような。Delphiで簡単に、という性質のものではない。 あとOS(2000/XP/Vista)によってもプログラミングに違いがあると思う。UACとか。
229 名前:226 mailto:sage [2009/04/08(水) 15:31:34 ] >>228 やっぱりAPIですか。誘導してくださってありがとうございます。
230 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 16:52:16 ] >>227 Actionは使ったこと無かったので思いつきませんでした ありがとうございます
231 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 23:11:02 ] 今DDEのヘルプを読んでるんですが、 サーバーからデータA、データB 、データCを取得したいときって DDEクライアントを3つ置かないといけないですか?
232 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 04:57:24 ] 統合アーカイバコンポーネント ってもうどこにもないですかねぇ…? ググったけどDelphian Worldは閉鎖されてるし…
233 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 10:09:28 ] >>232 www.geocities.jp/norg1964/delphianworld/data/mi/cmarc150.lzh
234 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 16:06:29 ] >>233 ありがとうございます。
235 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 12:28:12 ] 質問です。 ToolBarコンポーネント上にボタンを複数配置し、 実行中にボタンのVisibleプロパティを変更した場合、 ボタン新規作成でToolButtonを配置していた場合は 自動的にVisibleがFalseになったボタンより右のボタンは 自動的に左詰めしてくれるのですが、 SpeedButtonを配置していた場合、 VisibleをFalseにしたボタンの部分が空いてしまい、 それより右のボタンが左詰されません。 (設計時にVisibleをFalseにして実行した場合は左詰してくれますが) SpeedButtonでも自動的に左詰してくれるようになる プロパティとかはないでしょうか。 Delphi4を使用しています。
236 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 12:32:25 ] if Visible then Width := 32 else Width := 0;
237 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:07:43 ] CombBoxってタブオーダー無視する? タブストップはTrueにしてるんだけど次のやつにいっちゃう。 DEL7です。 どなたかよろしく。
238 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:17:56 ] >>237 まず新規アプリケーションにComboBoxを100個並べてTABキー押してみてくれ。
239 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 16:57:20 ] 高級INIファイル程度の感じで簡単にXML読み書きするのってどうやるのが楽? Delphi XMLで検索するとOpenXMLとかいうのがヒットするみたいだけど。
240 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 19:07:23 ] 大人しく付属してるTXMLDocument使えばいいんじゃ。デフォルトでMicrosoftのXMLパーサー使うように なってたような。嫌なら切り替えれたような。
241 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:39:00 ] >>237 今試してみたが普通にTAB移動するぞ D2007,D5 Styleプロパティも変えてみたけどOKだ 新規フォームでもう一度試してみな また、そんなときはうまくいかないComboBoxを選択してCtrl+Cして エディタにでも貼り付けて違いを調べるんだ お前の言う「昆布ボックス」がカスタムコンポーネントなら知らん
242 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 09:49:26 ] 製品版を購入するには2009だと10万弱かかるので、ためらっています。 バージョンアップ版は4万強ですが、例えばTurboをインストしていれば、 それが使えるとかの技はありませんでしょうか?それとも素直に10万弱 出すしかないのでしょうか?どうかご教示ください。
243 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 09:55:37 ] DEL6なんだけど今時のインターフェイスのフォルダー選択コンポーネントないかな?
244 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 10:38:45 ] ライセンス関係は Codegear に聞いてください 電話かメールで尋ねられるとおもいます 実のところ、アップデート版のインストーラーは既存製品のインストール状況を チェックしません。純粋に、ライセンス、契約の問題です。 もっとわかりやすく言うと「アップデート版はアップデートユーザーが使うと信じてるよ」です
245 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 12:29:59 ] んなこたーない
246 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 09:13:16 ] >>243 今時って?こういうコンポーネントじゃなくて? mrxray.on.coocan.jp/Delphi/plFileDialog/index.htm
247 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 20:48:22 ] Delphi6 personalでIndyインスコしてIdHTTPをForm1に貼り付けると「IdBaseComponent.dcuが見つかりません」とでてコンパイルできません。 なぜでしょうか? もしかしてDelphi6 PersonalとTurbo Delphiの両方をインスコしてあるからなんですかね?
248 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 21:49:45 ] ライブラリパスは設定したのか?
249 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 22:00:52 ] >>248 すいませんライブラリパスとは何ですか? 具体的に教えてもらえると助かります;;
250 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 22:34:31 ] ツール(T)→環境オプション(O)→ライブラリ→ディレクトリ→ライブラリパス(B) ここにIndyの入ってるディレクトリを追加する
251 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 23:31:12 ] >>246 レストン 左側にマイコンピューターとかマイネットワーク とか出て、フォルダーの新規作成も出来てみたいなの が無いかなと思ったんですが、紹介してもらったのは ソースつきなんで勉強がてら改造してみます。
252 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 00:21:16 ] dllインジェクションやりたいお
253 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 00:29:45 ] >>251 > 左側にマイコンピューターとかマイネットワーク それってただのTOpenDialogでは? Vista風の見た目とかなら探せばコンポ落ちてるだろうけど
254 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 02:57:10 ] blog.toratech.net/article/25228591.html を参考に、Delphi2009にQuadruple Dをインストールしようとしてるのですが、 再構築のところでエラーが出てコンパイルが出来ません・・・ 何が悪いのか見当すら付かないんですがヒントをお願いします
255 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 04:07:02 ] せめてエラーメッセージをおしえて
256 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 04:13:23 ] いきなり30個くらいあったので・・・ 最初は定義の多重宣言とか言われて、とりあえず//でコメントアウトしていくと、 constの所で、(が必要な所に;があります、とか言われて もうわけわかめでした
257 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 08:43:06 ] 解決する気がないならチラシの裏へどうぞ。
258 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 08:49:41 ] はあ 何を根拠にそんなアオリを入れてるのか知りませんが kazina.seesaa.net/article/38725486.html ↑の通りにやっても同じ結果でしたね TurboDelphiでは問題なく実行出来ましたが
259 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 08:58:18 ] めんどくさがらずに、エラーの最初の10行ぐらいをコピペしてみろよ
260 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 09:23:12 ] 何の権利があって人に命令してるんですか? 物の頼み方を知らない人ですね。
261 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 09:33:51 ] >>254-259 ID無いからわかりにくい。アンカーくらい付けろや!
262 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 09:52:03 ] わからないのなら黙っててください。
263 名前:254 mailto:sage [2009/04/14(火) 09:58:51 ] すいません、自己解決しました!
264 名前:251 mailto:SAGE [2009/04/14(火) 10:27:47 ] >>253 そうなんですけど、OpenDialogではファイルを選ばないといけないでしょ? 2,3フォルダーコンポ落としたんですが、フォルダーの新規作成とかが ないものばかりで。
265 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 10:29:21 ] なんか荒らされてるのはスルーしつつ一応ログの一部貼っときます [DCC エラー] DInput.pas(803): E2004 識別子の多重定義 : 'DIACTIONFORMAT' [DCC エラー] DInput.pas(883): E2004 識別子の多重定義 : 'DICONFIGUREDEVICESPARAMS' [DCC エラー] DInput.pas(938): E2004 識別子の多重定義 : 'DIDEVICEIMAGEINFO' [DCC エラー] DInput.pas(978): E2004 識別子の多重定義 : 'DIDEVICEIMAGEINFOHEADER' [DCC エラー] DInput.pas(1076): E2029 '(' が必要な場所に ';' があります [DCC エラー] DInput.pas(1082): E2026 定数式が必要です [DCC エラー] DInput.pas(1359): E2004 識別子の多重定義 : 'DIDEVICEINSTANCE' [DCC エラー] DInput.pas(1429): E2026 定数式が必要です [DCC エラー] DInput.pas(1433): E2003 未定義の識別子 : 'IDirectInputDeviceWVtbl' [DCC エラー] DInput.pas(1551): E2029 '(' が必要な場所に ';' があります [DCC エラー] DInput.pas(1555): E2026 定数式が必要です
266 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 18:01:06 ] >>250 ありがとうございます! 解決しました!
267 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 19:04:19 ] >>264 >>246 のは新規作成できるみたいだね。でもフォルダ選択で > 左側にマイコンピューターとかマイネットワーク ってのは見たことないなあ。あったら便利な感じもするけど… もし作ったら公開してくださいね^^
268 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 20:24:05 ] function BrowseFolderProc(hWindow: HWND; uMsg: UINT; lParam: LPARAM;lpData: LPARAM): Integer; stdcall; var PathName: array[0..MAX_PATH] of Char; begin case uMsg of BFFM_INITIALIZED: SendMessage(hWindow,BFFM_SETSELECTION,1,integer(PChar(lpData))); BFFM_SELCHANGED: begin SHGetPathFromIDList(PItemIDList(lParam),PathName); SendMessage(hWindow,BFFM_SETSTATUSTEXT, 0,LongInt(PChar(@PathName))); end; end; Result:=0; end;
269 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 20:24:54 ] function OpenFolder(IniDir,Title:string;OwnerHandle:HWND; AddCreateFolder:Boolean;Files:Boolean=False):string; var IDList: PItemIDList; BrowseInfo: TBrowseInfo; PathName: array[0..MAX_PATH] of Char; DisplayName: array[0..MAX_PATH] of Char; const BIF_USENEWUI=$0050; begin with BrowseInfo do begin hwndOwner :=OwnerHandle; pidlRoot:=nil; pszDisplayName:=DisplayName; lpszTitle:=PChar(Title); if Files then ulFlags:=BIF_STATUSTEXT or BIF_RETURNONLYFSDIRS or BIF_BROWSEINCLUDEFILES or BIF_USENEWUI else ulFlags:=BIF_STATUSTEXT or BIF_RETURNONLYFSDIRS; if AddCreateFolder then ulFlags:=ulFlags or BIF_USENEWUI; lpfn:=BrowseFolderProc; lParam:=integer(PChar(IniDir)); end; //つづく
270 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 20:25:50 ] IDList:=SHBrowseForFolder(BrowseInfo); if IDList=nil then begin Result:=''; exit; end; SHGetPathFromIDList(IDList,PathName); Result:=PathName; end;
271 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:19:33 ] DELPHIのブラウザコンポーネント使ったら、 ブラウザ画面から目的の文字列を探すことって簡単に出来ますか? ソースをダウンロードして検索したほうが簡単ですか?
272 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 06:06:13 ] imiwakannne
273 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 15:30:58 ] [Delphi] WebBrowserからHTMLソースを取得する uses mshtml; Memo1.Text:= OLEVariant(WebBrowser1.Document as IHTMLDocument2).Body.InnerHTML; って話か?
274 名前:271 mailto:sage [2009/04/16(木) 21:07:38 ] 試してないけどそういうことです。
275 名前:271 mailto:sage [2009/04/16(木) 21:08:17 ] ありがとう
276 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:14:02 ] 今、簡単に言えばようつべから動画をダウンロードするプログラムを作っているのですが、 ・動画をどこまで落としたかの進行度をプログレスバーに表す ・中断機能をつける この2つがよくわかりません。 前者は動画の容量をprogress.max、落とした容量をprogress.positionにすればいいのはわかるんですが、どのように取得してどう記述すればいいのかがわかりません。 後者はスレッドを複数使う、というのはわかったのですがどうスレッドを複数作り、どのようにダウンロードを中断させればわかりません。 WindowsXP SP3 Delphi6 Personal Indy10 です。 どなたかご教授お願いします。
277 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:41:16 ] www.google.com/search?q=Delphi+Indy%20%90i%92%BB www.google.com/search?q=Delphi+Indy+%92%86%8E~
278 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:43:34 ] いるよね 超初心者用ってスレなのに上から目線で英語のサイトくらい嫁とか言う奴 まあそんなんだから廃れたんだろうなDelphi あ、俺は只のROMで質問者じゃないからね
279 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:45:55 ] >>278 コピペ?
280 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:49:25 ] >>278 どっちも日本語だけどな
281 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:51:03 ] しかも普通にIndyの公式とかしかヒットして無い様に見えるんだけど何が言いたいんだろうね
282 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:52:04 ] ああ IEで開いたら日本語だったわ
283 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:55:32 ] google.co.jpじゃなくて.comだから、外国だと思ったんだろう いるよね?リンクの中身すら見ずにURL名だけで判断する奴 あ、俺は只のROMで質問者じゃないからね
284 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:57:28 ] なんでプログラム板ってID非表示? 質問スレが多く立ちそうな板なのに不便アル
285 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:59:12 ] まあ俺の勘違い?だったから罵倒してくれていいんだが Firefoxだと Delphi Indy i’≫ になってて英語サイトしかヒットしてないんだよ 文字エンコードはUTF-8だけど他のに変えても駄目だ IEとChromeで開いたらDelphi Indy 進捗になったよ
286 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:01:17 ] >>285 俺FireFoxだけど普通に表示されたぞ
287 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:03:29 ] Accept-Languageで日本語が無いか優先度が低いんじゃね
288 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:04:11 ] そっか じゃあ俺の環境がなんかおかしくなってんだな 正直すまんかった あと俺は本当に質問者じゃないから本人さんに何も関係ないことだから 以前他の言語のくだすれでちょっとあって・・・ 脊髄反射で書き込んでしまった
289 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:03:38 ] 必死だな質問者
290 名前:デフォルトの名無しさん mailto:SAGE [2009/04/19(日) 21:56:08 ] ネットのログインを自動でやりたいんだけどdelでやる時の 参考になるページ教えてください。
291 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 22:17:41 ] 俺はVBやC#の例を見ながら作ったぞ。
292 名前:デフォルトの名無しさん [2009/04/19(日) 22:43:14 ] おまいIndyスレに書き込んだヤツか。 失敗している原因をちゃんと調べないとダメだぞ。
293 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 22:54:42 ] そもそも、ネットのログインってのが抽象的でよくわからない
294 名前:デフォルトの名無しさん mailto:SAGE [2009/04/19(日) 22:56:11 ] >>292 >おまいIndyスレに書き込んだヤツか。 >失敗している原因をちゃんと調べないとダメだぞ。 残念ながら違う。 自動ログイン DELPHIでググったんだけど、いまいちピンと来なかったんだ。
295 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 23:04:21 ] IEコンポ使う方法とIndyでやる方法じゃあ、全然違うからな。
296 名前:290 mailto:sage [2009/04/19(日) 23:43:40 ] >>291 ,295 レストンです。 ログインして、ブラウザに表示されるページの中からキーワードを 拾い出したいんですが、出来ればブラウザを起動させずに出来ないかなと 思い調べてました。
297 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 01:27:25 ] で、何を使ってどんな風にどこまで作って何が不満だったかくらい言おうよ。
298 名前:デフォルトの名無しさん mailto:SAGE [2009/04/20(月) 09:27:21 ] 質問の内容が悪くてすみません。 テンパってて。 ブラウザを起動させなくてもURL直接送ってページに表示されるHTML の内容を取得して、目的のキーワードを取得は出来るんですが、 最初にログインが必要な場合にどうすればいい買って事なんです。
299 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 10:10:50 ] >>298 何言ってるかいまいちだがログインすればいいだけじゃないのか?
300 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 10:15:26 ] >>290 の時点で何を聞きたがってるのか分からない奴ってアホだろw
301 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 10:19:16 ] >>300 じゃあお前が教えてやれ よかったな>>290 今から>>300 が教えてくれるぞ
302 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 10:44:10 ] >>300 お前は黙ってろ
303 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 12:18:00 ] >>298 「indy コンポーネント BASIC認証」でググレ 「自動ログイン DELPHI」は酷すぎるwww
304 名前:290 mailto:sage [2009/04/20(月) 13:01:56 ] >>303 今からググって見ます。 アリガトン
305 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 13:34:58 ] BASIC認証のサイトなんてもう少ねえよな。 まあどんな認証方法のサイトなのかは知らんけど。
306 名前:290 mailto:sage [2009/04/20(月) 13:57:00 ] 認証に種類があるんですか。 そんなことも知らなかった。 おとなしく、ブラウザを表示させて 自動入力みたいにしたほうが初心者には 簡単ですね。多分。
307 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 20:21:09 ] まずDelphiの前にHTTP勉強しろ
308 名前:290 mailto:sage [2009/04/21(火) 01:06:15 ] ごもっともです。
309 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 02:19:31 ] マジレスすると>>305 の言うようにBASIC認証じゃなさそうだし、 たぶんmixiみたいなIDとパス入れてログインするようなサイトなんだろうけど、 ログインしてすぐのページさえ取れればいいのならIndyでGetの代わりにPost使えば大概簡単に取れる ただしSSLが必要だったりページの遷移があったりすると色々と面倒なんで、 IEコンポを貼り付けて見えないサイズにして(単純にVisible:=Falseだと動かない場合があった気がする)、 あとはNavigate辺りでJavaScript呼ぶかレイトバインドで直接タグ操作してやれば確実 こっちの方が資料も豊富だろうし
310 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 10:31:20 ] 認証時に何をPOSTしてるのか調べて、同じようにPOSTするプログラムを書けばよろしい。
311 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 14:26:05 ] フォーム認証だとログインしたあとにセッションかクッキーでログイン状態を管理すると思うけど、 そのあたりindyだとどうやるんだろね 単にページを巡回したいなら、スクリプトでコントロールをクリックしたり ページ遷移できるブラウザがあったと思うんだけど、 それを使えば便利だが、趣旨とは異なるかな?
312 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 14:58:04 ] サブフォームをモーダルで開いた時にメインフォーム上の処理を行いたいんだが OnDeactivateに書いても動作せず。試しにこんな感じで。 procedure TForm1.FormDeactivate(Sender: TObject); begin form1.Color := clwhite; end; どうすればいいんでしょ?
313 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 15:07:33 ] Form2.ShowModal; したらフォーム閉じるまで制御が戻ってこないんだからどうにもならない。 Form2側からuses Unit1;して Form2Showかなんかで Form1.Color := clWhite してみたら
314 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 16:27:49 ] Halbowさんと俺とゲームボーイの誕生日が今日らしい 誰か祝ってやれ
315 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 16:43:05 ] tmpフォルダにzipから解凍してきたファイルを置いて、読み込み、処理が終わったらtmpフォルダを空にしたいと思ってます。 現状 tmp -test -A.txt という様なフォルダ構成で、A.txtを読み込んだ状態です。 そこで、testフォルダを削除しようとすると「プログラムが使用してます」といった旨のエラーダイアログが出て削除する事が出来ません。 A.txtを読み込んだだけでtestフォルダにロックがかかってしまうのでしょうか。 また、そのロックを解除する術はあるのでしょうか。 A.txtの読み込みにはLoadFromFileを使ってます。 また、A.txtの検索にFindFirstを使ってます。 上記2つのどちらかが、フォルダのロックの原因でしょうか。 フォルダの削除はエクスプローラ上からも出来ませんでした。 A.txtはエクスプローラ上から削除可能でした。 何方かご教示お願い致しますm(_ _)m
316 名前:315 mailto:sage [2009/04/21(火) 16:46:04 ] 追記: フォルダの削除にはSHFileOperationを使ってます。 フォルダをファイルが入った状態で削除するにはコレが良いとGoogle先生に聞いたので。
317 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 20:15:55 ] >>314 Halbowさんおめでとうございます
318 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 20:19:33 ] >>315 フォルダをつかんでる(ロックしてる)んではなくて、そのフォルダで作業してる (カレントフォルダになってる)だけだと思う 処理が終わったら SetCurrentDir(ExtractFileDir(Application.ExeName)); して味噌
319 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 21:04:06 ] >>315 それオレもハマった。FindFirstが原因だと思うよ。FindFirstが終わったら FindClose(SearchRec)とかやってクローズする必要があると思う。
320 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 21:06:24 ] 削除前にきっちりFindCloseを呼ぶ。 カレントディレクトリってコマンドプロンプト以外でもロックしちゃうんだっけ?だったら戻した方がいいかも。
321 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 00:56:17 ] 昨日Turbo Delphi Explorerを入れてみたです。 正規表現使えないかなーとBRegExpとそのUnitを入れてみたんですが 試しに簡単なの動かそうとしたらエラー出ました。 BabaさんのBREGEXPとosamuさんのUnitとを解凍してできるファイルを とりあえず*.hと*.hlp以外全部delphiのLibフォルダに突っ込んであります。 エラーはこんなかんじ [Pascal エラー] BRegExp.pas(226): E2064 代入できない左辺値です [Pascal エラー] BRegExp.pas(227): E2250 指定された引数で呼び出すことのできるオーバーロード関数 'UniqueString' が定義されていません [Pascal 致命的エラー] Project6.dpr(6): F2063 'BRegExp.pas' ユニットはコンパイルできませんでした コードはこんなかんじ program Project6; {$APPTYPE CONSOLE} uses SysUtils,BRegExp; var Str: String; begin Str := 'うんこ:ちんこ:まんこ'; brx.Match('m/;(+);/',Str); Writeln(brx[1]); end. うまく動かせてる人アドバイス求ム
322 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 18:20:05 ] 使ってないけど落としてソース覗いてみた(出来ればurl書いて欲しかった) const TextBuffer: string='';の定数が 問題なんじゃね? {$J+}オプション入れるか、constを vart TextBuffer: string; に変えて functionの最初に TextBuffer:=''; 入れておけばいんで内科医? ちなみに俺は「TRegExpr」 ttp://delwiki.info/?%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%2FTRegExpr
323 名前:315 mailto:sage [2009/04/22(水) 19:07:58 ] >>318-320 ありがとうございます。対応入れてみました。 結果、複数フォルダがある場合に、最後の一つだけは削除できるようになりました。 まだ何処かでロックしてるみたいですorz
324 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 21:37:56 ] >323 原因は間違いなくFindCloseのし忘れ。FindFirstした分必ずFindCloseすること。 おそらく今は最後の一回分しかFindCloseしてないんじゃないか?
325 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 23:25:56 ] Delphiのグラフ書くコンポーネントって 2本の折れ線グラフが交差した座標を検出とか そんな機能あるわけないよね?
326 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 00:26:40 ] あるわけがない。 ポイントの座標くらいなら自分で取得できそうだし、 交点くらいちょびっと計算して出せよ。
327 名前:321 mailto:sage [2009/04/23(木) 02:10:16 ] >>322 レスありがd constに代入してるのはPascal初心者には奇怪だったんですが やっぱりDelphiな人にも奇怪だったのね。 const取ってvar内に宣言したり、言われて{J+}オプション(理解できてない) 入れたりしたらビルドは通ったんですが、別な例外で動かないですわ。 まだまだ手に負えそうにないんで、おいらもTRegExprにしてみる。
328 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 03:06:48 ] constへの代入が何故使われてるかというと、あれはDelphiでスタティック変数もどきを使用するテクニックなんで、 動作するには前回の値が保存されてる必要があるから、単純にvarにするだけじゃ動かない 実体はスコープが関数内に限定されたグローバル変数だから、宣言をfunctionの外に移動させてやればおk ただ$Jスイッチは局所的に有効になるから、ユニットの先頭にでも{$J+}と書くのが一番確実かな
329 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 04:57:55 ] >>327 古いDelphiではConstは常に書き込み可能だったのだ var TextBuffer: string=''; function TBRegExp.Subst() begin end; と外に出してグローバル変数にすればおk 今時{J+}は使わなくて良いでしょ あと、肝心の正規表現間違ってるよ エラーはそのせいかと Str := 'うんこ;ちんこ;まんこ'; brx.Match('m/;(.+);/',Str); Writeln(brx[1]);
330 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 05:09:19 ] というか、DLLで良いのなら鬼車の方が良いかな homepage2.nifty.com/Km/onig.htm (DLLのLinkがonig.zip になってるけどonig.lzhが正解) www.geocities.jp/jview2000/oniguruma.html
331 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 11:53:16 ] クラス化してくれ…
332 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 19:29:51 ] >>328 322だが、もちろんその使い方で私も使ってます ただ、くだんのBRegExp.pasでは単に初期化するだけに使っていることを 確認してのレスでした
333 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:35:40 ] エクセルのブックをDelphiで作成したいのですが、 Excel := CreateOleObject('Excel.Application'); てやるとエクセルが起動しちゃうんですよね? 起動させずにブックを作ることって出来ませんか?
334 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:49:55 ] 不可能 でも表示をオフにすれば起動されたことはわからんけど。
335 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:59:47 ] 鬼車をLoadLibraryなどの実行時動的リンクではなく、 ロード時動的リンクしようとすると、Delphiが変数のインポートをサポートしてないから 面倒なんだよな。Delphiってうんこだよな。
336 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:59:49 ] レストンです。 そうですか。 シートに書き込むデータがアドインソフトに関するもので書き込んだ瞬間 「外部データにアクセスできない。アドインを実行するか?」 見たいなメッセージが出てきてしまします。 エクセルの特定のアドインを一時的にとめることって出来ますか? エクセルのヘルプに見ても登録と削除しか出てこないようなので。
337 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 00:50:22 ] >>333 勿論できるぞ。種になるブックをどこかに作っておき、 それをコピーするんだ。実行自体にはExcelすら要らん。
338 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 01:05:32 ] >>336 削除と登録ができるのに、一時的に止められないってこたないだろ。 削除して、また登録すればいいんだから。 それはさておき、 Excel.AddIns['アドイン名'].Installed := false; Excel.AddIns['アドイン名'].Installed := true; あたりで出来ないか?
339 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 05:57:23 ] >>333 使ったことはないけど wiki.lazarus.freepascal.org/FPSpreadsheet
340 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 08:05:52 ] >>337 ,338,339 ありがとうございます。 >>337 >勿論できるぞ。種になるブックをどこかに作っておき、 このレス見たとき、昔こういうやりか足してた先輩がいたの思い出した。 今は会社辞めちゃったけど。 >>338 >Excel.AddIns['アドイン名'].Installed := false; >Excel.AddIns['アドイン名'].Installed := true; 作ったら人に渡すので削除とかは実際したくないってのがありました。 こういうのがあるんですね。 ヘルプを見てみます。 >>339 これコンポーネントですよね。 よさそうなんですが、ダウンロードするところがよくわからなかった。orz
341 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 10:51:59 ] ポインタについてなんですけど、 ある手続きで参照先のデータを解放した後に、 別の手続きでその場所にデータがあるかどうか調べるって事は出来るんでしょうか?
342 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 12:18:31 ] 出来ない。 メモリの内容見てそれがオブジェクトなのか、生きているのか死んでいるのかを厳密に判別する術はない。 procedure foo(var a: TObject); begin FreeAndNil(a); end; とかやって参照自体を潰して参照がnilかどうかで判断するのが定石だな。
343 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 20:06:14 ] メモリマネージャを差し替えればそれっぽいことができなくもないけど、激しくオススメしない
344 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 20:58:07 ] どんな手使っても、アプリケーションが全てと思うけどな。 やな手使って欲しくないけど…
345 名前:デフォルトの名無しさん [2009/04/24(金) 21:19:38 ] よーわからんけど ポインタが有効かどうかって Assignedすればエエだけなんじゃねえの? 外していたらメンゴ
346 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 21:23:40 ] Assignedはnilチェックだよ
347 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 03:27:42 ] EAccessViolationで囲むとか 動いたり動かなかったりだろうからオヌヌメしない
348 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:54:06 ] >>341 はたぶん一つのオブジェクトに複数の参照があってその管理で困ってると思うんだけど、 そういう場合は参照カウンタで管理すべきじゃないかと思う。別解としては、参照をさらに参照する。 type PObject = ^TObject; var p1: PObject; p2: PObject; p1^ := TObject.Create; p2 := p1; この状況下で、 p1^.Free; p1^ := nil; この時点で当たり前のこととしてp2^もnilになるから、p2を見る手続きからも実体が解放された事は分かる。 ただ、こういうのは小手先の話で、あまりそういう事をしなくてもいいのがよい設計だと思う。
349 名前:デフォルトの名無しさん [2009/04/25(土) 19:52:20 ] Delphi2009で、文字が半角か全角かを判断する方法が分からず困ってます。 これまでDelphi6でByteType関数を使ってたんだけど、挙動が変わってしまって・・・
350 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 20:18:50 ] leadbytesとかは使えないの?
351 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 21:11:09 ] WideStringなら 単純に文字コードを見ればわかるけど。 1バイトなら半角だし、2バイトなら半角カナかをチェックする
352 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 21:25:34 ] unicodeの事いってるんなら1バイトで全角幅もあるぞ
353 名前:348 mailto:sage [2009/04/26(日) 05:15:41 ] そういや>>348 でp1^のメモリを確保してないや。 最初にNew(p1);、最終的に完全にいらなくなったらDispose(p1);が必要だった。
354 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 08:38:57 ] >>349 シフトジスに変換した後にチェックすればいいじゃん。 ウンコードを呪え。
355 名前:DEKO [2009/04/26(日) 10:53:28 ] >>349 MECSUtils の MecsIsFullWidth() を使うといいと思います。 ttp://homepage1.nifty.com/ht_deko/tech021.html#MecsIsFullWidth
356 名前:デフォルトの名無しさん [2009/04/26(日) 11:26:42 ] みなさんありがとう。 一度Ansiに変換して判定することにしました。 function IsHankaku(c: char): boolean; begin result := ( ByteType(AnsiChar(c), 1) = mbSingleByte ); end; Delphi2009で文字を扱うときって、サロゲートとかエレメントとかコードポイントとかバイトとか、ややこしいですね(>_<)
357 名前:デフォルトの名無しさん [2009/04/26(日) 11:43:42 ] 訂正: function IsHankaku(c: char): boolean; begin result := ( ByteType(AnsiString(c), 1) = mbSingleByte ); end;
358 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 11:45:47 ] Cみたいな言語から移ってきたとみた
359 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 11:47:11 ] >>356 それがユニコード糞、っていわれるゆえんだよ
360 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:03:07 ] >elphi2009で文字を扱うときって、サロゲートとかエレメントとかコードポイントとかバイトとか、ややこしいですね(>_<) 煽っている人がいるだけで、大した問題はないよ。
361 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:31:00 ] 言語レベルで隠蔽されてしかるべき情報を考慮してコーディングしないといけないのは問題ではないの?
362 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 20:03:45 ] ウンコードが半角全角の区別がメンドイという致命的な欠点を持っているのは確か
363 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 02:24:25 ] win2000で2009使ってる人います? デバッグの停止ボタン押した後再開出来なくないですか?
364 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 15:19:23 ] >>361 .NET も UTF-16 で全言語で同じていたらくだけど何を使えばいいの?
365 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 18:38:55 ] .NETがどうかは別に関係なくね? Delphiの設計方針から言えば、隠蔽されててもおかしくない気はする 最近の開発にそこまで求める方が酷なのかもしらんが
366 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 08:52:33 ] TEditのOnChangeイベントでTEdit.Textを取り出すとき IMEを起動して日本語入力してると変換した最初の文字だけが TEdit.Textに入ってきたりしない? コーディングが悪いのかなあ…。 Turbo Delphi Explorerにて。
367 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 11:08:27 ] >>366 Caption:=Edit1.Text; これで最初の文字しか取得できてないってこと?
368 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 13:05:57 ] そもそも、文字に幅があると思ってる考え方が間違ってるので、正すのはおまえらの思考。 幅をもってるのはあくまでグリフって誰かいってなかったっけ?
369 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 14:20:46 ] >>367 Captionじゃないけどそんなかんじです。 FirefoxやiTunesみたいなインクリメンタルな検索を実装してるのだけど たとえば「饅頭」と打ったときTEdit.Onchange内では「饅」しか入っていないので 打った「頭」を検索クエリに入れられず困ってるという話。 (ここまで書くと丸投げっぽいな…)
370 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 14:28:08 ] >>369 頭が入力された時にもう一度OnChangeイベントが発生してるだろ。
371 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 14:33:20 ] >>369 自分のはTurboじゃなくてDEL7なんだけど、 単純なコード書いて試した? OnChangeにCaption:=Edit1.Textて書いて実行すると、確定するたびに 「まんじゅう」と入れて「まん」だけ確定すると「饅」表示、次に「じゅう」を 確定すると「饅頭」がちゃんと表示されるけど。
372 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 14:34:23 ] >>371 X OnChangeにCaption:=Edit1.Textて書いて実行すると、確定するたびに 「まんじゅう」と入れて「まん」だけ確定すると「饅」表示、次に「じゅう」を ○ OnChangeにCaption:=Edit1.Textて書いて実行すると、「まんじゅう」と 入れて「まん」だけ確定すると「饅」表示、次に「じゅう」を
373 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 15:00:33 ] >>369 変換を伴うインクリメンタルサーチやるときは、IMEのメッセージ捕まえた方が色々とやりやすい
374 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 15:33:14 ] コンソールアプリで出力に色つけるのってどうやるの? 無理やりドライバ入れてエスケープシーケンスでじゃなく正式なやり方で。
375 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 15:58:47 ] >>374 コンソールAPIを使う。 これをラップしてTurbo Pascalを模したcrt32っていうユニットが www.kobira.co.jp/sakura/d_Con_Cgi.htm にあるから こういうのを使うと簡単。
376 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 21:14:17 ] >>368 学者の詭弁乙
377 名前:369 mailto:sage [2009/04/28(火) 23:52:39 ] いろいろレスどもです。 確かにCaption変えるだけだと問題ないっすね。 イイワケにならんけど入れてまだ一週間くらいなんで ヘンな記述してる可能性も捨て切れません。 OnChangeのたびにSQLiteぶん回すのがキツイのか 単純な記述ミスがあるのか、もう一度じっくり眺めてみて どうしようもなかったらIMEのメッセージ(ってのも初めて見る世界) の線でぐぐってみます。
378 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 05:14:54 ] IEやFireFoxから画像をドラッグ&ドロップされたのを受け取るには、どうしたらいいもんでしょうか・・。
379 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 07:33:26 ] OLEを使う どっかにそういうコンポがあったからそれ使うと簡単にできると思う
380 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 21:04:08 ] procedure ahya; begin ahya; end;
381 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 22:06:42 ] stack overflow
382 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 08:39:33 ] >>377 > OnChangeのたびにSQLiteぶん回すのがキツイのか
383 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 13:01:08 ] Cのsystem()関数ってないの
384 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 16:04:09 ] つWinExec
385 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 10:30:37 ] VirtualListViewに256x256のサムネイル画像を並べているのですが、StretchBlt で 縦横比を変えずに縮小するために JpegをTPictureで読み込んでBMP.Assignするときに凄く時間がかかってしまいます 最初は中村氏のBitmapUtils.Stretchを使ってからStretchBltしていましたからもっと時間がかかっていました TVirtualExplorerEasyListviewなどはエクスプローラ並みのスピードで表示されるので方法次第だと思うのですが ソースがないので手法が分かりません どの方向で考えたらいいでしょうか?御指南ください
386 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 13:43:04 ] >>385 TJpegImageのScale使うか、 写真ならExifのサムネイルを読み込むか。
387 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:21:28 ] ありがとうございまし、そんなのもあるのですね D2009のJpeg,GIFImg,pngimageを使っているので型によって縮小方法を変えるんですね ググったら ttp://jane.s89.xrea.com/test/read.cgi/kakolog/1119916964/170-188 がでました。サンプルソ−スも生きていて落とせましたので読んでみます でも、usesするだけでTImageとかでpngとか読めるんだから(これが凄いけど) TImageListとTListViewも対応してくれるのが一番嬉しいんですよね
388 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:23:12 ] ソースだと思ったらJane本体だったorz これだけがヒントですね 188 :Jane使いの名無しさん:05/07/27 00:00:41 ID:6kBZoROZ >>174 ・TJpegImage.Scale //←基本的にこれ ・TbitmapはDIBにする ・Jpeg.pasとiijのライブラリ改造 TApiBitmapとTBitmapで検索して掛かったとこちょっと 変えてみただけ
389 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:24:11 ] つGDI+
390 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 14:22:24 ] >>385 ちなみにサムネイル生成処理はちゃんと別スレッドでやってる? 画像ファイルが1000超えるような場合のエクスプローラの挙動見れば分かるけど、 非同期でやらないとどれだけ高速化しても厳しいと思うよ
391 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 19:20:06 ] そうですね、10個表示されてたらいくつも平行してサムネイルが描画されていってますものね 私もスレッドはやってみようとしかけたのですが、結局ImageListに登録する所あたりで挫けてしまいました スレッドCreateでFileName、サムネイルの大きさを渡してBitMapを返してもらうのか(どうやって?) スレッドの中でImageListにAddするのか ListView.OnDataHintとスレッドがどんなお付き合いにしたらいいのかが分からないのです あ、ちなみに>>389 さんのGDI+は試したらずいぶんと速くなりました
392 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 20:16:40 ] CなどのコードをDelphiへ移植する時、Delphiで使えない識別子があった場合はみなさんどうしてますか?
393 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 21:58:43 ] comboboxのitemを右クリックしたらポップアップメニューを出したいんだけど、 どうしたら良いですか? ContextPopupにPopupmenu1.Popup(X,Y)ってやっても何も起こらないです。
394 名前:393 mailto:sage [2009/05/02(土) 22:27:06 ] 事故レスです。 レジマネジャーって言うフリーのコンポの バグみたいです。 新規でテストプログラムかいたら出来ました。
395 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 19:27:46 ] >>391 実際にスレッド内部からImageList.Add呼んだら問題が起きた?そこまでやったの? とりあえずぐちゃぐちゃになってもいいからやってみないことには問題点も分からないじゃない
396 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 22:11:13 ] やってみました。 何度も暴走させながらも(スレッドってまともに動かしたことがないもので)出来ました 目に見えるItemが同時に読み込まれている感がないのでまだまともに出来ている ワケではないのでしょうが取り敢えず正確に表示できて明らかに今までより 表示速度は速くなりました(4000Filesほど読み込ませても数秒でした) ありがとうございました
397 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 23:11:33 ] マルチスレッド歴1ヶ月のおいらがわかる事はとりあえず、 ImageList.Addメソッドの呼び出しは最低限、クリティカルセクションなりを用いて排他制御 しなきゃいけなさそうと言う事だけ。 後はわかんない。ぷぎゃ。 CriticalSection.Accuire; try ImageList.Add finally CriticalSection.Release; end;
398 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 00:36:07 ] いや、いらないからw
399 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:01:10 ] >>397 だけど、今、具体的にImageListのAddメソッド追ってみたけど、 内部でHandleNeededが呼ばれて、そのHandleNeededでフィールドのFHandleを参照しているから、 下手すると、 procedure TCustomImageList.HandleNeeded; begin if FHandle = 0 then CreateImageList; end; で、CreateImageListに複数のスレッドが同時に突入すると、イメージリストのハンドル が複数作成され、迷子になっちゃわない? ハンドルリークだから、まぁ、そこまで被害拡大しないと思うけど。
400 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:12:08 ] ああ、というか、そもそも前提がお互い違うのかもね。 おいらの場合は、サムネイル作成するサブスレッドでImageListのAddメソッド 呼ぶ事を前提にしてた(それで出来るか分からないけど、ぷぎゃ)。 メインスレッドだけで、ImageList.Addメソッド呼ぶなら必要ないと思う。
401 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:42:09 ] 勉強のため、勝手にちょっと作ってみたけど、今のおいらのレベルで作るとこんな感じかな。 TThumnailEvent = procedure (Sender: TObject; ABitmap: TBitmap) of object; TThumnailer = class(TThread) private FFileName: string; FSize: TSize; FBitmap: TBitmap; private FOnThumnail: TThumnailEvent; private procedure CallOnThumnailEvent; protected procedure Execute; override; public constructor Create(CreateSuspended: Boolean; AFileName: string; ASize: TSize); public property OnThumnail: TThumnailEvent read FOnThumnail write FOnThumnail; end;
402 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:43:02 ] で、実装は { TThumnailer } constructor TThumnailer.Create(CreateSuspended: Boolean; AFileName: string; ASize: TSize); begin FFileName := AFileName; FSize := ASize; FBitmap := TBitmap.Create; inherited Create(CreateSuspended); end; procedure TThumnailer.CallOnThumnailEvent; begin if Assigned(FOnThumnail) then FOnThumnail(Self, FBitmap); end; procedure TThumnailer.Execute; begin // サムネイル作成処理 // ごにょごにょ if Assigned(FOnThumnail) then Synchronize(CallOnThumnailEvent); // VCLのメインスレッドど同期を取る FBitmap.Free; end;
403 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:46:47 ] メインのVCLスレッドでは、 procedure TMainForm.Button1Click(Sender: TObject); var Thumnailer: TThumnailer; begin Thumnailer := TThumnailer.Create(True, FileName, Size, Bitmap); Thumnailer.FreeOnTerminate := True; // 自動破棄 Thumnailer.OnThumnail := OnThumnail; Thumnailer.Resume; end; procedure TMainForm.OnThumnail(Sender: TObject; ABitmap: TBitmap); begin if ABitmap <> nil then ImageList.Add(ABitmap); end; とか。ListView.OnDataHintとかは良くわかってないので省略。
404 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:47:39 ] Thumnailer := TThumnailer.Create(True, FileName, Size, Bitmap); は Thumnailer := TThumnailer.Create(True, FileName, Size); だった。orz
405 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:51:34 ] 「こんなクラス名は嫌だ」