1 名前: ◆XcB18Bks.Y mailto:sage [2008/03/12(水) 21:09:39 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その45 pc11.2ch.net/test/read.cgi/tech/1198802907/ <過去スレ> DelWiki避難所(Delphi 関連の過去スレッド) delwiki.info/?Delphi%20%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9
757 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:56:19 ] 出来たらCGIがスケスケで大問題だね
758 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:56:57 ] >>753-754 MLにご本人からポストがありましたがWeb鯖が停止しているだけのようで。 閉鎖の予定は無いそうですよ。
759 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:08:33 ] >>756 >>757 あ、自分のサーバーなんです。ユーザーに配るプログラムから、 特定のディレクトリのファイルを全部 GET でダウンロードできるように したいと思いまして(そこに置くファイルは変化します)。 でも出来ないみたいなのかあ。
760 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:12:38 ] >>759 それなら、ファイルの一覧を取得して返すCGIを置いといて、それにアクセスすればいいと思うよ
761 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:31:11 ] 自鯖ならFTPか何かで取得してもいいんじゃ?
762 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 20:34:51 ] あ、そうか。CGI方式もFTPでもいけそうかあ。 ありがとう。FTPはパスワード変更しそうなんでCGIで検討してみます。 # 最初の質問、説明不足でスミマセンでした。
763 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:13:48 ] TComboBoxでドロップダウンのアイテム選択しているとき、 DELキーを押したら選択アイテムをItemsからむ削除したいんだけど出来るかな? ブラウザの検索履歴を消すイメージで
764 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:18:07 ] そりゃできるだろ
765 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:21:07 ] >>764 どーやるの?
766 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:29:11 ] どこがわからないんだよ
767 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:29:52 ] こいつのがんばり方が正直よくわからない
768 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:55:45 ] TComboBoxでやるのは意外と大変かもよ。 ブラウザは独自のComboBoxもどきでしょうね。
769 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:04:18 ] >>766 itemsの中身がペロッと出て、 そのペロッと出たリストを選んでいる状態で、 DELキーを押したときの処理なんだけど… 説明がヘタですまん
770 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:08:32 ] ボタンイベントを監視してDELが押されたら現在選択中の番号取得してそこをリストから削除すりゃーいい話だろう
771 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:12:22 ] ん?よくわからないんだがこれじゃだめなの? procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i:integer; begin if key=VK_DELETE then for i:=0 to combobox1.Items.Count-1 do if combobox1.Text=combobox1.Items[i] then combobox1.Items.Delete(i); end;
772 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:15:18 ] あぁItemIndex使えばいいか
773 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:18:20 ] keyPressだとうまく行かなかったけど、KeyDownならうまく行きそうだね >>771 ありがとう
774 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:36:26 ] たびたびすいません >>771 でうまくいったと思うんだけど、 ペロッと出してない状態でも、textにitemsと同じ文字列が入ってる状態で DELキー押すとitemsから削除されちゃうのは、しょうがないですかね?
775 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:39:13 ] >>774 DroppedDownは?
776 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:43:24 ] >>775 それはイベントですか? DroppedDownの意味がわからなくてすいません
777 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:44:25 ] ヘルプは?
778 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:47:27 ] >>777 ヘルプに乗ってました ↓こうしたらうまくいきました 助かりました! if (ComboBox1.DroppedDown) and (key=VK_DELETE) then begin
779 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:53:43 ] ループしてる時に固まることがあるのでUpdateWindowを毎回やってるのですが、それでも固まってしまいます UpdateWindowよりも確実な方法はあるのでしょうか? Application.ProcessMessageは遅い印象があるので使いたくないです
780 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:56:39 ] >>779 スレッドに分ける
781 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:05:51 ] >>780 なるほど、マルチスレッドにはあまりしたことがないので思いつきませんでした ですがループで毎回メインフォーム弄ってたらそれも遅くなったりしませんかね?
782 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:02:11 ] >779 > Application.ProcessMessageは遅い印象があるので使いたくないです 印象だけで排除するのはどうよ?つかたぶんその印象は間違っている。
783 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:52:27 ] >>781 自分で考えてください
784 名前:デフォルトの名無しさん [2008/05/24(土) 07:08:07 ] >>779 ・マルチスレッド化する ・Sleep();を入れる マルチスレッドにしてもWait入れたりSleepしないと重くなるけどな
785 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:37:59 ] 特定のコンポーネントの表示を頻繁に行いたいなら ListBox1.Items.Add('foo'); ListBox1.Repaint みたいにすればいいし、ウィンドウのリサイズなんかの操作が固まるのを避けたいなら Application.ProcessMessagesかスレッド使うしかない。 どうやるにしろ表示の更新は重いのには変わりない。
786 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:39:45 ] ListViewならBeginUpdate / EndUpdateで大幅に高速化できるな
787 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:08:40 ] Invalidateしないと、UpdateWindowだけでは更新しなかった気がするのですが。
788 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:54:38 ] 質問させてください。(2つに分けます。長くて申し訳ありません) 次のような宣言をされた DLL があります。(Microsoft Visual C++ 6.0) typedef struct { SOCKET fd; /* Socket Handle */ struct sockaddr_in m_lcd; struct sockaddr_in m_para; struct sockaddr_in m_serial; timeval timeout; int registered; } PICNIC; extern "C" { __declspec(PICNIC_DLL) PICNIC *PN_open(char *ip, u_short lcd_port, u_short para_port, u_short serial_port); __declspec(PICNIC_DLL) void PN_close(PICNIC *pn); __declspec(PICNIC_DLL) int PN_setwhole(PICNIC *pn, int addr, int cn, ...); } つづく
789 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:55:32 ] >>788 のつづき この DLL にアクセスしたくて Delphi 7 でこのようにプログラムを書いてみましたが uses WinSock type TPICNIC = record fd: TSocket; m_lcd: sockaddr_in; m_para: sockaddr_in; m_serial: sockaddr_in; timeout: timeval; registered: Integer; end; function PN_open(ip: PChar; lcd_port: Word; para_port: Word; serial_port: Word): TPICNIC; cdecl; external 'PICNIC.DLL' name 'PN_open'; procedure PN_close(pn: TPICNIC); cdecl; external 'PICNIC.DLL' name 'PN_close'; function PN_setwhole(pn: TPICNIC; addr: Integer; cn: Integer): Integer; cdecl; external 'PICNIC.DLL' name 'PN_setwhole'; C での SOCKET 型が Delphi では TSocket と宣言すれば正しいのかわからないです。(Longint ?) それと、PN_setwhole(PICNIC *pn, int addr, int cn, ...); の最後の「...」を Delphi では、どのように記述すればいいのかわかりません。 どなたか教えていただけないでしょうか?
790 名前:デフォルトの名無しさん [2008/05/24(土) 19:02:15 ] 少し書き間違ってました。 function PN_setwhole(pn: TPICNIC; addr: Integer; cn: Integer; arg: array of Integer): Integer; cdecl; です。DLL 側のソースで va_start(arg, cn); for(i=0;i<cn;i++){ mask = va_arg(arg, int); or = va_arg(arg, int); frame[3+i*2] = mask; frame[3+i*2+1] = or; } va_end(arg); と記述されています。
791 名前:デフォルトの名無しさん [2008/05/24(土) 19:46:48 ] >>758 あせったわw MLみたら、2chの書き込みまで引用されててひどい 誰だよ武内さん語ったの・・・いたずらにしてはひどい話だよ
792 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:07:10 ] あれは、たかだか2chのソースでしかない話を引用した方も悪い
793 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:17:59 ] くだらない筆問ですが 下記サイトで言語習得を目指そうと思います 全てを呼んだわけではありませんがサイトから抜粋 Delphiの Object Pascal という言語をつかって、Windows 95/98/2000 が DLL (ダイナミック・リンク・ライブラリ)として提供している Win32 API (アプリケーション・プログラミング・インターフェース)という 関数群を呼び出してウィンドウズアプリケーションをつくる方法を解説しています 現在仕様しているソフトは無償版Turbo Delphiです RAD環境などサイトとは異なる点がいくつかあると思いますが問題なく勉強していけるでしょうか? これだけのボリュームと内容なので当事はかなり有名な人だったのでしょうね ttp://homepage2.nifty.com/Mr_XRAY/Halbow/ShousaiIndex.html
794 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:21:51 ] >>789 "..."は末尾にvarargsを付ける。詳しくはヘルプを読め SOCKETはたぶん同じ。あとTPICNICをそのまま使うんじゃなくて type PPICNIC = ^TPICNIC としてPPICNICを使わないとだめ(ポインタだから)
795 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:45:52 ] 実体を渡す事が多いようなら 参照にしてもいいと思うよ (var pn: TPICNIC; みたいにさ
796 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:18:38 ] ListViewに何万個ものアイテムを追加するとClearした時やフォーム自体を終了した時にものすごく時間がかかるのですが、 時間のかからないClearの方法はないでしょうか?
797 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:45:26 ] 仮想リストビュー使っとけ めちゃ軽くなる
798 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:56:23 ] TreeViewも標準で仮想にして欲しい
799 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:12:19 ] >>797 ありがとうございます。助かりました!
800 名前:デフォルトの名無しさん [2008/05/24(土) 22:45:31 ] >>793 入門にはお勧めしない 勉強していくうちに言語仕様の勉強にはなるだろうが、 そのサイトでやっているのはDelphiで主に使われるライブラリ、VCLとは真逆の方向性だから。 ここに書いてあるように、Delphiの本流ではないのでいばらの道だよ homepage2.nifty.com/Mr_XRAY/Halbow/Chap00.html#object
801 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:50:52 ] >>794 ,795 とりあえず、794 さんの方法で試したところ、上手く行きました。 ありがとうございました。 特に varargs は存在そのものを知らなかったので 勉強になりました。
802 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:04:22 ] CreateUpDownControlでアップダウンコントロールを 直前に作ったEditに関連付けて作ったのですが、 ウィンドウスタイルにUDS_ARROWKEYSを設定し、矢印キーで位置を移動したら アップダウンコントロールが凹んだまま元に戻らないのですがこれは直せるのでしょうか? アップダウンコントロールをクリックすれば元に戻るのですが・・・ また、C++で試したところ問題はなかったのですが、なぜDelphiでのみ症状が発生するのでしょうか?
803 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 11:55:39 ] Webページの更新をチェックしたいんですが、サーバーにあるファイルの更新日時は どうすれば取得できるのでしょうか?
804 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 12:39:24 ] >>803 HEADリクエスト投げてLast-Modifiedでも見れば?
805 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 13:18:49 ] >>804 出来ました!ありがとうございます。
806 名前:デフォルトの名無しさん [2008/05/27(火) 19:21:11 ] 「'」を文字列で使いたい場合どうするんでしょう? コードとして解釈されてしまいます。
807 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:26:59 ] ''''
808 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:33:53 ] >>806 Chr(39)
809 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:46:15 ] 今から始めるなら Delphi6とTurbo Delphiどっちがいいですか?
810 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:48:07 ] ガゼンDelphiだろ
811 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 05:00:52 ] 両方ともDelphiだろw
812 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 07:20:01 ] TMediaPlayerコンポーネントを使ったソフトでmp3ファイルを開こうとすると 「指定されたファイル名拡張子からデバイスの種類を判断できません」 というエラーメッセージがでるという不具合報告がありました ttp://d.hatena.ne.jp/tomoemon/20051031/p4 ↑を読むと、DeviceTypeを明示的に指定する必要があるみたいなんですが "MPEGVideo"に相当するTMPDeviceTypesの値はどれでしょう? Delphi6を使っているのですが、もしかして対応してなかったりするのでしょうか?
813 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 13:07:24 ] >>812 DeviceTypeはdtAutoSelectでmp3再生できたけど?(Del6) 書き込む前に自分で試してね
814 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 13:46:59 ] dtAutoSelectでも、↓に拡張子とデバイスタイプを結びつけるキーが無いと>>812 のエラーが出る。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\MCI Extensions (NT系) 不具合報告を送ってきた人の環境には、それが無いか別の値になってるのかもしれない。 ちなみにTMediaPlayerに"MPEGVideo"を指定するのはソースを見る限り無理だと思う。
815 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:07:25 ] あ、オレのアプリ(Del7)のMediaPlayer使ったBGM機能もいつの間にか mp3再生できなくなってる… wavで使ってきたから全然気が付かなかった。 開発時は再生できてたのに何でレジストリ変わっちゃったんだろ!? それよりクレーム全然無いってのも、悲しいもんだね
816 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:13:39 ] BCB使いだけどTMediaPlayerは使い勝手悪かったから、自分でDirectShow叩いてプレイヤーコンポ作っちゃったなぁ IGraphBuilderインタフェース作成して、そこからコントロールとかビデオウィンドウとかの必要なインタフェース呼び出すだけだから 最低限の物なら50行も行かないと思う。 Delだとヘッダ使えないから面倒そうだけど。
817 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:26:13 ] >>813 不具合報告がありましたってんだから環境によるものだろ 自分の環境が全てではないぞ 不具合報告にはOS書いてなかったのか? 95とかだったのでは?
818 名前:812 mailto:sage [2008/05/28(水) 22:11:31 ] >>814 あやや、アプリ側で吸収してあげるのは無理っぽいですか レジストリの値をいじってもらうのには抵抗ありますが致し方ないですな >>815 反応ないと寂しいのは、あるある 無茶なクレームつけられるのは困るけど、 今回の人はきちんと対話ができる人だったんで 対応するほうもやる気がでます >>817 いや、XP Proらしいっす ただ、気になる点があるとすればMP3に関連付けられてるのが Media Player Classicだってことでしょうか もしかしたら、そのせいでレジストリにキーが登録されなかったのかも レジストリの値をチェックしてもらう方向で対応してみようかと思います 皆様ありがとうございましたm(__)m
819 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:20:35 ] >>816 つwww.clootie.ru/delphi/download_dx92.html
820 名前:デフォルトの名無しさん [2008/06/01(日) 10:07:41 ] >>817 うるせ、バカ
821 名前:デフォルトの名無しさん [2008/06/01(日) 17:22:38 ] BDS2006 + Vistaのインストールに関する質問です。 bousyo.blog45.fc2.com/blog-entry-116.html の手順に従ってインストールが完了しました。 (アップデートはまだです) まずは、認証登録をしようとしたのですが、 インターネット経由では、「登録サーバーに接続できません。」で× dn.codegear.com/article/33586 によると、プロクシのせいとかかれていますが、当方はプロクシが不要の環境です。 次に、webによる登録で登録を無事にすませ、 認証用テキストがかかれたメールを受取、 そのreg722.txtというファイルをホームフォルダ(.borlandの上位フォルダですよね?) に突っ込みましたが、 「Borland Developer Studio for Windowsは動作を停止しました。 問題が発生ししたため、プログラムが正しく動作しなくなりました。 プログラムは閉じられ、解決策がある場合はWindowsから通知されます。プログラムの終了」 とダイアログが出て、まったく起動ができません。 管理者権限で実行しています。 大変困っております。 うまく起動する方法はありませんでしょうか?
822 名前:821 [2008/06/01(日) 19:31:20 ] アップデート1、2と当てて、ホットフィックス全部当てたら起動しました。 実は、アップデート2が同じような落ち方をして、 うまくインストールできなかったのですが、 UAC切って、DEPも切ったら当てられました。 おさわがせしました。 ありがとうございました。
823 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:08:31 ] あたらしいデルファイはでるんかい?
824 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:04:25 ] で、出るふぁい!
825 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 10:15:44 ] ボタンをクリックするたびに 1 2 4 8 ・ ・と2乗の数を表示させるプログラムを作りたいのですが、 {$R *.dfm} var s: integer; str: string; procedure TForm1.Button1Click(Sender: TObject); var i :integer; begin s :=1; for i :=1 to 44444444 do s := i * 2; str := IntToStr(s); Memo1.Lines.Add(' = ' +str); end; end. こんな風にしてやったら失敗しました。他にも試したのですが、ループ制御変数がどうとか出てできませんでした。 どなたか教えてください。
826 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 10:27:05 ] DelphiのGUIプログラミングはプログラミングの仕方がちょっと独特だから最初は戸惑うかもな type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private 宣言 } num: Integer; // <- 変数はここ public { Public 宣言 } end; implementation procedure TForm1.FormCreate(Sender: TObject); begin // 変数の初期値はここで設定 num := 1; end; procedure TForm1.Button1Click(Sender: TObject); begin // ボタンが押されるたびに呼び出される // なのでループを書く必要はない Memo1.Lines.Add(IntToStr(num)); num := num * 2; end; end.
827 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 11:14:03 ] >>826 ありがとうございます。
828 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 15:49:25 ] DeviceIoControl(Handle, FSCTL_SET_SPARSE, nil, 0, nil, 0, BytesReturned, nil); スパースファイルを作りたいんですけど 未定義の識別子 : 'FSCTL_SET_SPARSE'となります。 何をインクルードすればいいんでしょうか? Delphi6 personal です。
829 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 16:00:43 ] RTLには含まれていないので自分で定義してください。
830 名前:828 mailto:sage [2008/06/03(火) 16:57:30 ] >>829 ども、わかりました。
831 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:11:26 ] >>825 > 1 > 2 > 4 > 8 > ・ これは2乗ではないな、 1 を 起点に x2 していってるだけ > ボタンをクリックするたびに なら、ボタンクリックだけでいきなり44444444回もループしたらダメだろ? Button1のTagプロパティに1をセットして、 procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add(IntToStr(Button1.Tag)); Button1.Tag:=Button1.Tag*2; end; これでいいんではないか?
832 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 23:10:46 ] 2^0 = 1 2^1 = 2 2^2 = 4 2^3 = 8 1^2 = 1 2^2 = 4 3^2 = 8 の違いか。
833 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 23:43:13 ] ぢゃ、こうか? Button1のTagプロパティを0に戻して Memo1.Lines.Add(FloatToStr(IntPower(2,Button1.Tag))); Button1.Tag:=Button1.Tag+1;
834 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 09:34:00 ] >>825 >for i :=1 to 44444444 do s := i * 2; >>831 が >なら、ボタンクリックだけでいきなり44444444回もループしたらダメだろ? と、つっ込んではいるものの、なぜ「44444444」と記述したのか? それを知りたい。
835 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 10:41:03 ] 825です すいません。2のn乗でした。 444444としたのはとにかくどこまでも2倍ができるように作りたかったからです。
836 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 11:03:00 ] それならforよりもwhileじゃね?
837 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 11:13:03 ] forつかって書いてみなさい的な課題だったので・・・。 バリバリ初心者なのでわからないのですが・・・。
838 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 11:30:05 ] なんだよその課題 教師アホすぎてワロタw
839 名前:834 mailto:sage [2008/06/04(水) 11:53:59 ] >>835 とりあえず納得、ありがと。
840 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:13:37 ] for でも while でも case でも if でも何でもいいじゃん 目の前の問題が解決できりゃ万々歳 でしょ? とりあえず Delphi 実行できる環境があるんなら何でも試してみたら いいじゃん。それで出来なかったらガンガン質問すりゃいいじゃん! このスレ、結構ガンガン突っ込む人多いみたいだから安心だよ。
841 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:39:52 ] ボタンをクリックするたびに、*2するんじゃないのか? forの中で、キー入力待ちするの? それとも、forで一気に*2していくのか? 見えないぞ。
842 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:40:58 ] 2レスで解決してるのに引っ張るねぇ
843 名前:825 mailto:sage [2008/06/04(水) 22:28:29 ] 先生が見せてた見本ではクリックするたびに2,4,8,16,とMemoに表示されていってました。 長引かせてしまいすいません; プログラム板の人は親切な人が多いですね。 ありがとうございました。これからは授業ちゃんと聞きます。 課題は途中経過を書いて出します。
844 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 03:17:04 ] こういうことじゃね? procedure Form1.Button1Click(Sender: TObject); var i,j: Integer; begin j := 1; // 計算用変数jの初期値として1を入れておく with Button1 do begin Tag := Tag + 1; // ボタンを押した回数をTagに記録 for i := 1 to Tag do// ボタンを押した回数分jに2を掛ける処理 j := j * 2; end; Memo1.Lines.Add(IntToStr(j)); end;
845 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 15:56:11 ] これくらいでwith使うな OnCreateでButton1.Tag = 1; Button1.OnClickで Button1.Tag = Button1.Tag * 2; Memo1.Lines.Add(IntToStr(Button1.Tag)); 又は Button1.Tag = Button1.Tag + 1; Memo1.Lines.Add(IntToStr(Math.Power(2,Button1.Tag)));
846 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:09:56 ] >>826 でいいじゃん。 numはグローバル変数にして、 var num: Integer = 1; のほうが楽かも。
847 名前:844 mailto:sage [2008/06/05(木) 18:13:04 ] >>845 Button1のNameプロパティ変えたりすることを考えると、 どうしてもwith使ってしまう悪い癖は抜け切れそうに無い。 Form1のプロパティを参照したい時に面倒になるのは承知済み。 この場合、複数のボタンで使いまわし出来るよう with TButton(Sender)の方が良かったけどね。 >>837 に従って無理やりfor文を入れたけど、 for文を使わなくても良いのなら>>845 でFA。
848 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:52:52 ] すごい初心者で申し訳ないんのですが、 dn.codegear.com/jp/article/36347 ここを参考にデータベースでなんか作ってみたのですが これをコンパイルしたときに、interbaseを起動していないとエラー落ちしてしまいます。 たとえばexeを配布するときにはどうしたいいのですかね。 すごくしょうもないこと言っていたらすいません。
849 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:11:47 ] >>848 そりゃInterbaseに接続して処理するんだからしょうがない。 それと配布するとなるとインストール先にもInterbaseのライセンスが必要になる。 単一アプリケーションの内蔵データベースとしてしか使わないんであれば、Interbaseの代わりにEmbeded Firebirdの使用をおすすめ。 FirebirdはInterbase6.0互換だからVCLのInterbase接続コンポがそのままつかえる。 ※IDEからデバッグ実行したときにカレントディレクトリとexeファイルのパスの違いで問題起きるので、 アプリケーションの初期化のところでexeファイルの場所にSetCurrentDirectoryを使ってカレントディレクトリを変更しておくといい。
850 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:35:19 ] A-Zの26人の人がいて、8人くらいでじゃんけんをしたとする。 その結果を書いたtxtがあって、 1.自分の勝率(自分はAとする) 2.自分のBに対する勝率 3.自分が相手にすると勝率が高い人TOP5 4.自分と一緒に勝つ確立が高い人TOP を出力したいのですが、全然ナにやっていいかわからないで困っています。 1.テキストをTmemoに取り込んだ 2.勝った人の1人目をlistboxに出力してみた、うまくいかなかった 3.データベースは使い方がよくわからなかった 4.試合数だけ数えてみた:これはできた 5.やりたいことをするために何をすればいいのかわからなくなってきた いまここ
851 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:42:30 ] > うまくいかなかった そのうまくいかなかった部分を言おうよ
852 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:10:50 ] >>851 ReadInがうまく使えなかったw
853 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:12:48 ] それじゃ誰にも答えてもらえないよ さようなら
854 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:02:58 ] >>850 文字列解析の課題かな。 txtファイルがどんなのかわからないと答えようがない。 csv形式なら、TStringList.CommaTextを使ってデータを切り分けれる。
855 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:36:43 ] プログラム以前の問題でしょう。 やるべきことを整理して箇条書きにして、一歩一歩解決していくしかないでしょう。 質問が具体的じゃないと、具体的に回答できるはずもありません。
856 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:44:00 ] txtをどっかにうpすれば誰かやってくれそうなもんだけどな
857 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:43:47 ] 書き方悪くてすいません。850です。 irsj.bestplaying.com/modules/result/ ここのページのhtmlを取得してやろうと思ったんですが、まずはテキストと思い、 39274 フリー@(´゚ω゚`)ナッツエレガント 2008/06/06 01:30 Win genzouzi(1648) satou(1717) Molt(1437) hujisan(1438) Lose masa4_(1864) hyakusiki(1152) parusah(1610) against(1600) Upload コメント (0) こんな感じで出力されました。 これが一個のレコード?になります。なのでCSVではないです。 で、フローチャートを考えてみたのですが、それがまずわからなくて悩んでいます。
858 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 03:12:34 ] >>855 を1000回読んでから出直して来い
859 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:44:15 ] 何言ってんのかさっぱりわからんな
860 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:25:14 ] htmlから必要なデータを抜き出したいのか。 StrPosを使って、'>Win<'を探す。 それ以降にある '</a>'を探す。 名前は >mog</a> となっているから、>から<まで抜き出す。 こんな感じでやればいいよ。
861 名前:デフォルトの名無しさん [2008/06/07(土) 10:11:55 ] >>859 お前がバカだからだよ
862 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:16:05 ] 俺ほどぢゃないだろ
863 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:20:24 ] つうかこんなスレ、リキ入れて読んでられないからさ〜 酒のみながらみてるときもあるし… できるだけわかり易い文章か母性本能くすぐりーの感じで書かないと
864 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:15:08 ] >>863 MLでやれ
865 名前:デフォルトの名無しさん [2008/06/07(土) 23:31:06 ] 質問です。 壁紙を手前に表示するソフトを作ろうと思っています。 そこで TForm と TImage を半透明にして常に手前に表示してマウスなどの入力は背後のウィンドウに渡すようにしたいのですがどうすればできますか?
866 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:36:04 ] GetNextWindowで次にあるウィンドウ出して送ればいいと思う
867 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:21:32 ] >>866 ありがとうございます。GetNextWindow を調べてみます。
868 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 06:48:50 ] Delphiのフォームに画像はりつけて全画面かつ最前面表示して 後ろのExcelやExplorerを自然に操作するってことか。 フォームへのウィンドウメッセージをすべての他の適切なウィンドウに再送信しまくるなんて かなり面倒なことをしないといけなさそうだな。たぶん挫折するだろう。 付箋紙のイメージ表示機能で我慢しておいた方がいいんじゃね。
869 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:52:20 ] >>865 つ SetLayeredWindowAttributes つ WS_EX_TRANSPARENT
870 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:57:30 ] ここの人、親切。 でも「付箋紙のイメージ表示機能で我慢」になりそうです。 クリックすると逃げるようにして邪魔にならないようにしています。 でも多謝。
871 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 13:48:56 ] delphi6なんだけど ListViewでオーナーデータだとマルチセレクト出来ない? 出来ない場合出来るようにする方法とか教えてください
872 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:00:30 ] TClientSocketでデータを数値として受け取るにはどうすればいいんでしょうか? Ordで大丈夫なんでしょうか
873 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:32:36 ] バイナリデータを受信したとき、ってこと?1バイトならOrdでいいかな。複数バイトならバイトオーダの考慮も 忘れずに。
874 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:58:47 ] 普通にテキスト化して送ったら
875 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:29:59 ] TListViewからの派生クラスを書いているのですが、縦スクロールバー出現によるクライアントエリアの横サイズ変更に追従するには どのメソッドで変更に追従する処理をすればよいのでしょうか? 派生クラスで実装するので、できればメソッドのオーバーライドで処理したいです。
876 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:19:56 ] RGB0~255を三次元空間に見立てて その中に数十個のピクセルをFormなりImageなりに表示するのを支援してくれる ライブラリってないですか? DirectXやOpenGLほどハイパフォーマンスで大げさなのじゃなくて ちょっとしたグラフライブラリ程度のもので。
877 名前:デフォルトの名無しさん [2008/06/10(火) 13:53:10 ] いっていることがわからないのだが、ボクセルということだろうか
878 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:25:41 ] 色立体とかいう物を表示したいんじゃなかろうか。
879 名前:デフォルトの名無しさん [2008/06/10(火) 23:32:26 ] >>877 バカか?
880 名前:デフォルトの名無しさん [2008/06/10(火) 23:33:25 ] >>870 シナ人失せろ
881 名前:デフォルトの名無しさん [2008/06/10(火) 23:37:13 ] スマン ど忘れして しかも ググッテも出てこない 範囲指定して字下げするのってどうやるんだっけ? 忘れちまった・・・・・ 年だ・・・・
882 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:44:14 ] >>881 Ctrl+Shift+I/U フリーカーソル無効化してるならTab/Shift+Tabでもできる。
883 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:58:55 ] >>882 やるね!! まあああああああああああベラス!! ありがとう!! フリーカーソル?・・・・ググッタ!コンポーネントかぁ メモメモ ついでに、選択したところ全て注釈にする方法わかりますか? これも出来たはずなんだが・・・
884 名前:デフォルトの名無しさん [2008/06/11(水) 00:13:32 ] テプラ作った大切にするぉ サンキュウ デルファイ マイスターズ
885 名前:デフォルトの名無しさん [2008/06/11(水) 09:34:41 ] >>879 バカっていうんなら、人にわかるように説明しろよ
886 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 09:43:27 ] グラフライブラリって書いてあるじゃんw
887 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:35:03 ] TChartって2次元までだっけか?
888 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:39:59 ] >>883 選択状態にして選択範囲を右クリックしてみるといいよ。 ちなみに、Ctrl+/で出来る。
889 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:29:00 ] TlistBoxを3つ並べてスクロールを同期させたいんだがどうすればいい?
890 名前:デフォルトの名無しさん [2008/06/11(水) 14:36:13 ] >>886 いやそこの前の話
891 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:59:06 ] >>889 OnScrollで他もスクロールさせる。
892 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:38:46 ] >>888 ふむふむ ありがとう テプラットきます
893 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:31:07 ] >>888 それ、D7で出来ないみたい あと、いつの間にか右クリックして「しおり」のテンキーの数字が効かなくなってるし
894 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:33:02 ] >>893 うん やってみた ターボの方は出来るんですけれど 7はダメでした 報告ありがとう でも 7でもやる方法があった様な気がするが はて 勘違いかなあ
895 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:12:29 ] MainMenuについて聞きたいんですが 項目の右側に勝手に(Z)と付くのはどうにか出来ませんか?
896 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:38:15 ] >895 AutoHotKeysをmaManualに。
897 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:50:17 ] >>896 ありがっとう!
898 名前:デフォルトの名無しさん [2008/06/13(金) 09:30:41 ] >>894 GExpertsのマクロでコメントアウトなどできた気がするよ
899 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 10:59:51 ] homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/790_ListView.htm#04 ここの通りにやってlistviewのカラムクリックでソートができたのですが カラムをもう一回クリックしたら逆順ソートになるようにしたいのですが、どうしたらいいか教えてください。
900 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:09:25 ] >>899 フラグでも立てて、Compareに-1掛ければいい。
901 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:17:28 ] >>900 それはわかるんですけど、そのフラグがわからんのです。 そもそもcompareイベントの仕組みがよくわからなくてコピペしたのがいけないんですが・・w
902 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:39:40 ] デバッガで追いかけろ
903 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:46:29 ] 前に書いたソートサンプル。適当に解読してくれ。 { Private 宣言 } ColumnToSort: Integer; LastColumnToSort: Integer; Ascending: Integer; procedure TForm1.FormCreate(Sender: TObject); begin ColumnToSort := -1; LastColumnToSort := -1; end; procedure TForm1.listviewColumnClick(Sender: TObject; Column: TListColumn); begin ColumnToSort := Column.Index; if (Ascending > 0) and (ColumnToSort = LastColumnToSort) then Ascending := -1 else Ascending := 1; LastColumnToSort := ColumnToSort; listview.AlphaSort; end; procedure TForm1.listviewCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin Compare := ( StrToInt(Item1.SubItems[ColumnToSort-1]) - StrToInt(Item2.SubItems[ColumnToSort-1]) ) * Ascending; end;
904 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:59:15 ] >>903 助かった。thx! コピペでできてしまったので、次使うときのために解読しとくわ。
905 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:44:41 ] コピペだけでアプリ一本作りそうな勢いだなww
906 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:35:05 ] >>905 教科書はネットのみだからおのずとコピペが多くなってしまうのは仕方ない気がw アプリはもうできてて今は改善している段階でふ。
907 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:34:51 ] ifの条件が複数あるときはVBのようにandで繋ぐことは出来ないんでしょうか?
908 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:38:27 ] そんなの入門サイトに乗ってそうだけどなあ 回答としては「出来る」よ
909 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:33:57 ] listviewで表を作っているんですが ある条件を満たしたときに画像を文字の後ろに付け足したいのですがどうすればいいですか? column1,column2,・・・ 名前,数学の点数,国語の点数, で、数学の点数や国語の点数が80点を越えたときに 各々数学マーク.bmp、国語マーク.bmpを名前の後ろに付け足したいという意味です。
910 名前:デフォルトの名無しさん [2008/06/14(土) 17:20:45 ] >>907 自分で答えを書いているじゃないかw
911 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 17:47:55 ] >>909 OwnerDrawするしかないと思う
912 名前:デフォルトの名無しさん [2008/06/14(土) 18:59:06 ] listviewのownerdrawか・・・激しく挫折しそうだ・・
913 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:38:35 ] >>907-908 演算子の優先度がVBと違うからできないと思ったのかもしれないな if (条件) and (条件) 〜 みたいに括弧で括らないといけないから
914 名前: ◆XcB18Bks.Y mailto:sage [2008/06/15(日) 01:09:49 ] >>912 ListViewのOwnerDrawはOwnerDataを使っていなければそんなに難しくないと思います。 OwnerDataを使っているならHeaderコントロール+ListBoxマジオススメ。
915 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:58:17 ] ListViewやListBoxの内容は直接編集出来ないんでしょうか?
916 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:36:59 ] クリックしたときに、カーソル直下のセルに内容入れたTEdit生成して、TEditがフォーカス失ったらTEditの内容をセルに書き込めばいいと思うよ。 TStringGridで用が足りることも多いけどNE
917 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:17:04 ] formcreateでiniファイルを読み込んで、listboxにiniの内容を書き出したいのですが for do でループしようと思ったら、iniファイルのセクションの項目数をカウントする方法が思いつかずに 困っているのですが、これはどうしたらいいのでしょうか 逆にtxt形式にしてreadlnでuntil Eofとかしないとだめなのでしょうか。ご教授ください。
918 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:43:28 ] >>917 ReadSections
919 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:47:52 ] >>918 ありがとう
920 名前:デフォルトの名無しさん [2008/06/17(火) 08:04:52 ] >>919 自演おつ
921 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:54:27 ] AnsiやUTF8の文字列をUTF32にエンコードするにはどうすればいいんでしょう? WikipediaのUnicodeの項目を見るとUCS4とUTF32は互換性があるらしいですが、 WideStringToUCS4Stringでエンコードしても、UCS4StringをStringに正常にキャストする方法が見つからず、 UTF32かどうか確かめられません よろしくお願いします
922 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:44:59 ] WideStringToUCS4Stringがあれば、当然UCS4StringToWideStringもあるわけだけど、 直接Stringにしたいって事?
923 名前:921 mailto:sage [2008/06/18(水) 19:30:09 ] すみません、自己解決しました MBCSUtils(cc.codegear.com/item/25496 )のAnsiStringToUtf8をしたあと、Utf8ToWideStringをしたら 望むとおりの結果がでました >>922 そうです UTF8にしたときは普通にStringとして取得できますが、WideStringToUCS4Stringだと 取得できないので、それを取得しようと思ったのです