2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2006/12/08(金) 16:03:27
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その36
http://pc8.2ch.net/test/read.cgi/tech/1159485364/

<過去スレ>
http://delwiki.info/?Delphi+%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9 (上のDelWiki避難所内)
または>>2-10あたりにある過去スレURL

<関連スレ>
※Delphiに関係してる雑談および関係してない雑談については以下でどうぞ
バカボンのDelphi不買・販促・その他談話室その29
http://pc8.2ch.net/test/read.cgi/tech/1153227982/

<その他>
BorlandHomePage
http://www.borland.com/jp/
DelWiki避難所
http://delwiki.info/
BDN(BorlandDeveloperNetwork)
http://bdn.borland.com/jp/delphi

過去スレは>>2-10あたりのどこかに


2 :デフォルトの名無しさん:2006/12/08(金) 16:05:57
>>1の続き:
<過去スレ>
01:http://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
02:http://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
03:http://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
04:http://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
05:http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
06:http://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
07:http://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
08:http://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
09:http://pc5.2ch.net/test/read.cgi/tech/1071294733/
10:http://pc5.2ch.net/test/read.cgi/tech/1074523803/
11:http://pc5.2ch.net/test/read.cgi/tech/1076609666/
12:http://pc5.2ch.net/test/read.cgi/tech/1076610073/
13:http://pc5.2ch.net/test/read.cgi/tech/1081003641/
14:http://pc5.2ch.net/test/read.cgi/tech/1085239007/
----(続く)----

3 :デフォルトの名無しさん:2006/12/08(金) 16:06:27
>>2の続き:
15:http://pc5.2ch.net/test/read.cgi/tech/1087823906/
16:http://pc5.2ch.net/test/read.cgi/tech/1089779142/
17:http://pc5.2ch.net/test/read.cgi/tech/1091671391/
18:http://pc5.2ch.net/test/read.cgi/tech/1093996761/
19:http://pc5.2ch.net/test/read.cgi/tech/1097454588/
20:http://pc5.2ch.net/test/read.cgi/tech/1101530485/
21:http://pc5.2ch.net/test/read.cgi/tech/1104511938/
22:http://pc5.2ch.net/test/read.cgi/tech/1107332482/
23:http://pc8.2ch.net/test/read.cgi/tech/1110470895/
24:http://pc8.2ch.net/test/read.cgi/tech/1115581376/
25:http://pc8.2ch.net/test/read.cgi/tech/1119008091/
26:http://pc8.2ch.net/test/read.cgi/tech/1121249711/
27:http://pc8.2ch.net/test/read.cgi/tech/1126590039/
28:http://pc8.2ch.net/test/read.cgi/tech/1131168199/
----(続く)----

4 :デフォルトの名無しさん:2006/12/08(金) 16:06:59
>>3の続き:
29:http://pc8.2ch.net/test/read.cgi/tech/1135866929/
30:http://pc8.2ch.net/test/read.cgi/tech/1138370150/
31:http://pc8.2ch.net/test/read.cgi/tech/1142594051/
32:http://pc8.2ch.net/test/read.cgi/tech/1145267913/
33:http://pc8.2ch.net/test/read.cgi/tech/1148378877/
34:http://pc8.2ch.net/test/read.cgi/tech/1151143010/
35:http://pc8.2ch.net/test/read.cgi/tech/1155263138/
36:http://pc8.2ch.net/test/read.cgi/tech/1159485364/
37:http://pc8.2ch.net/test/read.cgi/tech/1162458229/

<関連?スレ>
Delphi初心者のための寺子屋
http://pc8.2ch.net/test/read.cgi/tech/1132756268/
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】 (※ゲーム制作技術板)
http://pc8.2ch.net/test/read.cgi/gamedev/1097836469/

※ほかにもスレッドあります。


5 :デフォルトの名無しさん:2006/12/08(金) 16:08:06
スレ番変えるの忘れてたごめん

<前スレ>
くだすれDelphi(超初心者用)その37
http://pc8.2ch.net/test/read.cgi/tech/1162458229/

6 :デフォルトの名無しさん:2006/12/08(金) 16:17:34
> スレ番変えるの忘れてたごめん
どんまい。

7 :デフォルトの名無しさん:2006/12/08(金) 17:30:19
どどんまい

8 :デフォルトの名無しさん:2006/12/08(金) 17:33:27
どるふぁい

9 :デフォルトの名無しさん:2006/12/08(金) 18:49:40
D7付属のクイックレポートで連続用紙への印刷って出来ないんでしょうか。
レポートの設定の用紙サイズに出てこないのですが。


10 :デフォルトの名無しさん:2006/12/08(金) 20:19:47
前スレでシャッフルネタやってたけど、順列の数字を入れた配列から
ランダムに値を一個選んで、そのたびにその値を配列から
削除していく方法があるけど駄目か?

11 :デフォルトの名無しさん:2006/12/08(金) 20:25:34
前スレ>>970

IDEっていうのは、統合開発環境のこと。ソフトを作るソフトのことです。
Delphiで言えば、Delphi自身ですね。

で、ターボの開発環境は、前スレにも出ていましたが、Delphi6に比べ、*重い*、*バグバグ*なわけです。
ただ、ターボの方が、新機能が追加されていたりします。

IDEから出力したソフト、つまり、あなたが、開発したソフト自身は、IDEとは、別です。
普通に動きます。キビキビ動きます。ターボでもDelphi6でもどちらも問題はありません。

12 :デフォルトの名無しさん:2006/12/08(金) 20:46:18
> Delphi6に比べ、*重い*、*バグバグ*なわけです。

Win2000 とVista みたいなものだな。

13 :ななしへたぐらま ◆XcB18Bks.Y :2006/12/08(金) 22:01:53
>>1お疲れさまでした.

>>11
統合開発環境といわれてもピンと来ない方も多そうですね.

その昔,Windowsが普及する前,MS-DOSというOSが使われていた時代は

・ソースコードを編集するソフト(テキストエディタ)と
・ソースコードを実行ファイルに変換するソフト(コンパイラ,リンカ)と
・実行ファイルをデバッグするソフト(デバッガ)は

それぞれ別のソフトであり,別々に実行する必要がありました.
これらをひとつのソフトで全部行えるようにしたのが統合開発環境です.
BASIC言語ではかなり昔から統合開発環境になっていましたが機能は今に比べると貧弱でした.
現在のような統合開発環境を実現したのがボーランドのターボパスカル,Delphiの先祖です.


14 :デフォルトの名無しさん:2006/12/08(金) 23:16:23
どどんまい使われてるの久しぶりに見た

15 :デフォルトの名無しさん:2006/12/08(金) 23:19:19
今、一部の界隈で大ブレイクしてるからな

16 :デフォルトの名無しさん:2006/12/08(金) 23:52:09
>>12
Vistaは、重いだけでなくバグバグなんすかw
きっついな

17 :デフォルトの名無しさん:2006/12/09(土) 00:45:14
> http://delwiki.info/?%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FToolbar2000
> rmklever.com というサイトでいくつかの追加テーマや、
> TBX 用追加コンポーネントが公開されています。Toolbar2000 や
> TBX の実力を確認したい人は、ページ左下にある EXE demo がおすすめ。

http://www.rmklever.com/delphitbx
の左下のEXE demoですが、ダウンロードできますか?
リンク切れしてるのかな・・・

18 :デフォルトの名無しさん:2006/12/09(土) 00:51:14
>>10
それじゃ遅い。配列から削除するのは後方の項目をコピーしなきゃならんので、
シャッフルで内容交換するより、遅い。10万項目あったら100倍以上
時間がかかるだろうよ。

19 :デフォルトの名無しさん:2006/12/09(土) 01:00:53
>>17
> ダウンロードできますか?
できませんね。

メールで聞いてみたらどうでしょう。

20 :デフォルトの名無しさん:2006/12/09(土) 01:11:31
>>1
スレ立て乙です。

>>11
> 普通に動きます。キビキビ動きます
D6はメモリマネージャが〜とか、要らないツッコミ入れる香具師が出る悪寒…。

21 :デフォルトの名無しさん:2006/12/09(土) 01:30:52
>>20
くあしく

22 :デフォルトの名無しさん:2006/12/09(土) 01:50:11
C#で以下のように記述するのを、Delphiでやりたいんですが・・・

Form1 f1 = new Form1();
f1.Show();

誰か教えてください><

23 :デフォルトの名無しさん:2006/12/09(土) 01:52:43
 Form1 := TForm1.Create(Self);
 Form1.Show;

てことじゃなくて?

24 :デフォルトの名無しさん:2006/12/09(土) 01:55:02
>>23
早速ありがとうございました。
そういうことでした。
タスクバーに表示されないのか・・・

25 :デフォルトの名無しさん:2006/12/09(土) 01:55:22
>>21
TurboはFastMMやFastCodeなんかの在野の成果物をライブラリに取り込んでいる。
D6でもライブラリを落とせば普通に使用できるけど。

26 :デフォルトの名無しさん:2006/12/09(土) 02:01:06
>>24
SetWindowLong で WS_EX_APPWINDOW 追加する

27 :デフォルトの名無しさん:2006/12/09(土) 02:14:36
>>19
問い合わせてみました。

BDS2006で、TBXインストール成功した方いませんか?
いまいちわかんない・・・。

28 :22:2006/12/09(土) 02:47:32
>>26 ありがとう

SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_APPWINDOW);
Form1 := TForm1.Create(Self);
Form1.Show();

表示されないよ(つд`
ぐぐったら表示されないようにする方法はでてくるんだけど・・・

29 :デフォルトの名無しさん:2006/12/09(土) 03:04:42
アプリケーションのメインフォームとは別のフォームも
タスクバーに表示したいってこと?
MS-Excelで複数のファイルを開いたときみたいに

だったらCreateParamsメソッドをオーバーライドしてそこでWS_EX_APPWINDOW;
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

ちなみにShowメソッドでフォーム表示する場合は
フォームのonCloseイベントで解放処理を入れないとメモリリークする
下の2行を忘れずに
Action := caFree;
Form1 := nil;




30 :デフォルトの名無しさん:2006/12/09(土) 03:13:21
BDS2006のC#Builderのように、Delphiでも、コード補完の一覧で、説明文を表示させることは出来ますか

31 :デフォルトの名無しさん:2006/12/09(土) 03:49:32
>>28
先にGetWindowLongを使って既に設定されているスタイルを取得するんだ
そうしないと他のスタイルが消えてしまうぜ
ちなみに渡すのはForm1.Handleだぜ
Applicationてのは見えないウインドウでありForm1のオーナーなんだ


32 :22:2006/12/09(土) 04:26:47
>>29>>31
ありがとう
Delphiの人は親切だな・・・

でもどうもうまくいきません。
おとなしく本買ってきます

33 :デフォルトの名無しさん:2006/12/09(土) 08:22:56
俺がD6PersonalからTrubo Exprolerに乗り換えた理由がひとつだけある。
[Ctrl]+[Shift]+↑↓で宣言とコードを移動できること。


34 :デフォルトの名無しさん:2006/12/09(土) 09:26:11
116 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 17:25:13
ttp://beeography.wordpress.com/2006/09/12/just-wanna-let-you-know/
ここに書いてある方法でTurbo Exprorerでも合法にコンポ入れれるよ

117 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 18:02:21
あとこれ。
dclusr経由のコンポーネントインストールが、ライセンス違反かどうかの話。
ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200609/06090014.txt


35 :デフォルトの名無しさん:2006/12/09(土) 12:55:43
>>33
D6Proは出来るけど、Personalは出来ないのか

36 :デフォルトの名無しさん:2006/12/09(土) 16:47:00
ほんとだ、出来た。こんなやり方もあったのか… D7 pro ですが

37 :デフォルトの名無しさん:2006/12/09(土) 17:07:00
>>34
追ってなかったんだが、それ、結局は白ということに落ちついてたんだ。へぇ。

38 :デフォルトの名無しさん:2006/12/09(土) 17:25:38
>>34
下っかわ、涙目で粘着してるやつ笑えるねw

39 :デフォルトの名無しさん:2006/12/09(土) 17:58:29
> 結局は白ということに
アップデートで抜け道消滅だけどね。

40 :デフォルトの名無しさん:2006/12/09(土) 20:39:14
ifのときだけインデントを2文字じゃなくて3文字にするのは俺だけじゃないはず
つまり:
if hoge then
hoge;
じゃなくて:
if hoge then
hoge;

41 :デフォルトの名無しさん:2006/12/09(土) 20:39:48
インデント修正

ifのときだけインデントを2文字じゃなくて3文字にするのは俺だけじゃないはず
つまり:
if hoge then
  hoge;
じゃなくて:
if hoge then
   hoge;

42 :デフォルトの名無しさん:2006/12/09(土) 20:41:57
そういうの後で手入れる時うぜーんだよ

43 :デフォルトの名無しさん:2006/12/09(土) 21:06:29
今はじめてプログラム組んでるんですけど変数をテキストに保存して次回起動時に呼び出すというものができません。
ヒントをください。

type
xxx = record
a: array[1..3] of Integer;
b: array[1..3] of Integer;
c: array[1..3] of Integer;
end;
var
  yyy:xxx;
zzz:TextFile;
m: array[1..3] of Integer;
n: array[1..3] of Integer;
o: array[1..3] of Integer;

a[1...3]はm[1..3]と同値をとらせる
同様に、bはn、cはoと対応させる
保存時に対応する変数をレコード変数にいれて保存し
次回起動時にテキストから呼び出した値を適切な変数に代入

というのを、プログラムが閉じるときかなにかに自動で保存して呼び出したいのです。
レコードをつかわずに簡単な方法とかこうすれば軽くなるとかいうのもあれば教えてほしいです。
釣りかと思う人もいるかもしれませんけど、本当に困ってます。

44 :デフォルトの名無しさん:2006/12/09(土) 21:26:49
TStringListじゃダメなの?
savetofileとloadtofileを使えば簡単に
ファイルに読み書きできるぞ

45 :デフォルトの名無しさん:2006/12/09(土) 21:42:18
>>44
ぐぐってみましたが例文が見つかりません。
良ければ使い方を例文でおしえてくれませんか?


46 :デフォルトの名無しさん:2006/12/09(土) 21:45:18
あるいは、TRegIniFileとか。

47 :デフォルトの名無しさん:2006/12/09(土) 21:58:16
Wikiの「米 Borland の Delphi 6 Personal の使用者登録ページ」ってところがリンク切れになってるようですが、
今はどこを見ればいいのでしょうか?

48 :デフォルトの名無しさん:2006/12/09(土) 22:05:55
>>45
どの部分がわからないのか。
・起動時と終了時に処理させる方法。
・変数の中身をファイルに保存する方法。
・Integer を文字列にする方法。

49 :デフォルトの名無しさん:2006/12/09(土) 22:13:01
>>48
まず、保存したい変数がintgerなのでInttoStrにするまではわかるんですけど
それを狙った行に保存する方法がわからないのと

起動時に処理はメインフォームのonCreateで手続きすればいいのはわかりますが
終了時に関してはわかりません。

たびたびすみません

50 :デフォルトの名無しさん:2006/12/09(土) 22:37:02
>>47
Wiki を直しておきました。

51 :デフォルトの名無しさん:2006/12/09(土) 22:45:41
>>48
起動時にiniファイルがないまま起動したらエラーがでました。
エラーを出さずにiniファイルを作成し、仮にiniファイルがあるばあいは上書きしない方法がありましたらおしえてください。

52 :デフォルトの名無しさん:2006/12/10(日) 00:20:45
Turbo Delphi Explorer使ってるんですが、コードのところで右クリックすると、
『オブジェクト参照がオブジェクトインスタンスに設定されていません。』と出て
右クリックメニューが使えないのですが、これはバグですか?

53 :デフォルトの名無しさん:2006/12/10(日) 00:30:31
はい。

54 :デフォルトの名無しさん:2006/12/10(日) 00:33:36
D7Ent版ですがIDEを終了させると読み込みエラーが延々と出るんですが同じような症状の人居ます?



55 :デフォルトの名無しさん:2006/12/10(日) 00:55:40
あんたが追加したコンポーネントがバグってるんだろ。

56 :デフォルトの名無しさん:2006/12/10(日) 02:42:06
設計時ではなく実行時にイベントハンドラを動的に割り当てたいのですが、
どうすればいいのでしょう。

57 :デフォルトの名無しさん:2006/12/10(日) 02:50:38
button2.onclick:=button1click;

58 :デフォルトの名無しさん:2006/12/10(日) 02:55:12
実行中にコンポーネントのプロパティを設計時に設定した値に戻すにはどうしたらよいのでしょうか?

59 :デフォルトの名無しさん:2006/12/10(日) 02:57:12
>>57
できました。
ありがとうございます。

60 :デフォルトの名無しさん:2006/12/10(日) 03:01:32
既にあるコンポーネントのプロパティを変えるんじゃなくて
既にあるコンポーネントは消して同じコンポーネントを作り直せ

61 :デフォルトの名無しさん:2006/12/10(日) 03:06:55
で、どうやって設計時の値を取得するの?

62 :デフォルトの名無しさん:2006/12/10(日) 03:08:45
設計時なら決めうちだろうが

63 :デフォルトの名無しさん:2006/12/10(日) 04:49:46
決めうちならプロパティーをセットするのも簡単だわな。

64 :デフォルトの名無しさん:2006/12/10(日) 06:13:28
TControlを継承しているTWinControlにはなぜOnDblClickが無いのですか。
TControl、TWinControl、OnDblClickに限ったことではないのですが
TTabSheetでダブルクリックイベントを使いたいと思って
ヘルプで上位コンポーネントをたどって行ったところ
TControlではOnDblClickがあるのに、それより下位のコンポーネントでは
OnDblClickが無かったので不思議に思いました。


65 :デフォルトの名無しさん:2006/12/10(日) 07:21:37
別にTControlにしかないわけではなく、きちんと下位クラスにも継承されてる。
プロテクトメンバだからオーバーライドして可視性を変更しない限り外から見えないだけ。
ヘルプに書いてないのは、上位クラスから変化がなければ何も書かないのが習わしだから。
FreeがTObjectのところにしか載ってないのと同じ。

ただし自分で既存のクラスを継承してOnDblClickをpublicやpublishにするなら、
プロパティの可視性以外に、ControlStyleを適切に設定するなど、
その処理をサポートするためのコードを自分で追加しないといけない。

66 :デフォルトの名無しさん:2006/12/10(日) 11:30:14
>>39
リンク先をよく読めば分かるけどアップデートしてもコンポ追加できるよ

67 :デフォルトの名無しさん:2006/12/10(日) 11:47:58
>>66
でも今度は不正行為になるんじゃないの。

68 :デフォルトの名無しさん:2006/12/10(日) 12:19:24
>>49-51
も答えてください、お願いします。

69 :デフォルトの名無しさん:2006/12/10(日) 13:16:21
>>68
FileExists で判定するとか。

70 :デフォルトの名無しさん:2006/12/10(日) 13:19:05
>>65
ありがとうございます。
上位にあるものは無条件で下位でも使える、オブジェクトインスペクタでも可視になる、と思ってました。

71 :デフォルトの名無しさん:2006/12/10(日) 13:49:18
>>68
やっつけた間違いあったらだれか補完よろ

var
TempList: TStrings; Filename : string;
a: array of integer; i: integer; Max: Integer;

Filename := GetCurrentDir + '\test.txt';
//GetCurrentDir=実行中のプログラムのフォルダを表わす
//ファイルからの読み込み
TempList := TStringList.Create;
try
TempList.LoadFromFile(Filename);
if TempList.Count <> 0 then
begin
SetLength(a,TempList.Count);
for i:= 0 to TempList.Count - 1 do
begin
a[i] := StrToInt(TempList.Strings[i]);
end;
end;
finally
TempList.Free;
end;


72 :デフォルトの名無しさん:2006/12/10(日) 13:54:01
//ファイルへの保存
TempList := TStringList.Create;
try
for i:= 0 to Max -1 do //Maxは全変数の数を代入
begin
TempList.Add(IntToStr(a[i])); //挿入の場合はInsert(行番号(先頭は0),値)
end;
TempList.SaveToFile(FileName); //任意のファイル名にしたいならSaveDialogを使う
finally
TempList.Free;
end;

わからない関数などが出てきたら
反転させてF1押すとその関数のメソッドやプロパティ
場合によっては使いかたの凡例もみることができますよ

onCreatに対応するのは
onDestroy
ただこのイベントは通常メモリの開放などの後処理を記述するところ
ここにデータ保存処理を記述するのはお勧めしない
フォームの破棄時に呼び出されるので
ここでデータ保存処理に何らかのエラーが出ても
データは破棄されるのでやり直しが効かないよ

73 :デフォルトの名無しさん:2006/12/10(日) 13:58:07
DBGRIDで自動的に次の行が挿入されるのを禁止して挿入ボタンが押されたときだけ行追加したいんですが
どうすればいいですか。



74 :デフォルトの名無しさん:2006/12/10(日) 14:05:33
DataSet のBeforeInsertイベントで条件判定

75 :デフォルトの名無しさん:2006/12/10(日) 14:22:02
>>74
中止する場合はAbort;

76 :デフォルトの名無しさん:2006/12/10(日) 15:35:11
アプリケーションを起動して、その最中にロードされた内容をwriteprocessmemoryで書き換えながら起動しようとしてるのですが、
なんどやっても(sleepなどをしても)EacsessViolationのエラーが出てしまいます。
こういう事はもともとできないのでしょうか??

77 :デフォルトの名無しさん:2006/12/10(日) 15:57:24
>>69 >>71-72
ありがとうございます。
おかげでデータを保存するアプリが作れました。

78 :デフォルトの名無しさん:2006/12/10(日) 17:51:09
<vector>みたいのないの?
TListってやつ使ってるのか?

79 :デフォルトの名無しさん:2006/12/10(日) 18:01:00
もろに動的配列があるじゃん

80 :デフォルトの名無しさん:2006/12/10(日) 18:15:00
クラスのリストを作りたいとき
動的配列とTObjectListどちらがいいですか。

81 :デフォルトの名無しさん:2006/12/10(日) 18:24:11
要件次第だが、おれはTObjectList使うことが多い。


82 :デフォルトの名無しさん:2006/12/10(日) 18:35:21
クラスのリストならTClassListだろ。

83 :デフォルトの名無しさん:2006/12/10(日) 18:41:59
>>82
まあそりゃそうだ

84 :デフォルトの名無しさん:2006/12/10(日) 18:53:37
>82
>80の文意を考えればやりたいのはクラス"インスタンス"のリストの実現手法を
知りたいのではないか?ということでTObjectListで。

85 :デフォルトの名無しさん:2006/12/10(日) 20:28:53
タイマーと音量をいじるプログラムを組みたいんだけど
今の時間を取得する方法とパソコン自体の今の音量の変数をかえる方法を教えてください。

何時になったら音量を0にするとかそういうプログラムにする予定です。

86 :デフォルトの名無しさん:2006/12/10(日) 20:42:55
>>85
> 今の時間を取得する方法
now

> パソコン自体の今の音量
mixerSetControlDetails

87 :デフォルトの名無しさん:2006/12/10(日) 22:34:21
>>86
下の変数の使い方がよくわかりません。
見ればいいサイトとかありますか?

なければ例文で教えてください。

88 :デフォルトの名無しさん:2006/12/10(日) 22:35:34
>>87
ttp://www.google.co.jp/search?q=mixerSetControlDetails

89 :デフォルトの名無しさん:2006/12/10(日) 23:44:48
>>58
保存されている値なら、リソースに格納されている。
詳しく知りたいなら、Classes.pasを解読する。
保存されていない値は通常constructorで初期化されている。
>60と近いけど、値取得用のコンポーネントを動的に作れば良いと思う。

>>76
モジュール読み込み中に別スレッドから書き換えたいの?

90 :デフォルトの名無しさん:2006/12/11(月) 00:32:36
空のテキストファイルをカレントディレクトリに作成する方法を教えてください。

91 :デフォルトの名無しさん:2006/12/11(月) 00:36:14
>>87
http://www.swissdelphicenter.ch/torry/showcode.php?id=1204

92 :デフォルトの名無しさん:2006/12/11(月) 00:37:06
>>90
空のテキストファイルってのは、単なる0バイトのファイルと一緒。

93 :デフォルトの名無しさん:2006/12/11(月) 00:39:02
>>92
すみません、今回作りたかったのがテキストファイルなだけで、サイズが0のファイルの作り方がわからないんです。

94 :デフォルトの名無しさん:2006/12/11(月) 00:50:03
じゃあ、まあわかりやすいのやっとくと

uses
classes;

とかしておいて

var
sl : TStringList;
begin

sl := TStringList.create;
sl.savetofile(保存したいパス);
sl.free;

end;

95 :デフォルトの名無しさん:2006/12/11(月) 01:00:53
くだすれってどういう意味ですか?

96 :デフォルトの名無しさん:2006/12/11(月) 01:10:24
>>95みたいなくだらない質問にも耐えるスレ


97 :デフォルトの名無しさん:2006/12/11(月) 01:36:55
じゃあどうでもいい質問


var
 i: Integer;
begin
 i := 5;

ここの、 i := 5 という場面で、
 1. 新しくSizeOf(Integer)分のメモリの領域を得て、そこに 5 を配置する
 2. i のアドレスに、先程の領域をコピーする
 3. 1.で、 5 が置かれていたメモリを解放する
もしくは
 1. どこか使ってない、4バイトのレジスタに 5 を置く
 2. i のアドレスに、先程のレジスタをコピーする

こんな感じですか?

 DoSomething(i);

こう手続きが呼ばれたら、どのような処理をして、関数を実行するのでしょうか。
呼び出し規約とかで違いがありそうですが。

98 :デフォルトの名無しさん:2006/12/11(月) 01:44:25
>>97
君が書いている処理をする関数なら書いてあるとおりの処理をするだろう

99 :デフォルトの名無しさん:2006/12/11(月) 02:12:03
>>97
日本語でおk

まじで意味が分からん
そこまでの知識があるなら、ブレークポイントを置いてCPU窓開いてアセンブラコード見てみろよ

100 :58:2006/12/11(月) 02:15:58
>>60 >>89
ありがとうございます。
Classes.pasとにらめっこしながら考えたいと思います。

101 :デフォルトの名無しさん:2006/12/11(月) 04:14:27
>>97
> var
>  i: Integer;
> begin
>  i := 5
最適化とその後ろのコードによる.
レジスタに乗りっぱなしかも知れないし、そもそも削除されるかもしれないし、
どっかの即値になって消えるかもしれないし、どっかでレジスタから退避されるかもしれないし
そんなの分からんがな.

> DoSomething(i);
デフォルトは fastcall だから fastcall の呼び出し規約調べれよ.

102 :デフォルトの名無しさん:2006/12/11(月) 08:35:36
>>97 は i := 5 と DoSomething(i); がそれぞれどんな機械コードに展開されるか聞きたいってこと?

103 :デフォルトの名無しさん:2006/12/11(月) 10:21:37
Delphi 6 ProでTheme Managerを試してみたのですが、
メインメニューの項目を動的に変更すると、Theme Manager
適用前と同じ状態になります(選択項目が凹むクラシックスタイル?)。
いかにTheme Managerでもこれはどうしようもないのでしょうか。

104 :76:2006/12/11(月) 10:55:52
>>89
そうです。
読み込み中はできない物なのでしょうか?

105 :デフォルトの名無しさん:2006/12/11(月) 12:33:30
>>67
英語のみならず日本語も読めないの?

106 :デフォルトの名無しさん:2006/12/11(月) 13:33:18
Formの中とかで、

>Frame1 := TFrame1.Create(this);
>Frame2 := TFrame1.Create(this);

って2回やると、コンポーネント名称が衝突してエラーになるおね?
この場合、Frame1.Name = ''; とクリアしてやれば良いんですか?

107 :デフォルトの名無しさん:2006/12/11(月) 14:41:07
>>105
あたりまえだろwww
delphiなんか使うような奴だぞ?www

108 :デフォルトの名無しさん:2006/12/11(月) 16:08:41
>>106
そもそもその状況ではエラーにはならない。
Frame1はTFrame1型のインスタンス、
Frame2もTFrame1型のインスタンスとして扱われ、Frame1とは別のインスタンスとなっている。

いつも使っているフォームだって、implementationの上あたりでグローバル変数として宣言されてるのがわかると思う。
var
 Form1: TForm1;
こんな風に。

ちなみにこの変数Form1に値を代入しているのはプロジェクトソース中の
Application.CreateForm(TForm1, Form1); の部分。
(Delphi5ではプロジェクト(P)>ソース表示(V)で確認できるけど他のバージョンはわからん。.dprを直接見てちょ)
※あとthisじゃなくてSelfな。

109 :デフォルトの名無しさん:2006/12/11(月) 16:21:29
>>93
こんなのもあるよ。

var
  F: File;
begin
  AssignFile(F,'asdf.txt');
  Rewrite(F);
  CloseFile(F);


110 :デフォルトの名無しさん:2006/12/11(月) 16:25:40
>>108
実行してみれば分かるけどエラーになるよ

111 :デフォルトの名無しさん:2006/12/11(月) 16:26:55
>>110
俺はエラーにならんかったが…。まあDelphi5だしな。

112 :デフォルトの名無しさん:2006/12/11(月) 16:45:08
>>108
Self
├Frame1
└Frame1

所有構造がこうなるからSelfの中でFrame1がドッペルゲンガーと遭遇してあぼんする。
改名して別人に成りすませばおk。

113 :デフォルトの名無しさん:2006/12/11(月) 16:49:34
Delphianの好きなアニメを教えてください

114 :デフォルトの名無しさん:2006/12/11(月) 16:58:01
だが断る

115 :デフォルトの名無しさん:2006/12/11(月) 17:06:45
>>112

それってNameプロパティを直接書き換えるしか、回避方法無かったでしたっけ?

何か強引な気がして。

それと、Nameをプロパティを空文字なんかにしたら問題起きますか?
親の管理対象外になってメモリリークとか。

116 :デフォルトの名無しさん:2006/12/11(月) 20:20:40
ある文字列をCanvas.TextOutで描画する時に、
その文字列の横幅が合計何ピクセルあるのかを知りたいのですが、
調べる方法はありますか?
(例えば文字列が'abc'なら、aの左端からcの右端までで何ピクセルあるのかが知りたいです)

よろしくお願いします。

117 :デフォルトの名無しさん:2006/12/11(月) 20:34:26
>>116
Canvas.TextWidth('abc')

118 :116:2006/12/11(月) 20:37:13
>>117さん
ありがとうございますm(__)m

119 :デフォルトの名無しさん:2006/12/11(月) 22:27:15
質問です。
初期設定(定数)で、大量の配列データを記述する必要があります。

DATA[0]:= 'abc';
DATA[1]:= 'def';
DATA[2]:= 'ghi';

といった感じです。

この行数が多いとソースの可読性が悪くなるので、
この配列DATAを別のユニット(Unit2)に独立させ、
メイン(Unit1)から参照できるようにしたいのですが、やり方が分かりません。

Unit1(メイン)のuse節にUnit2を加えるとして、
Unit2にはどのように記述すればよいでしょうか。

よろしくお願いします。

120 :デフォルトの名無しさん:2006/12/11(月) 22:33:18
unit Unit2;

interface

var
gData:array of string;

implementation

initialization
setlength(gData,3)
gDATA[0]:= 'abc';
gDATA[1]:= 'def';
gDATA[2]:= 'ghi';

end.


121 :119:2006/12/11(月) 22:36:33
>>120
ありがとうございます!

122 :デフォルトの名無しさん:2006/12/11(月) 22:40:13
>>119
>>120の方法でも良いけど
データが大量にあるならいちいち書くのもめんどいし
データの総量が増えても対応できるように
データ本体をファイルに保管して
それを読み込んで配列に代入する関数or手続きを考えた方がよいかも…

123 :ななしへたぐらま ◆XcB18Bks.Y :2006/12/11(月) 22:45:51
>>71
> Filename := GetCurrentDir + '\test.txt';

実行ファイルのあるディレクトリとカレントディレクトリは同じとは限りません.
またカレントディレクトリがルートディレクトリの場合にGetCurrentDirは C:\ などと \ 付きで返してくるのでうまくいきません.

Filename := ExtractFilePath(Application.ExeName) + 'test.txt';

実行ファイルのフルパスを返すApplication.ExeNameと
フルパスからディレクトリを末尾の\付きで返すExtractFilePath関数を組み合わせることで
実行ファイルのディレクトリを取得しています.

なおコンソールアプリではApplication.ExeNameの代わりにParamStr(0)を使います.
(ウィンドウアプリでも使えます)


124 :デフォルトの名無しさん:2006/12/11(月) 23:28:21
>>104
知らない。
モジュールを読み込んで初期化が始まる前に、コードを書き換えたいとか、
そんなの?
なんだか大変そうですねぇ〜。


125 :76:2006/12/11(月) 23:28:55
>>124
そうですー
僕がんばります

126 :デフォルトの名無しさん:2006/12/12(火) 00:23:27
プロジェクトで使用しているコンポーネントや関数、手続きの一覧を出力してくれるツールはないですか?


127 :デフォルトの名無しさん:2006/12/12(火) 00:38:57
tdump.exe

128 :デフォルトの名無しさん:2006/12/12(火) 01:01:03
突然の質問ですみません。
TurboDelphiのインストールに必須な
「Microsoft XML Core Services (MSXML) v4.0 SP2」をインストールしようとすると、
エラーコード2755が返って来てインストールに失敗してしまいます。
解決法がないか誰か教えてもらえないでしょうか?

当方の環境はWindowsXP(SP2)です。
宜しくお願いします。

129 :デフォルトの名無しさん:2006/12/12(火) 03:30:43
キーボードで数字の1が押下された時ってVK_1ですよね?

動作確認済みソースのVK_UPをVK_1に書き換えただけでコンパイルできないのは何故でしょうか??

130 :デフォルトの名無しさん:2006/12/12(火) 05:00:30
>>129
Windows.pas で、VK_0〜VK_9、VK_A〜VK_Z が
定義されていないからではないかと思われ。
(D6の場合。他バージョンについては不明)

VK_1 のところを Ord('1') にすれば動くかも。

131 :129:2006/12/12(火) 05:26:28
>>130
ありがとうございます。
見事に動きました。
標準で定義されないって
需要少ないんですかね。
本当に助かりました。
感謝いたします

132 :デフォルトの名無しさん:2006/12/12(火) 06:29:03
このスレでDelphiはじめて3時間・・・
プログラム経験は、なし。すこし、以前、Delphiいじって1,2回ほど適当なプログラム作ったくらい。
まだまだ、みんなの語ってる話題が未知の宇宙のように思えます。
はぁ・・・道は、遠いな。
このHPが勉強になるとかあれば紹介お願いします。

133 :デフォルトの名無しさん:2006/12/12(火) 06:46:36
Seventh Delphi

134 :デフォルトの名無しさん:2006/12/12(火) 06:49:15
>>132
Delphiのソコソコの知識がついたら、次はWin32を勉強しよう。
そしてVCLのソースを解析。


135 :デフォルトの名無しさん:2006/12/12(火) 07:05:14
>>134
ラジャ
いまは、コンソールであれこれしてたほうが、文法覚えるのはいいってことで、
http://oto.chu.jp/kujira/text/delphi/zero/index.htm
なるとこをうろうろしてます。
とりあえず、これが済んだら、そこらへんに進んで見ようと思います。

136 :デフォルトの名無しさん:2006/12/12(火) 08:59:08
Windows.pasって編集して上書き保存しただけじゃ反映されないの?

137 :デフォルトの名無しさん:2006/12/12(火) 09:24:40
ヒント: .pas → .dcu

138 :デフォルトの名無しさん:2006/12/12(火) 10:19:40
>>135
あぁ、3時間か。てっきり3年かと思った。3時間でいきなり、
VCLのソース解析はむちゃだ。なんか、やっぱ、自分の作りたいソフト見っけて、
ソレ作りながら覚える方が俺的にはお勧め。そうしないと俺はモチベーションがもたん。



139 :デフォルトの名無しさん:2006/12/12(火) 10:21:57
>>137
dクス
そっかソースフォルダのはあくまでもソースで
システムには参加してなかったのね。勉強になりました


140 :デフォルトの名無しさん:2006/12/12(火) 10:35:39
俺が最初に作ったソフトは
フォルダにあるファイルを自動的に指定した場所に振り分けるってやつ
自分で作った奴だから好きなようにカスタマイズ出来るし今でも使ってる

141 :デフォルトの名無しさん:2006/12/12(火) 10:39:37
>>138
右も左もわからぬ初心者の頃はこんなん作って遊んでたw
http://www.geocities.co.jp/HeartLand-Namiki/1179/dialog/1/overwrite.gif
http://www.geocities.co.jp/HeartLand-Namiki/1179/dialog/1/search.gif
http://www.geocities.co.jp/HeartLand-Namiki/1179/dialog/1/name.gif

ちなみにこのサイトはココ
http://www.geocities.co.jp/HeartLand-Namiki/1179/


142 :デフォルトの名無しさん:2006/12/12(火) 11:26:20
>>113
まじかるぽかーん

>>132
Seventh Delphi
http://kakinotane.s7.xrea.com/index.html

flow of water: Delphi
http://wblue.web.infoseek.co.jp/delphi.htm


143 :デフォルトの名無しさん:2006/12/12(火) 12:32:03
TTabSheetでポップアップメニューを使いたいと思っているのですが
Bの場所ではできたのですが、タブの耳?(Aの部分)で
ポップアップメニューを出すにはどうすればよいでしょうか。

   ┏━┓
   ┃  ┃← A
 ┏┛  ┗━━━━━┓
 ┃            ┃
 ┃            ┃
 ┃            ┃← B
 ┃            ┃
 ┃            ┃
 ┗━━━━━━━━┛

144 :デフォルトの名無しさん:2006/12/12(火) 12:55:10
TPageControl.Popupメニューにポップアップメニューを割り当てる

145 :デフォルトの名無しさん:2006/12/12(火) 13:53:00
>>144
できました。
ありがとうございます。

146 :デフォルトの名無しさん:2006/12/12(火) 20:23:12
クラスとか継承とかオブジェクトとかの概念がいまいち理解できてないのですが、
たぶんコンポーネントとかは関係のないと思われるパスカルな単純な処理を関数にするには、
privateかpublicにprocedureじゃなくてfunctionで宣言すればいいのでしょうか?


147 :デフォルトの名無しさん:2006/12/12(火) 20:27:42
procedureは戻り値がない
functionは戻り値がある

private
 procedure hoge;
 function hage : boolean;

148 :デフォルトの名無しさん:2006/12/12(火) 20:34:08
なるほどそういう違いだったんですね。
助かりましたありがとうございます。

149 :デフォルトの名無しさん:2006/12/12(火) 20:45:14
TListBoxのアイテム毎ではなく、アイテム内の文字ごとに Fontを変えたいの…
できます?

150 :デフォルトの名無しさん:2006/12/12(火) 21:29:02
コンポーネントの登録とコンポーネントのインストールの違いがよくわからない…

あとBPL,DPK,DCU,DCPファイルもググったけどよく分からない…
誰かおおざっぱでいいので教えてもらえます?

151 :デフォルトの名無しさん:2006/12/12(火) 22:11:16
>>150
pas (ソース)-> コンパイル -> dcu(中間ファイル)
dpk (プロジェクト) -> コンパイル -> dcp(中間ファイル) -> bpl(実行形式。DLL相当)

> コンポーネントのインストール
設計時用のパッケージ -> コンパイルしてbpl 作成 -> IDE にインストールして使えるようにする。

152 :デフォルトの名無しさん:2006/12/12(火) 22:11:24
>>149
OwnerDrawにして自力で描写すればできる。

153 :デフォルトの名無しさん:2006/12/12(火) 22:14:30
>>149
つ OnDrawItem イベント

154 :デフォルトの名無しさん:2006/12/12(火) 22:22:08
>>150
> コンポーネントの登録

タイプライブラリの作成のこと?
ソースからActiveXなどを使えるように、宣言ユニットを作成。

155 :デフォルトの名無しさん:2006/12/12(火) 22:22:59
>>151
サンクスです。続けて質問で申し訳ないですが
ということはdcu,dcpは中間物であって、いらないっちゃいらないってことすね?
bplは実行形式(ダイナミックリンク)なのにIDEにインストールするの?

156 :デフォルトの名無しさん:2006/12/12(火) 22:23:55
>>154
いえ、ヘルプのコンポーネント作成の項に
「コンポーネントの登録」ってのが出てきてたので。

157 :デフォルトの名無しさん:2006/12/12(火) 22:32:26
>>151
> いらないっちゃいらないってことすね?

まあ基本的には。
ただしパッケージに他のパッケージを含める場合はdcp を使う必要があったような。

> bplは実行形式(ダイナミックリンク)なのにIDEにインストールするの?

起動時に全部読み込まれる。
IDEにプロパティを操作するエディタなどが作成される。

設計時パッケージは、コンポーネントをコードでCreate してプロパティを設定なら不要。

158 :デフォルトの名無しさん:2006/12/12(火) 22:38:16
dcu,dcpは条件次第だ。パッケージをDLLのLoadLibraryみたく、明示的リンクするなら
必要ないけど、暗黙的リンクなら必要になるとか。ちょびっとややこしい。


159 :デフォルトの名無しさん:2006/12/12(火) 22:42:47
なるほど。めちゃ参考になりました。


160 :デフォルトの名無しさん:2006/12/13(水) 01:00:25
>>126
tdump.exeは外部の関数・クラスだけだから、マップファイルがいいかも。


161 :デフォルトの名無しさん:2006/12/13(水) 06:29:47
>>142
Seventh Delphiのほうは、いまやってるとこと内容が同じようでした。
Flow Of Water Delphiは、GUIアプリとかのやつもあるので、BMしました。
ありがとー。

162 :132:2006/12/13(水) 06:42:59
http://oto.chu.jp/kujira/text/delphi/zero/index.htm
  ↑
ここの15番目まで完了したよ。

これ終わったら、Flow Of Water Delphiのやつやってみようと思う。
functionとかProcedureで使う、引数と変数の違いが分かりづらかったけど、
まあ、変数は、字のまんま、みんなが考えてる変数の通りで、
引数は、プログラムの本文で、プログラマーが指定して決める数って理解してていい?
たとえば、

function Sansuu(a:integer;b:integer):Integer;
begin
Result:=a+b;
Writeln(Result);
end;

begin
Sansuu(1,6);
Readln;
end.

見たいに、あとで関数を利用するときに、本文で、決められる数が引数ってことで。
最初、引数と変数ってドウ違うのか戸惑ってしまった・・・

163 :デフォルトの名無しさん:2006/12/13(水) 08:17:31
ひきすう

164 :デフォルトの名無しさん:2006/12/13(水) 10:17:39
Explorerから自作アプリへD&Dする方法は見つかったんですがその逆に
ListViewの項目を他のアプリへD&Dするのってどうやるんですか?

165 :デフォルトの名無しさん:2006/12/13(水) 10:24:27
そんなの相手先に依存するだろ

166 :デフォルトの名無しさん:2006/12/13(水) 10:25:29
これどっちがおかしいの?

procedure TForm1.Button1Click(Sender: TObject);
var
t: TDateTime;
v: Variant;
s: String;
begin
t := Now;
v := t;
s := DateTimeToStr(t);
ShowMessage(String(v)+sLineBreak+s);
end;

---------------------------
Project1
---------------------------
2006/12/13 10:21:12
2006/12/13 10:21:11
---------------------------
OK
---------------------------


167 :デフォルトの名無しさん:2006/12/13(水) 10:33:33
エスパー求む

168 :デフォルトの名無しさん:2006/12/13(水) 10:57:14
>>162
スコープを知るともう少し簡単に理解できるかも

それと引数には4種類あるから知っておくと良いよ(最初のうちは理解しなくてもOK)
値引数
変数引数
定数引数
デフォルト引数

169 :デフォルトの名無しさん:2006/12/13(水) 11:12:56
TListBoxで文字ごとにフォントを変える、ですが、DrawItem イベントで
TextWidth と TextOut をぐちゃっとコーディングして出来ました。サンキュス

170 :デフォルトの名無しさん:2006/12/13(水) 12:14:00
>>166
試してないけどバリアントで精度が変わるからかね?
TDateTimeは確か小数点だし。

171 :デフォルトの名無しさん:2006/12/14(木) 01:20:16
Rave ReportsってQuickReportと比べてどう?
機能とかバグとか作りやすさとか。
慣れればQuickReportより良いんなら使ってみようと思うんだけど。



172 :デフォルトの名無しさん:2006/12/14(木) 07:46:01
初心者以前のインストールの段階で引っ掛かってます。
http://bdn.borland.com/article/33580  ここに
1. Windowsのスタートメニューより[スタート|プログラム|Borland Delphi 6|使用許諾コードの取得]で、使用許諾コードの取得画面が表示されます。
とありますが、 |Borland Delphi 6| が見つかりません。
他にインストールする方法が有りますでしょうか?

173 :デフォルトの名無しさん:2006/12/14(木) 09:46:25
>>172
もれも初めて2,3日くらいの初心者だが、いちいち使用承諾とらないでも
普通に使えるから気にするな。キャンセルしたら、後で承諾をとるみたいなダイアログがでてOK
押したら、未承諾でも使える。
とりあえず、おなじくらいの時期にはじめたみたいだから、がんばろうぜ。

174 :デフォルトの名無しさん:2006/12/14(木) 11:06:07
>>172
インストール失敗してるんじゃないの?

175 :デフォルトの名無しさん:2006/12/14(木) 13:07:08
TImageListのWidth、Heightに収まるようにイメージ(bmp)を伸縮したいのですが
TImageListに設計時ではなく実行時にイメージを追加する場合、
イメージリストエディタの「そのまま」、「引き伸ばし」、「中央に置く」に相当する操作は
どこをいじればいいのでしょう。


176 :デフォルトの名無しさん:2006/12/14(木) 13:25:56
セットアップランチャ→ Delphi 6 →キャンセル にすると 
「キャンセルしますか」 と出て終了してしまいます。
セットアップランチャ→ Delphi 6 →次へ にするとキーがないので
インストールできません。
ProgramFiles内にdelphiフォルダは出来ていますが、これはセットアップランチャな気がします。
ネットで落とす前に書籍付属のCDでインストールしようとしたので、
残骸が邪魔をしてるのかも知れません。
アンインストールもできないのですが、手動で引っぺがして良い物でしょうか?

177 :デフォルトの名無しさん:2006/12/14(木) 13:28:27
OK。
レジストリも消すと良い。
HKEY_CURRENT_USER->Software->Borlandあたり。

178 :デフォルトの名無しさん:2006/12/14(木) 13:29:36
C++BuilderでのSubStringに当たるモノってDelphiにないの?

179 :デフォルトの名無しさん:2006/12/14(木) 13:29:46
> キーがないのでインストールできません。

これは何?インストール用のキーを持ってないの?


180 :デフォルトの名無しさん:2006/12/14(木) 13:31:04
>>178
Copy関数?

181 :デフォルトの名無しさん:2006/12/14(木) 13:36:48
> キーがないのでインストールできません。

インスト用のキーと
登録用でもらえるキーは別物だぞ?

182 :175:2006/12/14(木) 13:42:09
bmp.Canvas.StretchDraw( Types.Rect(0,0,ImageList1.Width, ImageList1.Height), bmp );
ImageList1.Add(bmp, nil);

でできました。

183 :デフォルトの名無しさん:2006/12/14(木) 13:48:00
>>182
解答つけなくて、ごめん。

184 :デフォルトの名無しさん:2006/12/14(木) 13:49:37
>>171
日本語対応に不安が。

メーカーはDelphiがUnicode化するまで
完全対応は無理と宣言しているし。

185 :デフォルトの名無しさん:2006/12/14(木) 17:57:37
>>184
そうですか。
何か良いレポートツール無いかなぁ。
みんな何使ってるの?



186 :デフォルトの名無しさん:2006/12/14(木) 18:37:34
インストールが成功してないの?
インスト用のキーはまとめサイトのやつで普通に使えるぞ。
ただ、使用承諾のキー(インストール後)をいれようとすると、サーバーにつながらないから
出来ない。
インストール用のキーは、普通に使えるから、どっかやり方間違ってるよ。

187 :デフォルトの名無しさん:2006/12/14(木) 19:59:33
>>185
LightReport。完全日本製
またはFastReport



188 :デフォルトの名無しさん:2006/12/14(木) 21:31:54
コンパネにあるキーボードのプロパティで設定できる
キーボードの長押しに対する一時的な制御って
どうすればいいのでしょ?
単純に
if key VK_* then 未処理ならスルー
としても
OS側がVK_*を未処理なのに全部引き受けちゃって
OSがフラグ見た時には処理済になってる感じで
結局コケちってるみたいで、それを何とかしたいのですが。


189 :デフォルトの名無しさん:2006/12/14(木) 23:27:06
良く解からんが、WM_KEYDOWN にリピートか否かの情報があるよ。

190 :デフォルトの名無しさん:2006/12/15(金) 00:10:23
Delphiのお勧めの書籍は何かありませんか?

191 :デフォルトの名無しさん:2006/12/15(金) 00:34:41
>>190
かなり古い本だが愛用してるやつらを一部紹介します。

ど素人向け
http://www.amazon.co.jp/exec/obidos/ASIN/4774104272/

手軽なリファレンスとして手放せない
http://www.amazon.co.jp/exec/obidos/ASIN/477410891X/

お金持ちならドウゾ
http://www.amazon.co.jp/exec/obidos/ASIN/4756130917/
http://www.amazon.co.jp/exec/obidos/ASIN/4844349147/

最近の本は知らん
もっといいのが出てるかも


192 :デフォルトの名無しさん:2006/12/15(金) 00:54:58
>>189
説明下手ですみません。
リピートという単語をど忘れしてしまってうまく表現できませんでした。
一時的にリピートを停止、あるいはインターバルを長くとるなどして
ちゃんとひとつの処理が終わってから次のキー入力を受け付ける、
みたいなことがやりたかったのでした。
WM_KEYDOWNを調べてみます。ありがとうございます。



193 :デフォルトの名無しさん:2006/12/15(金) 01:05:51
Turbo Delphiを使用しています。
ADODataSetのConnectionStringsプロパティのデータベースに接続するためのパスが絶対参照から相対参照にする方法はありますか?
ConnectionStringsプロパティのダイアログで相対参照にしようとしても、C:\Documents and Settings\ユーザー名\データベースのファイル
と言うように認識するらしくうまくいきません。

194 :デフォルトの名無しさん:2006/12/15(金) 02:32:16
Turbo Delphiをこれから 使おうとしてます 超初心者です ExplorerかProどちらを使ったほうが良いでしょうか? またこれから学習する人向けの書物とかございましたら 教えてください! お願いします! 

195 :デフォルトの名無しさん:2006/12/15(金) 02:33:14
quickreportのTQRDBTextってフィールドがnullの時はonPrintイベント発生しないんですか?
nullなら別の値を表示させようとしたら華麗にスルーされました。


196 :デフォルトの名無しさん:2006/12/15(金) 02:38:21
>>194
マルチやめれ

197 :デフォルトの名無しさん:2006/12/15(金) 03:35:07
これから Delphi 入門はちょとつらいような・・・

198 :デフォルトの名無しさん:2006/12/15(金) 04:05:49
>>194
超初心者ならExplorerなんじゃね?フツー


199 :デフォルトの名無しさん:2006/12/15(金) 04:26:15
直接指定。

200 :188=192:2006/12/15(金) 09:03:14
Win32APIヘルプのWM_KEYDOWN、keybd_eventや
message.pas、windows.pas、delphiヘルプのTWMKeyを見ても
理解が及ばずどう書けばいいのか見当がつきませんでしたorz

そこで、検索して見つけたコード

procedure TForm1.WMKeyDown(var message: TWMKeyDown);
begin
 if message.KeyData and $40000000 = 0 then inherited;
end;

をコンパイルすると
Illegal character in input file: ''
というErrorでコンパイルできず、行き詰ってしまいました。
たびたびすみませんが、お助けください


201 :デフォルトの名無しさん:2006/12/15(金) 14:17:19
不正な文字が入力ファイルにある。か、なんか、他の部分に変な文字追加してない?
うちではコンパイルとおるし。


202 :デフォルトの名無しさん:2006/12/15(金) 14:23:00
>>200
全角空白

ところでD5は全角空白を赤表示してくれるがD7はしてくれないので判らないんだよな。
どこで設定するんだろ。


203 :デフォルトの名無しさん:2006/12/15(金) 14:29:19
>>185
ttp://www.devexpress.com/のレポートツール使え。
ここなら不具合あって、報告すれば、1ヶ月には、修正されるぐらいサービスはすばらしいし、
ソースコード見ても、明らかにプロの仕事だとわかるくらい安心できる。


204 :200:2006/12/15(金) 20:06:11
全角空白でしたorz
まったく疑いもしなかった原因で勉強になりました。
ありがとうございます

205 :デフォルトの名無しさん:2006/12/15(金) 21:49:08
Delphi6を使っているのですが、よく専ブラにあるような

記事のタイトル|レス数|最終読み込み|最終書き込み

みたいなリストボックス?でそのレス数などをクリックすればそれが昇順にならんだりするコントロールみたいのはどうやってつくればいいんですか?

206 :デフォルトの名無しさん:2006/12/15(金) 21:58:33
TListItem

207 :デフォルトの名無しさん:2006/12/15(金) 22:59:09
>>202
D7ってエディタオプションの不正な文字で認識してくれないの?

つか常に半角スペースを入力にIME設定すればいいと思うのは俺だけか?

208 :デフォルトの名無しさん:2006/12/15(金) 23:01:09
>>205
TListView

209 :デフォルトの名無しさん:2006/12/15(金) 23:09:36
>>207
デフォルトだとしてくれない。
さっき色々調べてようやくエディタのオプションで不正な文字の色が
文字色黒、背景白なんつー設定になってるのを発見した。
背景赤にして全角空白もめでたく赤表示になった。


210 :デフォルトの名無しさん:2006/12/15(金) 23:23:56
>>206,208
ありがとうございます。

211 :デフォルトの名無しさん:2006/12/15(金) 23:33:46
あれ、ClientDataSetのBOFとEOFってカレントレコードが最初のレコードか最後のレコードかを
判別するプロパティじゃないんですか???
ローカルデータセットで1000件ぐらいデータ作って、グリッド上にカレントレコード変更して、
BOFかEOFかチェックしてもなんかめちゃくちゃです。

誰かお願いします。Turboです。



212 :デフォルトの名無しさん:2006/12/15(金) 23:39:01
おさわがせしました。BOFの前、EOFの後ろにもう1個なんかあるっぽいですね。


213 :デフォルトの名無しさん:2006/12/16(土) 05:36:27
QuadrupleDの質問もここでいいですか?

WindowModeで使っていて、ユーザがフォームをリサイズしたときなどに、サイズを変更したい場合、
もう一度 WindowMode(ClientWidth, ClientHeight, []); と呼ぶだけではダメですか?
自分の環境だと、テクスチャの量に比例した時間、固まってしまったり、
一部のテクスチャが壊れてしまったり、画面にゴミがでます。

214 :デフォルトの名無しさん:2006/12/16(土) 05:48:16
超初心者ですけど、
TListViewとか使って、ソートは一種類のみでエクセル、Accsess出力なし 表計算機能なしの
DBソフトっぽいもの作りたいんですが、DB専用のコンポーネント使わないと無理ですか?
なんか、pro版じゃないとDBのコンポーネントは扱えないとかWEBで見たので、どうだか
気になってます。DBデータファイルはバイナリーじゃなく普通にテキスト形式のファイルで
扱おうと思ってます。まあ、まだ、あんま頭の中でアイディア固めてないのであやふやでもうしわけない
です。

215 :デフォルトの名無しさん:2006/12/16(土) 06:39:24
>>211
TClientDataSetがグリッドの位置なんてしるかよ。
RecNoみるなり、グリッドの相対位置を教えてくれるプロパティを見ろ。

216 :デフォルトの名無しさん:2006/12/16(土) 09:51:48
>>213
知らん
ゲ製で聞いてみたらどうか

【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】
http://pc8.2ch.net/test/read.cgi/gamedev/1097836469/

217 :デフォルトの名無しさん:2006/12/16(土) 12:10:43
>>214
TListView使ってできるなら必要ないんじゃないの。

218 :デフォルトの名無しさん:2006/12/16(土) 13:15:40
>>215
あほか。おまぇ。グリッドの位置なんて一言も書いてねぇよ。

219 :デフォルトの名無しさん:2006/12/16(土) 13:40:48
ListViewとTListViewの違いってなんですか?

220 :デフォルトの名無しさん:2006/12/16(土) 13:52:27
>>209
IDE のエディタの全角空白の件、こんな設定あるんですね。ちと便利になりました。

221 :デフォルトの名無しさん:2006/12/16(土) 18:14:50
>>219
ListViewはコンポーネント
コンポーネントを使わずにコード上で同じような処理をしたい時に
TListViewクラスを使う
T名前は基本的にクラスの名前

222 :デフォルトの名無しさん:2006/12/16(土) 18:53:24
>>221
レスどうもありがとうございました!
けれども、コンポーネントを使うのとコード上でやるのとはどう違うのですか?

223 :デフォルトの名無しさん:2006/12/16(土) 19:16:51
設計時と実行時。あとプロパティやイベントなどを追加する場合。

224 :デフォルトの名無しさん:2006/12/16(土) 19:50:08
>>218
Bof, Eof。
これが不満なら>>215の言うようにRecNoやキャストしてグリッドの位置をみるしかない。
自分の無能を棚にあげて、あんた失礼な人だね。

225 :デフォルトの名無しさん:2006/12/16(土) 21:31:22
>>223
ありがとうございました。

ListViewは分かったのですが、選択したときに1列いっぺんに選択させるにはどうすればいいのですかね?
あと列のどこでも選択すればその列が選択される状態にするにはどうすればいいんですか?

226 :>>225:2006/12/16(土) 21:48:37
自己解決しました

227 :デフォルトの名無しさん:2006/12/17(日) 00:20:04
manifest.rcってどのようにコンパイルすればいいのですか?

228 :デフォルトの名無しさん:2006/12/17(日) 00:23:57
C:\>brcc32 manifest.rc

229 :デフォルトの名無しさん:2006/12/17(日) 00:34:24
>>228
即レスあがとうございます

あと、manifestでLunaスタイルに変更されないPageなんたらをビジュアルスタイルでちゃんと表示するためには
ttp://www.vector.co.jp/soft/win95/prog/se219006.html
これを使用しないと無理なんですかね?

230 :デフォルトの名無しさん:2006/12/17(日) 04:58:54
>>229
最近のdelphiでは元から入ってるVCLでもxpmanifest使えばxpスタイルで表示されるよ

231 :デフォルトの名無しさん:2006/12/17(日) 07:07:16
たぶんDelphi6なんだろう

232 :デフォルトの名無しさん:2006/12/17(日) 08:49:26
>>230
231
D6のPersonalです

233 :デフォルトの名無しさん:2006/12/17(日) 12:24:17
>>232
Turbo Delphi使えば?

234 :デフォルトの名無しさん:2006/12/17(日) 13:50:43
>>233
エクスプローラー版はコンポーネントが追加できないとか不安定ときいたので…

235 :デフォルトの名無しさん:2006/12/17(日) 13:57:06
  ク    ク   || プ  / ク   ク  || プ  /
  ス  ク ス _  | | │ //. ス ク ス _ | | │ //
  / ス   ─  | | ッ // /  ス   ─ | | ッ //
  / _____  // /          //
.  /   l⌒l l⌒l \  ))   ____
. / / ̄| ,=| |=、| ̄ヾ   / ____ヽ
/ ̄/ ̄.  ー'●ー'  ̄l ̄ |  | /, −、, -、l  ))
| ̄l ̄ ̄  __ |.    ̄l ̄.| _| -| ,=|=、 ||
|. ̄| ̄ ̄  `Y⌒l__ ̄ノ ̄ (6.   ー っ-´、}
ヽ  ヽ    人_(  ヾ    ヽ    `Y⌒l_ノ
  >〓〓〓〓〓〓-イ   /ヽ  人_(  ヽ
/   /  Θ  ヽ|  /    ̄ ̄ ̄ ヽ-イ

236 :デフォルトの名無しさん:2006/12/17(日) 14:24:49
D6ならこれを入れる。

http://www.delphi-gems.com/ThemeManager.php

237 :デフォルトの名無しさん:2006/12/17(日) 14:25:33
>>229
無理だと思う。
ビジュアルスタイル対応コンポーネントはいろいろあるから試してみたら?

>>234
賢明な選択w

238 :デフォルトの名無しさん:2006/12/17(日) 15:05:30
D6なら>>236の入れるのが無難だな

239 :デフォルトの名無しさん:2006/12/17(日) 15:07:14
メインフォームからフォームA を ShowModal 後、すぐにフォームA を
非表示にしてフォームB を ShowModal する必要があります。
これを実現するために、フォームA の OnShow イベントでフォームA の
Visible を False にしてフォームB へ ShowModal したいのですが、
フォームA.Visible := False; のところでエラーとなります。
どのように非表示にすれば良いか分かりますでしょうか。(できれば
フォームA は見えない方が見栄えが良いのですが)Delphi7proです。

240 :デフォルトの名無しさん:2006/12/17(日) 15:11:11
>(できればフォームA は見えない方が見栄えが良いのですが
フォームAもShowModalする理由がわからん
見えないほうがいいならいきなりフォームBを表示すればいいのい

241 :デフォルトの名無しさん:2006/12/17(日) 15:20:17
>>240
おっしゃる通りです。ちとはしょって書いてしまいましたが、
メインフォームから フォームA に行く場合と B に行く場合がありまして、
B に行った場合、フォームを閉じたら A を表示させたいのです。

242 :デフォルトの名無しさん:2006/12/17(日) 15:24:51
フォームXに「行く」ってどういう意味だ?
あとエラーの内容くらい書け。

243 :デフォルトの名無しさん:2006/12/17(日) 15:30:48
procedure MainForm.FormBにいく;
begin
 FormB.ShowModal;
 FormA.ShowModal;
end;

244 :デフォルトの名無しさん:2006/12/17(日) 15:45:51
onShow/onHideイベントの中でVisible変えちゃいけないみたいだね
onShowでやるならメッセージを使う方法があるみたい
ttp://www.din.or.jp/~egawa-n/delphi/tips/form_showed.html

245 :デフォルトの名無しさん:2006/12/17(日) 15:58:01
>>242
エラーは「OnShow/OnHide イベントの処理中は表示状態の変更はできません.」
です。書きもれていましてすみません。また、「行く」とはShowModalで
制御を渡すという意味で使いました。一般的ではない言葉でしょうか。
>>244
ありがとうございます。この方法で正常に制御が渡せました。ただ少し
フォームが見えてしまいますので、
>>243
さんのやり方も検討したいと思います。

246 :デフォルトの名無しさん:2006/12/17(日) 16:22:05
そもそも画面遷移のロジックをフォーム側に持たせるのがおかしいと思うけど。

247 :デフォルトの名無しさん:2006/12/17(日) 21:04:34
Proを買うなら、TurboDelphiとDelphiどっちがいいんですか?

248 :デフォルトの名無しさん:2006/12/17(日) 21:28:21
>>245
FormAからFormBを呼び出して自身を消す手もあるね
質問するならもうちょっと具体的に状況説明したほうがいいと思うよ

249 :デフォルトの名無しさん:2006/12/17(日) 21:31:32
>>236
見に行ったのですが、英語で使い方がいまいちよくわからんでした・・・^^;

250 :デフォルトの名無しさん:2006/12/17(日) 21:31:45
>>247
http://delwiki.info/?Delphi+%A5%B7%A5%EA%A1%BC%A5%BA%2F%BC%AB%CA%AC%A4%CB%B9%E7%A4%C3%A4%BF+Delphi+%A4%F2%C1%AA%A4%DC%A4%A6

251 :デフォルトの名無しさん:2006/12/17(日) 21:50:20
クラスのメソッドに class とつけるのは、Javaでいう static みたいなものでしょうか。
これを利用して、クラス名を名前空間のように使うこともありますか?

252 :デフォルトの名無しさん:2006/12/17(日) 22:02:42
あるよ

253 :デフォルトの名無しさん:2006/12/17(日) 23:58:54
Vista RC1にTurboExplorerをインストールしてみたいのですが無理なのでしょうか?
ホームディレクトリと思われる所にreg736.txtを置くのですが、
シリアルナンバーを求められます。

認証ファイルを置くべき位置をご存じの方がいらっしゃいましたら教えていただけませんでしょうか。宜しくお願いします。

254 :デフォルトの名無しさん:2006/12/17(日) 23:59:49
あるけど、ほとんど使わない。
Delphi ではユニット名そのものが名前空間になるし、クラスと関係ない
関数も定義できるから。

255 :デフォルトの名無しさん:2006/12/18(月) 00:04:57
>>253
使用許諾マネージャでreg736.txt読み込んでみれば?

256 :sage:2006/12/18(月) 01:31:33
>>255
ありがとうございました。動きました。

参考にならないかもしれませんが、Vistaのスタート>すべてのプログラム>Borland Developer Studio2006>ツール>使用許諾マネージャで読み込めました。
最初reg736.txtはTurboExplorer発表時に発行したものを使っていたのですが、
再度取り直したものをドキュメントと同じ階層に置きました。

摺りガラスのようなエアロ効果新鮮っす。




257 :デフォルトの名無しさん:2006/12/18(月) 18:48:32
Form2の表示について教えてください。

unit2 をusesに追加した後ボタンのクリックイベントに
Form2.showという風にしても表示されません。
後何をすればいいんでしょうか?


258 :デフォルトの名無しさん:2006/12/18(月) 19:04:06
コンパイル、実行してクリックする。

259 :デフォルトの名無しさん:2006/12/18(月) 19:43:01
>>247
ヴァージョンかけ

>>251
unit HogeUnit;
interface
const
 Hoge = 1234;

とした場合、
HogeUnit.Hoge
と参照できるからなー、ほとんどいらん。



260 :257:2006/12/18(月) 20:02:50
TurboDelphiです。

261 :デフォルトの名無しさん:2006/12/18(月) 20:03:43
>>258
実行はしてますよ。

262 :デフォルトの名無しさん:2006/12/18(月) 20:38:30
create してないとかw

263 :257:2006/12/18(月) 20:40:01
すいません、今やったらすんなりと出来ました。
失礼しました。なにが悪かったんだろう?

264 :デフォルトの名無しさん:2006/12/18(月) 21:22:43
StringGridでColCountプロパティに10を指定しています。
で、プログラムで間違えて
for i := 0 to 99 do
StringGrid1.Cells[i,0] := IntToStr(i);
としてしまいました。99をColCount-1にすべきだったのですが
上記のロジックでもうまく?動作しているようです。これはこれで
大丈夫なものなのでしょうか。

265 :デフォルトの名無しさん:2006/12/18(月) 21:47:44
>>259
Delphi7くらいまでだと、ユニットって入力補完効いたっけ?
というわけで、俺は確実に入力補完が効くクラス.クラスメソッドが好き。

266 :200:2006/12/18(月) 22:40:48
>>200のコードなのですが、これは

WM_KEYDOWN
http://yokohama.cool.ne.jp/chokuto/urawaza/message/WM_KEYDOWN.html

の30ビット目を参照してオートリピートを判断してるんですよね?
$40000000を2進数にすると31桁(1000000000000000000000000000000)です。
また、別のサンプルで、24ビット目の拡張キーを参照し判断する場合、
$1000000(2進数だと25桁の1000000000000000000000000)とありました。

何故、30ビットで31桁、24ビットで25桁なのか腑に落ちません。
そういうもんだ、と暗記してしまえば済むことなのですが、
どなたかご存知の方いらっしゃいましたら教えていただけないでしょうか?
よろしくお願いいたします。

267 :デフォルトの名無しさん:2006/12/18(月) 22:56:46
たんに最小ビットをゼロビットと言うからでしょ。

268 :デフォルトの名無しさん:2006/12/18(月) 22:58:14
>>266
あのな。先頭ビットを0としてんじゃん。よって、
>>の30ビット目を参照してオートリピートを判断してるんですよね?
は31ビットめもしくは、先頭をビット0としたときのビット30ってこと。


269 :268:2006/12/18(月) 23:01:59
先頭ビットってあまり適切な表現じゃなかったかもしれん。
最下位ビットっていうほうがよかったかもな。
最上位ビット(MSB)とか最下位ビット(LSB)とか。
http://www.x-media.co.jp/jiten/index.cfm?ID=3052

270 :デフォルトの名無しさん:2006/12/18(月) 23:27:59
ダイアログを表示させようとして、Delphiの新規作成の標準ダイアログというテンプレを使ってやっているのですが、

Dialog.show;
で表示させたダイアログはどのように終了させるのですか?
Dialog.Close;
Dialog.Hide;
Dialog.Release;
の3つくらい調べてて出てきたのですが、CloseとHideとReleaseの違いがわかりません。

271 :デフォルトの名無しさん:2006/12/18(月) 23:36:34
>>264
ソースちょっと見たけど良く解からないから、トレースしてみて。
でも、ColCount-1とやるべきだろうね。

272 :200:2006/12/18(月) 23:42:44
あ、そういう考え方だったのですね。
配列の10個目を見る時にarray[9]ってするみたいな感覚なのか。
スッキリしました!ありがとうございます。

273 :デフォルトの名無しさん:2006/12/19(火) 00:14:42
それはケースバイケースだろう。
ttp://pc8.2ch.net/test/read.cgi/tech/1162262669/l50
では、最下位ビット0ってなってるから、ビット30は「31番目のビット」ってことで。
後、Delphiでは何も配列の最初の要素の添え字は0になるとは限らんし、
a: array [ 1..10 ] of DataTypeで宣言されていたら、
10個目はまさしく、a[10]だが、
a: array [ 0..9 ] of DataTypeと宣言されてたら、
a[9]になるわけで、ただの言葉というか表現の違いだけだろーーーーーーーーーー。




274 :デフォルトの名無しさん:2006/12/19(火) 03:09:55
よくURLが書いてあるラベルをクリックするとデフォルト用のブラウザとして設定されてるブラウザを起動させて(すでに起動してある場合はブラウザをアクティブにして)指定されたURLのページを開くっていう機能があるじゃないですか
あれってどうやって実現してるんでしょうか?

275 :デフォルトの名無しさん:2006/12/19(火) 03:16:54
api

276 :デフォルトの名無しさん:2006/12/19(火) 03:17:25
>>273
キミは序数と番号付けを混同している。

277 :デフォルトの名無しさん:2006/12/19(火) 03:17:37
ごめん、DelphianWorldの適当なコンポを拾って解析したらわかった

278 :デフォルトの名無しさん:2006/12/19(火) 08:11:12
>>270
Close→閉じる
Hide→隠す
Release→解放

279 :デフォルトの名無しさん:2006/12/19(火) 12:36:09

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 10 do
begin
Memo1.Lines[i]:=IntToStr(i);
end;

これを実行したら、Memo1の一行目にしか表示されないんだけど、
Memo1の行全体に

1
2
3
4
5
とか表示させるにはどうしたらいいでしょうか?

280 :デフォルトの名無しさん:2006/12/19(火) 12:49:54
Linesがいつ10行に設定されてんだよとか思わない?
TStringsのプロパティとメソッドをヘルプで調べてご覧

281 :デフォルトの名無しさん:2006/12/19(火) 13:02:23
procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
begin
 for i := 1 to 5 do
  Memo1.Liens.Add(IntToStr(i));
end;

282 :デフォルトの名無しさん:2006/12/19(火) 13:02:44
つまりMemo1.Lines.Add(IntToStr(i));
逆にするならMemo1.Lines.Insert(0,IntToStr(i));

283 :デフォルトの名無しさん:2006/12/19(火) 13:03:18
やっちゃった・・・

284 :デフォルトの名無しさん:2006/12/19(火) 13:05:37
いいんです、僕>>282-283みたいな人好きですから・・・

285 :デフォルトの名無しさん:2006/12/19(火) 15:11:08
TLabelとTStaticTextってどう使い分けるといいんでしょうかね?
継承元が違うってのは分かるんだけど、具体的なシュチュエーションが思い浮かばん…

286 :デフォルトの名無しさん:2006/12/19(火) 15:45:59
TStaticTextはウィンドウハンドルを持ってるから
フォームの最前面に表示したい場合などに使える
(ラベルが特定条件で隠れるUIが良いかどうかは置いといて)

あとは・・・枠を表示出来たり、D&Dで移動する事が出来たり、
実用的じゃないなw

287 :デフォルトの名無しさん:2006/12/19(火) 17:23:28
>>278
HideとCloseの違いについてはわかりました。
CloseとReleaseの違いについてなんですが、特に関数やらを定義していなければReleaseではなくCloseでいいのですか?
それとも、Releaseで閉じたほうがいいんですか?

288 :デフォルトの名無しさん:2006/12/19(火) 17:57:55
>>285
ウィンドウハンドルを持っているコントロールの下にラベルを置いて文字列を表示しようとすると
ラベルの文字列が隠れてどうしようもない場合に使ってみる。


289 :デフォルトの名無しさん:2006/12/19(火) 18:30:53
$quot;を ' に置き換えたいんですけど、クォートってどう書いたらいいの?

290 :デフォルトの名無しさん:2006/12/19(火) 18:35:41
' '' '

291 :デフォルトの名無しさん:2006/12/19(火) 21:52:15
>>287
Closeメソッドはフォームを破棄するときにいろいろ配慮してくれるので、
普通はCloseでいい。

292 :ななしへたぐらま ◆XcB18Bks.Y :2006/12/19(火) 23:24:53
>>270,287
Hide…常に隠す
Close…
 ・メインフォーム…プログラムを終了する
 ・サブフォーム…隠す(ただしOnCloseイベントで変更可能)
 ・MDIの子フォーム…最小化する(同上)
Release…解放(破壊)

Releaseメソッドは実行時に生成したフォームを解放するときにFreeの代わりに使います.

dlg := TMyDialog.Create(nil);
try
 dlg.ShowModal;
finally
 dlg.Free;
end;

>>274
・usesにShellApiユニットを追加
・URLを書いたラベルなどをフォームに貼る
・そのラベルのイベントハンドラに以下のようなコードを貼る.

 ShellExecute(Handle, 'OPEN', 'http://pc8.2ch.net/tech/', '', '', SW_SHOW);


293 :デフォルトの名無しさん:2006/12/19(火) 23:37:33
>>292
> Releaseメソッドは実行時に生成したフォームを解放するときにFreeの代わりに使います.

微妙に使い分けが要る。
Mastering Delphiなんかを見るとFreeでいいとかなってる。

実際に問題になるのは、メインウインドウのOnDestroyの中で他のウインドウを消すとき、
Releaseだと例外を発生することがあった。
その場合、Releaseの後にApplication.Processmessages()をかませると例外がでなかったので、
どうやらタイミングの問題があるらしい。

まあとにかくFreeが無難だと思う。

294 :デフォルトの名無しさん:2006/12/19(火) 23:42:54
基本的にフォームのハンドラで自フォームを廃棄したいときのみReleaseを使えばいいと思われ。

295 :デフォルトの名無しさん:2006/12/20(水) 08:07:49
Free 他殺
Release 自殺

296 :デフォルトの名無しさん:2006/12/20(水) 08:17:39
分かりやすい

297 :デフォルトの名無しさん:2006/12/20(水) 08:19:50
Free 即死
Release 悶絶死

298 :デフォルトの名無しさん:2006/12/20(水) 08:58:24
↑いやな例えだなw

299 :デフォルトの名無しさん:2006/12/20(水) 09:40:41
デスクトップ(色んなウインドウのトップ)に指定した長方形を書きたいのですが
どのようにすればよいのでしょうか?

300 :デフォルトの名無しさん:2006/12/20(水) 09:41:44
要するに、サブフォーム上のボタンを押してそのサブフォーム自身を閉じる場合は
自殺のReleaseで、メインフォームからサブフォームを消すときはFreeを使うってことですかね?
んで、サブフォームをCloseすることはHideすることと同じってことですか?

301 :デフォルトの名無しさん:2006/12/20(水) 10:16:11
デフォルトではそう。OnClose イベントで自動で Free に設定することもできる。

302 :デフォルトの名無しさん:2006/12/20(水) 10:58:13
文字列の質問です。
マニュアルによると、長い文字列(AnsiString),ワイド文字列(WideString)型の変数は動的に割り当て
られたメモリブロックへのポインタで、文字列が空(長さ0)の時は、メモリブロックは割り当てられず、nil
になるとあるので、以下のコードを試したました。
var
 S: string;
begin
 S := '';
 if PAnsiChar(S) = nil then ShowMessage('nil');
Sの型がAnsiStringの時は確かにnilになるのですが、WideStringの時は、nilになりません。
これはマニュアルがバグってるのでしょうか?コンパイラがばくってるのでしょうか??
環境はTurboです。





303 :デフォルトの名無しさん:2006/12/20(水) 11:13:16
302です。
訂正です。AnsiString、WideString共にnilになりませんでした。
というより、Assignedや<>nilでチェックすればいいようですね。
頭がこんがらがってきた。以前、ここであがったassignedの記事を読みましたが、
理解不能です。
ためしに、
var
 P: Pointer;
begin
 P := nil;
 if P = nil then ShowMessage('nil')
だとチェックできますね。

304 :デフォルトの名無しさん:2006/12/20(水) 13:27:15
ローカルに置いてあるHTMLのフォームから
HTTPリクエストを同じフォルダのアプリケーションに飛ばして、
ファイル書き込みをやらせようとしています。

TCGIApplicationあたりを使ってそれらしいものを作ってみたのですが、
実際ブラウザでHTMLを開いてsubmitしてみたら、
なぜかアプリケーションのダウンロードになってしまいました。

作り方が悪いのでしょうか?それともDelphiでは不可能なんでしょうか?
環境はTurbo Delphi Explorerです。

305 :デフォルトの名無しさん:2006/12/20(水) 13:34:32
>>303
PAnsiCharじゃなくてPointerでキャストすればOK

306 :デフォルトの名無しさん:2006/12/20(水) 13:51:12
最近Delphiを始めた初心者です。

FolderList: TStrings; は定義、Create済み

var
Count: Integer;
DriveName: PChar;
SearchRec: TSearchRec;
begin
Count:= 0;
GetMem(DriveName, 4);
StrCopy(DriveName, PChar(Drive + ':\'));

if (FindFirst(DriveName+'*', faDirectory, SearchRec) = 0) then begin
repeat
Inc(Count);
FolderList.Add(DriveName + SearchRec.Name + '\');
until (FindNext(SearchRec) <> 0);
end;
FreeMem(DriveName);
end;

こんなプログラムでフォルダ検索をしようとしているのですが、フォルダは検索できたものの、
フォルダでないもの '*.txt' や '*.csv' などがいくつか引っかかってしまいます。

どうしたらこのような問題を回避できるのでしょうか?
フォルダにも '.' が使われた名前があるケースも考えられるので、単純に '.' 入りのものを弾くなどはしたくありません。
どなたかご指導のほど、よろしくお願い致します。

307 :デフォルトの名無しさん:2006/12/20(水) 13:54:37
スペースつぶれてコード見づらいですね。

var
 Count: Integer;
 DriveName: PChar;
 SearchRec: TSearchRec;
begin
 Count:= 0;
 GetMem(DriveName, 4);
 StrCopy(DriveName, PChar(Drive + ':\'));

 if (FindFirst(DriveName+'*', faDirectory, SearchRec) = 0) then begin
  repeat
   Inc(Count);
   FolderList.Add(DriveName + SearchRec.Name + '\');
  until (FindNext(SearchRec) <> 0);
 end;
FreeMem(DriveName);
end;

308 :デフォルトの名無しさん:2006/12/20(水) 14:00:01
((SearchRec.Attr and faDirectory) <> 0)が真ならディレクトリだから
ループ中にこれで判別できると思う。カレントディレクトリの「.」とか「..」は自前ではじくしかないかな

309 :デフォルトの名無しさん:2006/12/20(水) 14:06:58
repeatループ内で
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
これで.と..を弾いて
if SearchRec.Attr = faDirectory then
これでディレクトリだけ引っ張ってこれるよ

310 :デフォルトの名無しさん:2006/12/20(水) 14:08:50
>>308-309
素早いレス、ありがとうございました。
仰る通りの方法で回避することができました。

それにしても FindFirst の faフラグの実装は謎ですね。
検索後に更に判定が必要とは・・・

とても勉強になりました。ありがとうございます。

311 :デフォルトの名無しさん:2006/12/20(水) 14:15:32
>>310
faDirectory有:無属性とフォルダが列挙
faDirectory無:無属性を列挙

無属性のファイルはフラグとは関係なしに列挙される。
それに加えてフラグで指定した物も列挙される。

312 :デフォルトの名無しさん:2006/12/20(水) 14:52:18
>>311
なるほどそういう仕組みだったのですね。

ありがとうございました。

313 :デフォルトの名無しさん:2006/12/20(水) 18:53:01
ホントにホントに初心者的な質問ですみませんが、
IntraWebで作ったアプリはインターネットに公開して
動作させることができるのでしょうか?
Delphi7のEnterprise版を使用しています。

314 :デフォルトの名無しさん:2006/12/20(水) 18:59:15
>>313
出来ますが、何か?

315 :デフォルトの名無しさん:2006/12/20(水) 21:25:26
つい最近Delphiをインスコしたばかりの漏れは、とりあえず他の人の作ったソフトのソースを見てみてるんだけど、
TEditorなるものが必要らしいソフトがあって、TEditorをインスコしようとしたんだけど、
コンポーネントのインストールの段階で、
[致命的エラー] HEDITREG.PAS(19): ファイル 'DsgnIntf.dcu' が見つかりません
って弾かれちゃう(´・ω・`)
多分漏れがDelphiの基本を理解していないからなんだろうけど、何か解決策あったら教えて。

ちなみにXPでDelphi6 Personalを使ってるお。

316 :デフォルトの名無しさん:2006/12/20(水) 22:03:27
HelpでDsgnIntfで検索→DsgnIntf の名前変更および関連する変更


317 :デフォルトの名無しさん:2006/12/20(水) 22:43:54
他のアプリのメッセージ(WM_ERASEBKGND)を横取りしたいのですが
どのようにすればよいのでしょうか?

318 :デフォルトの名無しさん:2006/12/20(水) 23:01:30
フック

319 :デフォルトの名無しさん:2006/12/20(水) 23:50:45
>>299
GetDC(0)

320 :デフォルトの名無しさん:2006/12/21(木) 07:56:19
>>315
プロジェクトオプション
検索パス

321 :デフォルトの名無しさん:2006/12/21(木) 09:50:43
インラインアセンブラでxmmレジスタを保存する必要はありますか?

322 :デフォルトの名無しさん:2006/12/21(木) 10:51:18
D5でPARADOX+BDEで作ったアプリがキー違反で悩まされています。
6年ほど前に作りずっと安定して動いていたのですが最近キー違反が多発するようになりました。
主キーはautoinc型で2次インデックスに無重複の物が1つあります。
post前にデバッガで2次インデックスで使われているフィールドの値をチェックして
重複していないのにpostするとキー違反になるので何が何だか判りません。
テーブルを作り直してみたのですが直りませんでした。
エラーメッセージがキー違反ですとしか出ないのでエラーの詳細を調べる方法とか
キー違反で考えられる原因とか有りましたら教えてください。




323 :デフォルトの名無しさん:2006/12/21(木) 10:54:12
>>322
ちなみにレコード数はどれくらい?

324 :デフォルトの名無しさん:2006/12/21(木) 11:17:03
>>323
1万レコードくらいです。
以前は10万レコードくらい有ったときもありました。


325 :デフォルトの名無しさん:2006/12/21(木) 12:01:43
try

except
 on E: Exception do
  ShowMessage(E.Message);
end

で例外メッセージを詳しく捕まえるとか
あと、インデックスが壊れてる場合にキー違反が出ることあるって聞いた

326 :デフォルトの名無しさん:2006/12/21(木) 12:12:52
>>324
Paradoxでテーブルの修復はためした?
ためすと重複してるレコードを抽出してくれるよ。

327 :デフォルトの名無しさん:2006/12/21(木) 12:26:26
>>325
ありがとうございます。試してみます。

>>326
TUTIL32を使った修復ツールを作っていて普段はそれで直るのですが今回はそれがメッセージもなく落ちてしまって
使えなかったのでテーブルを作り直しました。
でもその後に修復をかけて成功しても再発するのです。


328 :デフォルトの名無しさん:2006/12/21(木) 13:13:26
DVD等を再生している動画の白を採取したいのですが
GetDCではうまくいきません。

何かよい方法は無いものでしょうか?

329 :デフォルトの名無しさん:2006/12/21(木) 13:14:15
>>328
×白
○色

どうぞよろしくお願いします。

330 :デフォルトの名無しさん:2006/12/21(木) 16:38:40
>>328
デジャブ?

DVDとかメディアプレイヤーは、オーバーレイを使ってるから、GetDCでは無理。
どうしてもやりたかったら、先にメディアプレイヤーで動画再生しておいて、
DVDを再生すると、後に再生する方は、オーバーレイを使えないのでできるはず。
スマートじゃないけどな。

331 :デフォルトの名無しさん:2006/12/21(木) 19:58:40
Masks.dcuを使っているソースをコンパイルしたいのですが、
Delphi6 Personalには、Masks.dcuが付いていないようなのです。
何か代用できるものってありませんか?


332 :デフォルトの名無しさん:2006/12/21(木) 20:34:35
>>331
体験版からdcuを抜くとか出来ないの?

333 :デフォルトの名無しさん:2006/12/21(木) 20:39:03
>>327
PXUPGR なんてツールもあるよ。
http://www.rksolution.cz/delphi/delphi.htm

334 :333:2006/12/21(木) 20:39:44
Pdxrbld でした orz

335 :331:2006/12/21(木) 22:12:14
>>332
ありがとうございます。抜くことはできました。
ただ、今度は「Masks.pas」が無いと怒られましたorz


336 :デフォルトの名無しさん:2006/12/21(木) 22:58:11
>>331
TurboDelphiのMasks.pasを適当な別の場所にコピーして、
D6のライブラリパスにコピーした場所を追加してみたら?
ライセンス的に疑問が残るが。

337 :デフォルトの名無しさん:2006/12/21(木) 23:03:12
お、お前ら鬼だ。
俺は今、鬼を見てるぅー。

338 :デフォルトの名無しさん:2006/12/21(木) 23:22:02
>>335
素直にTurbe Delphiに以降しる

339 :デフォルトの名無しさん:2006/12/21(木) 23:37:17
超初心者なんですが・・・質問させてください。
あるファイル(名前をData.dat、中身はテキスト形式で一行目に番号、2行目に名前、3行目に性別)
が数十人繰り返し書いてあるファイルを、一行づつLoadしていき、各行でレコード型の変数に
代入していく手続き?(または関数)って、どうすればできますか?
だれか、教えて><

procedure TForm1.TextOperation;
var
Doc: TStringList;
Ws: WideString;
begin
if not FileExists('C:\Program Files\Borland\Delphi6\Projects\製作ソフト\recoad.dat') then
ShowMessage('データファイルが見つかりません');
Doc := TStringList.Create;
Doc.LoadFromFile('C:\Program Files\Borland\Delphi6\Projects\製作ソフト\recoad.dat');
Ws := Doc.Text;
ShowMessage(Ws);
doc.Free;

end;
と書いて、ロードした中身確認したところ、recoad.datの全ての行を読み込んで一個の変数に格納してしまい
ました・・・・orz。ファイルの一行づつロードして、一行目をレコード型変数の[1,A]で二行目を[1,B]で
3行目を[1,C]で4行目を[2,A]で5行目を[2,B]・・・・・・・とやっていきたいんです。

340 :デフォルトの名無しさん:2006/12/21(木) 23:43:08
Doc[行番号] で、その行の文字列を得られる。

341 :デフォルトの名無しさん:2006/12/21(木) 23:52:46
俺はプログラムを書く前にどういうことをしたいのか日本語でコメント行に書くよ

//StringListを生成する

//ファイルを読み込む

//1行目をHoge[1,1]に代入する

//2行目をHoge[1,2]に代入する

//x行目をHoge[ここは自分で考えよう]に代入する

342 :デフォルトの名無しさん:2006/12/22(金) 00:02:07
>>341
それは超初心者だけにしておけ。

コードを変えるたびにコメントを変える羽目になる。
失敗すると無関係なコメントが残って被害甚大。

343 :デフォルトの名無しさん:2006/12/22(金) 00:04:17
>>341
コメントにせずにやるべきことを書けばいいんだよ
そこを実装するときに消していくんだ
そうすればすべきことをしない限りコンパイルを通らん

344 :デフォルトの名無しさん:2006/12/22(金) 00:04:36
delphiごときにコメントなんぞいらん

345 :341:2006/12/22(金) 00:08:38
すまん、>>339が超初心者っていうからそれにあわせて答えたつもりだった
いまは頭の中で思いながらコード化してる

346 :デフォルトの名無しさん:2006/12/22(金) 00:10:24
>>345
了解。

そういえばToDo なんてのもあるけど、使ってる?

347 :デフォルトの名無しさん:2006/12/22(金) 01:35:59
>>342
仕事でふつーに書くぞ?

348 :デフォルトの名無しさん:2006/12/22(金) 01:42:04
まぁ、342は適当にコメントの中身考えたと思うけど、コメントの中身の悪い例だな。
//StringListを生成する
List := TStringList.Create;
なんて、コード見れば、TStringListのインスタンスを生成してるのは、誰にでも
わかることで、コメント書くなら何のためにインスタンスを生成したかとか書くべきだ。
とどっかで読んだような気がする。


349 :デフォルトの名無しさん:2006/12/22(金) 01:48:07
俺はただ単純に自分が何するか分かるようにってことだと思ったんだけどそう言うことじゃないのか・・・

350 :デフォルトの名無しさん:2006/12/22(金) 01:51:11
自分で実装するなら書かないな、実装後コメント残す事はあっても。

351 :デフォルトの名無しさん:2006/12/22(金) 01:52:35
コメントは誰が読むかを意識するべきであって
誰もが読む文学とは違う

352 :デフォルトの名無しさん:2006/12/22(金) 02:00:37
俺のプルグラムはコメントは少ないが、関数ヘッダー(関数名や概要・引数)?みたいのを付けてしまった。
とりあえず、今のアプリはヘッダー消すのも面倒だから、とりあえず、付けてる。
おかげで、俺のプログラムの3分の1くらいの行数は関数ヘッダーで占められてる。
消してぇ。


353 :デフォルトの名無しさん:2006/12/22(金) 02:08:59
Perlがあれば整形楽ちん
ついでにdoxygenか類似ツールを導入すればドキュメント管理にもなる

354 :デフォルトの名無しさん:2006/12/22(金) 03:40:28
QDでDirectShowも可能?

355 :303:2006/12/22(金) 06:27:36
>>305さんの言う通りにPointerでキャストすればいけました。
で、色々調べたら、PointerへのキャストとPCharへのキャストで、文字列が空の時
次のような違いがあるっぽいですね。
C言語で書くと
char^ p1 = null;
char[] p2 = { '\0' };
って、C言語の正確な構文忘れましたが、上記のようなイメージで、
Delphiの文字列は空の時に、Pointerだと上、PCharだと下の状態になるっぽいですね。
今ごろ知った。orz

356 :デフォルトの名無しさん:2006/12/22(金) 07:22:27
「何をやってるか」はソースから読めないとおかしくて、
コメントとソースが食い違ってるとどっちが正しいのかわからなくなる。
「何のためにやってるか」をコメントするならOKだけど、
それを意味付けして命名するとそのコメントも消せるようになる。

関数ヘッダは、cvsとかで管理されてたら全く要らない。
JavaDocみたいに抽出する場合もあるかも知れんが、
内容と合ってないと気づいた分は消すだけでもしないとな。
特に多人数開発で、コピペで体裁だけ整えて間違ったまま放置とかされるとうざい。
関数コピペしてヘッダごとコピペされるとか、
コピー先にあわせて修正したのにヘッダがそのままとか良くあったよ。


357 :デフォルトの名無しさん:2006/12/22(金) 09:57:03
コピペでじゃんじゃん重複コードを製造してるような所もあるからな。
ま、確かに速いし、仕事してるっぽいんだけど

そういうコードを長年保守して使おうとか考えちゃうのが考え物。

358 :デフォルトの名無しさん:2006/12/22(金) 10:03:43
>>355
そらそうよ
PChar(PAnsiChar)やPWideCharはCの文字列と同じで
ヌル文字列を末尾に必ず付加するからな

359 :デフォルトの名無しさん:2006/12/22(金) 10:16:28
ありがとうございます。その続きなんですが、Win32APIで文字列返す関数のバッファとして、
stringやWideStringを使いたいのですが、その時は、どうすればいいのでしょうか??
もちろん、呼ぶWin32APIは末尾のNULL文字の分のバッファも要求してきます。
で、Win32APIがNULL文字分のバッファだけが必要なとき、
SetLength(S, 0);
Win32API(PChar(S))
で、オッケーでしょうか?Sの長さは0だけど、PCharとして、キャストしたので、
1バイト分だけ確保されたと考えても差し支えないでしょうか??



360 :デフォルトの名無しさん:2006/12/22(金) 11:19:23
文字列のバッファにString型を使いたい場合は
↓こんな感じで(あんまりお勧めしないけど)
procedure TForm1.Button3Click(Sender: TObject);
var
 buff: String;
 Len: Cardinal;
begin
 Len := 256;
 buff := StringOfChar(#0, 256);
 GetUserName(PChar(buff), Len);
 ShowMessage(buff);
end;

361 :デフォルトの名無しさん:2006/12/22(金) 12:15:37
ButtonをClickすると新しいウィンドが開いて、
そこに保存してあるtxtファイルを表示させたいんですがどうすればよいでしょうか?

362 :デフォルトの名無しさん:2006/12/22(金) 12:54:28
TForm2.Create(Self).Memo1.LoadFromFile(FileName);

363 :339:2006/12/22(金) 15:10:25
>>340
>>341
その他の人アドバイスありがとうです。
参考にします。
コメントをコードよりさきに書いといたらやりやすいってのはちょっと納得してしまいました。

>>361
おれの書いてるコードが少し参考になるよ。あれは、新しいウィンドウが出てきてそこにテキストファイル
の内容がフォーム上に出てくるけど。

364 :デフォルトの名無しさん:2006/12/22(金) 20:25:56
>>354
QDに動画再生機能はない。

365 :デフォルトの名無しさん:2006/12/23(土) 05:24:47
TStringListは末尾に自動で改行コード付加するのにはまいったなぁ。
GetTextStrをオーバーライドするTOhMyGreateStringListでも作るかなぁ。


366 :デフォルトの名無しさん:2006/12/23(土) 05:27:07
いや、やっぱ、Saveするときだけ、独自の関数かますか。。

367 :デフォルトの名無しさん:2006/12/23(土) 05:40:14
TStringStreamってなんだ誰も使わないんだろうな

368 :デフォルトの名無しさん:2006/12/23(土) 05:42:18
聞いたこともないな。

369 :デフォルトの名無しさん:2006/12/23(土) 15:19:40
torbo delphi と torbo delpji for net インストールするならどっち?

すみません。こんな中途半端な質問で・・・。

370 :デフォルトの名無しさん:2006/12/23(土) 15:27:46
>>369
vista→torbo delpji for net
vista以外→torbo delphi
とturbo使ってない俺が逝ってみる

371 :デフォルトの名無しさん:2006/12/23(土) 15:30:56
ありがとうございます。
では,今後を考えると,for net なのでしょうか。

372 :デフォルトの名無しさん:2006/12/23(土) 15:37:00
>>371
7割方期待が占めてる
ホントの所は作る物次第

373 :デフォルトの名無しさん:2006/12/23(土) 15:42:10
ありがとうございました。
turbo delphi for net をインストールします。

374 :デフォルトの名無しさん:2006/12/23(土) 16:47:22
BDS持ってるが、Delphi .NETって使ったこと無いんだけど、
これってGCなの?

375 :デフォルトの名無しさん:2006/12/23(土) 16:53:11
.NETである自体で、GC
.NETアプリは言語によらず、CLR上で動作し、GC

376 :デフォルトの名無しさん:2006/12/23(土) 18:52:42
>>367
TTextStreamじゃなくて?

377 :デフォルトの名無しさん:2006/12/23(土) 18:53:33
>>373
.netすんならC#にしとけ

378 :デフォルトの名無しさん:2006/12/23(土) 19:39:12
win32のほうがいいよ。Delphi使うなら。

379 :デフォルトの名無しさん:2006/12/23(土) 20:01:32
>>376
うん、TStringStreamの方。
便利げなんだが、何故かあんまり使われているという話をきかない。

つか、TTextStreamってなんじゃらほい

380 :デフォルトの名無しさん:2006/12/23(土) 21:01:35
delphiするので,win32の方にしますが,delphi6よりturbo delphiが
良いんですよね(いずれも無償Ver)

381 :デフォルトの名無しさん:2006/12/23(土) 21:09:33
>380
標準以外のコンポーネントを使いたいならD6、標準だけでいいならTurbo Explorerで。

382 :デフォルトの名無しさん:2006/12/23(土) 21:47:33
ありがとうございました。

383 :デフォルトの名無しさん:2006/12/23(土) 22:06:09
>>380
ヘルプがしっかりしていて動作が軽快でバグが少ない D6 の方を勧めるよ。

384 :デフォルトの名無しさん:2006/12/23(土) 22:19:18
VistaだとDelphi6のヘルプは起動しない。

385 :デフォルトの名無しさん:2006/12/23(土) 22:25:14
>>379
エンコードやデコード、暗号とかの変換系で
stringから変換するときに使った。
いったんTMemoryStreamに渡すよりも読みやすい。


386 :デフォルトの名無しさん:2006/12/23(土) 22:37:18
>>385
TTextStreamのこと?
なんかDelphi7のヘルプを見ても、TTextStreamって載ってないんだよね

387 :デフォルトの名無しさん:2006/12/23(土) 23:15:43
delphi5のプロフェッショナルを使っているのですが、
ADOコンポーネントを追加したいのです。
delphi5用のADOコンポーネントは入手可能でしょうか?。

388 :デフォルトの名無しさん:2006/12/23(土) 23:40:21
Delphiでプロセスメモリの読み書きはできますか?ざっと探してみたんですが
俺が馬鹿なので有力なのが見つかりませんでした・・・。
ありましたら、教えていただければと思います。。

389 :デフォルトの名無しさん:2006/12/23(土) 23:53:07
>vista→torbo delpji for net
>vista以外→torbo delphi

えー? そうなの?
Vistaってネイティブ動かんの??


390 :デフォルトの名無しさん:2006/12/24(日) 01:11:29
>>388
違うプロセスを弄ったことが無いのでよくわからんけど、
ReadProcessMemory, WriteProcessMemory, CreateToolhelp32Snapshot
などのAPI関数名とDelphiをくっ付けてググればいろいろ出てくるんではないかと。

>>389
VCで作られている某ファイラもVista上ではまともに動かないそうで、
Vista上でWin32用アプリを動かすのはなかなか難しいようだ。

391 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/12/24(日) 01:25:20
>>366さん
http://delfusa.main.jp/delfusalibrary/20060527212010/StringUnit/StringUnitHeavy.pas
SaveStringToFile

392 :デフォルトの名無しさん:2006/12/24(日) 08:10:30
う・・・またまた、質問です。ちなみに超初心者です。
TlistViewでViewスタイルvsReportにしてて
________________________________________________________________________________________________
番号__|名前_____________________________|年齢|性別|備考_____________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|

って空のTListViewがあるわけですが。。。
前もってレコード変数に代入してるperson[0].bangou とかperson[0].nameとかperson[0].ageとかPerson[0].genderとか
person[0].other......以降 person[1].bangou.....とつづく
のデーターをこのListViewのセルに入れたいのです。
TListView + Delphiでググって調べてhttp://totonica.s41.xrea.com/blog/log/eid229.html#sequel
のようなサイトとか読んだのですが、よく分からなかったでした。
だれか、教えてください。

393 :デフォルトの名無しさん:2006/12/24(日) 08:33:16
var
 NewItem: TListItem;
 I: Integer;
begin
 ListView.Items.BeginUpdate;
 try
  ListView.Items.Clear;
  for I := 0 to RecordCount - 1 do
  begin
   NewItem := ListView.Items.Add;
   NewItem.Caption := person[I].bangou;
   NewItem.SubItems.Add(person[I].name);
   NewItem.SubItems.Add(person[I].age);
   NewItem.SubItems.Add(person[I].gender); 
  end;
 finally
  ListView.Items.EndUpdate;
 end;
end;

394 :デフォルトの名無しさん:2006/12/24(日) 08:33:46
>Vista上でWin32用アプリを動かすのはなかなか難しいようだ。

マジでつか!?
Vistaで正常に動かすにはVista対応Delphiのリリースまで待たなくてはならないんでつか?

395 :デフォルトの名無しさん:2006/12/24(日) 09:51:25
どこまでVistaの機能に対応してVista対応というかの問題だな。
少なくとも、お行儀の良いプログラムならVista上でも動くには動くだろう。
まぁ、Delphi特有の大きさ0のアプリケーションウィンドウの問題とかあるが。
とりあえず、
http://dn.codegear.com/article/33747
を読んだら?

396 :デフォルトの名無しさん:2006/12/24(日) 16:17:52
お初にお目にかかります。
TChartを使ってグラフを表示しているのですが、
起動直後にポップアップメニューのメニューアイテムクリックイベントで
Chart2.BottomAxis.Maximum:=strtointdef(inputbox('最大値入力','最大値を入力してください。','100'),100);
としても最大値に変化が無く一旦Chart2を右ドラッグするとこのメソッドが適応されるようです。

検索ワードでもいいのでどなたか教えていただけませんか?

環境はD5 Ent+UP2 + XP

397 :396:2006/12/24(日) 16:21:02
訂正 XP→XP SP2

398 :デフォルトの名無しさん:2006/12/24(日) 18:52:00
TChartのことなんて知らんがな。
最大値を変えた後、とりあえず、TChartのUpdateか、Invlidateか、repaintメソッド呼んでだら、どうなる?

399 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/12/24(日) 21:50:26
>>395さん
それを読んだ上で
D_DevLog アプリケーションウィンドウに対する対処 (4)
http://ddev.blog46.fc2.com/blog-entry-70.html#more

を使うと、かなり楽々にVista対応できますね。

漏れは、AppWinFixを改造してTCustomSubFormも作って
便利に使っています。

AppWinFixをIDEにパッケージインストールしたとたん
Delphi自体が、Vista対応挙動にして藁太ですが。



400 :デフォルトの名無しさん:2006/12/24(日) 21:51:17
>>392
> Person[0].gender
政治的に正しいレコード型かww

>>393
RecordCountが「未定義の識別子」になる悪寒。

401 :392:2006/12/25(月) 07:00:46
>>400
Person[0].sexとしてほしかったのか・・・w
たしかにResordCountでエラーになるよ。
そこの部分は省いて、
NewItem.SubItems.Add(person[I].name);
   NewItem.SubItems.Add(person[I].age);
   NewItem.SubItems.Add(person[I].gender); 
だけ、付け加えても、えらーにはならなかったけど、ListViewになにも表示されてなかった
空のまんま。どうやったらいいでしょう・・・

402 :デフォルトの名無しさん:2006/12/25(月) 07:28:42
>>401
I に値が代入されてないんじゃね。

403 :デフォルトの名無しさん:2006/12/25(月) 09:54:14
>>386
TStringStreamのほうです。
TTextStreamって、
ttp://www.castle-cadenza.demon.co.uk/decorate.htm
ここが出典なのかな?


404 :デフォルトの名無しさん:2006/12/25(月) 09:58:46
おいおい、RecordCountって名前見りゃ何だか判断できるだろ。
君の問題はリストビューに項目を追加することだろ??for文の使い方まで、教えなきゃいけないのか。
適切に置き換えろよ。


405 :デフォルトの名無しさん:2006/12/25(月) 16:52:22
>>404
出来ました。
ありがとうです。

406 :デフォルトの名無しさん:2006/12/25(月) 23:53:00
>>399
それやると、たとえばフォームの状態を復元する
既存コンポーネントとかと互換性がなくなるよね。


407 :デフォルトの名無しさん:2006/12/26(火) 01:51:19
いわゆるスキンを実装しようと考えています。
BMP、WAV、TXTの3種類のファイル群を
EXEとは別にスキンファイルとしてひとつにまとめ
実行時はメモリ内部にスキンファイルを展開し
TBitmap、TImagelist、SndPlaySound、SND_ASYNCなどで処理する、
という流れを考えているのですが、実際これをやるには
どのあたりの知識が必要でしょうか、ヒントください。
雛形になる、というか参考になるソースってありますでしょうか?
よろしくお願いいたします。

408 :デフォルトの名無しさん:2006/12/26(火) 02:07:14

コンポーネント使うとか・・・
http://www.tmssoftware.com/
TMS Skin Factory
http://www.tmssoftware.com/tsf.htm

409 :デフォルトの名無しさん:2006/12/26(火) 02:09:05
http://www.torry.net/quicksearchd.php?String=Skin&Title=Yes

410 :デフォルトの名無しさん:2006/12/26(火) 02:10:58
SXSkinComponents v.1.1.0 がデモみるかぎりよさそうだな・・・

411 :デフォルトの名無しさん:2006/12/26(火) 02:24:01
そうかコンポーネントか!
その発想、選択肢はありませんでした。
ありがとうございます。勉強してきます。

412 :デフォルトの名無しさん:2006/12/26(火) 02:52:59
コンポーネントのソースを見て実装という手もあるので、いかようにでも

413 :デフォルトの名無しさん:2006/12/26(火) 05:17:48
ですね。都合により標準設定でコンパイルできるようにしたいので
ソースで勉強して実装したいと思います。

414 :デフォルトの名無しさん:2006/12/26(火) 09:07:49
>AppWinFixをIDEにパッケージインストールしたとたん Delphi自体が、Vista対応挙動にして藁太ですが。

kwsk


415 :デフォルトの名無しさん:2006/12/26(火) 10:50:51
Delphi6mEnterpriseを使用してソフトを作っています。

指定した入力が入るまでBEEP音を鳴動させようと
windowsAPIのBeepを使用しました。

リファレンスでは、第二引数の値を「-1」にすると
非同期で動作し再度コールされるまでBEEP音が鳴動するとかいてありました、
引数を「-1」にするとコンパイルエラーが発生します。

そこで、最新のリファレンスをみるとその部分の記述が消えていました。

上記のようなことを実現したいのですが、方法がありましたお教え頂けませんか。

416 :デフォルトの名無しさん:2006/12/26(火) 11:12:43
DWord(-1)とか

417 :デフォルトの名無しさん:2006/12/26(火) 11:22:57
var
 M := TMemoryStream ;
begin
 M := TMemoryStream.Create ;
 M.LoadFromFile('test.wav') ;
 SndPlaySound(PChar(M), SND_ASYNC) ;
end;

コンパイルは通ったのですがtest.wavが鳴りません。単純に
 SndPlaySound(PChar(test.wav), SND_ASYNC) ;
とすれば鳴りますが、一旦メモリにプールしたいんですよね。
TMemoryStreamの使い方が間違ってるのでしょうか?

418 :デフォルトの名無しさん:2006/12/26(火) 11:26:54
>>417
思いっきり間違っとる
オブジェクト指向の勉強をまずしたほうがいいな
クラスと配列は全然違う

TMemoryStreamの内容は、Memoryプロパティだ。

419 :デフォルトの名無しさん:2006/12/26(火) 11:27:01
M.Memory
SND_MEMORY

420 :デフォルトの名無しさん:2006/12/26(火) 11:43:22
ありがとうございました!!
 SndPlaySound(PChar(M.Memory), SND_MEMORY or SND_ASYNC) ;
に書き直すことでtest.wavの再生に成功しました。
本当に助かりました。ありがとうございます。

421 :デフォルトの名無しさん:2006/12/26(火) 11:53:34
横から失礼。
M.Free; しなくてもいいの?

422 :デフォルトの名無しさん:2006/12/26(火) 15:08:30
Delphiのコンパイラオプションのデバックオプションのデバッグ情報やローカルシンボル情報の
オプションはリリースするときもチェックついたままでよろしいのでしょうか??
ヘルプによると、dcuファイルはこれらの影響を受けるような事が書いてありますが、
生成されるEXEも影響を受けるんでしょうか?

423 :デフォルトの名無しさん:2006/12/26(火) 15:37:51
>>421
すみません。M.Free;は質問した時点で書き忘れていました。ご指摘ありがとうございます。

424 :ななしへたぐらま ◆XcB18Bks.Y :2006/12/26(火) 20:56:43
>>420
ちなみに最初のパラメータはキャストしなくてもOKです.

TMemoryStream.Memoryはpointer型(汎用のポインター型)で,これは
あらゆるポインター型の変数(とパラメータ)に代入できるからです.

>>422
それらのオプションでは影響を受けないと思われます.
(少なくとも手持ちのDelphi 5は)

ヘルプの説明にに『実行ファイル』という言葉があったと思います.
これは簡単に言うと .exe ファイルのことです.
(厳密には .exe でない実行ファイルも存在します)


425 :デフォルトの名無しさん:2006/12/26(火) 21:30:48
ゲームパッドで自由に音が鳴らせるアプリを組みました。
音は出るようになったんですが、
微妙なタイムラグが気になって仕方がないです。
ソースは
ttp://codezine.jp/a/article.aspx?aid=172
を参考にしました。
midiOutShortMsgを使っています。Sleepは使っていません。
Timerでintervalを1で使っています。

タイムラグ0は物理的に不可能と思うんですが、もっとレスポンスのいい方法はないでしょうか?

426 :デフォルトの名無しさん:2006/12/26(火) 22:03:36
あなたの使ってるMIDI音源はソフトウェアですか、ハードウェアですか?
ソフトウェアなら、どうしても発音が遅れます。

427 :デフォルトの名無しさん:2006/12/26(火) 22:21:26
ソフトウェアMIDIです。Windows付属の

428 :デフォルトの名無しさん:2006/12/26(火) 23:39:41
Delphiのエディタのマウス右メニューに
コピペ機能を使えるようにするツールが昔あった記憶があるのですが
(メモと同じ機能化)ツール名やある場所しりませんでしょうか?

429 :デフォルトの名無しさん:2006/12/26(火) 23:44:36
そもそもデフォルトでコピペ位できますが。

430 :デフォルトの名無しさん:2006/12/26(火) 23:50:24
>>429
古いノートで使ってるんで、
最新バージョンは入れてない

431 :デフォルトの名無しさん:2006/12/26(火) 23:58:00
これか

デルファイ アルファ 
Delphiのコードエディッタ上で右クリックするとコピー、貼付け等のPopupmenuを表示する。


ttp://www.delphianworld.com/ の Toolsにあるけど


432 :デフォルトの名無しさん:2006/12/27(水) 00:13:48
>>431
それです!
ありがとうがざいます。

433 :デフォルトの名無しさん:2006/12/27(水) 01:47:33
>>424
ありがとうございます。これで、いちいち、リリース用とかデバッグ用とか設定変える手間が省けます。


434 :デフォルトの名無しさん:2006/12/27(水) 01:57:40
>>425
Timerは、TTimerかな?これは、最高でも精度が、20、30msecくらいしかでないっつーのと、
ソフトウェアMIDI音源なら、さらに遅れる。


435 :デフォルトの名無しさん:2006/12/27(水) 02:13:45
恐れ入ります。Delphi6Personalを使っている者なのですが、
コンポーネントを使うときに「DesignIntf.dcuが無い」
というエラーがでまして、
インストールフォルダに入っていた"DesignIntf.int"の
内容がPascalソースっぽかったので
*.pasにリネームしてライブラリパスに追加したのですが、
今度はDesignMenus.dcuが無いと言われてしまい、
はまってしまいました。
お助け願えないでしょうか、、



436 :デフォルトの名無しさん:2006/12/27(水) 02:17:22
http://www.google.co.jp/search?hl=ja&q=DesignIntf.dcu&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

437 :デフォルトの名無しさん:2006/12/27(水) 23:54:36
Delphiで宣言されているWindowsの型で、
type
 TFoo = packed record
  A: Integer;
  B: array [0..0] of Byte;
 end;
と宣言されているレコードのメンバBに必要なメモリ領域を割り当てるにはどうすれば、
いいでしょうか?
var S: array [0..127] of Byte;
とし、Foo.B = SやらFoo.B = Pointer(B)やらやっても型の互換性がないとエラーになります。


438 :デフォルトの名無しさん:2006/12/28(木) 00:18:22
長さ固定でいいのなら新たにレコードを宣言してキャストして使う。

TFoo32 = packed record
 A: Integer;
 B: array[0..31] of Byte;
end;

そうでなければ TFoo 全体を自分で適量確保する。

GetMem(SizeOf(Integer) + SizeOf(Byte) * x)

439 :デフォルトの名無しさん:2006/12/28(木) 00:20:23
vat
Foo:TFoo;
begin
FillChar(Foo,SizeOf(Foo),0);
かな

440 :デフォルトの名無しさん:2006/12/28(木) 00:25:16
>>439
そのコードが何なんだ?

441 :デフォルトの名無しさん:2006/12/28(木) 00:26:51
ああ、[0..0]か・・・
Windows.pasでそんなの使ってるのか

442 :デフォルトの名無しさん:2006/12/28(木) 01:40:46
>>447です。
ぐぉ。めんどっちいですね。長さ固定は困るので、動的な方でトライしてみます。

443 :デフォルトの名無しさん:2006/12/28(木) 02:03:01
すみません。ぜんぜん面倒でありませんでした。ありがとうございました。

444 :デフォルトの名無しさん:2006/12/28(木) 12:08:07
いいえどういたしまして。

445 :デフォルトの名無しさん:2006/12/28(木) 17:34:51
画像ファイルをテキストに変換したいです。
いきなり漢字は無理でしょうから
最初は0〜9までのひと桁の数字を判別できれば
と考えています。
実現には技術的にどういった知識が必要でしょう?

446 :デフォルトの名無しさん:2006/12/28(木) 17:41:33
パターンマッチング法
ゾンデ法
ストロークアナリシス法
ニューラルネットワーク
ファジィ
カオス

447 :デフォルトの名無しさん:2006/12/28(木) 17:43:15
Delphiとは何の関係もないけど、
単純なニューラルネットワークを使ったパターン認識が一番取っ付きやすいと思う。

448 :イタリア人(ItalianA):2006/12/28(木) 19:07:24
これからDelphiをDLして勉強しようと思っています。
で、手元にナツメ社のDelphi3.1ハンドブックがあるのですが
これは役立たずになっているのでしょうか?


449 :デフォルトの名無しさん:2006/12/28(木) 19:12:03
>>448
おれもDelphi勉強中。まだ、Delphi歴1ヶ月。
3.1は古いんじゃない?

450 :イタリア人(ItalianA):2006/12/28(木) 19:24:43
>>449
ありがとう。とりあえず試してみるよ

451 :デフォルトの名無しさん:2006/12/28(木) 19:40:54
Delphi2〜7は基本的な部分は変わってないから
3.1時代の参考書も使えるかと
コンポーネントとかは違うけど

452 :イタリア人(ItalianA):2006/12/28(木) 19:53:21
>>451
わかりました。勇気がわいてきました。
コンポーネントの違いはなんとなく空気読んでいきますわ

453 :デフォルトの名無しさん:2006/12/28(木) 20:03:14
3.1っつーと、動的配列がないのが辛いな

454 :デフォルトの名無しさん:2006/12/29(金) 00:14:04
SHGetDesktopFolderで取得したIShellFolderは
使用後は必ず_Releaseメソッドを使うべきなんでしょうか?

455 :デフォルトの名無しさん:2006/12/29(金) 00:21:54
_AddRefを自分で呼んだのなら対になる_Releaseも必ず呼ばないとダメ。
そうでないならコンパイラに任せておけばいい。

456 :デフォルトの名無しさん:2006/12/29(金) 00:33:23
>>455
ありがとうございます。
_AddRefメソッドは呼んでいないのでコンパイラに任せます。

457 :デフォルトの名無しさん:2006/12/29(金) 05:13:34
ところで、Vista対応の現行TurboDelphi後継は出る予定あるんでしょうか??

458 :デフォルトの名無しさん:2006/12/29(金) 05:35:40
予定はあるらしいですよ。
http://groups.google.co.jp/group/borland.public.delphi.non-technical/msg/b8df0dd3c345e297?hl=ja&

459 :デフォルトの名無しさん:2006/12/29(金) 10:50:21
Vista対応って、どういうレベル?ただ、IDE自体が動けばいいだけ?
Delphiで作ったアプリが>>395のような追加コードなしに問題なく表示できなきゃだめ?
どの機能に対応するかによって答えは変わってくるよ。
なんったて、Windows2000で使えるようになったUnicode文字でさえ、現状のDelphiは標準の
コントロールで表示できないし。そういう意味で言うと、2000すら対応していない。


460 :デフォルトの名無しさん:2006/12/29(金) 15:05:26
またまた、質問なんですが・・・
毎回親切に答えてくれてありがとうございます。

今回の質問なんですが・・・
ユーザーの入力データーから名簿のデーターを読み込み、IndexOfでユーザーが入力した名簿のデーター
がすでにあればOKなんですが、ユーザーが入力したデータが既存の名簿データにない場合、
ダイアログ(入力用の新規フレーム)を出して、ユーザーに名簿にないので、その他のデーターの入力
を促して、その間はプログラムの流れは止まってるみたいな処理にしたいのですが・・・

i := 0;
Dir:=GetCurrentDir;
Doc := TStringList.Create;
Doc.LoadFromFile(Dir+'\record.dat');        //既存のデーターを読み込み
Ws := Doc.Text;                     //データーの内容保存

repeat
Position := Doc.IndexOf(Person[h].Name);
if Position = -1 then                 //既存のデーターにユーザーの名前が存在しない場合
             begin
//ここらへんにユーザーにダイアログを提示して
                               //入力を促す処理を書いて
                               //その入力が終わるまでプログラムの流れは一時停止
//しておいて欲しいです。Readlnみたいな・・・で、ユーザ
                          //で入力が終わったらそれを変数に代入して、プログラム
end;               //再生・・
i := i+1;
Until
i > Ninzuu - 1;
end;
お願いします。

461 :デフォルトの名無しさん:2006/12/29(金) 15:14:45
,:::-、       __
      ,,r::::::::::::〈:::::::::)    ィ::::::ヽ
      〃::::::::::::;r‐''´:::::::::::::::::::::ヽ::ノ
    ,'::;'::::::::::::::/::::::::::::::::::::::::::::::::::::
     l::::::::::::::::::l::::::::::●::::::::::::::●:::::ji
    |::::::::::::::::::、::::::::::::::( _●_)::::::,j:l  クマー!
    }::::::::::::::::::::ゝ、::::::::::|∪|_ノ::;!
.    {::::::::::::::::::::::::::::`='=::ヽノ:::::/     
    ';::::::::::::ト、::::::::::::::i^i::::::::::::/
      `ー--' ヽ:::::::::::l l;;;;::::ノ
【ラッキーレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ株は上がるわ
出世しまくるわ体の悪い所全部治るわでえらい事です

462 :デフォルトの名無しさん:2006/12/29(金) 15:32:10
>>460
入力が1行で良いのならInputBox使えばいいし、もっと入力項目
が多いんだったら、フォームを作ってShowModalで表示すれば
入力が終わるまでメインの方は止まる。

ただ、キャンセルされた場合の処理をどうするかを考える必要が
ある。

463 :デフォルトの名無しさん:2006/12/29(金) 17:00:43
>>462
ありがとうです。できました。
value := InputQuery(Person[h].Name+'の所在地',Person[h].name+'の所在地情報を入力してください。',NewPlace);
if not value then
begin
ShowMessage('入力がキャンセルされました。処理を中断します。');
exit;
end
else
Person[h].Place := NewPlace;
InputBox調べてたら、似たようなやつでInputQueryってのがあって、Boolean型でキャンセル押したらFalse返して
それ以外は、Trueを返して変数に入力内容をテキスト型にして返すって関数があってそれ使ったら
うまくいきました。

126 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)