[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/13 11:51 / Filesize : 238 KB / Number-of Response : 924
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれDelphi(超初心者用)その46



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すれば誰かやってくれそうなもんだけどな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<238KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef