[表示 : 全て 最新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


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だと
取得できないので、それを取得しようと思ったのです







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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