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
756 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:55:39 ] お前は行ったことの無い店の商品が分かるのか? そういうことだ でも店によっちゃホームページとかで公開してる場合もある それと同じようにファイル一覧が見れるページもある
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すれば誰かやってくれそうなもんだけどな