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

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

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

1 :デフォルトの名無しさん:04/11/27 13:41:25
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

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

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/

2 :デフォルトの名無しさん:04/11/27 13:42:21
2

3 :デフォルトの名無しさん:04/11/27 13:42:20
<過去ログ>
18 http://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 http://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 http://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 http://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
10 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc2.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc2.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc2.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc2.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc2.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc2.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc2.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html

4 :デフォルトの名無しさん:04/11/27 21:51:59
4様

5 :デフォルトの名無しさん:04/11/27 22:10:08
5様

6 :デフォルトの名無しさん:04/11/28 00:18:13
ゲームで、ハイスコアランキングを作りたいと思っているのですが、
肝心のソート方法がわからないです。

TStringList.Create
LoadFromFile
Add
ソート
SaveToFile

記録する内容は、スコア、名前、日付なんですが、
この3つをひとまとまりにして、
スコアで降順ソートというのはどういう方法が考えられるのでしょうか。

Addするときコンマ区切りにして、
ソートできる二元配列のようなものに読み込むのか
そもそもそういったものが存在するのかもわからないですが。

7 :デフォルトの名無しさん:04/11/28 01:07:14
同じことをさせるのにどの手法が高速なのかを教えてくれるサイトありませんか?
caseとかinとかposとかforとかwhileとか汎用的なのを。

8 :デフォルトの名無しさん:04/11/28 02:25:56
>>6
TStringList 使うよりも
スコア、名前、日付を扱うレコードやクラスを作って
TList や TObjectList で管理したほうがいいんじゃ?

9 :デフォルトの名無しさん:04/11/28 02:51:12
ソートするならTListがいいっしょ。
あれのソートはピボットソートだから、速度も問題ない。

10 :前スレ927:04/11/28 02:51:15
Memo1が未定義の識別子ってでるんですが

11 :デフォルトの名無しさん:04/11/28 03:01:53
>>10
コンポーネントのMemoをフォームに貼り付ければ良いかと。
Memoの名前が「Memo1」なら、問題無いかと。

12 :デフォルトの名無しさん:04/11/28 03:02:13
だから何だ。
問題あるなら定義すればいいじゃないか。

13 :前スレ927:04/11/28 03:10:06
今度は「レコード、オブジェクトまたはクラスのいずれかが必要です」
がでました

14 :デフォルトの名無しさん:04/11/28 03:25:17
一回フォームに貼ってから消したりしたんじゃないのか。
だったら、もう一回コンポーネントを貼って前のと名前を合わせろ

15 :デフォルトの名無しさん:04/11/28 04:16:53
926 :デフォルトの名無しさん :04/11/27 21:02:25
    >>923
    違う。
    例えば Delphi は VB.NET に比べてあらゆる面で極めて劣っており、
    どんなに優秀なプログラマーであっても Delphi を使えばまともなアプリは作れず、
    どんなに劣悪なプログラマーであっても VB.NET を使えばすばらしいアプリが作れる。

16 :デフォルトの名無しさん:04/11/28 05:14:16
>>2-15
いいかげんにパトラッシュの飼い主。

17 :ななしへたぐらま ◆XcB18Bks.Y :04/11/28 06:10:22
>1 乙鰈様

>前スレ968
私もちょうどそんなプログラムを作っているところです.
右も左もわからぬ素人で試行錯誤の連続という状態で答えるのなんですが,
FTPの仕様とFTPソフトの動作を参考にしてこんな感じで作っています.

・接続が確立したらサーバーがクライアントにパスワード要求メッセージを送信.
・クライアントはパスワード要求メッセージを受け取ったらユーザーにパスワードを入力させてそのパスワードを送る.
 (あるいはあらかじめ用意してあるパスワードを送信する)
・パスワードが正しかったらうまくいった旨のメッセージを送信,違ったら失敗の旨のメッセージを送信して接続解除.
・サーバーは正しいパスワードを受け取るまではその他の命令は受け付けない.

>>7
そういうサイトは知りませんが,言語ガイドがある程度参考になると思います.
なお.一般的用途ならそれらの差は誤差の範囲なので気にする必要は無いと思います.
(ただし繰り返し処理の場合,ヘルプにあるように処理の前に回数が確定している場合はfor文を使うのがよいと思います)
むしろ時間のかかる同じ処理を無駄に何回も繰り返して実行しないかどうかを見たほうがよいと思います.


18 :デフォルトの名無しさん:04/11/28 06:53:13
MSDOSのコマンドをDelphiで実行したいのですが… m(_ _)m

19 :デフォルトの名無しさん:04/11/28 09:30:10
>>18
いいよ。許可する

20 :デフォルトの名無しさん:04/11/28 11:35:13
TStringListで、値を入れる際に、
'あ'のように文字が入っていると大丈夫なのですが
''のように文字が入っていないとエラーが発生してしまいます。
どうしてなのでしょうか・・・

21 :デフォルトの名無しさん:04/11/28 11:37:30
>>20
いいよ。許可する

22 :デフォルトの名無しさん:04/11/28 11:46:13
ないものには代入できないでしょ。
項目を増やすには Add 、すでにある項目の内容を変更するには代入。

23 :デフォルトの名無しさん:04/11/28 12:17:45
>>8-9
ありがとうございます。
TObjectListを使う方向で試してみます。

24 :デフォルトの名無しさん:04/11/28 14:04:20
初めまして。Delphi 7 pro を使っています。

ExtListView について、どなたか教えて下さい。

ListViewに2万個のファイルを表示したところ、とても遅いので

ExtListView 3.72(改) http://phxmail.sourceforge.net/comp/extlistv_d7.zip

を落としてきて登録して使ってみたのですが、使い方がまるでわかりません。
上のzipはDelphi5用のものをDelphi7用に修正したものだそうで、ちゃんとコンポーネントの
登録はできたのですが、付属のデモはDelphi5用のままらしく, コンパイルすらできません。

どなたかこのzip付属の testvm の修正の仕方をご存じないでしょうか?

なぜか、Delphi5でもコンパイルできませんでした。
エラーメッセージは
「FileList.OnVMCacheHint が参照しているメソッドFileListVMCacheHintの
パラメータリストが一致しません。メソッドへの参照を削除してもよいですか?」
です。



25 :20:04/11/28 14:22:45
>>22
レスありがとうございます。
>すでにある項目の内容を変更するには代入。
の際に、「'あ'」であらかじめ入っているところを「''」に置き換えようとすると
エラーになってしまうのです。
何かしら入らないといけないのでしょうか?

26 :デフォルトの名無しさん:04/11/28 14:37:06
ListViewも自前でデータ管理すれば2万くらい軽くいけるぞ。

27 :デフォルトの名無しさん:04/11/28 14:38:29
OwnerData=trueなら楽勝だな

28 :デフォルトの名無しさん:04/11/28 14:42:38
>>18
ShellExecute


29 :前スレ927:04/11/28 14:53:43
Memo1はstringで定義すればいいんですか

30 :デフォルトの名無しさん:04/11/28 15:41:31
>>25
関係あるコードをここにアップしてみて。


31 :デフォルトの名無しさん:04/11/28 15:59:33
なかさぁ、入門サイトで2,3時間勉強したほうがはやいよ

32 :デフォルトの名無しさん:04/11/28 16:41:51
>>24
もし将棋板の某氏だったら(,,゚Д゚) ガンガレ!

33 :デフォルトの名無しさん:04/11/28 17:21:41
Windowsのシステムに関するスレが無かったのでこちらで教えてください。
DelphiやVBからゴミ箱を空にしたり最近使ったファイルの履歴を空にしたいのですが、
こう言うことをやることは出来ますか?

もし出来るのでしたらやり方を教えてください。
WinFAQとかをゴミ箱やレジストリで検索したのですが見つからなかったので。。。

34 :デフォルトの名無しさん:04/11/28 18:01:34
>>16
お... おじいさん?

35 :デフォルトの名無しさん:04/11/28 18:28:15
>>33
http://homepage1.nifty.com/MADIA/delphi/Win32API/RecentDocs.htm
http://homepage1.nifty.com/MADIA/delphi/Win32API/RecycleBin.htm

36 :デフォルトの名無しさん:04/11/28 18:29:29
>>33

Win32API スレへどうぞ

37 :デフォルトの名無しさん:04/11/28 19:00:14
>>35
ありがとうございますた。

38 :デフォルトの名無しさん:04/11/28 21:30:17
>>34
意味がわかってワラタw
そうか「パトラッシュの飼い主」は「おじいさん」だw

39 :デフォルトの名無しさん:04/11/28 22:30:36
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。


40 :24:04/11/28 22:36:27
>>26 >>27

情報ありがとうございました。いろいろ調べてみます。
(ownerdataもやり方がよくわからないので)

41 :デフォルトの名無しさん:04/11/29 00:06:52
ネロはパトラッシュの何なの?

42 :デフォルトの名無しさん:04/11/29 00:40:24
>41
真・女神転生3で全滅したらあがってくるスレその13
http://game9.2ch.net/test/read.cgi/gamerpg/1100604186/

43 :デフォルトの名無しさん:04/11/29 01:49:06
x分の1の確率で、何かを実行するっていうのは、
こういう感じでいいんでしょうか。

例えば、1/1000(1000秒に1回)の確率で
ShowMessageでHELLO!と出すには、

procedure TForm1.Timer1Timer(Sender: TObject);
var
x: Integer;
begin
Randomize;
x := Random(999);
if x = 123 then ShowMessage('HELLO!');
end;

どうも偏りが出る気もするんですが、
精密さを上げるために方法はあるんでしょうか。

44 :デフォルトの名無しさん:04/11/29 02:12:56
毎回Randomize呼ぶなよ。
最初に一回で十分。

45 :ななしへたぐらま ◆XcB18Bks.Y :04/11/29 02:19:34
毎回呼ぶせいで偏りが出ているのかもしれませんね.
あとRandom(999)では確率が999分の1になってしまいます.Random(1000)に.


46 :デフォルトの名無しさん:04/11/29 02:34:46
>>44-45

それで試してみます

不勉強ですいません
ありがとうございます

47 :デフォルトの名無しさん:04/11/29 04:09:47
DLLをリソースファイルでEXEに埋め込むことはできますか?
具体的にはどうすればできるでしょう。

48 :デフォルトの名無しさん:04/11/29 05:23:54

[Delphi-ML:82731] リソースとしてEXEに埋め込んだDLLの利用法について
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=082731

49 :前スレ917:04/11/29 17:44:37
未だ設定方法が分かりません。
よろしくお願いします。

50 :デフォルトの名無しさん:04/11/29 17:48:24
>>49
前スレが見えない。

51 :前スレ:04/11/29 17:54:41
VBAだかEXCELのヘルプ読むかしかるべきスレで聞けって気もするが。

917 名前:デフォルトの名無しさん[sage] 投稿日:04/11/24 11:57:59
MDBからデータを読んでExcelファイルに書き込むPGを組んでるんですが、
書き込んだセルの文字色を変えるのは可能でしょうか?


52 :デフォルトの名無しさん:04/11/29 19:18:26
>>49
XlsApp.Selection.Font.color= RGB(255,0,0)
でどうでしょう?文字は赤くなると思いますが。
RGB関数の使い方やcolorプロパティの詳細は、ビジュアルベーシックエディタのヘルプで見てください。
デルファイからエクセルをコントロールする場合、エクセルでマクロを記録して、
ビジュアルベーシックエディタを起動してコードを確認して、読み替えてディルファイに
コーディングしたほうが早いと思います。

53 :24:04/11/29 23:11:48
>>27

どうもありがとうございました。OwnerData = true にしたら
10倍ぐらい速くなりました。

感謝感謝です。

54 :Delフサギコ ◆A6VzDeLphI :04/11/30 00:24:10
    ∧,,∧  お茶どうぞ
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)  旦~~
]]]]]]]]]]]]]]]]]]]]]]]]]]]]

スマートクライアントていうのでしょうか。
Windowsに対するWindowsUpdateのように
アプリ自身で自分の最新版を取得してきて
自動でVerUpを行うような仕組みは
どのように作るのでしょうか。

実装したり、紹介していたりする所
教えてください。


55 :デフォルトの名無しさん:04/11/30 00:31:23
自前でやるなら
1.更新のチェック
2.(あれば)差分のダウンロード・展開
3.本体(main.exe)の起動
を行う小さなexe(boot.exe)を用意すればいいだけ。

.NETFWやInstallShield最新版にその機能があったはず。

56 :デフォルトの名無しさん:04/11/30 11:49:39
ごみ箱を空にする方法は無いでしょうか?
>>35で教えてもらったのですが、このリンク先の通りにやってもExplorerが
ファイルの削除の確認のダイアログを表示してしまいます。
何も表示せずに消すだけのプログラムを作りたいのですがうまくいかなくて。
これを回避する方法があったら教えてください。

あと、Formも何も表示せずにごみ箱を消すにはどうしたらいいのでしょうか?
今はForm1.OnCreateにごみ箱を空にするソースを書いて、Form1.OnActivateにClose
だけを書いているのですがうまくいきません。

どなたかアドバイスください。

57 :デフォルトの名無しさん:04/11/30 11:51:18
del \RECYCLER\* /s /q

58 :デフォルトの名無しさん:04/11/30 12:16:26
>>56
>ファイルの削除の確認のダイアログを表示してしまいます。

最後のパラメータに SHERB_NOCONFIRMATION をつまり 1 を設定する。
プログレスや音もなしにするなら7を設定

>あと、Formも何も表示せずにごみ箱を消すにはどうしたらいいのでしょうか?

コンソールアプリを作ったことないの? Hello,World! くらいやっとけば

59 :デフォルトの名無しさん:04/11/30 14:43:43
>>56
コードをProject1.dprに直接記述。
Form1のFormCreatは、コメントアウト。

よくわからないなら、デザイン時にForm1のVisibleをFalseにして、
Form1.OnCreateでも念のため、VisibleをFalseにする。

60 :デフォルトの名無しさん:04/11/30 15:43:00
>>59
フォームを一切使わないなら無駄に実行ファイルサイズが大きくなるだけじゃない?
コンソールアプリケーションでプロジェクト作って、APPTYPE CONSOLE を消せばよいのでは。

61 :デフォルトの名無しさん:04/11/30 17:33:03
どうもdelphiの初心者です
delphiでMSのSQL2000のデータ型がncharの項目(たとえばtest)に
strX=qry1.FieldByName('test').AsString;
「項目’test’が見つかりません」とのメッセージが出てきて、
(ほかのnchar以外の項目は問題ありません)
どなたさんがdelphiからnchar型のデータを
アクセスできる方法をご存知でしたら、教えてください。



62 :デフォルトの名無しさん:04/11/30 17:47:36
>>61
strX=qry1.FieldByName('test').As WideString;
だと思う。やったことないけど。
nchar型は、ユニコードの固定長文字列だよね。

63 :デフォルトの名無しさん:04/11/30 20:58:50
>>58
> コンソールアプリを作ったことないの? Hello,World! くらいやっとけば

普通の初心者はコンソールアプリなんか作らん罠。地味だし。
やっぱりフォーム作ってグリグリ動かして〜 に行くのが人情。
そもそも「コンソールって何?」だったりするしな(w

64 :デフォルトの名無しさん:04/11/30 21:03:01
>>63

そうだね。普通の初心者は文法もクラスのなんたるかも知らずに始めるんだよね。
だから、すぐ限界が来るんだけどね。コンソールアプリを一つくらいつくっておくのも
いいと思うけどね。

65 :質問:04/11/30 21:11:27
ボタンなどの上にカーソルを動かした際に、そのボタンについての説明が出てくるように表示したいのですが
これはどうすればいいのでしょうか?
Delphi 6 personalを使用しています。

66 :デフォルトの名無しさん:04/11/30 21:17:07
>>65

HintとShowHintプロパティ

67 :65:04/11/30 21:20:00
作成途中ではなく、実行時の場合についての説明表示というのを書き忘れました。

68 :デフォルトの名無しさん:04/11/30 21:22:01
>>66
できました!
ありがとうございました。

69 :デフォルトの名無しさん:04/11/30 22:04:35
メディアプレーヤーコンポーネントを使ってMID形式の音楽を流すことができるようになったんですけど、
このボタンを見えないように隠して、
たとえばビットマップオンクリックイベントを押した際にメディアプレーヤーコンポーネントを経由して
音楽を流す方法はないでしょうか?
仮にこれが可能だったとして、メディアプレーヤーコンポーネントボタンを隠す際も、
ただ何かの下に隠すだけでなく姿さえも見えなくして使う方法はないでしょうか?

70 :デフォルトの名無しさん:04/11/30 22:27:26
>>69
MediaPlayer1.Play;

Visible:=False;

71 :デフォルトの名無しさん:04/11/30 22:45:21
Delphiでモデムの設定を削除する方法はないでしょうか?
今はキーボードで模擬しているのですが、スマートに削除したいと思いまして。

ネットカフェでの使用を想定しています。


72 :デフォルトの名無しさん:04/11/30 23:37:54
>>70
できました。
ありがとうございました。

73 :69,72:04/12/01 00:05:33
問題が発生しました。
友人のパソコンに音楽と一緒に圧縮ファイルを送信しても正常に動くかどうか確認してもらったところ
エラーが発生して聞けなかったそうです。
念のため、僕のほうにその圧縮ファイルを送り返してもらって実行してみたところ同じようにエラーが
発生して実行できませんでした。
最初に作ったものは正常に作動したので、たぶん音楽ファイルがどこにあるか参照できなくなったことが原因だと思うのですが、
どうやったらこの問題を解決できるかご存知ないでしょうか?
音楽ファイルは作成したプログラムと同一のフォルダに入れておきました。



74 :デフォルトの名無しさん:04/12/01 00:10:37
>>73
ここで聞く質問じゃなくなってると思う。
そのブツを見れる人間じゃないと答えようがないと思う。

75 :49:04/12/01 00:11:14
>>51
ヘルプ探しても分からなかったので……

>>52
ありがとうございます。
結局、
WorkSheet.Range[WorkSheet.Cells[m,n],WorkSheet.Cells[o,p]].Font.Color := RGB(255,0,0)
で対応しました。
あとはセンタリングと罫線を引く事…。

どうにもコード補完が効かないので困ってます……

76 :73:04/12/01 00:16:08
わかりました。
他をあたってみます。

77 :デフォルトの名無しさん:04/12/01 00:19:24
ExtractFilePath(Application.ExeName) + 'music.mid'
とかにすりゃいいんじゃないの。

78 :74:04/12/01 00:27:18
ああ、最初のはパスが決め打ちってことか。
意味が分かった。
失敬。

79 :76:04/12/01 00:39:52
ただいまです。
パソコン一般板でも同様の質問をしたところ追い返されてしまいました( ゚Д゚)・・・
なんというか・・・、Delphiの勉強をはじめて一ヶ月ほどなので、よくわからないことが多いです。

こんな感じの命令文を書きましたがエラーがでてきました。
音楽ファイル名もmusic.midに変更後、File Nameで参照しなおしておきました。
いじったところと言えば、再生ボタンを見えなくしたことと、
Auto Open プロパティをTrueにしたくらいです。
ここに何をつけたせばいいのかどうか教えてください。
参考書を読んでも書いてありません。。。


procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.Play;

ExtractFilePath(Application.ExeName) + 'music.mid'

end;

end.


[エラー] Unit1.pas(33): 文が必要な場所に 'String' 型の式があります

80 :デフォルトの名無しさん:04/12/01 00:41:55
うーん。
これは困った(色んな意味で)。

81 :デフォルトの名無しさん:04/12/01 00:49:29
ちょっと入門サイトをのぞいてこい
基本が全く出来てないぞ

82 :デフォルトの名無しさん:04/12/01 00:55:29
>>79
もちっといじってから質問しような。なっ?
大丈夫。すぐ分かる。
がんばれ。
以上。

83 :79 ◆7kkYm.VmFc :04/12/01 01:02:44
やっとのことでいろいろな数式を演算するくらいまでは勉強したんですけど、
計算関係分野から離れて、こういった分野に手を出したのは今回が初めてなので、
いまいち定義の仕方などがわかりません。

要注意人物として、今後ともよろしくお願いします。
しばらくチャレンジしてみて解決できなかったら、また質問させてください。

84 :デフォルトの名無しさん:04/12/01 02:14:17
僕もかなりアホな初心者で、ここでは何度か助けてもらったことがあるんで。。。

MediaPlayer1.FileName := 'ファイル名';
MediaPlayer1.Play;

な感じで出来なかったっけ

85 :79 ◆7kkYm.VmFc :04/12/01 08:03:16
if文や、セミコロン付け忘れ、文の順序などを検討した結果どれも失敗しました。
次はオンクリックイベント無しで検討してみたいと思います。

>>84
今やってみたところ音楽は流れましたが、
他の人に受け渡しても音楽が流れるかどうかまでは確認できてません。

86 :デフォルトの名無しさん:04/12/01 09:42:47
Delphiというより一般的なオープン系開発の基礎。
相対パスと絶対パスについてぐぐれ。
そのうえで>>77を読み返すのだ。


87 :デフォルトの名無しさん:04/12/01 10:20:42
function hoge(): TStringList;やproperty foo: TStringList;と言ったものを作りたいんですが、
CreateやFreeはどこで呼び出せばいいのでしょうか?
Delphi6 Personalで制作しています。

88 :デフォルトの名無しさん:04/12/01 10:40:16
> function hoge(): TStringList;

Create は関数の中、Free は呼び出した方で、ってなると思うけど、あんまりよい
方法ではないね。なにか操作した結果を TStringList で返したい場合は

procedure Nanika(... ; sl: TStringList);

のようにして、Create も Free も呼び出し側にさせるべきだと思う。

> property foo: TStringList;

この場合は、Create と Free はコンストラクタとデストラクタで。
private フィールドの Ffoo: TStringList という変数にインスタンスを格納し、
それを参照する。



89 :デフォルトの名無しさん:04/12/01 11:15:01
>>87
オブジェクトを返り値とする関数は作らないほうがいい。
リソースのリークが起こりやすい。
プロシジャーで、値を設定する変数も引数で渡すようにする。
あるいは、カスタムクラスの作成。

90 :デフォルトの名無しさん:04/12/01 11:30:37
1つのプログラムを複数起動させて、データの共有をしたいのですが、
MLの過去ログ見てたら戸田ちゃんがTCPを使った方がメモリーの共有より
簡単って事を書いてました。
これってどうやるんでしょうか?

Indyのデモとか見ててもサーバーが必要で、しかもメッセージは
サーバーに行くだけで他のクライアントには行かないようなのです。
長くなりましたが、誰か教えて。

91 :デフォルトの名無しさん:04/12/01 11:42:31
function LoadFromFile(FileName: string): TStringList;
begin
 Result := TStringList.Create;
 Result.LoadFromFile(FileName);
end;

...

sl := LoadFromFile('foo.txt');
try

finally
 sl.Free;
end;

92 :デフォルトの名無しさん:04/12/01 15:43:34
TDatabaseのConnectedがtrueなんだけど接続してるSQL鯖が停止してる、
といった場合、どうやって判断できまつか?

93 :デフォルトの名無しさん:04/12/01 16:54:42
アプリケーション起動時に、どこのディレクトリから起動されたかを知る関数ってありますか?

94 :デフォルトの名無しさん:04/12/01 16:56:32
function ParamStr(Index: Integer): string;

95 :デフォルトの名無しさん:04/12/01 16:59:17
>>93
ない
.dprの先頭ブロックでカレントディレクトリ調べるとか。

96 :デフォルトの名無しさん:04/12/01 17:01:51
まだ相対パスと絶対パスがわからんのかよ

97 :デフォルトの名無しさん:04/12/01 17:12:43
>>94
ありがとうございました

98 :デフォルトの名無しさん:04/12/01 17:15:39
>>97
ParamStr(0)で取れるのはexeのパスであって
作業フォルダ(≒起動ディレクトリ)は取れないぞ。

99 :デフォルトの名無しさん:04/12/01 17:22:04
exeのパスが知りたいんだろ

100 :デフォルトの名無しさん:04/12/01 17:56:41
>>93
GetCurrentDirectory()


101 :デフォルトの名無しさん:04/12/01 21:41:31
'%home%\bin\'
という文字列を環境変数展開して返す関数ってないの?

102 :87:04/12/01 21:41:56
答えて下さった方々ありがとうございました。
String型の戻り値をもつ関数で代用できるようにしてみます。

103 :デフォルトの名無しさん:04/12/01 21:47:00
こういうやり方もある。
unit MyLib;

interface
function Foo: TStrings;

implementation

var _Foo: TStrings;

function Foo: TStrings; begin Result := _Foo; end;

initialization _Foo := TStringList.Create;
finally _Foo.Free;
end.

104 :デフォルトの名無しさん:04/12/01 21:53:24
質問があります。

TXPManifest コンポーネントを配置するとXPスタイルになりますが、
これを削除しても元のスタイルに戻らないのですけど、どうすれば
元のスタイルに戻すことが可能でしょうか?

105 :デフォルトの名無しさん:04/12/01 21:56:18
uses XPMan削除とか。

106 :デフォルトの名無しさん:04/12/01 22:05:06
>>105
ありがとうございます、スタイルが元に戻りました。

107 :デフォルトの名無しさん:04/12/02 00:22:09
>>93のことだけど、
ExtractFilePath( Application.ExeName ) ;
じゃなダメなの?

108 :デフォルトの名無しさん:04/12/02 00:35:06
>>107
実行ファイルがあるフォルダとカレントフォルダは別のものです。

109 :デフォルトの名無しさん:04/12/02 00:45:09
>>108
でも>>93が要求してるのは、>>107でいいんじゃないの?

110 :デフォルトの名無しさん:04/12/02 00:47:56
>>97で決着ってことでいいんじゃないの

111 :デフォルトの名無しさん:04/12/02 11:49:48
ファイルを読み込んでそれを10110みたいに表示するにはどうしたらいいのですか?

112 :79 ◆7kkYm.VmFc :04/12/02 12:45:07
おはようございます。

113 :デフォルトの名無しさん:04/12/02 14:40:32
おひゃようございまふ

114 :デフォルトの名無しさん:04/12/02 20:44:06
スペース区切りの数字をどうやって取り出せばいいんだ?
(例)
3 2 1
4 5 4
1 3 4

115 :デフォルトの名無しさん:04/12/02 20:46:03
おたずねします。
メニューに項目のない機能にキーボートショートカットを割り当てるにはどうすればいいですか?

116 :デフォルトの名無しさん:04/12/02 20:59:50
>>114
どういう風に取り出したいの?
>3 2 1
なら、’321’と認識したいのか’3’’2’‘1゜としたいのか。

いずれにしても、一行づつ文字列変数に読み込んで、スペースを探して、切り出してTstringlistにADDしていくのが、セオリじゃないか。
ロジックを考えるのが難しいなら、スペースを半角カンマにリプレースして、Tstringgridに流し込むという手もある。

117 :デフォルトの名無しさん:04/12/02 21:34:30
>>115
ActionListとかじゃ駄目?

118 :デフォルトの名無しさん:04/12/02 21:59:04
SendMessage(RichEdit1.Handle,EM_SETOPTIONS,ECOOP_OR,ECO_VERTICAL);
これでスクロールバーをssBoth、ワードラップをFalseにするとスクロールバーが逝かれるんですが、
対処法とかはないですか?

119 :デフォルトの名無しさん:04/12/02 21:59:57
>>117
お答えありがとうございます。
良さそう…な気もしますがよく理解できてないのでヘルプを読んで勉強します。

120 :デフォルトの名無しさん:04/12/02 22:08:57
>>101
ExpandEnvironmentStrings
で事足りるかどうか…

121 :ななしへたぐらま ◆XcB18Bks.Y :04/12/02 22:11:19
>>79
そのままズバリ書くと>>77>>84 を組み合わせてこんな感じになります.
procedure TForm1.Button1Click(Sender: TObject);
begin
// ※実行は上から順に行われる.

// 演奏するファイルの指定(実行ファイルと同じディレクトリの'music.mid')
//  ※プロパティの設定は代入式で行う.
//  ※『実行時と同じディレクトリ』は ExtractFilePath(Application.ExeName) .
MediaPlayer1.FileName := ExtractFilePath(Application.ExeName) + 'music.mid';

// 演奏実行
MediaPlayer1.Play;

end;


122 :79 ◆7kkYm.VmFc :04/12/02 22:17:27
>>121
偶然にも覗いてる最中にレスがきました。
さっそくためしてみます。
ありがとうございました。

123 :デフォルトの名無しさん:04/12/02 22:43:22
>>122
あれだけ(ほとんど回答レベルの)ヒントが出てたのにできてなかったのか・・・
カンニングばかりしていると何も身につかないぞ。


124 :79 ◆7kkYm.VmFc :04/12/02 23:56:13
すみません。
yahooで検索してそれらしきサンプルを落としたりして調べてはみたんですけど
動作しなかったり、見当違いだったり、レベル不相応でまだまださっぱり理解できませんでした。


125 :デフォルトの名無しさん:04/12/03 00:23:59
>>123
カンニングってのは違う気がするが…。

>>124
謝らなくてもいいから。
いろいろ自分なりにコピペでもいいから試行錯誤してれば
段々分かってくるって。
焦らなくても良いかと。
もちっといろいろやってみてからにした方がいいって。

126 :デフォルトの名無しさん:04/12/03 01:11:02
まずはメモ帳作ってみるのがいいような

127 :デフォルトの名無しさん:04/12/03 01:15:59
まずは作りたいものを作ればいいだけだろ。
MIDI再生なんて題材として一番簡単だし>>121で解決だろ。
質問スレでいちいち難癖つけるなよ。

128 :79 ◆7kkYm.VmFc :04/12/03 02:58:02
いま学校から帰り着きました。
>>126さんの言われるとおり次はメモ帳を作ってみようかと思います。
試行錯誤法の問題でも解いて結果をメモ帳に出力するところまで進めてみようかと思います。

129 :84:04/12/03 03:09:31
断るまでもなくアホな初心者です
タイマーってのを見つけて、思いついたやり方なんですけど
こういうのってPCの体力かなり消耗しちゃいますか?

つくったプログラムは取りあえず最小化状態のまま、
たとえば5秒おきに、ある特定のフォルダ中のファイル数をカウントさせ続ける。
何があろうと、静かにずーっとカウントさせ続けるんです
で、あるとき「そのフォルダ中のファイル数が増えたら」フォームが最大化状態で
ピョコッと飛び出してくる。

ためしたところ、最小化状態でもカウントは続けてくれてるみたいで、ほぼ期待通りの動作を
してくれました。

できればこれ、動画の編集をやりながら使いたいんですけど、PCの体力はもちますか。
(Cele1200MHz, 394MB)

130 :84つづき:04/12/03 03:14:00
実際に作業をするのは僕自身ではなく職場の女の子。
途中でPCこけたりすると、かなり頭いたいので、危険なら使うのやめます。

131 :デフォルトの名無しさん:04/12/03 03:17:38
PC爆発するよ

132 :デフォルトの名無しさん:04/12/03 03:33:21
ttp://www.eva.hi-ho.ne.jp/taketani/delphi/file.shtml#0002

133 :84:04/12/03 04:41:18
>>132
ありがとうございます
コピペでそのまま試すことが出来ました。
何だか物凄いテク御紹介いただきまして( ゚Д゚)。。。

今晩はもうくたくたなので、明日あらためてこちらの都合に合わせて
書き換えて試してみます

134 :デフォルトの名無しさん:04/12/03 06:51:47
>>127
リピート時に止まらないようにするのは大変だぞ!

135 :デフォルトの名無しさん:04/12/03 12:42:35
ファイルを読み込んでそれを10110みたいに表示するにはどうしたらいいのですか?
ファイルの指定部分を読み込む→それをbitにして表示です

136 :デフォルトの名無しさん:04/12/03 13:58:38
フォームが自分に遅延して処理させたいんですが、
PostMessage(WM_USER)
だと、
あまりにもWin32ベタ杉なんで、
VCLの中の人でやる方法無いで塚?

137 :デフォルトの名無しさん:04/12/03 14:05:07
Timer使うかその処理の直前で
Application.ProcessMessages呼んでたまったメッセージを先に処理する。

>>135
一バイトずつ読み込んでこれで変換
function Bin2Str(b: Byte): string;
var i: Integer;
begin
 SetLength(Result,8);
 for i := 0 to 7 do if b and (1 shl (7-i)) = 0 then Result[i+1] = '0' else Result[i+1] = '1';
end;

138 :136:04/12/03 14:10:42
サンクス>>137

芋みたいに処理を連結したいんでつが、
その場合はどうしたら良いでしょ?

139 :デフォルトの名無しさん:04/12/03 14:30:31
for i := 0 to 10 begin
 Application.Processmessages;
 case i of
  0: // 0の処理
  1: // 1の処理
  ...
  10: // 10の処理
 end;
end;
もっと柔軟にやりたいなら処理をオブジェクトにしてリンクでつないで
o := FirstObject;
while Assigned(o) do
begin
 Application.ProcessMessages;
 o.Execute;
 o := o.NextObject;
end;

140 :デフォルトの名無しさん:04/12/03 15:01:44
PostMessage(WM_USER) による遅延と Application.Processmessages; の実行は
違う意味だよ。そのイベントハンドラを抜けてからほかの処理を実行したい場合は、
タイマやPostMessage() じゃないとダメだろ。


141 :135:04/12/03 15:34:31
>>137
ありがとん
家帰ったらためしてみますです

142 :136:04/12/03 15:51:44
そうでつか。

では、とりあえずPostMessageで作って、他に変えれれば変えます。
Kylixでも大丈夫かな。





使う予定は無いんだけど。

143 :デフォルトの名無しさん:04/12/03 15:51:46
フラグ立ててOnIdleとか

144 :デフォルトの名無しさん:04/12/03 16:00:59
>>140
別に等価だなんていってないよ。
溜まったメッセージを先に処理するVCLでのやり方を紹介しただけ。

145 :デフォルトの名無しさん:04/12/03 16:34:40
違う意味のものを紹介されても・・・

146 :デフォルトの名無しさん:04/12/03 16:37:48
> フラグ立ててOnIdleとか

これは PostMessage() に近いね。自分でフラグ倒すことを忘れないようにすると。

147 :デフォルトの名無しさん:04/12/03 16:42:39
> フラグ立ててOnIdleとか

1回だけ実行なら PostMessage に近いけど、連続での場合は、他のメッセージがキュー
に入らないと実行が止まるね。PostMessage も TTimer もメッセージベースの実装な
わけだが、TTimer はクラスでラップしてあるだけマシかな。PostMessage() の機構も
簡単にラップしたコンポを作れるけど。

148 :デフォルトの名無しさん:04/12/03 17:01:53
使う予定がないそうだからレスするだけ無駄

149 :136:04/12/03 17:40:48
>PostMessage() の機構も簡単にラップしたコンポを作れるけど
超キボンニュ。
今回使えなかったとしても、将来激しく使いまつ。

150 :デフォルトの名無しさん:04/12/03 17:44:04
じゃそのときにまた書き込んでください。

151 :デフォルトの名無しさん:04/12/03 17:45:37
ってか、ML の過去ログにあったはず。Asyncなんとかってやつ

152 :デフォルトの名無しさん:04/12/03 18:53:49
スレ違いの感じもするがお許しを。
D7のアップデートってどこにあるの?
某のリンクたどっても見あたらない。

153 :& ◆R7PNoCmXUc :04/12/03 20:09:57
Pascal ファイル変数を使って開いたファイルに対してタイムスタンプを設定するには
どうしたらいいのでしょう? ヘルプを見たらFileSetDateというのがありますが、これは
Pascal ネイティブなファイル変数ではなく,ファイルハンドルを対象とするとなっているので使え
ないようです。


154 :デフォルトの名無しさん:04/12/03 20:16:32
FindFirstFileしてハンドル取得じゃダメなのか

155 :名無し:04/12/03 20:46:59
質問なんですが、Form1のImage1.OnMouseDownで
btnDraw(Sender);//独自関数
delay(200); //下記
Form2.Visible := not Form2.Visible;
delay(200);
btnDraw(Sender);
とすると、Visible:=Trueとなる場合に(Trueを代入する場合)
一度Form2のオブジェクトにフォーカスが当たるのですが、
その後またフォーカスがForm1に戻ってしまいます。
delay関数でインターバルを設定しているのが
悪いのかどうかは判断できませんでした。

procedure delay(T: Longint);
var
finish: longint;
begin
finish := LongInt(GetTickCount) + T;
repeat
Application.ProcessMessages
until LongInt(GetTickCount) > Finish;
end;

156 :金正日:04/12/03 21:54:31
procedure GetStr(src: PChar);

・・・・

var
 Buf: array[0..2047] of Char; //0から始まっているのがミソ!
begin
 GetStr(buf);
end;

としていいんだよね?


157 :デフォルトの名無しさん:04/12/03 22:24:51
>>155
で、結局どうしたいん?

158 :& ◆s6EvxEmmnE :04/12/03 22:30:51
すいません肝心なこと書いてませんでした(汗)
Form2.Visible:=Trueとしたときに、
Form2(のList1)をアクティブにしたいんですけど…
上の書き方だとForm1がアクティブになってしまうんです。

159 :デフォルトの名無しさん:04/12/03 22:32:48
>>154
それファイルハンドルと違う

FileOpen が簡単かも

160 :デフォルトの名無しさん:04/12/03 22:37:44
>>158

btnDraw(Sender);

がなければ Form2 にフォーカスがあたるけど。

161 :150:04/12/03 23:04:13
btnDrawは自力でボタン描画してるので外せないんです。。。
Form1.Image1.OnMouseDownでフラグを立ててForm2.OnDeactivateで
フラグが立っていればフォーカスをForm2に残したままにする、
みたいなことって出来ませんか?
(Form1.OnClose 内で Action:=caNone とすると終了キャンセルするように)

162 :155:04/12/03 23:07:22
↑間違えた…150じゃなくて155です。

163 :デフォルトの名無しさん:04/12/03 23:15:28
> btnDrawは自力でボタン描画してるので外せないんです。。。

はずせるかどうかは問題ではなく、フォーカスが移るなんらかのコードがあるかどうか
が問題

最後に Form2.SetFocus; したらいいんでは

164 :デフォルトの名無しさん:04/12/04 01:11:42
>>153
テキストファイルならこんなな感じかな?
var
F: TextFile;
Age: Imteger;
begin
Age := 20;
FileSetDate(TTextRec(F).Handle, Age);
end;

型無しファイルだったらTTextRecをTFileRecに置き換えて試してくれ。

165 :デフォルトの名無しさん:04/12/04 02:45:07
Yahoo! JAPAN にログインするプログラムを作りたいのですが
参考になるHPまたはソースってありませんか?

166 :デフォルトの名無しさん:04/12/04 02:45:09
joudannkayo

167 :デフォルトの名無しさん:04/12/04 07:52:53
>>165
モナジラプロジェクト

168 :デフォルトの名無しさん:04/12/04 08:01:37
>>167
一見胡散臭いけど、確かに参考にできる数少ないHPだよな。

169 :おれ様専用メモ:04/12/04 14:55:00
多次元配列の要素数の取得

setlength(a,5,21,65);
high(a)     //=4
high(a[0])   //=20
high(a[0,0])  //=64

170 :デフォルトの名無しさん:04/12/04 17:51:30
>>167
できれば詳しく教えていただきたい

171 :& ◆iJ3ewyZ4sc :04/12/04 18:33:14
>>156
var
 S: array[0..6] of Char;
 P: PChar;
begin
 S := 'delphi';
 P := S; //互換性があるので @ 演算子を使わなくて良い
end;
こういう例はOKだが関数や手続きの引数を渡すときは型違いでコンパイラがエラーを出すはず。


172 :デフォルトの名無しさん:04/12/04 18:48:53
Delphiを始めたいのですが勉強にいい本を教えてください。

173 :デフォルトの名無しさん:04/12/04 19:38:59
>>170
モナジラのページは、HTTPのGETメソッドやPOSTメソッドでサーバーにリクエストするときのコードの例が載っている。
そしてそこで開発されているソフトの多くはデルファイでかかれている。

174 :デフォルトの名無しさん:04/12/04 20:00:36
フォームのボタンなどを配列のように扱いたいのですが、どのようにすればよいですか?

175 :デフォルトの名無しさん:04/12/04 20:27:57
array of Tbutton

176 :174:04/12/04 20:37:54
>>175さん
そこまではできるのですが、
for i := 0 to 100 do
arraybtn[i].caption:=inttostr(i);
とした場合、フォームに配置されたボタン1〜100に対応させる方法がわからないのです。
formbutton1:=arraybtn[1]
を100回繰り返さないとダメなのでしょうか?

177 :デフォルトの名無しさん:04/12/04 20:53:22
FindComponent

178 :デフォルトの名無しさん:04/12/04 21:14:38
>>165
まず、YahooのログインページのHTMLソースを見る。
すると、ログイン処理がHTMLのFormで記述されていることを理解する。

次に、Formの処理というものはHTTPではPOSTメソッドが使われることを
理解する。

最後に、DelphiでHTTP通信するときはIndyを使うのがもっとも簡単であり、
TIdHttpコンポーネントのPostメソッドを使うことを理解する。

179 :デフォルトの名無しさん:04/12/04 23:32:23
jpeg.pasが見つからないんだけど、これはソースなし?

180 :デフォルトの名無しさん:04/12/05 02:16:54
>>172
DelWiki (>>1) には行ってみた?
あと、今なら「カンタン!Delphiプログラミング」がヤフオクに一冊だけ出てる。

181 :デフォルトの名無しさん:04/12/05 02:36:21
>>178
できたらソースを。。

182 :デフォルトの名無しさん:04/12/05 03:02:11
結局それかぁ

183 :デフォルトの名無しさん:04/12/05 03:02:28
タグブラウザを作っているんですが、WebBrowser及びUIWebBrowserでは
クッキーが働いてくれず、ホットメールなどのサイトが表示できません。
解決策か、もしくは他に代替となる良いブラウザコンポーネントがあれば
教えて頂けないでしょうか?同じIEベースであろうSleipnirでは正常に
表示できるんですが、そこらへんどうなんでしょう?

184 :デフォルトの名無しさん:04/12/05 03:08:48
Google 検索: タグブラウザ
http://www.google.com/search?&hl=ja&lr=lang_ja&ie=sjis&q=%83%5E%83O%83u%83%89%83E%83U

185 :デフォルトの名無しさん:04/12/05 03:16:14
>>183
単に設定の問題じゃないのか?
クッキーにも対応してないブラウザコンポーネント・・。う〜〜ん。

186 :デフォルトの名無しさん:04/12/05 03:22:00
>>185
検索してみたら同じような症状っぽいのがありました。
ttp://www.users.gr.jp/ml/archive/viewer.aspx?name=vb&no=3485

環境の問題かも知れないので、いろいろ試してみます…

187 :Delフサギコ ◆A6VzDeLphI :04/12/05 07:51:53
 ∫,,,,,,,,,∧,,∧  オアヨ
⊂,,,,,,,,,つ,,゚Д゚ミつ
質問っす。

HDDの容量・空き容量を調べたかったりしますが
OSに依存しない&2GB以上もOKってコードを書くのは
DiskFree/DiskSizeをつかっててOKなのですか??
GetDiskFreeSpaceExとか使う必要はなし?

同様に、利用可能デバイス中から
フロッピーとリムーバブルDiskを区別する方法で
OSに依存しないコードはどう書くのでしょうか?

どちらも
MLを検索しまくったり、WEBを探してみても
情報がぐちゃぐちゃに散在していてわかりませんでした。

教えてください。よろしくです。


188 :デフォルトの名無しさん:04/12/05 08:27:36
APIカリカリが確実な希ガス
Winのバージョン調べていけそうな(95OSR2以降な)場合だけ云々とか。

OSってWin系だよね。Kylixは関係ないよね。

189 :デフォルトの名無しさん:04/12/05 10:04:38
ライブラリで抽象化されていなければ、OS依存な情報はOS依存な機能をつかって
取るしかないわけだが

190 :デフォルトの名無しさん:04/12/05 19:08:30
質問があるのですが、
Delphi6 PersonalでFormを生成し表示するプログラムだけで、
exeのサイズが400kになってしまいます。

実行時パッケージを使って構築にチェックを入れると、
exeのサイズは小さくなりますが、この場合、外部のDLLも必要になってしまいます。
上以外の方法で、exeサイズを縮小する方法は何か無いでしょうか。

よろしくお願いします。





191 :デフォルトの名無しさん:04/12/05 19:11:16
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BTips%2F%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A4%CE%A5%D5%A5%A1%A5%A4%A5%EB%A5%B5%A5%A4%A5%BA%A4%AC%C2%E7%A4%AD%A4%A4%A4%CE%A4%C7%A4%B9%A4%AC%5D%5D

192 :デフォルトの名無しさん:04/12/05 19:17:23
>>190
「小さいEXEの作り方」という解説ページがあるはず。ググッてみ。
基本的には、Tformクラスを使わずに、すべてコードで書くことになる。

193 :デフォルトの名無しさん:04/12/05 19:19:44
Halbowさんのところで学べ。
彼の技法を使えば190のexeは10KB以下で作れる。

194 :デフォルトの名無しさん:04/12/05 19:22:34
>>190
小さいサイズの実行ファイルを作ることが絶対必要なら VCL 使わずに SDK だけで書くこと。
でもそんな要求って滅多にないんだよね。
400KB なんてたいしたサイズじゃないと思う。

195 :デフォルトの名無しさん:04/12/05 19:33:25
そうそう、問題はソフトの機能だ。

196 :デフォルトの名無しさん:04/12/05 20:09:18
で、タグブラウザってどんなブラウザなの?

197 :デフォルトの名無しさん:04/12/05 20:10:25
スレ違い

198 :デフォルトの名無しさん:04/12/05 21:03:43
>>183に書かれてたから聞いてみただけでした。
すんまそん

199 :デフォルトの名無しさん:04/12/05 21:07:15
タグブラウザってのは、ウェブサーバーから HTML を読み込んでHTML タグを表示するやつだ。
ちなみに画像ファイルの場合は 16 進表示をしてくれる。
まぁ、最近ではウェブデザイナ必携のツールだな。

200 :デフォルトの名無しさん:04/12/05 21:12:30
質問です。フォーム上にCombobox1とButton1, Combobox2とButton2・・・というふうに
コンボボックスとボタンが1対1の関係になっていて、各ボタンをクリックしたときにそれぞれ対応する
コンボボックスの内容をフォーム上に唯一存在するラベル(Label1)に表示するようにしたいと考えています。

ここで下のようなコードを書いてみたのですが、<<ここがわからない>>の部分にどのように記入すればいいのか
わかりません。どなたか御教授願いします。

procedure TForm1.Button1Click(Sender: TObject);
begin
Dpy_ComboBox_Name(combobox1.Name);
end;

//<略>

procedure Dpy_ComboBox_Name(ComboName:<<ここがわからない>>);
begin
Label1.Caption := ComboName.text;
end;

201 :デフォルトの名無しさん:04/12/05 21:30:51
190です。
皆さんありがとうございます。
教えていただいたことを参考に腕を磨いていきます。

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

202 :デフォルトの名無しさん:04/12/05 21:32:22
>>200
あなたのコードとちょっと違うけど、こんなのはどう?
前提条件としてデザイン時に.ButtonコンポーネントのTagプロパティに.Button1なら1、.Button2なら2を設定しておきます。

procedure TForm1.Button1Click(Sender: TObject);
begin
 label1.caption := 'This is Combo-Box No.'+IntToStr( TButton(Sender).tag );
end;

Senderは、Tobjectなので、TButtonに型キャストしてTagプロパティを読み出します。




203 :デフォルトの名無しさん:04/12/05 21:49:57
>>202
かき忘れたけど、Button2のイベントハンドラもButton1と共有できます。(そうしないと意味がない。)

204 :デフォルトの名無しさん:04/12/05 21:53:58
// Component.Nameの数値を取り出す
// 'Button1'->1
// 'Button'->0
function GetComponentNum(Name: string): Integer;
var
  i: Integer;
begin
  for i := Length(Name) downto 1 do
  begin
    if Name[i] in ['0'..'9'] then
      continue;
    Result := StrToInt(Copy(Name, i+1, High(Integer)));
    Exit;
  end;
  Result := 0;
end;

procedure TForm1.ButtonClick(Sender: TObject);
var
  idx: Integer;
  cb: TComboBox;
  lb: TLabel;
begin
  idx := GetComponentNum((Sender as TComponent).Name);
  Assert(idx>0);
  cb := FindComponent('ComboBox' + IntToStr(idx)) as TComboBox;
  Assert(Assigned(cb));
  lb := FindComponent('Label' + IntToStr(idx)) as TLabel;
  Assert(Assigned(lb));
  lb.Caption := cb.Name;
end;


205 :Delフサギコ ◆A6VzDeLphI :04/12/05 22:02:47
>>188-189
 ∫,,,,,,,,,∧,,∧  OSはWin系です
⊂,,,,,,,,,つ,,゚Д゚ミつ

どこかの誰かがライブラリ化して関数とか
作ってないっすかね・・・

ご近所だけ使うアプリだから、
リムーバブル&Aドライブなら
フロッピーと限定しちゃっていいような肝するのですが。
興味として。


206 :200:04/12/05 22:15:27
>>202-204
ありがとうございます。もともとの質問の意図ですが、Comboboxに文字列を記入し
Buttonを押したときに、それまでのコンボボックスに記録した文字列と比較し、一致するものがなければ
コンボボックスのリストの最後に追加する、という作業を行おうと考え 単一のボタン、単一のCombobox
ではうまくいったものの、完成品には1つのボタンには2個のComboboxこれが5セット分あり合計10個分
のほぼ同じコードを記述するのも無駄に感じたため、質問させていただきました。

いただいたコードでゴリゴリやってみます。ありがとうございました。

207 :デフォルトの名無しさん:04/12/05 22:19:56
ShellListViewコンポーネントについて質問です。
MultiSelectedをTrueにして、複数ファイルを選択したときの選択しているファイルの数を取得したいのですが、
どのプロパティを使えばいいのかわかりません。
自分なりに検索したり、ソースを読んだりして、Folders[Index]がポイントだというところまではわかったのですが、
そこから先がさっぱりです。
Folders[Index]という表現からして、TstringsオブジェクトのようなCountプロパティに相当するものがあると思うのですが。
どなたか詳しい方よろしくお願いします。

208 :デフォルトの名無しさん:04/12/05 22:26:00
GetDriveType
ttp://homepage1.nifty.com/MADIA/delphi/Win32API/GetDriveType.htm

95以降なら大丈夫だろ。っていうか大丈夫。MSDNでもそうかいてある。

容量は…面倒だな…

GetVersionExで、バージョン判定した後に95OSR2以降なら
GetDiskFreeSpaceExで
それ以前なら
GetDiskFreeSpace
ってところか。

(DiskFreeの実装知らんのけど2G未満でしかうまく動かないという話もあるので
上記のようにする必要があると思う。)

209 :デフォルトの名無しさん:04/12/05 22:27:36
>>205
ttp://homepage1.nifty.com/kotobukijirushi/ddt/bcbonsun/bosvol07.html
BCBだけど参考になると思う。

210 :208:04/12/05 22:32:39
ゴメン
フロッピーとリムーバブルディスクの区別つかないや。

211 :デフォルトの名無しさん:04/12/05 22:42:25
>>207
SelCountでは駄目なのかなぁ・・・

212 :Delフサギコ ◆A6VzDeLphI :04/12/05 22:54:43
    ∧,,∧   レスありがとやんす!
   ,,ミ,,゚Д゚ミ
  .とミ,,,,,U,,U

>>208さん。そうなんすよ
うまくいかんのですよ。

>>209さん
ヲォ!日曜日はBCBは行方不明&消去になったと
思ってました。
よかったー、いまのうちに(σ・∀・)σゲッツ!しとこうかと。

後で呼んでみます。

213 :デフォルトの名無しさん:04/12/05 22:55:31
>>211
Selcountで、取得できました。
ありがとうございました。


214 :デフォルトの名無しさん:04/12/05 22:55:32
cmd.dirの標準出力を取り込むw
>903,270,400 バイトの空き領域

215 :デフォルトの名無しさん:04/12/05 23:37:10
>208,>212
Delphiのバージョンにもよるけど、5以降ならOSの違いはVCLで吸収しているので素直にDiskFree/DiskSizeでOK
っつうかソース嫁
FDの識別は...リムーバブルかつFAT12という条件でどう?


216 :208:04/12/05 23:55:54
>>215
ソース読めれば(ry

そもそもDel使いじゃない罠。

> FAT12
それだとディスク入ってないと判定できなくね?

217 :デフォルトの名無しさん:04/12/06 00:18:47
SHGetFileInfo() はドライブにも使えるよ

218 :Delフサギコ ◆A6VzDeLphI :04/12/06 00:23:18
      ドモー。
 ∫,,,,,,,,,∧,,∧  情報が散在してて
⊂,,,,,,,,,つ,,゚Д゚ミつ  正解がどこにあるかわからないのに

  "VCLソース呼んで解決することができる"ほどに賢くはないから、
  質問して確認しているんだが。くだすれで。

D6で
SysUnils.pasにコメントで書いてあるのね。

{ The GetDiskFreeSpace Win32 API does not support partitions larger than 2GB
under Win95. A new Win32 function, GetDiskFreeSpaceEx, supports partitions
larger than 2GB but only exists on Win NT 4.0 and Win95 OSR2.
The GetDiskFreeSpaceEx function pointer variable below will be initialized
at startup to point to either the actual OS API function if it exists on
the system, or to an internal Delphi function if it does not. When running
on Win95 pre-OSR2, the output of this function will still be limited to
the 2GB range reported by Win95, but at least you don't have to worry
about which API function to call in code you write. }

えっと、英語よめない。後半とかあまりヨクワカ.......

肝心なのは最後の一文か。。。

219 :デフォルトの名無しさん:04/12/06 00:26:52
Del6のIDEで
beginって打った時に
→→→→|
に自動的にインデントさせる設定ってないですか?
ないとして最新バージョンだとできたりしますか?

220 :Delフサギコ ◆A6VzDeLphI :04/12/06 00:29:30
さて、フロピかリムバですが

 ∫,,,,,,,,,∧,,∧  MLでは、
⊂,,,,,,,,,つ,,゚Д゚ミつ "マイコンピータのシェルのアイコンから区別できんじゃね?"

という人もいたみたいだけど、
明確な回答は出ていなかったかと、記憶してるです

・・・空容量チェックか・・・
フロッピー、遅いからコリンコリンとアクセスしにいって
ほしくないのですが・・・

221 :デフォルトの名無しさん:04/12/06 00:34:13
SHGetFileInfo() でフロッピーなら szDisplayName でエクスプローラと同じ
表示名が取れるよ

222 :Delフサギコ ◆A6VzDeLphI :04/12/06 00:51:27
szDisplayName でググったらでてきますた
http://forum.nifty.com/fdelphi/samples/01432.html

 ∫,,,,,,,,,∧,,∧  ホワワ
⊂,,,,,,,,,つ,,゚Д゚ミつ >>221さん、夜遅くにありがおう。

function IsFDDrive(const ADrive: Char): Boolean;

これかしら?

Pos(' FD (', UpperCase(fi.szDisplayName)) > 0

なるほ・・・

223 :デフォルトの名無しさん:04/12/06 09:48:18
>>221
それって言語(ロケール)依存しないの?


224 :デフォルトの名無しさん:04/12/06 10:17:41
>>221
「エクスプローラと同じ」って意味では依存しないのでは

225 :デフォルトの名無しさん:04/12/06 10:18:20
>>223 だった

226 :sage:04/12/06 10:33:22
いや、すべてのロケールでFDDのアイコンのテキストは
' FD (' を含むのか、ってことでは?

227 :226:04/12/06 10:34:30
_| ̄|○ 書くとこ間違えたゴメソ

228 :デフォルトの名無しさん:04/12/06 10:47:47
>>226
それなら >>222 にきいてみたら。自分の周りだけのアプリだそうだから、それで十分なんでは

229 :デフォルトの名無しさん:04/12/06 13:00:41
>>48
ものっ凄い遅レスですがうまくいきました。ありがとうございました。


230 :ななしへたぐらま ◆XcB18Bks.Y :04/12/06 13:29:26
>>218
5のソースを見る限り,関数ポインタさえ理解していれば難しくは無いと思います.
また,英文は翻訳サイトが案外役に立ちますよ.


231 :名無し募集中。。。:04/12/06 13:31:14
最近、Delphi4から7に乗り換えたのですが
メニュー間隔がスカスカなのとセンスの欠片もないスピードボタンにガッカリです

どうにかしてDelphi4の引き締まったインターフェイスに戻すことは出来ないのでしょうか?

232 :デフォルトの名無しさん:04/12/06 13:36:38
>>231
1. Delphi7をアンインストール
以上

233 :デフォルトの名無しさん:04/12/06 14:00:57
>>207

con := 0;

for i :=0 to ListView.Count-1 do
begin
if ListView.items.item[i].selected then
con := con + 1;

end;

とかで一応なんとか
でもスマートじゃないよね?

234 :231:04/12/06 14:08:30
>>232
了解しますた。
やっぱそれしかないんですね

235 :215:04/12/06 14:36:37
>216
> > FAT12
> それだとディスク入ってないと判定できなくね?
ぎくっ

>220
これ参考になりませんかね?
ttp://forums.belution.com/ja/vc/000/078/05.shtml


236 :Delフサギコ ◆A6VzDeLphI :04/12/06 21:57:02
 ∫,,,,,,,,,∧,,∧  漏れに聞いても仕方ないでしょ
⊂,,,,,,,,,つ,,゚Д゚ミつ >>228

質問の回答ってのは
質問者の漏れだけに役に立つ会話じゃないんだから。

漏れもロケールのトコは気にしてなかったけど、気になってきた。


237 :デフォルトの名無しさん:04/12/06 22:14:21
ロケールは別にしても名前の変更で簡単にFDを消すことはできる。

238 :デフォルトの名無しさん:04/12/06 23:04:44
'49たす83'を音声に変換するのってどうやるの?

239 :デフォルトの名無しさん:04/12/06 23:29:10
>>238
ブルックナーの第8交響曲を聴いた後、秋田馬方節を歌えばよい!


240 :デフォルトの名無しさん:04/12/07 04:13:40
>>235 のレジストリで行けるのでは?
表示用の文字列はロケール依存激しいと思う。
右から書く言語もあるしね。

241 :デフォルトの名無しさん:04/12/07 07:10:15
>>238
すべての発音を入れておく。

242 :デフォルトの名無しさん:04/12/07 08:25:13
そういえばスピーチAPIとかって在ったような気がする。
今はどうなったのかしらんが。


243 :デフォルトの名無しさん:04/12/07 09:42:16
QReportではNewPageで自動で次のページ作ってくれますよね。
RaveではNewPageみたいなメソッドって無いんでしょうか?
FinishNewPageでは思うような動きをしてくれなくて・・・
探しても見つからないし、マニュアルは英語だし・・・限界です_| ̄|○

244 :デフォルトの名無しさん:04/12/07 10:12:49
> マニュアルは英語だし・・・限界です

プログラマには向かないかも

245 :デフォルトの名無しさん:04/12/07 10:20:49
>>236
>漏れもロケールのトコは気にしてなかったけど、気になってきた。

周りだけのアプリで、気にすんの? アラビア語とか使ってる人いるの?

246 :243:04/12/07 10:31:54
>>244
Σ(゚д゚lll)ガーン   そ、そんな殺生な・・・。
プログラマーの適性検査は結構良かったんだぞヽ(`Д´)ノウワァァン!!

247 :デフォルトの名無しさん:04/12/07 10:50:32
>>246
でもマジな話、英語はできるようになったほうがいいよ。
別にペラペラにならなくてもいいから、辞書片手にマニュアルくらいは読めるようにはすぐなれるし、
将来海外の人と電子メールするようになるかもしれないでしょ。
マニュアル、ヘルプくらいだったらちょっと努力すれば比較的簡単だよ。

248 :243:04/12/07 11:09:24
>>247
わかった。一度挫折したんだけど、もう一度マニュアル読解にトライしてみる(`・ω・´)
長文を見ると日本語でも英語でも投げ出してしまうクセもなるべくなおすよ。

249 :デフォルトの名無しさん:04/12/07 11:13:08
特定のプロシージャ内でしか使わない変数があるのですが
どうやって初期化すればいいですか?
ただ、そのプロシージャが呼び出されるたびに
初期化されるのも困るんです。
グローバル変数にするしかないですか?

250 :デフォルトの名無しさん:04/12/07 11:19:47
>>236
Win2k で FD のところをレジストリからとってみた。

\??\FDC#GENERIC_FLOPPY_DRIVE#5&7fad87f&0&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}

うーん、これはロケール依存しなさそうだね。"FDC" のところを検出するとOKかも

251 :名無し募集中。。。:04/12/07 11:34:58
>>249
Cでいうstatic変数のことかな?
Delphiには存在しないからimplementation部に変数宣言
もしくは手続き、関数内で型付き定数を使用するぐらいしかない

252 :デフォルトの名無しさん:04/12/07 11:38:56
>>249
グローバル変数を使いたくなければ、クラスを使え。
たとえば、変数と手続きだけのクラスを作って、
起動時にインスタンス作って以後そのインスタンスを使うとか。
GUIアプリなら、変数と手続きの両方をForm1のメンバーにしちゃうとか。
変数だけForm1のメンバーにして、手続きにvarで参照渡しするとか、
やりかたはたくさんある。

253 :デフォルトの名無しさん:04/12/07 12:05:11
たくさんあるって言っといて、どれもスコープがプロシージャの外に出てるじゃん。

254 :デフォルトの名無しさん:04/12/07 13:00:48
なぜそこでスコープの話になる
そんなエサに釣られるクマー(AA略)

255 :デフォルトの名無しさん:04/12/07 13:09:58
代案厨乙

256 :デフォルトの名無しさん:04/12/07 13:22:16
>>254
なぜそこでって、プロシージャ内でしか使わないのに、その外からアクセスできるんじゃ
グローバル変数で妥協するのと変わんないじゃん。

257 :デフォルトの名無しさん:04/12/07 13:48:36
そもそも質問が変。

>ただ、そのプロシージャが呼び出されるたびに初期化されるのも困るんです。

258 :デフォルトの名無しさん:04/12/07 13:49:54
そうそう、それ、プロシージャのスコープから外れてるし

259 :デフォルトの名無しさん:04/12/07 13:51:00
馬鹿は黙ってていいよ。もう>>251で決着してんだから。

260 :デフォルトの名無しさん:04/12/07 13:54:50
そもそも質問が馬鹿だからなー

261 :デフォルトの名無しさん:04/12/07 14:32:59
ttp://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=33#0247.txt
↑これ上手くいった方いますでしょうか?
自分の環境(Delphi6 per)では上手くいきませんでした。
どうやればいいのでしょうか?

262 :デフォルトの名無しさん:04/12/07 16:04:23
initialization
CoInitialize(nil);
finalization
CoUninitialize;
end.
ってユニットごとにガシガシ呼んでも大丈夫?

263 :デフォルトの名無しさん:04/12/07 16:52:05
>261
具体的にどう上手くいかないの?

264 :デフォルトの名無しさん:04/12/07 20:14:52
' ← これを文字列に使うにはどうしたらいいの?

265 :デフォルトの名無しさん:04/12/07 20:16:31
' '' '


266 :デフォルトの名無しさん:04/12/07 20:19:36
'\'' 普通こうやるよな
delphi特殊

267 :デフォルトの名無しさん:04/12/07 20:59:59
AA描いてる気分になる

268 :261:04/12/07 21:40:37
>>263
すみません。自己解決できました。
uses節にMSHTML_TLBとActiveXを書き加えてなかったのが主な原因でした。

269 :デフォルトの名無しさん:04/12/07 22:24:13
> 主な原因でした。

ほかの原因はなに?

270 :249:04/12/07 22:25:47
レス下さった方々どうもです。
なにやら質問自体に問題があったようで・・・
しかし、さっぱりなのでそこらへんかんべんです。
しっかり勉強してみます。


271 :ななしへたぐらま ◆XcB18Bks.Y :04/12/07 22:50:06
>>238
読み上げ算プログラムを作りたい,ということしょうか.

「いち」「にー」「さん」「しー」「ごー」「ろく」「なな」「はち」「きゅー」「じゅー」
「にじゅー」「さんじゅー」「よんじゅー」「ごじゅー」「ろくじゅー」「ななじゅー」「はちじゅー」「きゅーじゅー」
「たす」
みたいな音声を用意してたとえば49+83なら
「よんじゅー」「きゅー」「たす」「はちじゅー」「さん」と連続再生すればとりあえずできるようになります.
(最大2桁なら「きゅーじゅーきゅー」まで全部用意しても良いのですが3桁以上だと現実的ではありません)

あとは数値から読みに変換する(たとえば 49 を「よんじゅー」「きゅー」にする)部分のプログラムを書きます.

>>248
何でも良いから小説本でも読む.何でもというからには
ttp://www.france.co.jp/bisyojo/index.html こんなんでも良いと思います.
個人的には『スレイヤーズすぺしゃる』シリーズとか.お笑い系で短編集なので1つが短い.

>>270
ご質問自体は間違っていません!!
C言語にはご質問の通りに使えるstatic変数というものが存在しますし,
Delphiにはstatic変数はありませんがコンパイラオプションで『型付き定数への代入』を許可すると
型付き定数をCのstatic変数と同じように使うことができます.
procedure TForm1.Button1Click(Sender: TObject);
const YobidashiCount: integer = 0;
begin
inc(YobidashiCount);
ShowMessageFmt('%d回目の呼び出しだぜ!', [YobidashiCount]);
end;

272 :デフォルトの名無しさん:04/12/07 22:58:26
> コンパイラオプションで『型付き定数への代入』を許可すると
> 型付き定数をCのstatic変数と同じように使うことができます.

 ( ・∀・)つ〃∩ ヘェー*16

273 :デフォルトの名無しさん:04/12/07 23:06:39
>『型付き定数への代入』を許可すると
これ非推奨だけどな。
var YobidashiCount: integer = 0;
procedure TForm1.Button1Click(Sender: TObject);
begin
inc(YobidashiCount);
ShowMessageFmt('%d回目の呼び出しだぜ!', [YobidashiCount]);
end;
のがまだまし。外に出してもユニットローカルだから大して問題にはならない。

274 :デフォルトの名無しさん:04/12/07 23:24:39
禿同。型付き定数への代入ってものすごくソースが読みにくい。

275 :デフォルトの名無しさん:04/12/07 23:28:32
グローバル変数やクラスのフィールド変数は、ゼロやらfalseやらnilに自動で初期化されるし。

276 :デフォルトの名無しさん:04/12/07 23:38:45
ようはCの関数内static変数と同じものはないんだね。代わりになるものは非推奨。
しょぼいなぁ。

277 :デフォルトの名無しさん:04/12/07 23:46:14
言語の違い。ショボイとかの問題ではない。C はクラスつかえんだろ。

278 :デフォルトの名無しさん:04/12/08 00:20:39
ようはC++の関数内static変数と同じものはないんだね。代わりになるものは非推奨。
しょぼいなぁ。

279 :デフォルトの名無しさん:04/12/08 00:24:44
この際D++を開発汁!

280 :デフォルトの名無しさん:04/12/08 00:31:32
言語仕様を比較し出すと、
DelphiはC++より不自由だからコンパイルが速いとか
ジェネリックプログラミングとビルドが速いのはどちらが作業効率が高いかとか
際限なく話が広がっちゃうのでやめれ。

281 :デフォルトの名無しさん:04/12/08 01:24:50
>>262
OK

282 :デフォルトの名無しさん:04/12/08 07:01:28
質問させてください。こちらのデルファイは、デルファイ6のエンタープライズです。
ウェブサーバーアプリケーションを作るとき、「CGI実行形式」を選んだ場合、
吐き出されたバイナリは、ウインドウズ系以外のOS上のアパッチでも動くのでしょうか。
CGIを作る必要があって、(パールの使えますが、)可能ならデルファイでやりたいと思います。
苦労して作って、動かなかったというのは避けたいですし、実験しようにもよくわからないものを
外部のサーバーに送り込むのは、セキュリティ上気が引けます。(プライベートネットワークには、
IISが動いているマシンはありますが、ユニックス系のOSのマシンはありません)

よろしくお願いします。



283 :デフォルトの名無しさん:04/12/08 07:54:26
クロスプラットフォームで書けばいいんじゃね。
という希ガス。

284 :デフォルトの名無しさん:04/12/08 09:23:58
>>282
マジレスするとWindows以外のOSは山ほど在るんだが・・・
恐らくUNIX系OSとの推測で答えると・・・これまた山ほど在る。
製品名がどうこうではなく、CPUのアーキテクチャからして違う。
Delphiファミリーで生成できるのはintel i386アーキテクチャ上での
Windows or Linux用実行モジュールのみ


285 :284:04/12/08 09:29:48
補足すると上記は言語についてのみの話。
すべてのライブラリ(コンポーネント)やOSに依存する機能が提供されている訳ではないので誤解なきよう。
例えばLinuxにOleDBやADOはない。

286 :デフォルトの名無しさん:04/12/08 10:43:03
最小化起動すると、OnActivateは動かないでつか。

どうしよう。

287 :名無し募集中。。。:04/12/08 10:57:01
>>286
onActivate内に記述する必要ある処理って何だ?

フォーム表示後に一度だけ処理を行いたければ
CMShowingChangedをオーバーロード汁

288 :デフォルトの名無しさん:04/12/08 11:01:24
超サンクス>>287

ネーミングから、何度も発生しそうなイベントですが、本当に一度でつか?
何度も発生するならフラグ付けますが。

289 :名無し募集中。。。:04/12/08 11:05:01
>>288
procedure CMShowingChanged(var Message: TMessage);message CM_SHOWINGCHANGED;

procedure TfrmAE002.CMShowingChanged(var Message: TMessage);
begin
 inherited;
if Visible then
begin
 
end;
end;

290 :名無し募集中。。。:04/12/08 11:06:17
>>289
途中送信してしまいますた

if Visible then
begin

ene;

291 :名無し募集中。。。:04/12/08 11:08:52
>>290
ああ、もう何が何だかわからない_| ̄|○
念のためif文のbegin〜end内にSelf.updateを入れておけば十分かと

292 :デフォルトの名無しさん:04/12/08 13:03:31
>>283,284,285
レス、どうもです。
つかうメソッドに注意して試してみます。

293 :デフォルトの名無しさん:04/12/08 13:49:22
アイコン化したときのイベントかメッセージ教えて下さいでつ。

294 :デフォルトの名無しさん:04/12/08 14:05:02
アイコン化してると、殆どイベント来ませんね。

295 :デフォルトの名無しさん:04/12/08 14:21:15
>>293
TApplication.OnMinimizeです。

296 :デフォルトの名無しさん:04/12/08 14:44:19
サンクス>>295
その通りですた。

ただ、アプリの初期処理をForm.OnActivateとApplication.OnMinimizeと2箇所にいるなんて、
VCLが一つになるようなイベント用意してくれれば良かったのに。

297 :デフォルトの名無しさん:04/12/08 15:29:31
確認させてください。
OnShowとOnActivateは一回づつしか発生しないでつよね?

298 :デフォルトの名無しさん:04/12/08 15:37:22
そんなことはありません。Hide → Show するたびに OnShow
Deactivate → Activate するたびに OnActivate

初期化は Application.OnIdle でやってしまって、イベントハンドラをはずすと
一回だけオブジェクトの生成後に処理できます。

299 :デフォルトの名無しさん:04/12/08 15:45:23
こんな感じ

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Add('Create');
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Memo1.Lines.Add('Activate');
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Memo1.Lines.Add('Show');
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Memo1.Lines.Add('Paint');
end;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
  ApplicationEvents1.OnIdle := nil;
  Memo1.Lines.Add('Idle');
end;

300 :デフォルトの名無しさん:04/12/08 20:24:44
ShellExecuteで、アイコン化してプログラムを実行したいのですが、
Delphiアプリが言うことを聞いてくれません。
どうしたら良いで塚?

起動元、起動側、両方Delアプリでつが、専用の処理を入れるのメンドウでつ。

301 :デフォルトの名無しさん:04/12/08 20:32:40
でつでつうっせーぞハゲ

302 :デフォルトの名無しさん:04/12/08 20:41:55
もう解決したから良いでつ。

SW_SHOWMINNOACTIVEのみアイコン化ですた。

303 :デフォルトの名無しさん:04/12/08 20:59:43
WindowState効かないっけ?

304 :デフォルトの名無しさん:04/12/08 21:12:38
Delphiアプリって起動パラメータを見てたっけ? WindowState の方が優先では?

305 :ウルトラ初心者:04/12/08 22:33:23
function XorEnCode(S,P: string): string;
var
 i, j, LP, Blk, M,LS: Integer;
begin
 Result := '';
 LP := Length(P); LS := Length(S);
 if (LP = 0) or (LS = 0) then Exit;
 Blk := LS div LP;
 M := LS mod LP; //PassWord文字列の長さに満たない場合
 SetLength(Result,LS);
 for i := 1 to Blk do
  for j := 1 to LP do
   Result[(i-1)*LP+j] := Char( Ord(S[(i-1)*LP+j]) xor Ord(P[j]) );
 if M > 0 then
  for i := 1 to M do
   Result[Blk*LP+i] := Char( Ord(S[Blk*LP+i]) xor Ord(P[i]) );
end;
-------------------------------------------------------------------------
単に任意の文字列に対しXORをかけるだけなのでP(パスワード文字列)も任意の日本語で問題ないと
思うのだが XorEnCode( '諸星弾&友里アンヌ' , 'ウルトラ警備隊') などとやると2回繰り返した
場合元に戻らない。なんでじゃろ?


306 :デフォルトの名無しさん:04/12/08 22:37:38
xorなんて使うな。最低でもBlowfish使え。

307 :デフォルトの名無しさん:04/12/08 23:16:21
アイコンの指定がうまくできません。
エクスプローラで見ると指定したアイコンなのですが、exeファイルを右クリックでみると
デルファイのアイコン?になってしまいます。
resファイルを削除して再構築してもだめでした。

308 :デフォルトの名無しさん:04/12/08 23:16:55
>>305
なんだかよく知らんが、ソース分かり辛い。意図した動作をしないならコード間違っているんじゃない?
RC4でも使えば? 簡単だし速いしソースも一杯転がっているし、バイト単位でできるし汎用性が高いので使いやすいと思う。

309 :デフォルトの名無しさん:04/12/08 23:29:16
>>305
たとえばカタカナ同士の LeadingByte は同じだから、Xor をとればゼロになる。
だから、文字列の長さを間違う。

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s := XorEnCode('諸星弾&友里アンヌ','ウルトラ警備隊');
Label1.Caption := s;
Label2.Caption := XorEnCode(s,'ウルトラ警備隊');
end;

ならうまくいくが、

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := XorEnCode('諸星弾&友里アンヌ','ウルトラ警備隊');;
Label2.Caption := XorEnCode(Label1.Caption,'ウルトラ警備隊');
end;

失敗する。暗号化したものは文字列として受け取ることは危険。

310 :デフォルトの名無しさん:04/12/08 23:30:49
なんだDelphiのバグか。

311 :デフォルトの名無しさん:04/12/08 23:34:10
バグじゃない。文字列の特性。

312 :デフォルトの名無しさん:04/12/09 00:16:48
delphiでCのqsort

313 :デフォルトの名無しさん:04/12/09 06:47:31
>>307
プロジェクトオプションで指定するプロジェクト全体のアイコンと各フォームのアイコンの両方指定してありますか?



314 :デフォルトの名無しさん:04/12/09 09:42:07
無理解の>>310を晒し。

315 :デフォルトの名無しさん:04/12/09 10:59:14
つまりこういうことだよね。

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
begin
  s := '途中で'#0+'途切れる';
  Label1.Caption := s;
  Label2.Caption := IntToStr(Length(s));
  Label3.Caption := IntToStr(Length(Label1.Caption));
end;

文字列同士の代入は参照の代入で同一の実体を指す。CopyOnWrite 。
プロパティーへの代入はアクセサによるコピーなので最初に見つかった #0 で長さ確定。
これは PChar と string の代入互換性を実現するためにしかたないか。

>>305 の Xor のようなビット操作で文字列を「暗号化」した結果は、かなり高い確率で #0 を含む
ので、もはや文字列ではなく、バイナリデータだとみなした方がいいね

316 :デフォルトの名無しさん:04/12/09 14:01:42
Captionへの代入って文字列のコピーじゃないのか…

317 :デフォルトの名無しさん:04/12/09 14:03:13
暗号化 BlowFish アルゴリズム Delphi移植版 BlowFish002.lzh 16627 2004/12/09

318 :デフォルトの名無しさん:04/12/09 14:13:13
>>316
コピーだって言ってるじゃん。最初の#0までの。

319 :デフォルトの名無しさん:04/12/09 16:02:23
type
  TByteArray = array of byte;

procedure XorEncode(const Source, PassWord: string;var ba:TByteArray);
var
  i, LP,LS: Integer;
begin
  SetLength(ba,0);
  LP := Length(Password); LS := Length(Source);
  if (LP = 0) or (LS = 0) then Exit;
  SetLength(ba,LS);
  for i := 1 to LS do
    ba[i-1] := Ord(Source[i]) xor Ord(Password[(i-1) mod LP +1]);
end;

function XorDecode(const ba: TByteArray;const PassWord: string):string;
var
  i, LP,LS: Integer;
begin
  result := '';
  LP := Length(Password); LS := Length(ba);
  if (LP = 0) or (LS = 0) then Exit;
  SetLength(result,LS);
  for i := 1 to LS do
    result[i] := Char(ba[i-1] xor Ord(Password[(i-1) mod LP +1]));
end;

320 :デフォルトの名無しさん:04/12/09 16:03:01
procedure TForm1.Button1Click(Sender: TObject);
var
  ba:TByteArray;
  s,p: string;
  i:integer;
begin
  s := '諸星弾&友里アンヌ'; p := 'ウルトラ警備隊';
  XorEncode(s,p,ba);
  for i := 0 to Length(ba)-1 do Memo1.Lines.Add(Format('%.2d : $%.2x',[i,ba[i]]));
  Label1.Caption := XorDecode(ba,p);
end;

321 :316:04/12/09 16:52:56
>>318
いやだからヌル終端文字列のコピーなんでしょ?
まあ言い回しはどうでもいいんだけどさ…

322 :デフォルトの名無しさん:04/12/09 16:54:49
どう言い訳したところでDelphiの仕様バグが直るわけでもなし。

323 :デフォルトの名無しさん:04/12/09 17:02:25
MemoやListBoxのLine/Item数をgetするにはどうすれば良いでしょうか…。
プログラム実行中にLineやItemが追加する動きの後に
その合計数を参照したいのですが…。

激しく既出でしたら申し訳ございません。

324 :デフォルトの名無しさん:04/12/09 17:03:32
count

325 :デフォルトの名無しさん:04/12/09 17:04:29
文字列の途中に #0 がはいってもいいようにするより、PChar との互換性を選んだってことだろ。

326 :323:04/12/09 17:13:51
>>324
countプロパティを知りませんでした。orz
助かりました。
どうもありがとうございました。

327 :デフォルトの名無しさん:04/12/09 18:24:31
Randomizeって具体的には何してるの?

328 :デフォルトの名無しさん:04/12/09 18:28:46
seedに大麻突っ込んでるだけだろ

329 :ウルトラ初心者:04/12/09 19:21:00
>>309,319,320
サンクスです。とても参考になりますた。


330 :デフォルトの名無しさん:04/12/09 21:57:21
>>327
以下のコードを貼り付けて(要Memoコンポーネント)、100回実行してみてください。

procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to 9 do Memo1.Lines.Add(IntToStr(Random(100)));
end;

331 :デフォルトの名無しさん:04/12/09 22:25:22
Randomize の意味じゃなくてどうやって実装してるのかって質問だろ

332 :デフォルトの名無しさん:04/12/09 22:27:59
>>327
乱数の種をどこから取得しているのかという質問か?

333 :デフォルトの名無しさん:04/12/09 22:32:06
procedure Randomize;
{$IFDEF LINUX}
begin
RandSeed := _time(nil);
{$ENDIF}
{$IFDEF MSWINDOWS}
var
systemTime :
record
wYear : Word; wMonth : Word; wDayOfWeek : Word;
wDay : Word; wHour : Word; wMinute : Word;
wSecond : Word; wMilliSeconds: Word;
reserved : array [0..7] of char;
end;
asm
LEA EAX,systemTime
PUSH EAX
CALL GetSystemTime
MOVZX EAX,systemTime.wHour
IMUL EAX,60
ADD AX,systemTime.wMinute { sum = hours * 60 + minutes }
IMUL EAX,60
XOR EDX,EDX
MOV DX,systemTime.wSecond
ADD EAX,EDX { sum = sum * 60 + seconds }
IMUL EAX,1000
MOV DX,systemTime.wMilliSeconds
ADD EAX,EDX { sum = sum * 1000 + milliseconds }
MOV RandSeed,EAX
{$ENDIF}
end;


334 :さんくすえぶりばでぃ:04/12/09 23:10:49
なるほど
時間からとっていたとはぁこりゃぁたまげた(・∀・)
Delphiユーザーは天才だなwwwwwwwwwwwwwwwwwwwwww

335 :& ◆LMRaV4nJQQ :04/12/09 23:16:49
>>319のTByteArrayのような動的配列の読み書きは
EncodeByte: TByteArray;

 L := SizeOf(EncodeByte);
 WriteF.Write(L, SizeOf(L));
 WriteF.Write(EncodeByte, L); ※

 ReadF.Read(L, SizeOf(L));
 ReadF.Read(EncodeByte, L); ※

でええのかな? 文字列だと ※のところが
 WriteF.Write(EncodeStr[1], L);
 ReadF.Read(EncodeStr[1], L);
でいいみたいでっけど・・・・・


336 :デフォルトの名無しさん:04/12/09 23:37:58
WriteF.Write(EncodeByte[0],Length(EncodeByte);

Read も同様

337 :デフォルトの名無しさん:04/12/09 23:38:31
)がたりんかったか

338 :デフォルトの名無しさん:04/12/09 23:40:00
動的配列は長い文字列と同じようなスマートポインタ

SizeOf(EncodeByte);

は常に4

339 :デフォルトの名無しさん:04/12/09 23:48:29
あと、Read の前に SetLength() を忘れないように。

340 :デフォルトの名無しさん:04/12/09 23:55:38
バッファ操作のインターフェースにarray of byteってどうよ?
元データが文字列なんだからString, PChar, varあたりが妥当だよ。
StreamはWrite(const buf; だし。
ついでにTByteArrayは別の形で定義済み。Types.TByteDynArray使っとけ。

341 :デフォルトの名無しさん:04/12/10 00:01:46
MemoryStream でやってみた

procedure TForm1.Button1Click(Sender: TObject);
var
  ms:TMemoryStream;
  i,L:integer;
  EncodeByte,DecodeByte:TByteArray;
  s,p: string;
begin
  s := '諸星弾&友里アンヌ'; p := 'ウルトラ警備隊';
  XorEncode(s,p,EncodeByte);

  ms := TMemoryStream.Create;
  try
    L := Length(EncodeByte)*SizeOf(Byte);
    ms.Write(L,SizeOf(L)); // 書き込み
    ms.Write(EncodeByte[0],L);

    ms.Position := 0;
    ms.Read(L,SizeOf(L));
    L := L div SizeOf(Byte);
    SetLength(DecodeByte,L);
    ms.Read(DecodeByte[0],L);
    Label1.Caption := XorDecode(DecodeByte,p);
  finally
    ms.Free;
  end;
end;



342 :デフォルトの名無しさん:04/12/10 00:05:25
>>340
お好きにどうぞ。
文字列をEncode → 文字列じゃまずい、バイナリデータにすべき
という流れから Array of Byte にしたんだろ。PChar はどう見てもまずい。

343 :デフォルトの名無しさん:04/12/10 00:10:17
>>342
文字列の問題じゃないといったい何度言わせれば・・・

344 :デフォルトの名無しさん:04/12/10 00:13:24
byte of arrayだとデータが既にある場合にコピーしないといけないからいまいちだな。

345 :デフォルトの名無しさん:04/12/10 00:17:00
Encode した結果を PChar や string で受け取ると間違いを生みやすいってことから質問が始まって
るでしょ。そうでなければ >>305 の関数自体は正しいでしょ。

346 :デフォルトの名無しさん:04/12/10 00:18:32
>>344
Move で一行

347 :デフォルトの名無しさん:04/12/10 00:24:48
>>346
意味分かってない奴。
なんにしてもバッファ操作にarray of byteなんて使う奴はいないってこった。
Delphi cryptかなんかで検索してインターフェース調べてみなよ。

348 :デフォルトの名無しさん:04/12/10 01:04:38
string をバッファ操作に使う方が珍しいような希ガス

349 :デフォルトの名無しさん:04/12/10 02:56:00
> なんにしてもバッファ操作にarray of byteなんて使う奴はいないってこった。

うーむ、どこがバッファ操作なんだろう?
ソース文字列とパスワード文字列と XOR するのに添え字でアクセス出来るので
この上なく便利だと思うのだが?

350 :デフォルトの名無しさん:04/12/10 11:21:21
TPageControlのタブにTMemoとか貼った場合、
タブが表示されるまでCreateされないんでしたっけ?

出来れば、該当のVCLの位置キボンユ

351 :デフォルトの名無しさん:04/12/10 11:26:03
自分で調べろよ。TPageControlにTMemo貼ってダブ表示させない状態で情報取りに行けばわかるだろ。

352 :デフォルトの名無しさん:04/12/10 11:26:42
それは初耳。それだと初期化できないだろ。

353 :350:04/12/10 11:36:14
表示されてないタブのTMemo.Lines.Addすると、タブを表示したときにTMemoが消えてますた。

354 :デフォルトの名無しさん:04/12/10 11:39:59
>うーむ、どこがバッファ操作なんだろう?
うーむ、codecのどこがバッファ操作じゃないんだろう?

355 :デフォルトの名無しさん:04/12/10 12:23:41
codec ってなんですか?

356 :デフォルトの名無しさん:04/12/10 12:29:55
それだと長い文字列つかえばみなバッファ操作だわな

357 :デフォルトの名無しさん:04/12/10 12:32:33
>>353
Add 出来たなら Create されているんでは? 消えた原因は不明だけど

358 :デフォルトの名無しさん:04/12/10 13:54:04
そもそもMemo1がnilじゃなければCreateされてる希ガス
再描画シテミソ

359 :デフォルトの名無しさん:04/12/10 14:25:02
なんかここもC言語スレみたいになってきたな・・・

360 :デフォルトの名無しさん:04/12/10 16:46:49
例えば
memo1.visible
のmemo1部分をconという変数に代入して、
con.visible
という感じに動作させるにはどのようにすればいいのでしょうか。
con の型は何で宣言すれば?


361 :名無し募集中。。。:04/12/10 16:53:25
>>360
TMemo

362 :デフォルトの名無しさん:04/12/10 17:00:07
>>361
うまくいきました。ありがとうございます。

363 :名無し募集中。。。:04/12/10 17:01:54
>>362
ちゃんとfreeしておけよ

364 :デフォルトの名無しさん:04/12/10 17:23:37
>363
360の条件ならFreeしちゃ駄目だと思う。

365 :デフォルトの名無しさん:04/12/10 17:37:53
>>364
onCreate内でmemo := TMemo.Create(Self)
onDestroy内でmemo.Freeが必要なのでは?

366 :デフォルトの名無しさん:04/12/10 17:39:46
memo := TMemo.Crete(Self);
memo.Parent := Self;
しとけば児童解放される。TComponent継承してるクラスならね。

367 :デフォルトの名無しさん:04/12/10 17:55:12
>365
>360はcreateではなく別な変数memo1(たぶんフォームデザイナで作ったインスタンスへの参照)を
代入しているから、もしconをfreeすると元々のmemo1が解放されてしまう。

368 :デフォルトの名無しさん:04/12/10 17:55:44
違うフォームのTStringGrid.Rowに数字を代入するとプログラムが固まります。
他の例えばTStringGrid.Colなどは問題なく動作するのですが。
同じフォームにコピーしたTStringGridで同じことをやっても特に問題は起こりません。
何が起こってるんでしょう・・・


369 :デフォルトの名無しさん:04/12/10 18:02:56
ブレークかけてみたら。イベントが連鎖的に発生してるかも。
一般に他のグリッドなら駄目と言うことはないよ。

370 :デフォルトの名無しさん:04/12/10 18:06:53
ありがとうございます。
でも特にwhileもfor〜も使ってないのです。
showmessageなど使って問題の行の前後に置いてみると、
確実にTStringGrid.Rowの行で止まってます。

371 :デフォルトの名無しさん:04/12/10 18:12:40
あーブレークって固まってるときにIDEから停止させるって意味。
止まったら呼び出し履歴調べてみて。

372 :デフォルトの名無しさん:04/12/10 18:31:22
Delphi 6 RTL アップデート #3で上書きした
c:\winnt\System32\rtl60.bpl
c:\winnt\System32\rtl60.map
c:\winnt\System32\rtl60.jpn
は、Delphi 6をアンインストールしたら削除しても良いファイルなのですか?

373 :デフォルトの名無しさん:04/12/10 18:32:25
削除してもいいけどパッケージ使ったアプリが動かなくなるよ。

374 :デフォルトの名無しさん:04/12/10 18:39:06
>>373
パッケージ使ったアプリとは、どういうことでしょうか?orz
このファイルは、Deiphiをインストールする前からあったファイルなのですか?
(上書き前のファイルのことです)

375 :デフォルトの名無しさん:04/12/10 18:53:02
>>371
すみません、単純なコードのミスだったことが判明しました。
失礼しました・・・


376 :デフォルトの名無しさん:04/12/10 18:55:37
>>374
プロジェクトオプションで指定できる実行時パッケージの事。
それ使うとexeのサイズが激減する代わりに*.bplがないと動かなくなる。

377 :デフォルトの名無しさん:04/12/10 18:59:56
何度もスミマセン_| ̄|○

c:\winnt\System32\rtl60.bpl
c:\winnt\System32\rtl60.map
c:\winnt\System32\rtl60.jpn
はDelphiのランタイムだったんですね。

ということは、Delphiをアンインストールしたからといって、
わざわざ上書き前のファイルに戻してやる必要はないのでしょうか?

378 :デフォルトの名無しさん:04/12/10 19:01:04
リロードしてなかった。

>>376
ありがとうございます!

379 :デフォルトの名無しさん:04/12/10 23:34:51
テキストファイルを読み込み、内容をTreeViewに書き込むプログラムを作っています。

アアア
イイイ
ウウウ

上記の項目を設計時にTreeViewに設定してあった場合、
イイイの下にテキストファイルの内容を、子ノードとして追加していきたいのですが、
イイイの取得の方法を教えていただけませんか?


380 :デフォルトの名無しさん:04/12/10 23:43:16
>>379
TreeView1.Items[]でTreeNode列挙できるからTextとLevelみて検索

381 :デフォルトの名無しさん:04/12/11 01:18:41
Delphi6 の TComboBox の編集ボックス内で、文字列の途中に
全角スペースを挿入したあと、BS で全角スペースを消すと
文字化けするんだけど、解決方法教えてくだちい。

382 :デフォルトの名無しさん:04/12/11 01:21:54
>>380
さっそく試してみたところ、取得できました。
ありがとうございました。

383 :デフォルトの名無しさん:04/12/11 01:29:43
>>381
WindowsUpdateしてDel6用パッチを全てあててから
フォームにComboBoxを一つだけ貼り付けてプロジェクトで再現したら
使ってるOSを書く。

384 :デフォルトの名無しさん:04/12/11 01:30:44
>>381
AutoCompleteプロパティをFalseに汁


385 :デフォルトの名無しさん:04/12/11 01:43:01
>>381
正直、AutoCompleteはお奨めできない

386 :デフォルトの名無しさん:04/12/11 01:55:40
Tntを使うと幸せになれるよ。

387 :デフォルトの名無しさん:04/12/11 03:53:06
stringってなに?
array of charでもなくてPCharでもないのにキャストできたりして意味不明

388 :デフォルトの名無しさん:04/12/11 05:20:55
フォームの、×ボタンと最大化ボタンを消したいのですが可能ですか。
サイズは変更可能、最小化のボタンだけ残したいのですが。

389 :デフォルトの名無しさん:04/12/11 05:47:33
プロパティのBordericonsやったよな、たしか

390 :デフォルトの名無しさん:04/12/11 05:54:54
えー?
「最小化だけ」は無理じゃない?

「終了ボタン」も、「無効」なら出来るけど、
純粋に「最小化ボタンだけのウィンドウ」って無理だと思う…。

391 :デフォルトの名無しさん:04/12/11 07:54:05
>>387
Copy on write機能搭載の参照カウンタつきポインタ

詳しくはここ
http://web.archive.org/web/20040206013521/kakinotane.s7.xrea.com/obj/ml006.html

392 :デフォルトの名無しさん:04/12/11 07:54:45
>>391
ところでこのサイトまとまってよかったのに何でやめちゃったのかな
元のページなくなってるし

393 :デフォルトの名無しさん:04/12/11 08:09:20
>>392
Seventh Delphi旧入門として復活してるよ。

394 :デフォルトの名無しさん:04/12/11 13:08:35
>>388
WM_NCPAINT で最小化ボタンだけのタイトルバーを自前で描画する。
ボタンの部分は WM_NCLBUTTON〜 でなんとかする。
元の項目は CreateWnd あたりをオーバーライドして DeleteMenu で消す。

395 :デフォルトの名無しさん:04/12/11 13:47:09
delphiで六角大王(初期)のようなものを作ってみたいんですが
何を覚えればいいんでしょうか?

396 :デフォルトの名無しさん:04/12/11 14:15:00
質問させていただきます。

KOLとか言う、容量を少なく出来るらしい奴を使ったんですが、
exptintf.dcuが見つからないと言われました。
どうしたらいいでしょうか?

397 :デフォルトの名無しさん:04/12/11 15:11:24
>>391
ありがとうございます。
やっとpstringとpcharの違いがわかった気がします

398 :396:04/12/11 16:49:23
再起動したら直りました。
ごめんなさい。

399 :TWAIN:04/12/11 17:32:13
久しぶりに訳あってDELPHIを使用します。環境も古くてD3.1C/Sです。
内容的にはTWAINを自力で制御するソースをACTIVEX化したいと
思っています。
(鶴の一言によりImageKitのような市販品は今の所、使えません。
 組み込みもPowerCobolに行うのでActiveX化が必要です。)
とりあえずTWAINソースは簡単なサンプルを作ったのですが
ACTIVEX化で詰まっています
TTimerや通信系のような、画面に出ないOCXを目標にしています。

新規作成−ACTIVEX−ACTIVEXコントロールで作ろうとすると
例えばTTimerがありません。
TTimerはウィンドウレスだから出てこないのかと思っていますが、
  ・このような場合どうやってACTIVEX化するのか
が1日ネットで泳ぎましたが分かりません。

最近のDELPHIでもACTIVEXコントロールの辺りは大差ないと
思うので、ちょっとしたポインタだけでもご存知でしたら教えてください。


400 :デフォルトの名無しさん:04/12/11 17:50:06
今時ActiveXかよ

401 :TWAIN:04/12/11 18:03:42
あ、いまどきは違うのですか。最近Cでハンディやってたもので。すいません。
他のコンパイラに機能を提供するのには今時はなにをつかうのですか。

402 :デフォルトの名無しさん:04/12/11 18:35:33
>>400は現場を知らない今時のニート

403 :デフォルトの名無しさん:04/12/11 18:36:05
dll

404 :TWAIN:04/12/11 19:30:58
認識が間違っているかもしれませんが
dllだと1アプリでスキャナ2台使うケースまで考えると、
1アプリに対してのdllインスタンスは1つなので
dll呼び出し時にハンドルを使用者側で管理してもらう必要があります。
(本家本元のTWAINライブラリの都合上hwndが必要です
 →DLLでCreateWindow発行
 →使用者にハンドルを渡す)
OCXなら「使う分貼りつけて」になり、使用者側も分かりがいいかと。

総合的には今の所、ActiveXControlの方が利便性があると思っています。
TTimer系をActiveXにするポイントをご存知の方、よろしくお願いします。
実際のものもTComponentから派生する予定なのですが、TComponentだから
ActiveXに出来ないのでしょうか(その辺がわかっていません)

405 :デフォルトの名無しさん:04/12/11 20:20:32
>>404
使用目的が限定されているなら、ActiveXなんて面倒なラップしないで普通にAPIなDLLで提供したほうが楽そうな気が。
てか、ActiveXは作るのが面倒。どのIDEでも同じだが、提供されるのは最低限の雛形生成。
クラス型のプロパティがあったりすると、そこはActiveX用にインターフェイスを定義してやらないとアクセスできんし。
メンテも大変だしね。

ひょっとしたら、どこかにサポートツールが在りそうなきがしないでもないが俺は知らん。

手動でインターフェイス書くなら間違いなくActiveXのほうが作業量が多いがそれでもやりますか?

406 :381:04/12/11 21:29:09
>>384 >>385
解決しました。ありがとん。

407 :デフォルトの名無しさん:04/12/11 22:07:44
もしかしてDelphi2005って最強?

408 :デフォルトの名無しさん:04/12/11 22:20:36
Delphi2005Personalキボン

409 :デフォルトの名無しさん:04/12/12 00:30:57
> Personal版予定(2005年春)
> 体験版提供予定(2005年01月)

410 :デフォルトの名無しさん:04/12/12 09:47:53
TEditはPasswordCharに適当な文字を設定してしまうと、日本語入力や右クリック
メニューが使えなくなるようですけど、これを避ける方法があるのでしょうか?


411 :デフォルトの名無しさん:04/12/12 10:40:57
無い。Windowsの仕様だから。

412 :デフォルトの名無しさん:04/12/12 11:52:33
タスクトレイのアイコンを左クリックしてメニューを選んで実行、
という作業を自動化するアプリを作ろうとしています。

タスクトレイ全体のハンドルを取得することはできましたが、そこで詰まっています。
目的のアプリに対応するアイコンの場所かハンドルかを取得して
マウスクリックのメッセージを送る、という方法になるかと思っていますが、
具体的にはどのようにしたらよいでしょうか?


413 :デフォルトの名無しさん:04/12/12 13:23:55
タスクトレイのウィンドウ構造はOS依存だから面倒

414 :412:04/12/12 13:49:45
>>413
えと、方法自体もOSで変わってくるのでしょうか?
ウィンドウ構造に関してははここを読みました。
http://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html

415 :デフォルトの名無しさん:04/12/12 17:15:43
そう。そこにも書いてあるけど、トレイアイコンの部分は ToolbarWindow32 クラス
だったり、その親の TrayNotifyWnd クラスだったり SysPager があったりなかったり
全部のOSを動的に判断することはできるから、不可能ではないにしろめんどくさいね。

416 :デフォルトの名無しさん:04/12/12 20:23:40
100万回の処理をするときに右下にカウンターを表示してどの程度進んだか
途中の結果が見たい。

それでTimerを使ってIntervalを1に設定して定期的に表示してるけど遅い
速い方法はありますか?


417 :デフォルトの名無しさん:04/12/12 20:25:37
Thread使ってSynchronize

418 :デフォルトの名無しさん:04/12/12 20:33:43
Repaintで強制描画。(XPだとInvalidateとかの場合負荷が高い時の遅延が大きい)
ま、あんまり拘らずに1秒間隔でも俺はいいと思うぞ。

419 :416デフォルトの名無しさん:04/12/12 21:01:10
>>417 >>418
すばやい回答、本当にありがとうございます!
試してみます。

420 :デフォルトの名無しさん:04/12/12 22:17:30
JavaのHashMapクラスみたいなものはありますか?

421 :デフォルトの名無しさん:04/12/12 22:32:11
THashedStringListしかない

422 :デフォルトの名無しさん:04/12/13 00:07:46
memoにいくつかの数値を入力し、平均を求めるプログラムつくってるんですが
var
N,X:single;
I:integer;
Form1: TForm1;
N:= Memo1.Lines.Count;
X:= StrToFloat(Memo1.Lines[I]);
I:=0;
for I:= 0 to N-1 do
for文の制御変数波ローカル変数にするにはどうすればいですか?

423 :デフォルトの名無しさん:04/12/13 00:35:23
関数にする。

424 :ななしへたぐらま ◆XcB18Bks.Y :04/12/13 01:53:50
>>422
変数をメソッドの中で宣言して下さい.

メソッド,関数,手続きの中で宣言した変数はローカル変数になります.
それ以外で宣言した変数はグローバル変数になります.

なんとなく変数I, N, XをForm1の下に宣言しているような気がするのですが,
ここに変数を置く必要はまずありません.(私は置いた記憶がありません)

平均値を求める処理はTForm1にメソッドを1つ作り,その中で行うと思いますが,
変数I, N, Xはこの中でしか使わないのでここで宣言すべきです.つまりローカル変数にすべきです.


425 :デフォルトの名無しさん:04/12/13 07:52:21
>>420
DeCal使え
http://onigiri.s3.xrea.com:8080/delphi/index.php?DeCal



426 :デフォルトの名無しさん:04/12/13 12:20:15
配列にいれたデータをクリアにするにはどうしたらいいでしょうか?
For i:=0 to 255 do
begin
hairetu[i]:=0;
end;
とするしか方法はないでしょうか?

427 :デフォルトの名無しさん:04/12/13 12:33:39
FillChar

428 :名無し募集中。。。:04/12/13 12:49:48
>>426
FillChar(array, Length(array), #0);

429 :デフォルトの名無しさん:04/12/13 13:12:43
1バイト配列とは限らないだろ・・・・

430 :名無し募集中。。。:04/12/13 13:23:52
>>429

多次元配列やレコード型の場合はsizeofだよね?

431 :デフォルトの名無しさん:04/12/13 13:35:32
FillChar の第二パラメータはバイト数だろ。だから Length(array) じゃだめ。
Length(array)*SizeOf(要素の型) じゃないと。

procedure TForm1.Button1Click(Sender: TObject);
var
  IntArray:array[0..4] of integer;
  i:integer;
begin
  for i := 0 to 4 do IntArray[i] := Random($FFFFFFF);
  FillChar(IntArray,Length(IntArray),#0);
  for i := 0 to 4 do Memo1.Lines.Add(IntToStr(IntArray[i]));
end;

は間違い。

procedure TForm1.Button1Click(Sender: TObject);
var
  IntArray:array[0..4] of integer;
  i:integer;
begin
  for i := 0 to 4 do IntArray[i] := Random($FFFFFFF);
  FillChar(IntArray,Length(IntArray):SizeOf(integer),#0);
  for i := 0 to 4 do Memo1.Lines.Add(IntToStr(IntArray[i]));
end;

が正しい。

432 :デフォルトの名無しさん:04/12/13 13:36:47
間違った

  FillChar(IntArray,Length(IntArray)*SizeOf(integer),#0);

433 :デフォルトの名無しさん:04/12/13 14:04:28
SizeOf(hairetu)でいいやん

434 :デフォルトの名無しさん:04/12/13 14:05:55
おおそうか

435 :デフォルトの名無しさん:04/12/13 14:14:58
>>433
> SizeOf(hairetu)でいいやん

これ動的配列ではダメだね。スマートポインタだからいっつも4になる。

procedure TForm1.Button1Click(Sender: TObject);
var
  IntArray:array of integer;
  i:integer;
begin
  SetLength(IntArray,5);
  Label1.Caption := IntTostr(SizeOf(IntArray));
  for i := 0 to 4 do IntArray[i] := Random($FFFFFFF);
  FillChar(IntArray[0],SizeOf(IntArray),#0);
  for i := 0 to 4 do Memo1.Lines.Add(IntToStr(IntArray[i]));
end;

この場合も

FillChar(IntArray[0],Length(IntArray)*SizeOf(integer),#0);

ならOK

436 :デフォルトの名無しさん:04/12/13 14:37:10
リストボックスでマウスポインタ下のアイテムを取得する方法はないのでしょうか?

437 :デフォルトの名無しさん:04/12/13 14:41:51
OnMouseMove で ItemAtPos

438 :TWAIN:04/12/13 14:58:25
>>405
あきらめてDLLにしました
ご意見ありがとうございます

439 :436:04/12/13 15:21:32
>>437
サンクス!早速やってみます。

440 :デフォルトの名無しさん:04/12/13 19:20:12
バイナリファイルをピンポイントで書き換える方法ってないですかね?
書き換えたいのはほんの16バイト〜64バイトだけなのに
TFileStreamやTMemoryStreamとかだと上書き保存でも先頭から最後まで上書きしていくようなのです。

動画ファイルをいじるツールなので、ファイルサイズは当たり前にウン百MB・・。
ひたすら時間がかかってしまいます。

441 :デフォルトの名無しさん:04/12/13 19:33:13
>>440
seek

442 :デフォルトの名無しさん:04/12/13 19:35:07
>>440
BlockWriteで良いんじゃない?

443 :440:04/12/13 20:18:04
>>441-442
遅くなりましたが何とかうまくいきました。
ファイル型を使うのが初めてだったのとRecSizeとBlockWriteの書き込みサイズの関係に手間取ってました。
まさしく理想的な速さです。(本当に保存したのか不安になるぐらい)
ありがとうございました。

444 :ななしへたぐらま ◆XcB18Bks.Y :04/12/13 21:55:44
>>441さんの意図はTFileStreamのSeekメソッドのような気もしますが….

つまり,TFileStreamのSeekメソッドで書き換えたい位置に移動,
Writeメソッドで書き込み,最後にFreeメソッドでファイルを閉じる,
という感じで部分的に書き換えることができます.


445 :デフォルトの名無しさん:04/12/14 01:42:50
ビルド時のユニットの検索で暗黙的にLibとImportsを見にいってるけどそれ以外のディレクトリを追加するのはどうやるの?
プロジェクトのディレクトリのデフォルト設定とかじゃなくて。

446 :デフォルトの名無しさん:04/12/14 04:22:25
暗黙じゃなく、環境で設定されているのだけどね。
環境オプション ライブラリパス

447 :デフォルトの名無しさん:04/12/14 08:59:06
例外処理について質問です
入力値チェック等複数の条件分岐が必要な場合は
if (条件) then
 if (条件) then
  if (条件) then

とif文をネストしていましたが例外処理を使って
try
 if (条件) then raise Exception.Create('最初のif文)
  if (条件) then raise Exception.Create('次のif文)
   if (条件) then raise Exception.Create('最後のif文')
except

end
と書いても同じことになるのでしょうか?

448 :デフォルトの名無しさん:04/12/14 09:10:00
同じだと思うよ
まあでもgotoの代わりに使うのは面白くないけどな

449 :447:04/12/14 09:19:08
>>447のexcept〜end内にraiseが抜けてました
例外を生成してるのでこれだとメッセージが出ないですね

>>448
レスどうもです
条件分岐がたくさんある時はいちいちif文で分けないで
エラーだったらズバッと特定部分に飛ぶのはスマートだと思いますが
これは間違った認識なのでしょうか?

450 :デフォルトの名無しさん:04/12/14 10:11:25
例外って同一メソッド内で自作自演的にraise〜exceptするもんじゃないぞ。
エラーが発生したことと、エラーの発生した場合の処理を分離する為の機構なんだから。
暇があったらここでも読んどけ。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%C7%A5%B6%A5%A4%A5%F3%A5%D1%A5%BF%A1%BC%A5%F3%2FException%A4%F2%B8%AD%A4%AF%BB%C8%A4%A8%5D%5D

451 :デフォルトの名無しさん:04/12/14 11:57:27
作ってみた。使っておくれ。

ttp://groups-beta.google.com/group/DelphiFreeTalks

Web と mail からで利用できる。
両方とも投稿 IP が記録されるので、絶対的に匿名が必要な場合には今までどおり
ここを使っておくれ。


452 :デフォルトの名無しさん:04/12/14 14:21:44
Del6 Perで制作したソフトって、自分のHPで配布したり
ベクターとかに登録してもいいんですか?

453 :デフォルトの名無しさん:04/12/14 14:57:20
license.txtを読め。
GNUの宣言文なんかよりずっと読みやすい、
平易な文章だ。そして、自分で理解しろ。
そうしないと危険だ、わかるだろ?

454 :デフォルトの名無しさん:04/12/14 15:19:58
レスありがとうございます。
読んでみました。
フリーソフトとしての配布なら問題ないって事ですよね?

455 :デフォルトの名無しさん:04/12/14 17:37:07
そのはず

456 :デフォルトの名無しさん:04/12/14 19:27:34
>>451
イラネ

457 :デフォルトの名無しさん:04/12/14 20:29:05
この板以外で2ちゃんねる用語使うの勘弁して欲しい。wikiとか

458 :ウルトラ初心者:04/12/14 21:04:25
>>305を少し変えた
type
 CharArray = array[0..2047] of Char;

procedure XorEncode(var Buf: CharArray; LS: Integer; PassWord: string);
var
 i, j, LP, Blk, M: Integer;
begin
 LP := Length(PassWord);
 if LP = 0 then Exit;
 Blk := LS div LP;
 M := LS mod LP; //PassWord文字列の長さに満たない
 for i := 0 to Blk - 1 do
  for j := 0 to Plen - 1 do
   Buf[i*LP+j] := Char( Ord(Buf[i*LP+j])
             xor Ord(PassWord[j+1]) );
 if M > 0 then
  for i := 0 to M - 1 do
   Buf[Blk*LP+i] := Char( Ord(Buf[Blk*LP+i])
              xor Ord(PassWord[i+1]) );
end;
これは確かに文字列の復号化には失敗するのだけど次のようにファイルに対してはOK。
なんでじゃろ?


459 :デフォルトの名無しさん:04/12/14 21:05:19
 ReadF := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive);
 TmpName := ChangeFileExt(FileName, '.$$$');

 try
  WriteF := TFileStream.Create(TmpName, fmCreate or fmShareExclusive);
  try
   repeat
    NumRead := ReadF.Read(Buf, SizeOf(Buf));
    XorEncode(Buf, NumRead, PassWord);
    WriteF.Write(Buf, NumRead);
   until NumRead <> SizeOf(Buf);
  finally
   WriteF.Free;
  end;
 finally
  ReadF.Free;
 end;
 if DeleteFile(FileName) then RenameFile(TmpName, FileName);


460 :デフォルトの名無しさん:04/12/14 21:06:04
 ReadF := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive);
 TmpName := ChangeFileExt(FileName, '.$$$');
 try
  WriteF := TFileStream.Create(TmpName, fmCreate or fmShareExclusive);
  try
   repeat
    NumRead := ReadF.Read(Buf, SizeOf(Buf));
    XorEncode(Buf, NumRead, PassWord); //Decodeもいっしょ
    WriteF.Write(Buf, NumRead);
   until NumRead <> SizeOf(Buf);
  finally
   WriteF.Free;
  end;
 finally
  ReadF.Free;
 end;
 if DeleteFile(FileName) then RenameFile(TmpName, FileName);
どんなファイルでもOKみたいだ。

461 :デフォルトの名無しさん:04/12/14 21:07:25
相変わらず腐ったインターフェースだな

462 :デフォルトの名無しさん:04/12/14 22:10:41
そりゃ、そうだろ。文字列にしなけりゃ途中で切られることはないからね。
前のレスの内容どおりだろ。

463 :TParser:04/12/14 22:53:47
procedure TForm1.Button1Click(Sender: TObject);
var
Fs: TFileStream;
Parser: TParser;
S: String;
begin
Memo1.Lines.Clear;
Fs := TFileStream.Create('D:\mydata\testdata.txt', fmOpenRead);
try
Parser := TParser.Create(Fs);
try
S := '';
while Parser.Token <> toEof do
begin
// '/' の前にある数値でなければ抽出する
if (Parser.TokenString <> '/') and (S <> '') then Memo1.Lines.Add(S);
// 現在のトークンが数値だったら保存する。
if Parser.Token = toInteger then S := Parser.TokenString
else S := '';
Parser.NextToken;
end;
finally
Parser.Free;
end;
finally
Fs.Free;
end;
end;


464 :デフォルトの名無しさん:04/12/14 23:17:12
何がしたいんだ?

465 :デフォルトの名無しさん:04/12/15 04:31:02
>>463
TParser ってヘルプにもない・・・とおもってぐぐったら出てきた出てきた!
そうかあ・・・こんなパーサーあったんだな。
こんな便利なものなんでヘルプに載せないのかな?


466 :デフォルトの名無しさん:04/12/15 09:31:31
TStringGridでスクロールバーが移動した時に発生するイベントってありますか?

467 :デフォルトの名無しさん:04/12/15 09:43:25
sageてしまったのげageさせてください

468 :デフォルトの名無しさん:04/12/15 10:15:52
イベントはない

469 :デフォルトの名無しさん:04/12/15 10:22:37
>>466-477
自己解決しますた
やりたいことはTStringGridのセルにTComboBoxをはめ込んで使用していますが
セルにTComboBoxが表示されている時にスクロールすると
セル表示されているColが全てTComboBoxになってしまいました

単にTComboBoxのOnExitイベント内でTComboBoxを非表示にすればいいだけでした
お騒がせしますた

470 :デフォルトの名無しさん:04/12/15 13:28:28
やりたいことと質問の内容がずれてる

471 :デフォルトの名無しさん:04/12/15 15:20:02
これからプログラムの勉強を始めようと思っています。
それで Delphi 2005 Professional を購入しようと思っているのですが、
動作環境に Windows XP Pro となっています。
私のはWindows XP Home なのですが、これでは使えないのでしょうか?
また、使えたとしても、なにか制限が生じるのでしょうか?


472 :デフォルトの名無しさん:04/12/15 15:23:56
無料で本もいっぱいあるJavaやっとけ

473 :デフォルトの名無しさん:04/12/15 15:26:35
2005買うより、まず無料の D6per を試してみては。XPHome でもOK

http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi%A4%CE%C6%FE%BC%EA%A4%C8%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%5D%5D


474 :デフォルトの名無しさん:04/12/15 15:29:03
>>471
D2005のトライアルで試せばいいと思うけど

475 :デフォルトの名無しさん:04/12/15 15:33:36
トライアル最悪

476 :デフォルトの名無しさん:04/12/15 15:42:28
>>471
予算は大丈夫か?新規購入はめっちゃ高いぞ。

477 :79 ◆7kkYm.VmFc :04/12/15 15:45:11
usesには

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls, FileCtrl, Grids;

こんなものが書いてありますけど、たとえばMathなどを使う必要もないのに書き加えても
動作上は問題ないのでしょうか?


478 :デフォルトの名無しさん:04/12/15 15:48:53
mathなんかは使わなければリンクされないと
Delphi1の頃の塚越本には書いてあった希ガス。

今でもだいじょうぶなんじゃない。
Mathユニットの関数と同じ名前の関数とか作ったりしなければ。

479 :デフォルトの名無しさん:04/12/15 15:50:18
>>477
モノによってはusesするだけでexeのサイズが肥大化するものもあるけど
動作上問題になるケースはまずないよ。
コードサイズが増えるかどうかはユニットの一番下の
initialization/finalizationにコードが記述されているかどうかを見て判断。
Mathは増えない。

480 :79 ◆7kkYm.VmFc :04/12/15 15:50:38
ありがとうございました。

481 :デフォルトの名無しさん:04/12/15 16:22:06
Image.Canvas.Pixelsとかが無茶苦茶遅いんだけどどうにかならないの?
高速かつリアルタイムに描画が反映される方法かコンポってない?

482 :デフォルトの名無しさん:04/12/15 17:04:28
描画にPixels を使うやつの気が試練。

483 :デフォルトの名無しさん:04/12/15 17:32:42
>>481
ScanLineをつかうといいよ。

484 :デフォルトの名無しさん:04/12/15 17:57:40
バイナリ<->テキスト(string)間の変換を行う標準の機能はありますか?

485 :デフォルトの名無しさん:04/12/15 18:06:36
単純に暗号化したいというのなら、
それ用のコンポーネントか、アーカイバコンポーネント使ったら?

486 :デフォルトの名無しさん:04/12/15 20:00:12
>>484
なにをしたいの。
String型でも文字コードの並んでいるものとして扱えばバイナリで処理できるけど。
この場合は、PCharにキャストしたほうがいい。

487 :デフォルトの名無しさん:04/12/15 20:15:35
>>486
そういうことではなく
メモリ(バイナリ)イメージを表示可能なテキストに変換する
s := bin2str(myrecord, sizeof(myrecord)) //=> '12 fs df 00 00...'
str2bin(s, myotherrecord)
のような機能が標準であるかということです。

488 :デフォルトの名無しさん:04/12/15 20:52:14
>>487
それなら、IntToHex 関数というのがある。
整数値を16進形式の文字列にして返してくれる。

489 :デフォルトの名無しさん:04/12/15 20:59:51
標準でそういう機能があるかという質問なんですが。形式は16進等特定のものである必要もありません。
# 実装の仕方がわからないわけではありません。

490 :デフォルトの名無しさん:04/12/15 21:13:11
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で


491 :デフォルトの名無しさん:04/12/15 21:28:01
何言ってんだこいつは

492 :デフォルトの名無しさん:04/12/15 21:42:22
ライブラリが充実していないと何もできない、いつもの方です。放置推奨。

493 :ななしへたぐらま ◆XcB18Bks.Y :04/12/15 22:02:03
>>481
基本的には>>483のとおり,PixelsではなくScanLineを使います.
ただ,イメージコンポ内部のビットマップ形式を変更する必要があります.以下,へたれサンプル投下.
(※うちはDelphi 5なのでそれでも動くようにImage1.Picture.Bitmapを参照しています.)
procedure TForm1.Button1Click(Sender: TObject);
var
x, y: integer;
r, g, b: byte;
pb: PByte;
begin
// 内部ビットマップの初期化
Image1.Picture.Bitmap.PixelFormat := pf24bit; // ←ハードウェアや画面モードに依存しない,かつ画素当たり24ビットの形式
Image1.Picture.Bitmap.Width := Image1.ClientWidth;
Image1.Picture.Bitmap.Height := Image1.ClientHeight;
// メインループ:1画素ずつ塗りつぶす
r := high(byte);
b := high(byte);
for y := 0 to pred(Image1.Picture.Bitmap.Height) do begin
g := high(byte);
pb := Image1.Picture.Bitmap.ScanLine[y]; // ←pbはラインyの左端の画素の1バイト目を指す
for x := 0 to pred(Image1.Picture.Bitmap.Width) do begin
pb^ := b;
inc(pb);
pb^ := g;
inc(pb);
pb^ := r;
inc(pb);
g := (g + 255) and 255;
end;
b := (b + 255) and 255;
end;
end;

494 :ScanLineの使用例:04/12/15 22:37:32
http://hp.vector.co.jp/authors/VA015850/delphi/lib/index.html

495 :デフォルトの名無しさん:04/12/15 22:44:55
>>485-492
代案厨乙

496 :デフォルトの名無しさん:04/12/15 22:46:43
delphi6を使っているのですけれども
ファイル名にUnicodeを使うにはAPIたたかないと駄目でしょうか?

497 :デフォルトの名無しさん:04/12/15 22:51:38
IntToHexみたいにVCLで用意されてるのは、標準とは言わんのか

498 :デフォルトの名無しさん:04/12/15 23:24:04
>>496
ウニコードはWideString型だから
StringToWideChar
とか使ってみれば?

でもファイル名にユニコードの意味がよく分からん。
そんなのOS側で処理してくれるでしょ

499 :496:04/12/15 23:40:08
例えば日本語とハングルが混ざったファイル名とかですかね。
そういうファイルをAssignFileとかTFileStreamとかでは扱えないっぽいので。


500 :デフォルトの名無しさん:04/12/15 23:44:37
TFileStreamはコンストラクタにハンドル渡せるからCreateFileWで得たハンドル渡せるかもね。
そういう抜け道以外でVCLでW対応したものってないんじゃないの。

501 :496:04/12/15 23:51:02
やっぱそんな感じですか。そっちの方向でやることにします。
ありがとうです。

502 :デフォルトの名無しさん:04/12/16 04:26:00
Tnt 使え。
殆ど対応している。

503 :デフォルトの名無しさん:04/12/16 12:09:18
AnsiPosの右から検索バージョンってあるの?

504 :デフォルトの名無しさん:04/12/16 13:46:54
ない

505 :496:04/12/16 22:10:50
>>502
む。これはよさげですね。
いろいろいじってみます。

506 :デフォルトの名無しさん:04/12/17 06:51:29
文字列を左右逆にして、AnsiPosで探すとか。

507 :デフォルトの名無しさん:04/12/17 10:16:07
>>506
反転させるのはコストが高そう。

私なら頭から読んでいって、最後にでてきた位置を覚えておいて
その場所を返すようにするなぁ。

508 :デフォルトの名無しさん :04/12/17 10:18:03
自分で作ったフレームを頻繁に使うのでコンポーネント化したいのですが、
できるのでしょうか?

509 :デフォルトの名無しさん:04/12/17 11:20:21
>>508
出来ると思うけど、フレーム上のコンポーネントとか動かすのが
大変になるし、プロジェクト依存の変数とか使えなくなるよ。

510 :デフォルトの名無しさん:04/12/17 11:25:12
>506-507
尻から順番に比較して、
ヒットしたらByteType関数で先頭がmbTrailByteでないか確認。
ベタに関数を書き下しても、引数チェックを除けばたったこれだけ。

Result := 0;
for i := Length(Text) - Length(Sub) + 1 downto 1 do
begin
 if Text[i] = Sub[1] then
 begin
  f := False;
  for j := 2 to Length(Sub) do
  begin
   f := (Text[i + j - 1] <> Sub[j]);
   if f then Break;
  end;
  if not f and (ByteType(Text, i) <> mbTrailByte) then
  begin
   Result := i;
   Break;
  end;
 end;
end;

511 :デフォルトの名無しさん:04/12/17 11:28:15
>>509
そうなのですか・・・
たくさんのフレームを作成していて、そのうち1つだけ使用回数がえらい多いので
フレームコンポーネント選択→フレーム選択がとてもわずらわしいもので・・・

512 :デフォルトの名無しさん:04/12/17 11:40:56
>>511
コンポーネント・テンプレートに登録すれば、
パレット上に表示できる。

フレーム変更時は、再登録しないと変更が反映されないけど。

513 :511:04/12/17 12:12:16
>>512
ありがとうございます。

簡単なロジックのみのフレームなので、あまり変更は無いと思います。
>>512さんの方法で進めてみます。。

514 :デフォルトの名無しさん:04/12/17 21:17:59
TUIWebBrowserってやっぱりDelphi6 Personalにはインストール出来ないのでしょうか?

515 :デフォルトの名無しさん:04/12/17 23:22:22
SetLengthで長い文字列や動的配列の長さを確保した場合、処理が終わったらFinalizeで解放しないと
いけないのだろうか?
type
TMyRec = packedrecord
Dat1:SmallInt;
Dat2:Integer;
end;

TMyAry = array ofTMyRec;

procedureTForm1.Button3Click(Sender:TObject);
var
IDX:Integer;
FFile:TFileStream;
Dat:TMyAry;
begin
if not OpenDialog1.Execute thenExit;
FFile:= TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
IDX:= FFile.SizedivSizeOf(TMyRec);
SetLength(Dat,IDX);
try
FFile.Read(Dat[0],FFile.Size);
finally
FFile.Free;
Finalize(Dat); //これははたして必要か?
end;
end;


516 :デフォルトの名無しさん:04/12/18 00:05:50
>>515
CreateならFree、NewならDispose、SetLengthならFinalize
やっぱり自分で作ったものは自分で面倒みなきゃ


517 :デフォルトの名無しさん:04/12/18 00:44:54
>SetLengthならFinalize
こんなのあった?

518 :デフォルトの名無しさん:04/12/18 01:08:26
いらん。コンパイラが暗黙で終了コードを生成してくれる。
CPUウィンドウ見れば答えがすぐ分かるよ。

>>516
知ったか死ね。

519 :デフォルトの名無しさん:04/12/18 01:36:46
とかいうやりとりのどれを信用する?
俺なら死ねとかいう人は信用ならないので自分で調べる。

520 :デフォルトの名無しさん:04/12/18 01:41:16
>>515
おそらく、ファイルやフォルダが削除出来なくて、
君は解放忘れじゃないかと疑ってるんじゃないか?
もしそうだとしたらら原因はOpenDialog1にあるよ。

521 :デフォルトの名無しさん:04/12/18 01:46:24
>>518
String型、バリアント型を使用している場合は必要
お前も知ったか死ね



522 :デフォルトの名無しさん:04/12/18 02:08:57
>>521
話が長くなりそうだから問題の起きるサンプルコードよろ。
そのコードを実行すると何が問題になるのか、どう修正するといいのかも説明して。

523 :デフォルトの名無しさん:04/12/18 04:00:30
知ったかの521も system._DynArrayClear のコードでもトレースしてごらん。

524 :デフォルトの名無しさん:04/12/18 06:38:54
>>521
逆だろ

ここ初心者スレだぜ?
ユーザー減らすようなマネやめないか?
そういうレスは、フサギコの相談室でやってくれ、頼む

525 :デフォルトの名無しさん:04/12/18 06:39:15
Finalize(Dat); //SetLength(Dat, 0)でもいい
起動中に不必要なメモリを占領し続けないというなら必要だが
メモリリークについては心配無用!


526 :デフォルトの名無しさん:04/12/18 08:15:26
>>516 の書き方がいかにも「知ったか」なのがカチンとくるな。たしかに。
間違ってるのが致命的だが。

527 :デフォルトの名無しさん:04/12/18 09:42:03
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。


528 :デフォルトの名無しさん:04/12/18 10:22:54
>>527
勇気を持って書き込んだ超低レベル初心者は>>516>>518だからあってます。

529 :デフォルトの名無しさん:04/12/18 11:06:43
Del厨のレベル低下もここまできたか

530 :デフォルトの名無しさん:04/12/18 11:12:04
*質問*を勇気を持って書き込むスレッドです。


531 :デフォルトの名無しさん:04/12/18 11:38:49
質問以外は超低レベル初心者お断り!
だそうです。>>516>>518

532 :デフォルトの名無しさん:04/12/18 11:41:34
欲しくもない代案を次々と出してくる人たちはどうですか?

533 :デフォルトの名無しさん:04/12/18 11:47:06
質問自体がタコな場合は代案大いに結構

534 :デフォルトの名無しさん:04/12/18 12:01:29
結構かどうかは質問者が判断することだろ。
バカじゃね。

535 :デフォルトの名無しさん:04/12/18 12:02:23
>>533
代案厨乙
あるいは気がついてないのかもしれないけど
あんたの代案は誰の役にも立ってないよ。

536 :デフォルトの名無しさん:04/12/18 12:17:17
FinalizeはFAQなわりに案外まとまったドキュメントがないんだな。

537 :デフォルトの名無しさん:04/12/18 12:18:26

ShowMessage('(*´ω`*)モチツケ');

538 :デフォルトの名無しさん:04/12/18 13:04:59
タコな質問者はいい代案でも理解できないのが多いから、回答しないで無視

539 :デフォルトの名無しさん:04/12/18 13:08:41
半年まえから代案、代案って叫ぶ変なのがいついてるな。フサスレの病気なのと同じくらい不気味だな。

540 :デフォルトの名無しさん:04/12/18 13:12:48
delphiを始めたんですが、とりあえず何かを作ろうと思い、
2chブラウザなら出来そうだと思ったんですが、作り方が
よく分かりません。
そこで相談ですが、どのように作れば良いか教えていただけないでしょうか?
「ぐぐれ!」というのは無しでお願いします。調べても分からなかったんで。
よろしくお願いいたします。

541 :デフォルトの名無しさん:04/12/18 13:19:02
>>540
そんなエサに釣られるクマー(AA略)

542 :デフォルトの名無しさん:04/12/18 13:26:32
>>539
どうも、フサスレから荒らしが来てしまってるようだな…

543 :デフォルトの名無しさん:04/12/18 13:28:49
>>540
いっぺんに作ると余裕で破綻するから
・板情報の入ったHTMLをダウンロードするサンプル
・HTMLを解析して板情報を抽出するサンプル
・板のURLを入力してスレ一覧を取得するサンプル
・スレのURLを入力してレス一覧を取得するサンプル
・レス一覧を取得して個々のレスにばらして表示するサンプル
をそれぞれ別のプロジェクトとして作成する。
で、サンプルの機能を一つのクラスにしてユニットにまとめる。
で、それをまとめてアプリケーションに組み込む。

こういう構成要素の多いアプリケーションを作る場合
単一の機能を下から一つずつ作っていくといいよ。
いきなりフォームにメニューおいてツリービューと
リストビューとブラウザコンポおいてと
進めるのはあまりお勧めできないよ。

544 :デフォルトの名無しさん:04/12/18 14:27:22
janeとかのソースをダウンロードする

理解不能。2chブラウザも大変なんだと気がつく

もうちょっと役に立たない物から作ってみる

545 :デフォルトの名無しさん:04/12/18 15:00:23
>>544 これだッ (*^ー゚)b グッジョブ!!
>もうちょっと役に立たない物から作ってみる
これが、楽しい内は大丈夫。
それに飽きる頃には、実力の無さを嘆くのみ_| ̄|○

546 :デフォルトの名無しさん:04/12/18 15:03:44
>>516 の 「SetLengthならFinalize」は間違い。
これが知ったかと言える要因。
みんな間違って覚えるんじゃないぞ。

521は逃げたようですね。

547 :デフォルトの名無しさん:04/12/18 15:53:00
プログラミングは実力ってあまり関係ない。
それよりも根性だ。
1日かけようと思っている時間を1ヶ月にすればもっといいものが出来る。
面倒だと思うところを面倒がらずにやる。
無限の労力をかければどんどんなんでも出来ていく。
できないことはない。
いかに時間を浪費させずにやるかは実力絡むかもな。

548 :デフォルトの名無しさん:04/12/18 15:56:32
>>547
根性で、なんとかなれば苦労はしないよ・・・
最終的にはセンスや才能っていうのが大きいけど、
とりあえず禁止事項を理解しよう。

549 :デフォルトの名無しさん:04/12/18 16:09:11
漏れは516でも546でもないが、まあ、とにかく、ヘルプの動的配列の
項目を見てみたのよ。 以下引用

>動的配列変数は暗黙にポインタであり,長い文字列型と同じ参照カウントの方法を使用して管理されます。
>動的配列の割り当てを解除するには,配列を参照する変数にnil を代入するか,Finalize に変数を渡します。
>配列がほかで参照されていなければ,これらの方法のどちらでも配列が破棄されます。
>動的配列は,参照カウントが0 まで下がった場合に,自動的にリリースされます。長さが0 である動的配列の値はnil です。
>動的配列変数に逆参照演算子(^)を使用してはいけません。
>また,動的配列変数をNew 手続きまたはDispose 手続きに渡してはいけません。

つまり、ほっといても動的配列ならガベコレが効くけど、明示的に割り当てを解除したけりゃ、
参照カウントを0にした上で、nilを入れるなりFinalizeなりする、ってことでいいんじゃないすかね。
で、参照カウントを0にできない状況でメモリ負担を減らしたければ、setlengthで要素数を0にすると。
ガベコレという言葉をここで使うことの是非は知らんけど。

550 :デフォルトの名無しさん:04/12/18 16:55:42
ゲーム作成のためにDelphi+SDLで行こうとおもうんですが、
Delphi6はDLしたんですがSDLのダウンロードの仕方がわかりません。

それとDelphi+SDLでプログラミングしていくには、どういう手順を踏めばいいんでしょうか?

551 :デフォルトの名無しさん:04/12/18 17:07:03
>>550
http://gamdev.org/w/?%5B%5BDelphi%A4%C7SDL%5D%5D

552 :デフォルトの名無しさん:04/12/18 17:26:47
JEDI-SDLのインストールに書かれてることをすればいいんでしょうか?
それとも、下にある本家のサイトからSDLをDLするんでしょうか?

553 :デフォルトの名無しさん:04/12/18 20:34:00
両方やって見りゃいいだろクズ

554 :デフォルトの名無しさん:04/12/18 20:58:21
なんでやってみる前に質問するんだろうか?
そのうち、この単語でgoogleで検索すればいいのでしょうか?とか聞くのだろうか

555 :デフォルトの名無しさん:04/12/18 22:55:16
Windows API のコールバック関数さんに
クラスのメソッドを渡すのは無理なのでしょうか?

C++のstaticメンバ関数のようにクラスメソッドにすれば
できるかと思ったのですがAccess Violationエラーがでてしまいます。
(もちろんクラスに入れないで使えばエラーがでてない)

WEB上で検索をかけてもそういうことやってるのは見当たらなかりませんでした。
できれば隠蔽したいのですが…無理なら無理って言ってください。

556 :デフォルトの名無しさん:04/12/18 23:05:46
そのままだと無理。クラスメソッドでも無理。
詳しい説明は面倒なのでしない。
メソッドは隠れた引数(インスタンスのポインタ)が存在する。つまり型が全く違う。

557 :デフォルトの名無しさん:04/12/18 23:13:26
>>555
無理。メソッドの引数リストには暗黙の引数 Self が含まれるから。

呼び出し元の API の lParam に対象となるオブジェクト (Self など) を渡して、
コールバックがそれを手がかりにメソッドを呼ぶようにしたらいい。

558 :デフォルトの名無しさん:04/12/18 23:14:57
Delphi2005とVB2005とでどっちが優れてますか?

559 :555:04/12/18 23:20:37
>>556-557
クラスメソッドでもSelfがくるのか…
ありがとうございます。諦めがつきました。
>>557の感じでやろうと思います。

560 :デフォルトの名無しさん:04/12/18 23:21:30
>>558はくれぐれもスルーで。

561 :デフォルトの名無しさん:04/12/18 23:23:41
>>560
何で?
Delphiの方がいいと思うなら素直にDelphiって言えばいいじゃん。
何か言えない事情でもあるの?w

562 :デフォルトの名無しさん:04/12/18 23:23:53
COBOL2005が最強です^^^^^;;;;;

563 :デフォルトの名無しさん:04/12/18 23:24:10
普通のメソッドはSelfが渡されて
クラスメソッドはSelfじゃなくてクラス参照が渡される。

564 :デフォルトの名無しさん:04/12/18 23:25:37
>>558
>>561
隔離病棟に(・∀・)カエレ!

565 :デフォルトの名無しさん:04/12/18 23:28:41
2005からDelphi始めた人っている?
やっぱ.NET使うならVS買うよな。

566 :デフォルトの名無しさん:04/12/18 23:30:33
>>565
うるさい氏ね

567 :デフォルトの名無しさん:04/12/18 23:32:03
.NET使うくらいならJava使うよ

568 :デフォルトの名無しさん:04/12/18 23:33:54
将来を担う初心者の方々の前ではDelphi2005の話題はタブーなんですね?w

569 :デフォルトの名無しさん:04/12/18 23:37:15
558=561=568はニートまっしぐらで将来担うことはできないからな

570 :デフォルトの名無しさん:04/12/18 23:52:16
Delphi2005へのJVCLのインストールを成功された方はおられませんか?
JVCLをインストールしようとしたのですが、
その前のJCLがインストールできないです。
1.93では、Delphi2005を認識してくれないようです。

571 :デフォルトの名無しさん:04/12/19 00:38:50
>>570みたいな荒らしは放置

572 :デフォルトの名無しさん:04/12/19 00:46:59
Delphi2005はNGワードでよろ

573 :デフォルトの名無しさん:04/12/19 02:10:30
これがDelphi自滅への道か

574 :デフォルトの名無しさん:04/12/19 04:31:22
不機嫌なユーザ大杉

575 :デフォルトの名無しさん:04/12/19 07:38:02
単に
var
Name: string[30];
と宣言した場合Nameは短い文字列になるのでしょうか?


576 :デフォルトの名無しさん:04/12/19 09:02:00
>>575

ヘルプにそう書いてあるだろ。
短い文字列にならなかったのか?

577 :デフォルトの名無しさん:04/12/19 12:12:17
ごめん、正直全然分からないので教えてください。

リムーバブルディスクのハードウェア名からドライブを
取得したいんですが、どうしたらできるのかしら。
リムーバブルディスクを右クリック→プロパティ
でハードウェアタブで「なんたら USB Device」ってなってる
名前のことです。

なんか他にうまいやり方あるのかな。
ここら辺のプログラム組んだ事なくて、ダメダメなんです。

WinXP Del5Pro

578 :デフォルトの名無しさん:04/12/19 12:56:01
せめてこのスレくらい検索しとけ。答えがあるとは限らないにしても。

579 :577:04/12/19 13:43:44
>>578
答えられないなら黙っててください。
初心者相手にしか強い態度に出られないのって哀れですね。

580 :デフォルトの名無しさん:04/12/19 13:46:49
578じゃないけど、このスレでちょっと前にドライブについてわだいになってるよ。
レジストリから取るのが一番確実らしい。さかのぼって見てみたら。

581 :デフォルトの名無しさん:04/12/19 14:08:47
577は検索しなかった自分を反省することができないウジ虫

582 :Delフサギコ ◆A6VzDeLphI :04/12/19 15:10:24
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ
前に話題になったのは

>でハードウェアタブで「なんたら USB Device」ってなってる
>名前のことです。

とは違うだろ....

吐駄と同じキャラはこのスレにはいらないってば。


583 :デフォルトの名無しさん:04/12/19 15:16:23
Delphiに無関係な話題ですいません。

584 :577:04/12/19 15:17:11
579は私じゃないですが、色々調べてみましたが、
まだ分かりません。もう少し調べてみます。
あmぁ、調べても分からなかったので聞いたワケですが。。

585 :デフォルトの名無しさん:04/12/19 15:18:56
病人の仕業だったのか・・・

586 :デフォルトの名無しさん:04/12/19 16:01:38
ヤフオクの出品ツールを作っているのですが、HTMLソースの取得で躓いています…
WebBrowserに表示したページのソースを取得したいのですが、
IndyのTIhttpを使ってもエラーが出て取得できないのです。

RichEdit1.Text:=idHTTP1.Get(WebBrowser1.LocationURL);

このようにコーディングしたのですが、普通のページ(Yahooのトップページ等)
は無事に取得できました。
しかし、MyAuctionのページ(http://user.auctions.yahoo.co.jp/jp/show/mystatus)を
取得しようとすると、『HTTP1.0 302 Found』のエラーが表示され、取得することが
出来ません…

他の方法でも構いませんので、どなたかご教授頂けないでしょうか…
宜しくお願い致します。

587 :デフォルトの名無しさん:04/12/19 16:24:29
>>586
302ってURLがリダイレクトされてるって言ってるんじゃないかい?
だからそのリダイレクト先のURLを収得してGetしないといけないと思う。

588 :586:04/12/19 16:39:38
>>587
ご回答有難うございます!

早速リダイレクトに関して調べ、TWebBrowserのonNavigateComplete2イベントや
onDocumentCompleteイベントでURLを拾い、パブリック関数に入れて実行したのですが
現象変わらず…でした。
(URL自体に変化がありませんでした…)

しかし、リダイレクトと言うのは考えていませんでしたので、もう少し調べてみます。
本当に有難うございました。

589 :デフォルトの名無しさん:04/12/19 16:44:15
OwnerDataを有効にした状態のListViewで
Itemのメモリを正しく解放するにはどうすれば良いのでしょうか?

例えば、ListView1のOwnerDataを有効にした上で

ListView1.Items.Add;
ListView1.Clear;

とするとMemCheckでリークが検出されてしまいます

590 :デフォルトの名無しさん:04/12/19 16:47:02
OwnerDataなんだから自分でownしないと駄目。
TObjectListとかに自分でインスタンスを保持しといて
ListViewからデータのリクエストがあったらそのリストからインスタンスを渡し
最期にリストごとまとめて自分で解放する。


591 :589:04/12/19 16:56:55
>>590
もしかしてOwnerDataが有効なListViewに項目を追加するにあたっては
Items.Addは不必要(というか、やっては駄目)でしょうか?
ListView項目追加にあたり、単にデータ保持用のインスタンスの項目と
Items.Countを調整してやるだけならリークしてない様なのです

592 :586:04/12/19 16:57:22
スレを汚すようで申し訳ないのですが、結果報告をします。

色々調べたところ、IdHTTPの『HandleRedirects』をtrueに設定することによって
無事取得することが出来ました!
解決に導いていただいた>>587さんに改めて御礼申し上げます。

593 :デフォルトの名無しさん:04/12/19 17:08:38
>>591
Countに個数セットして
OnDataイベントでItem.Indexに対応するオブジェクトを文字列化する
Item.Caption := Format('Data:%d', [Item.Index]);

Itemsには触らない。

594 :589:04/12/19 17:10:30
>>593
ありがとうございます
やっと仮想リストビューの使い方がわかりました

595 :デフォルトの名無しさん:04/12/19 17:19:00
delphi5、win2000で

ci : tcursorinfo;
getcursorinfo(ci);

とすると正常に動作しないです。
delphi5でtcursorinfoのヘルプないけどコンパイルは通ります。
自分何か勘違いしてますでしょうか?
tcursorinfoの構造体が違うんじゃないかなと・・・

596 :デフォルトの名無しさん:04/12/19 17:27:25
cbSize設定し忘れだろ。
ci.cbsize := sizeof(ci);
win32check(getcursorpos(ci));

597 :デフォルトの名無しさん:04/12/19 17:54:56
サンクス

598 :デフォルトの名無しさん:04/12/19 17:59:39
>>589
OwnerData=Trueの時はItems.Add, Insert を行ってはいけない。VCLのバグでリークが発生する。2005で修正されたかは確認できていない。
回避するには、Items.Countで要素数を変更するか、APIで追加を行う。

599 :577:04/12/19 20:25:23
色々と調べていますが、まだ解決できていません。
そこで、質問を変えようと思います。
ドライブ名からハードウェア名を得るにはどのようにしたら
よいのでしょうか?よろしくお願いします。

600 :デフォルトの名無しさん:04/12/19 20:30:03
Win32APIスレで聞きなよ。

601 :沸騰シミュレーション:04/12/19 22:03:23
http://www.vector.co.jp/soft/dl/win95/edu/se131169.html
これと同じようなソフトをDelphiで作りたいのですが

602 :デフォルトの名無しさん:04/12/19 22:12:08
勝手に作れ

603 :デフォルトの名無しさん:04/12/19 22:35:02
>>601
水が沸騰する様子をビデオに撮ってメディアプレーヤーコントロールで再生しましょう。
冷却するときは逆方向に再生するのがお勧めです。

604 :デフォルトの名無しさん:04/12/19 22:35:43
>>598
バグがなかった場合、OwnerDraw:=TrueでAddしたらどうなる(べきな)の?

605 :デフォルトの名無しさん:04/12/20 00:27:59
2005のパスの設定がわからないんですがわかる人いますか?

606 :デフォルトの名無しさん:04/12/20 00:30:20
日本語でもう一度

607 :デフォルトの名無しさん:04/12/20 00:33:57
2005以外で保存したprojectを開こうとしてもエラーがでるです。
で、PATHの設定を弄れば良いのかとおもったわけです?

608 :デフォルトの名無しさん:04/12/20 01:40:07
エラーの内容によるんじゃないかな。
本当にパスが問題なら、.NETの方とWin32の方で別口だから確認しなよ。

609 :デフォルトの名無しさん:04/12/20 06:55:20
>>599
フォームにシェルコンボボックスを貼り付けて、ビジブルプロパティーをフォルスにする。
あとは、シェルコンボボックスのリストアイテム(文字列とグリフ)にアクセスして取得する。

怒るなよ。決してふざけて書いてるんじゃない。最善の策が取れなければ、次善の策で対応することも必要だ。

610 :デフォルトの名無しさん:04/12/20 09:28:13
>>609
せめてカタカナはやめれ

611 :577:04/12/20 09:44:41
Del5にShellComboBoxがなかったので、ダウンロードして
使ってみました。いまいちできそうもない感じですが、
もうちょっと頑張ってみます。

612 :デフォルトの名無しさん:04/12/20 11:00:35
申し訳ありませんが質問させて下さい。(D6 Personal)

2つのフォームを持つアプリケーションを制作しているのですが…

 例えばこのような構成で、
 Unit1→Form1
 Unit2→Form2 Label1

 Unit1において
  Form2.Label1 := 'hogehoge';
 は可能なのに
  Form2.Visible := True;
 ではEAccessViolationクラスの例外としてエラーになります。
 どうすればUnit1からForm2のVisibleを制御できるのでしょうか?

613 :デフォルトの名無しさん:04/12/20 11:04:50
>>612
落ち着け。


614 :デフォルトの名無しさん:04/12/20 11:05:12
Form2 を生成する前にアクセスしてるからだろ

615 :デフォルトの名無しさん:04/12/20 11:10:01
http://www1.cncm.ne.jp/~ogawate/delphi/samples/samples.html
このページ、サンプル一杯あっていいな

616 :名無し募集中。。。:04/12/20 12:13:49
>>612
プロジェクトオプションでフォーム自動作成にしてればuses節に
Form2のpasファイル名書けばアクセスできる。

動的に作成するなら
Form2 := TForm2.Create(Self);
try
Form2に対してアクセス
finally
Form2.Release;
end;

617 :612:04/12/20 12:42:59
>613,614,616
616氏のやり方で出来ました。
どうもありがとうございます。



618 :デフォルトの名無しさん:04/12/20 15:19:06
>>599
delphi getlogicaldrivesでぐぐって最初に出てくる日本語ページを見れ

619 :デフォルトの名無しさん:04/12/20 15:25:50
>>618
それ激しく見当違い

620 :デフォルトの名無しさん:04/12/20 20:55:50
計算プログラムを作ってて、コンパイルは通ったのに、実行したところ
「EInOutError クラスの例外を生成しました。'I/Oエラー(32)'」
とのメッセージが出てきました。
これはどういったことが原因で起こるエラーなのでしょうか?

621 :デフォルトの名無しさん:04/12/20 20:59:11
説明

EInOutError 例外は,ファイルの入出力エラーが発生するたびに生成されます。

622 :620:04/12/20 21:04:35
そういえば

Assignfile(dum_f,dum_path+'\'+ChangeFileExt(dum_fn,'.txt'));
ReWrite(dum_f);

こういうコードのところでエラーが起きていました。
再チェックしてみます。
ありがとうございました


623 :デフォルトの名無しさん:04/12/20 21:22:33
ちゃんとCloseFileしてるか?

624 :620:04/12/20 21:39:02
大学の先生が作られたプログラムを別の目的で動かすために組み替えてる途中です。
今までは正常に動いていたのですが、あれこれ書き換えていた最中にエラーが発生するようになりました。
なんとか>>620にあるようなエラーはなくなったのですが、
今は浮動小数点演算などというエラーがでてきてトレース実行しながら点検中です。
浮動小数点演算に関するエラーは、0での割り算が行われていた場合に発生するエラーだったような気がするのですが、
どなたか教えてください。

625 :デフォルトの名無しさん:04/12/20 21:43:36
>>624
なにを?

626 :デフォルトの名無しさん:04/12/20 21:45:49
>>624
信じなさい

627 :620:04/12/20 21:46:52
信じてみます

628 :デフォルトの名無しさん:04/12/20 21:48:11
>>624
移植前のソフトではどういう対処してたの?

629 :620:04/12/20 22:06:01
私の知識じゃうまく説明できませんが、こんなことをやっています。

A:a.ループ計算 b.固定値
B:a.固定値 b.ループ計算(現在作成中のもの)

X:a.ループ計算 b.固定値
Y:a.固定値 b.ループ計算

XYはABの発展版で、すでにA、XYは完成しています。(私が作成したものではありません)
だからYを元にBを作っていけば簡単だろうと思って、
使われてる変数に注意しながらコピーペーストを繰り返していたところ
難問にぶつかってしまったというわけです。


630 :デフォルトの名無しさん:04/12/20 22:11:45
>>629
そんな漠然とした情報出したって意味ないよ。
エラーの出る箇所を特定してそこにブレークポイントはって
再度実行して各変数の値に異常がないか調べて
異常な値があったらその値がどこでセットされたかを調べて突き止めたら修正。
を地道に繰り返すしかない。

631 :デフォルトの名無しさん:04/12/20 22:12:19
基礎の文法、自分が計算したいことの背景原理、まずそれから

632 :620:04/12/20 22:15:43
明日が期限です。
おっしゃるとおりにやってみます。
うまくいったら報告しにきます。
ありがとうございました。


633 :名無し募集中。。。:04/12/21 00:13:20
>>632
浮動少数発生例外の種類知りたきゃ

try
浮動小数でなんたらかんたら〜
except
on EZeroDivide do ShowMessage('ゼロで除算しちゃった');
on EOverflow  do ShowMessage('オーバーフローれす');
on EUnderflow do ShowMessage('アンダーフローれす');
on EInvalidOp do ShowMessage('無効な演算発生');
end;

て書けば例外の種類に応じたメッセージが表示される
統合開発環境だとあまり意味ないかな


634 :デフォルトの名無しさん:04/12/21 01:04:43
すみません。例外処理についてなのですが。

Text := TStringList.Create;
try
 try
  Text.LoadFromFile(filename);
 except
  on EFOpenError do ShowMessage('エラー');
 end;
finally
 Text.Free;
end;

このようにやっても通常のEFOpenErrorが出てしまいます。
何が原因なのかさっぱり分からないのでアドバイスをお願いします。

635 :デフォルトの名無しさん:04/12/21 01:15:10
filenameのパス文字列をどう生成しているか、
そもそもfilenameが存在しているか?のチェックも必要なんでないの?

636 :634:04/12/21 01:19:01
ファイルを開くことはできています。
しかしプログラムが正しく動いているか確かめるために
わざとエラーを出させようとしたら、例外処理が働いていなかった
というわけです……。

637 :634:04/12/21 01:23:51
補足しますと、上記のエラーだけでなく
同様の方法でEConvertErrorも捕捉できませんでした。


638 :デフォルトの名無しさん:04/12/21 01:32:12
>>634
おかしいな?コピペして(全角空白は半角にしたけど)
動かしたらちゃんと「エラー」って出るよ。

↓コレやってみたらどうなる?デルファイに忠告もらうと思うけどw
procedure TForm1.Button1Click(Sender: TObject);
var text:TStringlist;
begin
try
Text := TStringList.Create;
try

Text.LoadFromFile('123');

except
on EFOpenError do ShowMessage('エラー');
end;

finally
Text.Free;
end;
end;

639 :名無し募集中。。。:04/12/21 01:37:19
>>636
エラーを出させるというのは無効なファイル名を指定して
意図的にEFOpenError例外を発生させるということなのかな?

試しに下のコード書いたらこちらでは動いたけど
ファイル名は存在しない名前で例外を補足出来る
procedure TForm1.Button1Click(Sender: TObject);
var
Text: TStringList;
begin
Text := TStringList.Create;
try
try
Text.LoadFromFile('E:\Temp\aa.tx');
except
on EFOpenError do ShowMessage('エラー');
end;
finally
Text.Free;
end;
end;

640 :名無し募集中。。。:04/12/21 01:43:39
もろかぶり
>>638失礼

641 :デフォルトの名無しさん:04/12/21 01:56:38
IDEから実行してて、デバッガが例外を報告してるのを見て、
例外を補足できてないと勘違いしてるっつーパターンでないの

642 :634:04/12/21 01:57:08
ダメなようです。
「ソースファイルが見つかりません」と出た後に「デバッガ例外が発生」となります。

ちなみにdelphi6 Personalです。
数日前に同じことを試したときはちゃんと動いた気がするんですが……。

643 :640:04/12/21 01:59:25
>>640
どーいたしまして。気にしない気にしない。

>>641-642
ありゃw
なんちゅータイミング。
解決ですな。

644 :638:04/12/21 02:01:01
640じゃないや。
トホホ。

645 :デフォルトの名無しさん:04/12/21 02:01:10
お手を煩わせてしまって申し訳ありません……。

>数日前に同じことを試したときはちゃんと動いた
このときも同じ勘違いしてたのを思い出しましたorz


646 :デフォルトの名無しさん:04/12/21 13:27:19
Del6のFileOpen標準アクションでファイルが選択されてOK押されたかどうかってどうやって判断するの?

647 :デフォルトの名無しさん:04/12/21 14:04:27
単純にダイアログのexecuteを呼ばず、
if not(opendialog1.execute) then exit;
とかやる。

648 :デフォルトの名無しさん:04/12/21 14:09:57
OnAccept

>>647
死ね

649 :デフォルトの名無しさん:04/12/21 14:24:35
質問以外は超初心者禁止なんですけど

650 :デフォルトの名無しさん:04/12/21 14:41:36
たしかに647の内容はひどい

651 :620:04/12/21 16:50:21
ループ計算させてるつもりなんですけど、結果が以下のような感じで最終計算結果だけしかテキストファイルに
出力されません。

49.999996224    22.2169675652865    1.5

--------------------------------------------------------

本来なら

49.999996224    13.1789910114626    0.01
49.999996224    12.9951821606033    0.02
49.999996224    12.9626502250015    0.03
49.999996224    12.951383041687 0.04
49.999996224    12.946190205465 0.05

           (右端の値について0.01*150でループ計算)

49.999996224    22.2169675652865    1.5

こんな感じで150個の値をテキストファイルに出力したいのですが、どのようにすればいいのでしょうか?

----------------------------------------------------------








652 :620:04/12/21 16:53:20
 for k :=1 to 150 do begin 
   
     temp_i0:=0.01*k ;             
     Rkg_setting.P_val[4]:=temp_i0;  

       if not RKG_Routine(RKG_setting,
                     dum_path,
                     dum_fn) then begin
         ShowMessage('計算に失敗しました');
         exit;
       end; //----(if not文)----

      StB_main.panels[0].Text := '出力中…';
      Application.ProcessMessages;
      if not RKG_ResultOut(dum_path,
                       dum_fn,
                       RKG_setting) then begin
      ShowMessage('結果の出力に失敗しました');
      exit;
      end;

 end;//----(for文)----           

  RKG_cal_flag := true;

  RKG_show_result;

  StB_main.panels[0].Text := '';
  
end;


653 :デフォルトの名無しさん:04/12/21 16:55:42
RKG_ResultOutの中の問題だろ

654 :620:04/12/21 16:57:08
他に思いつくような情報が見つかりません。
どうかアドバイスお願いします!

655 :620:04/12/21 16:58:23
チェックしてみます!
ありがとうございました!

656 :名無し募集中。。。:04/12/21 17:13:42
>>654
ファイルに書く時にAppendじゃなくてRewriteを使ってると見た

657 :デフォルトの名無しさん:04/12/21 17:24:58
RKG_ResultOutの中でファイル作成-出力・閉じるまでやってて
150回同じファイル名で作って書き出してるような希ガス。

658 :620:04/12/21 17:28:39
Assignfile(dum_f,dum_path+'\'+ChangeFileExt(dum_fn,'.log'));
    ReWrite(dum_f);

      Writeln(dum_f,'[実施日]');
      Writeln(dum_f,FormatDateTime('yyyy"."mm"."dd',Now));

        :
        :  
        :
        :
 

こんなものを見つけましたが、この残り時間で新しい技術にはとうていチャレンジできません!

659 :デフォルトの名無しさん:04/12/21 17:31:18
RewriteをAppendにする。

660 :620:04/12/21 17:31:42
すみませんが、それらしきコードをいっきにはりつけていきます。
めいわくでしょうが、どうかお許しください。

661 :デフォルトの名無しさん:04/12/21 17:34:55
>>660
だから、RewriteをAppendにするだけ。それで解決。

662 :620:04/12/21 17:34:58
Function RKG_Routine(dum_RKG_setting:TRKG_setting;
                     dum_path:String;
                     dum_fn:String):boolean;
var
  i,j ,k,l           :Integer;
  dum_loop       :Integer;                   
  k_temp         :array of Extended;     
  q_temp         :array of Extended;      
  y_temp         :array of Extended;           
  y_old          :array of Extended;          
  x_temp         :Extended;
  dum_f          :Textfile;
  dum_s          :String;
  dum_dy         :array of Extended;          
  dum_kk         :integer;
  dum_v          :array of Extended;
  dum_row        :integer;

663 :名無し募集中。。。:04/12/21 17:36:56
>>658

AssignFile(dum_f,dum_path+'\'+ChangeFileExt(dum_fn,'.log'));
if FileExists(dum_path+'\'+ChangeFileExt(dum_fn,'.log')) then
Append(fp)
else
Rewrite(fp);

try
 Writelnなんたかかんたら
finally
 CloseFile(dum_f);
end;

664 :デフォルトの名無しさん:04/12/21 17:38:52
だいたい'.log'なんて名前つけてるのになんでRewriteで開くかなぁw

665 :620:04/12/21 17:43:02
>>661さんの言われるとおりにやってみたのですが、問題が起きました。
確かに沢山の結果が出力されるようにはなったのですが、
このプログラムはメモ帳に設定条件が出力され、秀丸に計算結果が出力されるようなプログラムでした。
ここを変更したら、設定条件が沢山出てきてしまいました。

>>663さんの方法もためしてみたいのですが、頭が混乱しています!

666 :デフォルトの名無しさん :04/12/21 17:43:14
パッケージの削除をしたいのですが、
削除されません。
[コンポーネント]-[パッケージのインストール]
→設計時パッケージより選択し「削除」

で削除されるはずが・・・なんででしょう;

667 :620:04/12/21 17:46:24
ジオシティーズのHPを編集してるところです。
一度見ていただきたいのですが。

668 :デフォルトの名無しさん:04/12/21 17:47:05
>>665
計算結果側のRewriteだけをAppendに汁。全部置換したんだろ?

669 :デフォルトの名無しさん:04/12/21 17:51:16
予想される次の質問
今度は全部表示されたんですが、なぜか前回の計算結果まで表示されてしまいます!

670 :620:04/12/21 17:53:36
http://www.geocities.jp/c2_duke/delphi6.txt

こんな感じです。

671 :デフォルトの名無しさん:04/12/21 18:01:43
>>670
新手の釣りにしか思えない

672 :620:04/12/21 18:03:49
釣りじゃなくて、本当に素人です!
//******自分で追加  と書いてある項目以外は、全て先生が作ったものです。
本当に結果が最終結果だけしか出力されずに困り果てています。

673 :デフォルトの名無しさん:04/12/21 18:08:20
>このプログラムはメモ帳に設定条件が出力され、秀丸に計算結果が出力されるようなプログラムでした。
これはDelphiのプログラムとは関係ない話だよ。
プログラム自体は正常に動いてるんじゃないのか(Appendだけじゃ駄目だけど)。
メモ帳とか秀丸とか言われたってこっちは分からないよ。
話すならファイル名いいなよ。

674 :デフォルトの名無しさん:04/12/21 18:11:51
>>672
見てみた。最終結果だけ出すプログラムだから、あたりまえじゃんw
パラメータだけ出力する手続きと結果出力する手続きに分けなきゃできんよ。

675 :620:04/12/21 18:15:55
今から先生に怒られてきます(´・ω・`)

676 :デフォルトの名無しさん:04/12/21 18:18:13
拡張子txtにメモ帳が、logに秀丸が割り振られてる、ってとこだな。きっとw
Appendのままにしていらない項目のWritelnをコメントアウトすれば
とりあえず目的は達成されるんじゃない?

677 :620:04/12/21 20:20:48
先程はどうもです。
怒られはしましたが、ものの一瞬で修正個所を直してくれました。

if FileExists(dum_path+'\'+ChangeFileExt(dum_fn,'.txt')) then
      Append(dum_f)
    else begin
      ReWrite(dum_f);

なんかこんな文章を加えることで動くようになりました。

678 :デフォルトの名無しさん:04/12/21 20:58:36
その文の意味を理解しないと620は今後も同じ質問をすることになるな

679 :デフォルトの名無しさん:04/12/21 21:02:26
それは663とどこが違うのか。

ちょっと自分で考えるようにしたら?
要領よくだけでやってけないよ。

680 :デフォルトの名無しさん:04/12/21 21:10:47
ちなみに。DelphiでもFreePascalでもgpcでも、存在しないファイルに
Appendしてもファイルできるだけで例外になんないみたい。
そらそっちが便利だあね。いまどきこんな古い入出力使わないからいっか。

681 :デフォルトの名無しさん:04/12/21 22:50:11

テキストファイルの内容をMemoコンポーネントへ加筆表示させる方法がわかりません。

処理の過程をMemoコンポーネントへ表示しているのですが

文字をMemoへ加筆表示するには
 memo1.Lines.Add('処理1経過');
 memo1.Lines.Add('処理2経過');
この後、テキストファイルの内容を加筆表示したいのですが
 memo1.Lines.LoadFromFile('test.txt'); 
とするとMemo1に上書きされてしまい以前の表示が消えてしまいます。

レベルの低い質問で申し訳ありませんが,どなたかご教授お願い致します。

682 :デフォルトの名無しさん:04/12/21 22:57:15
procedure TForm1.Button1Click(Sender: TObject);
var
  sl:TStringList;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('C:\Test.txt');
    Memo1.Lines.Add(sl.Text);
  finally
    sl.Free;
  end;
end;

683 :デフォルトの名無しさん:04/12/21 23:10:42
>>682
ありがとうございます。
助かりました。
修行します。

684 :デフォルトの名無しさん:04/12/22 04:50:36
卒論の季節だねえ
つーか、前任のソースくらいあらかじめよんどけや

685 :デフォルトの名無しさん:04/12/22 09:37:32
>>680
>いまどきこんな古い入出力使わないからいっか。
これだからDel厨は・・・

686 :デフォルトの名無しさん:04/12/22 09:44:26
どうなんだろう。

687 :名無し募集中。。。:04/12/22 10:07:51
ファイル存在しないでAppendすると思いっきり例外発生するんだが
最近のDelphiは変ったのか?(Delphi7 Enterpriseでテスト)

688 :デフォルトの名無しさん:04/12/22 10:34:07
FreePascalでも例外になるやん。ファイル作られるのはgpcだけだ。

689 :デフォルトの名無しさん:04/12/22 15:28:19
D4からいきなりD2005に乗り換えて浦島太郎状態です。
VCLコンポーネント(TEditにちょっと手を加えた簡単なヤツ)の登録をしたいのですが、
HELPにある「コンポーネント>コンポーネントのインストール」というメニューに
行き着けず難渋しております。
(ウィザードに沿ってUnitが表示されるまでは行くが)
どなたかご教示願えませんでしょうか。

690 :デフォルトの名無しさん:04/12/22 15:39:36
FAQだ
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi2005%2FFAQ%5D%5D

691 :デフォルトの名無しさん:04/12/22 15:48:47
ありがとうございます > 690
要するに「dclusr」がないとウィザードで選択肢が出てこないようです。
助かりました。

692 :デフォルトの名無しさん:04/12/22 15:56:28
ヘルプの不備がFAQになってるのか・・・・

693 :デフォルトの名無しさん:04/12/22 16:08:00
古いネタで申し訳ないんだけど、
TListで削除や挿入をしてるとなぜ遅いんですか?
削除や挿入を頻繁にやるとしたらどうやって高速化するんですか?

ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その10
http://pc2.2ch.net/test/read.cgi/tech/1064423473/315
http://pc2.2ch.net/tech/kako/1064/10644/1064423473.html


694 :デフォルトの名無しさん:04/12/22 16:14:59
>>693
配列(TList)の挿入削除の計算量がO(n)だから。
O(1)なデータ構造(リンクリストなど)を選択すれば高速化可能だけど
その場合配列のメリットは手放さなければならない。

695 :デフォルトの名無しさん:04/12/22 16:23:55
>>694
Oの意味もカッコ内がなんなのかも、
配列のメリットがなんなのかも、
解決策も、
ぜんぜん通じてこないんですが、私嫌われてます?

696 :デフォルトの名無しさん:04/12/22 16:39:12
>>695
一言で言うとTListの挿入削除は本質的に遅いのでどうにもならないってことだよ。
リンクリストを使うとで解決できるものの今度は
ランダムアクセス(list[3]のように添え字を使ったアクセス)が出来なくなるし
メモリ効率も悪くなる。だから万能な方法はない。
だから問題の性質に応じて一番ましな方法を選ぶ必要がある。

リンク先読めないんだけど何がしたいんだ?

697 :デフォルトの名無しさん:04/12/22 16:54:09
リンク先は、私と同じようにTListが遅いと感じた人が
どのような解決を行っているかをググってみたら出てきただけで、
読んでもわかりませんでした。
ベクター構造とリスト構造があって、挿入と削除は遅いって書いてあるんだけど、
じゃぁ、挿入削除もしなきゃいけないけど、もうちょっと速くならないかって
思ってる同志が楽な方法見つけてないかな?と思って、
質問してみたけどよくわからないので来年あたりまた考えてみます。

698 :デフォルトの名無しさん:04/12/22 17:00:49
最初からTlist.capacityは大きくとってる?

699 :デフォルトの名無しさん:04/12/22 17:05:06
原理的には遅いけど、ポインタずらすだけだから実際的に遅いとは思わないけどね。

700 :デフォルトの名無しさん:04/12/22 17:05:37
>>697
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDeCal%2FMANUAL10H%5D%5D

701 :デフォルトの名無しさん:04/12/22 17:06:57
> 質問してみたけどよくわからないので来年あたりまた考えてみます。

考えて解決できるもんでもないけどね。原理的なものだし。ようは適材適所で選ぶしかない。って >>696 と同じか

702 :デフォルトの名無しさん:04/12/22 17:10:19
>>700
Setって、そんなに凄いんですか?

703 :デフォルトの名無しさん:04/12/22 17:14:14
TList の挿入削除の速度が気になるって、だいたい実際の要素数が数万と数十万とかの場合なような

704 :デフォルトの名無しさん:04/12/22 17:33:25
>>700
setはlist, vectorと保持する情報が等価じゃないし。
DeCalでは等価なの?

705 :デフォルトの名無しさん:04/12/22 17:40:07
>>704
DeCalは「データ構造を非常に簡単に変更できる」というのが長所みたい

706 :デフォルトの名無しさん:04/12/22 17:57:54
アルゴリズムの教科書でも買って読めよ
O(n)もわからんようでは、プログラム組めんと思うが

707 :デフォルトの名無しさん:04/12/22 19:02:22
場合によるんじゃないの?

708 :デフォルトの名無しさん:04/12/22 19:28:54
知らなくても普通に組めるだろ。
ただ、コンテナに対する操作のパフォーマンスの話がしたいなら知っておかないと駄目だろ。
話が長くなりすぎる。

709 :デフォルトの名無しさん:04/12/22 19:33:25
O(1) データ数に関わらず一定の計算量
O(n) データ数に比例した計算量
O(n^2) データ数の二乗に比例した計算量

で、あってる?>識者

710 :デフォルトの名無しさん:04/12/22 20:13:52
識者じゃないが合ってる。
手元の教科書にもそう書いてある。

ちなみにSetだとランダムアクセスできないよね確か。

711 :デフォルトの名無しさん:04/12/22 20:20:19
Delphiのソース弄るのに特に相性のいいテキストエディタってない?
便利なマクロが一杯公開されてるようなの。

712 :デフォルトの名無しさん:04/12/22 22:02:37
Delphi2005
リファクタリングも出来てうわなんだやめ

713 :デフォルトの名無しさん:04/12/23 01:48:12
結局D4から2005への移行は見送り

714 :& ◆OTJoAFsiZw :04/12/23 04:56:53
 その昔 Delphi2.0 時代のの TStringList では、1 万行を越えるような大きな文字列
をロード、もしくは追加しようとしたときに、極端に速度が低下したものだが、その後
修正されたのだろうか?

715 :デフォルトの名無しさん:04/12/23 11:03:00
メモリ16MB時代の話だろ

716 :デフォルトの名無しさん:04/12/23 15:22:37
>>711
テキストエディタって人によって使用感の好みがはっきりわかれてしまうから
あれだけどsakuraエディタとかでいいんじゃないの?

717 :ななしへたぐらま ◆XcB18Bks.Y :04/12/23 17:36:08
>>714-715
Delphi 3で修正されたようです.

ためしに文字列リストにランダムな文字列(長さ40〜80バイトランダム)を追加するベンチマークプログラムを作って調べてみました.
古いPC(MMX Pentium 200MHz RAM32MB Win95)では
Delphi 2.0でコンパイルしたものとDelphi 3やDelphi 5でコンパイルしたものとでは
0行から1万行に追加した場合に約5倍,2万行では約13倍の差が出ました.
新しいPC(Athlon 64 3000+ RAM512MB WinXP Pro)ではそれぞれ約4.5倍,6倍の差になりました.

(なお,Delphi 3ではCapacityプロパティが追加されましたが上記の結果はFalseのままです.)

Delphi 3とDelphi 5のClasses.pasを見るとCapacityを自分で設定しなくてもその数を
4→8→16→32→48→64→以後Capacityが足りなくなるたびに全体の4分の1を増やしているようです.
(Capacityを最初に設定した場合はさらにかなり速くなりましたので,
 あらかじめ数がわかっている場合はやはり設定すべきようです)

手元のDelphi 2.0がスタンダード版なのでソースコードを見ることはできませんが,
もしかしたら単純に4個ずつとか最悪1個ずつという感じで増やしているのかもしれません.


718 :& ◆XRJbgbO01w :04/12/23 19:14:14
>>717
サンクス!
俺はずっと気になってべあ氏のTLightStringsを使っていた。

719 :デフォルトの名無しさん:04/12/23 20:03:44
DelphiのIDEのエディタって超使いにくいんですが、
外部エディタを使えるとか、せめてキーカスタマイズできないのですか?
Turbo Pascalの頃は使いやすかったのに。

720 :グラフィック画面のちらつき:04/12/23 20:16:55
 以下にアップしたサンプルは単にグラフの格子を描くためだけのものです。将来的に
は関数等のグラフを描くソフトを作成しようとしているのですが、グラフのスケールの
拡大・縮小を実行すると画面がちらつきます。マウスドラッグで画面を移動するときは
特に問題はないようです。
 ちらつきの原因は何でしょう?
http://f31.aaa.livedoor.jp/~jword/cgi/nevada/upload/upload.html
の screentest.lzh


721 :デフォルトの名無しさん:04/12/23 20:39:11
>>720
ZoomInとZoomOutでRefreshしてるから。Refreshは一旦背景を消去する。
TMyScreenのControlStyleにcsOpaqueを含めて消去しないようにするか、Refreshの代わりにその自作のDrawでいいんでない?

722 :デフォルトの名無しさん:04/12/23 22:41:55
>>721
 おお、ありがとうです。
 ついでに聞きたいのですけど Invalidate と Refresh の使い分けはどうしたらいいのでしょう?
 ヘルプを見てもよくわからないし、ぐぐってもさっぱりです。


723 :デフォルトの名無しさん:04/12/23 22:48:04
>>722
これの一番下
http://www.itmedia.co.jp/enterprise/0307/04/epn23_7.html

724 :デフォルトの名無しさん :04/12/23 23:51:18
Delphi6personalなんですけどTShellListViewとTShellTreeViewをつかってエクスプローラみたいなの画面作ってるんですけど
TShellListViewの画面のファイルやフォルダをダブルクリックしたら独自の処理をしたいんです。
でOnDblClickにイベントハンドラ指定すると確かに独自の処理ができるけど、その後にファイルをダブルクリックしたら実行されるというエクスプローラと同じ処理が自動的になされてしまいます。この処理は余計なのでなくしたいんですけどどうすればいいのでしょうか。


725 :デフォルトの名無しさん:04/12/23 23:56:31
ふつうのやつ使う

726 :デフォルトの名無しさん:04/12/24 01:57:02
QuadrupleD3を使ってHeightMapを描きたいのですが
メッシュを動的に作成する方法、
頂点を操作する方法、
がわかりません。教えてください。

727 :名無し募集中。。。:04/12/24 02:00:03
>>724
AutoNavigateプロパティをFalse

728 :724:04/12/24 08:02:33
>>727
どうもありがとう!

729 :デフォルトの名無しさん:04/12/24 08:26:00
>>719
TPからそんなに変わってないと思うけど。具体的には?

730 :デフォルトの名無しさん:04/12/24 13:19:33
TPは全てのコマンドのキーカスタマイズが出来たな

731 :デフォルトの名無しさん:04/12/24 18:25:29
コマンドって・・・・

732 :デフォルトの名無しさん:04/12/25 11:49:32
StatusBarコントロールでAutoHint=Trueの設定を有効にしたまま
OnHintイベントハンドラに書かれている処理を実行させる方法はないのでしょうか?
Delphi6 Personalです。

733 :こまってます:04/12/25 16:39:02
質問があります。

Delphi7 Proを使っているのですけど、IDEから起動したプログラムを
終了した時に、デバッガで致命的なエラーが発生した事を示すエラー
メッセージが表示されてしまい再起動を促されるのですけど、どうす
れば解決できるでしょうか?
他の方でエラーメッセージとか表示された事のある人はいるでしょうか?

エラーメッセージが発生する条件は、コンパイラの”ヒント”が表示される
時のみです。例えば、以下のコードを実行して起動して終了した時など。

procedure TForm1.Button1Click(Sender: TObject);
var
B: Byte;
begin

end;

Delphi7はWindowsXP Home Sp1上にインストールしてます。

734 :デフォルトの名無しさん:04/12/25 16:39:52
パッチは全部あててあるのか?

735 :デフォルトの名無しさん:04/12/25 16:45:08
>>734
修正パッチは以下をあてています。

Delphi 7 - Indy ヘルプファイル・アップデート
VCL および RTL ヘルプファイル・アップデート

調べた所、まだこれだけしかないみたいですし。

736 :デフォルトの名無しさん:04/12/25 17:08:23
複数のコントロール(Label)をループをかけて配列に格納したいんですけど、
コントロール名を変数で指定することは可能でしょうか。

lbl_0
lbl_1
lbl_2

とあるときに、0,1,2の部分を変数で管理するということです。
どうすればよいのでしょうか。

737 :デフォルトの名無しさん:04/12/25 17:10:32
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%C5%BA%BB%FA%A4%F2%BB%C8%A4%C3%A4%C6%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%F2%BD%E8%CD%FD%A4%B9%A4%EB%A4%CB%A4%CF%5D%5D

738 :デフォルトの名無しさん:04/12/25 17:16:15
ありがとうございますorz

739 :デフォルトの名無しさん:04/12/25 18:02:01
>>735
Delphi 7.1 update出てるよ

740 :ななしへたぐらま ◆XcB18Bks.Y :04/12/25 22:05:23
>>719
Open Tools APIでプログラムを書けばキーアサインを追加したりできるようなのですが,
情報がほとんど無い少ないのが難点です.
私はサンプルなどを見よう見まねで
[Alt]+[I]/[J]/[K]/[M]でそれぞれ上左右下に移動するようにしています.

>>726
ゲーム製作技術板のDelphi関連のスレの方がレスがつきやすいと思いますよ.
いくつかリンクを貼っておきます.
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】
http://pc5.2ch.net/test/read.cgi/gamedev/1097836469/l50
Delphiゲームプログラミング相談室
http://pc5.2ch.net/test/read.cgi/gamedev/1006249204/l50
Delphiでアクションゲームが作りたい!! Part2
http://pc5.2ch.net/test/read.cgi/gamedev/1027482533/l50


741 :デフォルトの名無しさん:04/12/25 23:01:59
Delphi6を始めた者です。
ServerからClientにファイルを転送したいと思っています。
どのように書けばよろしいでしょうか。。

742 :デフォルトの名無しさん:04/12/25 23:40:52
>>741
まさか「サンプルを提示しろ」ってことじゃないよね?
まずは地道な検索から。

743 :デフォルトの名無しさん:04/12/25 23:56:49
>>742
ご返答ありがとうございます。
ClientからServerには送れたのですが(´・ω・`)

Delphiのネットワークプログラミングについて書かれている
オヌヌヌの本はありますでしょうか?

とりあえずは地道に検索してみます(`・ω・´)

744 :デフォルトの名無しさん:04/12/26 00:18:42
はじめまして。
Delphi7を使っています。
XMLのパースをRelaxNGで行いたいのですがどうやるのでしょうか?

745 :デフォルトの名無しさん:04/12/26 01:40:20
Delphi6(パーソナル)で、
variantのバイト数を取得したのですが、
どのようにしたら良いのでしょうか?

746 :デフォルトの名無しさん:04/12/26 01:50:47
取得したのをどう使うのかまで面倒みろと?

747 :デフォルトの名無しさん:04/12/26 01:51:38
>>745
そしたら次のステップとして Stringのバイト数の取得に挑戦しる。


748 :745:04/12/26 01:52:28
すみません。誤植でした。
正>variantのバイト数を取得したいのですが、


749 :デフォルトの名無しさん:04/12/26 02:09:17
誤「植」なのか

750 :デフォルトの名無しさん:04/12/26 06:41:07
ラベルコントロールのOnMouseEnterやOnMouseLeaveのようなイベントを
ほかのコントロールでも実現させる方法ってありますか?Del6です。

751 :デフォルトの名無しさん:04/12/26 07:21:42
>>745
VarToStrと、Lengthを検索しる


752 :デフォルトの名無しさん:04/12/26 08:02:47
>>750
とりあえず、OnMouseMoveでやってみたら。
コントロールの上にマウスポインタがあると発生する。
あるいは、ウインドウメッセージをハンドルする。

753 :デフォルトの名無しさん:04/12/26 09:34:20
文字列置換のための StringReplace って便利なんだけど、処理がやたら遅い(Delphi5)。
たとえば 'Delphi' という文字列を1万個含む1MB程度のテキストで、 'Delphi'を
'Borland' に置換するとちょっと古いマシン(Pentium 800MHz)では4分くらいかかる。
検索に AnsiPos を使ってるのが原因だと思うのだが、最近のDelphiでは少しは早くなっ
たのかな?


754 :デフォルトの名無しさん:04/12/26 09:58:29
うーん、文字列の置換がどう行われるかを想像できれば遅さは納得の範囲なんですけどね

755 :デフォルトの名無しさん:04/12/26 10:20:50
>>753
そういうのをどう解決するのかがプログラムの醍醐味なわけよ

756 :デフォルトの名無しさん:04/12/26 10:30:14
そうそう。がんばれば1桁速くできそうだね、それ。

757 :高速置換:04/12/26 10:46:36
まず検索関数から
//高速版 AnsiStrPos
function AnsiStrPosEx(StrStart, StrEnd, SubStrStart, SubStrEnd: PChar): PChar;
var
 p, ps: PChar;
 SL  : Integer;
begin
 p := StrStart;
 SL := SubStrEnd-SubStrStart;
 Result := Nil;
 while p < StrEnd do
 begin
  ps := SubStrStart;
  while ps^ = p^ do
  begin
   Inc(p);  Inc(ps);
   if ps^ = #0 then
   begin
    Dec(p,SL);
    Result := p;
    Exit;
   end;
  end;
  if p^ in [#$81..#$9F, #$E0..#$FC] then Inc(p);
  Inc(p);
 end;
 Result := Nil;
end;


758 :置換前半:04/12/26 10:48:24
function ReplaceStr(const S, FindStr, RepStr: string; UpLow: Boolean): string;
var
 PosList   : TList;
 DestIndex  : Integer;
 i,Count   : Integer;
 p, e, ps, pe: PChar;
 zs, zo: String;
begin
 zs := S; zo := FindStr;
 if UpLow then //大・小文字を区別しない
 begin
   zs := AnsiLowerCase(zs);
   zo := AnsiLowerCase(zo);
 end;
 Result := S;
 if FindStr = '' then Exit;
 PosList := TList.Create;
 try
  p := PChar(zs);
  e := p + Length(S);
  ps := PChar(zo);
  pe := ps + Length(FindStr);
  while p < e do
  begin //ソース文字列のどの位置に置換すべき文字列があるかをリストに保持
   p := AnsiStrPosEx(p, e, ps, pe);
   if p = nil then Break;
   PosList.Add(p-PChar(zs)+PChar(S));
   Inc(p, Length(FindStr));
  end;
  if PosList.Count = 0 then Exit;


759 :置換後半:04/12/26 10:49:09
  //置換後の文字列長さを計算し、バッファ領域を確保
  SetString(Result, nil, Length(S) +
   (Length(RepStr) - Length(FindStr)) * PosList.Count);
  p := PChar(S); //p を文字列の先頭に戻す
  DestIndex := 1;
  //位置リストを見ながらソースからバッファへMove。もちろん置
  //換すべきところでは、置換すべき文字列をMove。
  for i := 0 to PosList.Count - 1 do
  begin
   Count := PChar(PosList[i]) - p;
   Move(p^, Result[DestIndex], Count);
   Inc(p, Count);
   Inc(DestIndex, Count);
   Move(RepStr[1], Result[DestIndex], Length(RepStr));
   Inc(p, Length(FindStr));
   Inc(DestIndex, Length(RepStr));
  end;
  e := PChar(S) + Length(S);
  Move(p^, Result[DestIndex], e - p);
 finally
  PosList.Free;
 end;
end;


760 :デフォルトの名無しさん:04/12/26 11:16:49
いいねいいね、そんな感じ。置換すべき文字列の位置を一括して求め、置換後の長さを
計算し、メモリを確保してコピーすると、最少回のコピーで複数置換が出来るよね。

761 :デフォルトの名無しさん:04/12/26 11:18:03
デルフィ2005でEXEファイルを作る方法を教えてください。

762 :デフォルトの名無しさん:04/12/26 12:17:07
AnsiPosのPChar版のAnsiStrPosがあるからそれ使え。
それから大量の文字列を処理するのが分かってるなら
汎用性は欠けるけど拡張可能な自前のバッファ確保してそこに書き込めばよし。
汎用性を持たせるにしてもわざわざリスト持って長さ算出してなんて
オーバーヘッドでか過ぎ。

妄想終わり。

763 :デフォルトの名無しさん:04/12/26 12:25:19
確かに妄想だな
拡張を多数回やるから文字列の挿入が遅いのに
>>757 からのはオーバヘッドないよ。 汎用性も十分

764 :デフォルトの名無しさん:04/12/26 12:30:03
リスト生成廃棄のオーバーヘッドがあるだろ。
特に検索個数が0, 1がメインの場合無駄が大きい。
なんにしても計らなきゃ分からない。

765 :デフォルトの名無しさん:04/12/26 12:42:25

レベルの低い質問です。ごめんなさい。

MemoとRichEditの違いについて

Memoコンポーネントにテキストを入れ表示したものに対し、
マウスの第一ボタンで範囲をドラックし範囲指定し第二ボタンでコピーはできるのですが、
Memoの変わりにRichEditを使用すると、第一ボタンでは同じように範囲指定できるのですが、
第二ボタンでのコピー、カットが出来ません。

同じように使うことは出来ないのでしょうか。

どなたか、ご助言お願いいたします。

766 :デフォルトの名無しさん:04/12/26 13:04:59
>>758の置換が早いのは>>760が指摘している理由もあるが何より>>757
検索関数の仕様(テキストの途中から途中までの範囲で検索でき、かつ
テキストの長さを測るなどという処理を行わない)が優れていることが
大きい。俺は大いに感銘を受けた。
>>7621=764の言っていることは>>763が指摘したとおり。
それにしてもくだすれでこんな質の高いコードを目にするとは!
アップしてくれた人、ありがとう。

767 :デフォルトの名無しさん:04/12/26 13:21:57
strings をGetTextによってstringに変換して、
そのstringを、もう一度stringsに戻すにはどうすればいいでしょうか?
(改行コードを含むstringからstringsの作成と考えていただいてもよいです。)

768 :デフォルトの名無しさん:04/12/26 14:02:55
ORACLEテーブルのBLOB型列データをoo4oで読み込みたいのですが、
サンプルがあるURLまたは具体例などを教えて頂けないでしょうか?

769 :デフォルトの名無しさん:04/12/26 14:08:22
>>767

TStrings.Textにいれてやるんじゃ不満なのか?

770 :768:04/12/26 14:32:31
すみません、自己レスです。
とりあえず、サンプルが見つかりました。

771 :デフォルトの名無しさん:04/12/26 14:34:22
晒せよ

772 :デフォルトの名無しさん:04/12/26 15:27:12
Win2k、D6Personalでテキストエディタを作っているのですが、XPで実行するとやたら動作が遅いです
作っている2000で実行する分には何の問題もないのですが原因あるのでしょうか?

一応、下記のサイトを参考にルナスタイルに対応させてます
ttp://hp.vector.co.jp/authors/VA015850/delphi/tips/etc13.html

773 :ななしへたぐらま ◆XcB18Bks.Y :04/12/26 15:41:23
>>762
Delphi 5のSysUtils.pasを見るとAnsiPos関数はStrAnsiPos関数を呼び出していますよ.

>>765
メモコンポの右クリックで出てくるポップアップメニューと完全に同じにする方法はわからないのですが
とりあえずコピーとカットができればよいのでしたら…

・TPopupMenuコンポを新たに1個置く.
・リッチエディットコンポのPopupMenuプロパティにそのコンポを割り当てる
・TActionListコンポを1個置く(すでに置いてあればそれを使っても良い).
・それをダブルクリックしてアクション一覧ウィンドウを出す.
・[Shift]+[Insert]を押して『標準アクション』ウィンドウを出す
 (または[Insert]キーがなかったら▼をクリックして『標準アクションの新規追加』をクリック)
・分類が『編集』になっている項目をすべて選んでOKをクリック
・さっきおいたTPopupMenuコンポをダブルクリックしてメニューデザイナを出す
・空のメニュー項目が選択状態になっていると思うので,オブジェクトインスペクタでActionプロパティにEditCopy1を割り当てる
・空のメニュー項目が増えているのでそれをクリックで選び,オブジェクトインスペクタでActionプロパティにEditCut1を割り当てる
・同様にほかのアクションも追加


774 :デフォルトの名無しさん:04/12/26 18:48:04

765です。
773さん、ご丁寧にありがとうございます。

775 :デフォルトの名無しさん:04/12/27 02:33:39
メモ帳をやっと作れるようになった初心者です。
スキルアップの為に簡単なプログラムを作りたいのですが、
何がお勧めのものはないでしょうか?
ちなみにdelphi6パーソナルを使っています。
よろしくお願いします。

776 :デフォルトの名無しさん:04/12/27 02:41:48
>>775
頻繁使いそうなところで圧縮、解凍ソフト

777 :デフォルトの名無しさん:04/12/27 02:58:25
>>776
ありがとうございます。がんばって作ってみようと思います。

778 :デフォルトの名無しさん:04/12/27 06:35:40
DelWikiのTipにある"フォームやコントロールの状態を保存・復旧するには"ですが
複数のFormでも一つの設定ファイルに書き込み&読み込みする方法、何かよいやり方はあるのでしょうか?

779 :デフォルトの名無しさん:04/12/27 07:33:26
>>775
メモ帳って確か文字列の置換もできないし上方向の検索もできなかったんじゃ
なかったっけ?
だから圧縮、解凍ソフトもいいけど、メモ帳の機能を強化してもいいのでは。

780 :デフォルトの名無しさん:04/12/27 09:18:09
>>775
webやメール系の文章を扱うのなら、複数の文字コードのテキストの
読み込み・変換ってのを付けるってのも良いかも。

自分で組んでもそんなに難しくはないけど、nkf.dllを使えばより簡単だし
外部dllの使い方が分かって、いろいろなdllを利用できるようにもなるから、
非常に有益だと思う。

781 :デフォルトの名無しさん:04/12/27 10:28:32
>>778
ただのストリームだから追加していけばいいんじゃないの。
ただし先頭のフォームは新規でファイルを作り、
読み書きするのは常に決まった順番でないといけない。
例えばForm3を開くからForm3だけロードは難しい。

782 :デフォルトの名無しさん:04/12/27 16:42:38
あの、低級な質問なんですが
EXEのアイコンってDelphi2005で作れるのでしょうか?
作れたらどうやって作るのか教えてください。

783 :デフォルトの名無しさん:04/12/27 16:57:03
ツール|イメージエディタ
フリーウェアのがよっぽど使いやすいが。

784 :782:04/12/27 17:16:55
>>783
ありです
フリーで探してみます

785 :デフォルトの名無しさん:04/12/27 17:30:55
オイラはEdgeで作ってる

786 :デフォルトの名無しさん:04/12/27 17:38:03
プログラム内で実行マシンのプライベートIPを取得したいのですが、どうしたら良いのでしょうか?

787 :デフォルトの名無しさん:04/12/27 17:44:59
>>786
>実行マシンのプライベートIP
というのが意味不明だけど、こういうことか?
ttp://www.borland.co.jp/qanda/delphi/d0009357.html

788 :デフォルトの名無しさん:04/12/27 17:50:24
>>787
LANにぶらさがってるマシンに割り当てられるプライベートIPを取得したいという意味だったのですが
ClientSocketを貼ればできるような気がしてきました、ありがとうございます

789 :デフォルトの名無しさん:04/12/27 18:17:25
冬休み暇なので無料版でブラウザを作ってるのですが
標準で使うブラウザ情報ってレジストリのどこにあるのですか?
できたらレジストリからデータの取得方法も教えてください

790 :デフォルトの名無しさん:04/12/27 19:28:48
>789
HKEY_CLASSES_ROOTのhtmlfileとhttpとhttps
TRegistryのRootKeyを設定して、OpenKeyでキーを開いて、ReadStringで値を読む。

791 :デフォルトの名無しさん:04/12/27 19:58:35
接続中にServerでClientのIPを取得したいのですが、どうすれば良いでしょうか。

792 :デフォルトの名無しさん:04/12/27 20:05:28
>>791
TIdUDPServerならOnUDPReadイベントで渡されるABinding.PeerIPで取れるが
他は試したことがないのでわからない。

793 :デフォルトの名無しさん:04/12/27 20:20:53
>>790
ありがと(

794 :デフォルトの名無しさん:04/12/27 20:56:05
何度もすいません
var
  Reg: TRegIniFile;
begin
Reg := TRegIniFile.Create('HKEY_CLASSES_ROOT\htmlfile\shell\open\');
  try
ShowMessage(Reg.ReadString('command', '', ''));
finally
Reg.Free;
end;
end;

こんな感じでやってみたのですが何も出力されません
regeditで見てみて、(標準)というところに格納されているのですが、どうやって取り出すのでしょうか?

795 :デフォルトの名無しさん:04/12/27 21:23:59
ScrollBoxにImageを貼り付けImageのAutoSizeをTrueにすればスクロールバーでは画像を動かすことが
できますが、このとき画像をマウスでつまんで(^^;)動かすにはどうしたらいいのでしょう? 次のよ
うにやってみたのですが全然ダメでした。
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 If Button = mbLeft Then Image1.BeginDrag(False);
end;

procedure TForm1.ScrollBox1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
begin
 if Source is TImage then
 begin
  Accept:=True;
  Image1.Left:=X;  Image1.Top:=Y;
 end;
end;

procedure TForm1.ScrollBox1DragDrop(Sender, Source: TObject; X,
 Y: Integer);
begin
 Image1.Left:=X; Image1.Top:=Y;
end;


796 :デフォルトの名無しさん:04/12/27 22:03:12
>>795
Image1.DrugMode = dmAutoMaticにしてないのではないかという気もするが。
それ以上に気になるのが、スクロールバーのPositionプロパティに値を代入していないことなんだが。
これだと、スクロールボックスの中で、イメージ1がスクロールバーに関係なく動いてしまうんじゃないか。

797 :795:04/12/27 22:35:32
ああ! そうだと思って以下のようにしたのですが結果は同じです。
しかし、ScrollBox1.DrugMode = dmAutoMaticにすれば時々動きますが変な動きをします(^^;)。
こういう場合(ScrollBoxがImageのParent)はドラッグしたいのはImageなので
ScrollBox1.DrugMode = dmManual
でいいと思うのですけど・・・・。
procedure TForm1.ScrollBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source is TImage then
begin
Accept:=True;
Image1.Left := X;
Image1.Top := Y;
ScrollBox1.HorzScrollBar.Position := -X;
ScrollBox1.VertScrollBar.Position := -Y;
end;
end;


798 :デフォルトの名無しさん:04/12/27 23:14:06
>>795
はるか昔に、delphi-MLで同じような質問を見た記憶がある。
「猫の手スクロール」等のキーワードでMLを漁ってみてそ。

799 :デフォルトの名無しさん:04/12/27 23:54:45
ドラグ関係なし。

800 :デフォルトの名無しさん:04/12/28 05:10:14
ドッキングやメニューをOfficeXP風にしたいのですが、そのようなコンポーネントはないでしょうか?

801 :デフォルトの名無しさん:04/12/28 09:21:31
>>795
最近同様の質問があったようなと・・・
http://pc5.2ch.net/test/read.cgi/tech/1062422335/490-501

802 :デフォルトの名無しさん:04/12/28 09:37:35
>>800
Toolbar2000
ttp://www.jrsoftware.org/
TBX(Toolbar2000のアドオン。要Toolbar2000)
http://www.g32.org/tbx/index.html

DecExpress ExpressBars Suite
ttp://www.devexpress.com/products/VCL/Exbars

メニューのみなら
XPMenu(フリー)
ttp://www.shagrouni.com/english/software/menu.html

ツールバーのみなら
TMS TAdvToolButton
ttp://www.tmssoftware.com/

803 :デフォルトの名無しさん:04/12/28 11:09:49
>>801
それを参考に
 private
  FDownFlg :Boolean;
  FPosX :Integer;
  FPosY :Integer;

procedure TForm1.ScrollBox1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FDownFlg := True;
 FPosX := X; FPosY := Y;
end;

procedure TForm1.ScrollBox1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FDownFlg := False;
end;

procedure TForm1.ScrollBox1MouseMove(Sender: TObject; Shift: TShiftState;
 X, Y: Integer);
begin
 if FDownFlg then
 begin
  ScrollBox1.HorzScrollBar.Position := X-FPosX;
  ScrollBox1.VertScrollBar.Position := Y-FPosY;
 end;
end;
としましたが、だめでした(;_;)。



804 :デフォルトの名無しさん:04/12/28 11:14:41
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FPosX := X;
 FPosY := Y;
end;

procedure TForm1.Image1StartDrag(Sender: TObject;
 var DragObject: TDragObject);
begin
 (Sender As TControl).Enabled := False;
end;

procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
 (Sender As TControl).Enabled := True;
end;

procedure TForm1.ScrollBox1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
begin
 Accept := True;
 (Source As TControl).Left := X - FPosX;
 (Source As TControl).Top := Y - FPosY;
end;
では何とか動きました。ただマウスの位置によっってはImage1MouseDownしただけで
(つまりドラッグしていないのに)そのマウスの位置にImage1のLeft、Topが移動し
ます。


805 :デフォルトの名無しさん:04/12/28 11:28:38
>>803
OnMouseMove で FPosX と FPosY を更新してないね

Image の上で操作したいのになぜ ScrollBox のマウスイベントを使うのか謎

806 :デフォルトの名無しさん:04/12/28 11:31:12
あと変化分だけスクロールするなら

ScrollBox1.HorzScrollBar.Position := X-FPosX;

じゃなくて

ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position + X-FPosX;

のような

807 :デフォルトの名無しさん:04/12/28 16:29:52
行番号を表示するやり方教えてください・・


808 :デフォルトの名無しさん:04/12/28 16:36:21
標準では無理なんじゃないの。そういうアドインがあると言うのも聞いたことないし。

809 :791:04/12/28 16:58:22
>>792
なるほど。ありがとうございます。


当方6Personalなのですが_っぽいですか。

810 :デフォルトの名無しさん:04/12/28 17:03:15
2005CDの焼き直し版来たぞ

811 :デフォルトの名無しさん:04/12/28 17:32:57
配列プロパティで、レコードの読み書きをする場合、
ゲッターは値渡しになるのでしょうか?
だとしたら、アクセスに無駄があると思うのですが、
かと言って、プロパティでポインタを返すのも変ですよね?

812 :デフォルトの名無しさん:04/12/28 17:42:21
>>809
6PerでもIndyをインストールすれば良いはず。
インストールしたとして、TIdUDPServerでいいかどうかはおまいさんの作りたいソフト次第。
他のコンポについてはわからないから、偉い人降臨きぼん。

813 :デフォルトの名無しさん:04/12/28 19:57:46
Indyで指定したURLがリンク切れ(Not Foundとか)になってないかどうか調べたいのですが、
どうしていいのか見当も付きません。
なにか良い方法はありませんか?

814 :デフォルトの名無しさん:04/12/28 21:29:00
>>813
ResponseCodeのことか?

815 :813:04/12/28 22:24:35
まさにそれでした。ありがとうございます!

816 :デフォルトの名無しさん:04/12/29 02:45:31
バイナリを弄るツールを作りたいのですがどのようにソースを打ったらいいのでしょうか?
バージョンは2005です

817 :デフォルトの名無しさん:04/12/29 03:07:29
>>807
Delphi2005

818 :デフォルトの名無しさん:04/12/29 04:30:40
>>816
実際に弄るコードはこんな感じ。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%C6%C9%A4%DF%BD%F1%A4%AD%A4%B9%A4%EB%A4%CB%A4%CF%5D%5D#content_1_7

819 :デフォルトの名無しさん:04/12/29 08:46:13
Delphi2005なのですがポップアップで「致命的なエラーです。」と出てブラクラ状態になりました。
助けてください

820 :デフォルトの名無しさん:04/12/29 09:03:15
>>819
それじゃ答えようがない。
どんなコンポーネットが配置しあって、どういう状態でポップアップメニューを出すとエラーになるのか。
フォーム上はどこでもエラーになるのか、特定のコンポーネントの上なのか。
どのユニットのどのメソッドでエラーになっているのか。
(多くはInterface部でUsesしているユニットでエラーが出ていると思う。存在しないオブジェクトをたたいていることが多い)
このへんを上げたら、何か反応が返ってくるかも。

あとブラクラ状態って何だ?

821 :デフォルトの名無しさん:04/12/29 09:12:09
>>820
アプリを作っている途中で一回コンパイルに失敗してから終了させたらこういうエラーがでて閉じても閉じても閉じられませんでした。
ちなみにほかのときは大丈夫でした。
で、最終的には再起動して終了させました

822 :デフォルトの名無しさん:04/12/29 11:50:42
var
MS: TMemoryStream;
s: string;
begin
MS := nil;
try
MS := TMemoryStream.Create;
s := 'ほげほげ';
MS.Write(s, Length(s));
MS.SaveToFile('c:\ほげほげ.txt');
finally
MS.Free;
end;
end;

といったような事をやると、保存したファイルが文字化けしたような状態になってしまうのですが
ちゃんと保存する方法はないのでしょうか?
普通ならTStringListあたりを使うんだと思うのですが、改行コードが自動的にCRLEになってしまうのでいやなんです。

823 :デフォルトの名無しさん:04/12/29 12:13:57
MS.Write(s[0], Length(s));
じゃなかったっけ?

824 :デフォルトの名無しさん:04/12/29 12:47:33
>>821
配置したコンポーネントを参照するコードを書いて、その後仕様変更でコンポーネント削除して、コードはそのままなんじゃないか?



825 :デフォルトの名無しさん:04/12/29 13:15:18
>>823
stringは添え字1から。

826 :デフォルトの名無しさん:04/12/29 13:23:50
D2005 使うなよ・・・・・

827 :デフォルトの名無しさん:04/12/29 14:12:01
>>826
なんで?すごくいいんだけど?

828 :デフォルトの名無しさん:04/12/29 14:18:20
どこがいいの?

829 :デフォルトの名無しさん:04/12/29 14:20:00
D7 よりバグがいっぱいで楽しい

830 :ななしへたぐらま ◆XcB18Bks.Y :04/12/29 14:35:09
>>811
『Object Pascal言語ガイド』より(Delphi 4版ですが)―――

・静的配列型,レコード型,集合型の関数結果の場合,値が1バイトを占有する場合はALに,値
 が2バイトを占有するときにはAXに,値が4バイトを占有する場合はEAXに結果が返される。そ
 の他の場合は,宣言されたパラメータのあとに関数に渡される追加のvarパラメータに結果が返さ
 れる。

―――ということでレコード型では値渡しにはならないようですが,
1レコード全体の内容をコピーすることには変わりなく,
それによるオーバーヘッドが無くなるわけではないので
大きなレコードを大量に処理するような場合は影響が出るかもしれません.

一方,レコード型の値をポインタで渡すことは変ではないと思います.
私のつたない経験ではむしろレコード型のポインタ型にする方が使いやすいと思います.
なぜならレコードの一部だけを変更する処理がシンプルになるからです.

レコード型ならこんな感じ:
 Rec := NantokaObj.Records[i];
 Rec.FamilyName := 'Sato';
 NantokaObj.Records[i] := Rec;

ポインタならこんな感じ:
 NantokaObj.Records[i]^.FamilyName := 'Sato';

※ポインタの場合でもレコード全体をコピーする場合は以下のようにそれぞれ1行で書けます.
NantokaObj.Records[i]^ := Rec;
Rec := NantokaObj.Records[i]^;


831 :ななしへたぐらま ◆XcB18Bks.Y :04/12/29 14:57:49
>>791
TIdTCPServerならピアスレッドのConnection.Socket.Binding.PeerIPで取れるようです.

特定クライアントとの接続に関するイベントハンドラ(OnServerConnectなど)では
パラメータAThreadがそのピアスレッドですからここから参照できます.

接続中に一覧を取得したい場合はThreadsプロパティにピアスレッドのリストが入っているのでこれを使います.

var theList: TThreadList; ClientIP: string;

 theList := IdTCPServer.Threads.LockList;
 try
  // 接続している各クライアントについて…
  for i := 0 to pred(theList.Count) do
  begin
   theThread := TIdPeerThread(theList[i]);
   ClientIP := theThread.Connection.Socket.Binding.PeerIP;

   // ※処理※

  end;
 finally
  IdTCPServer.Threads.UnlockList;
 end;


832 :デフォルトの名無しさん:04/12/29 16:51:49
>>823, >>825
キタ━━━(゚∀゚)━━━!!!!!
上手くいきました。サンクスです。


833 :813:04/12/29 17:21:05
たびたび質問すみません。
>>814さんに教えて頂いたResponseCodeをさっそく試してみたのですが、
URLの指定の仕方がまったくわかりません。
どうやって指定すればいいのでしょうか?

834 :デフォルトの名無しさん:04/12/29 18:24:11
>>833
Get なり Head なりのメソッドでリクエストかけれ

835 :デフォルトの名無しさん:04/12/29 18:31:43
状態を知りたいだけなら Head か

836 :813:04/12/29 18:56:49
headに404なアドレスを渡すとエラーが発生してしまうのですが、
これは
try
IdHTTP.head('http://tyometyome.com/');
except
end.
のようにスルーしちゃっていいものなんでしょうか?

837 :811:04/12/29 19:06:21
>>830
詳細なご解説本当にありがとうございました。
Delphiでは、なるべく直感的なプログラミングを心掛けていましたが
この場合は、ポインタを使ったほうがよりスマートになりそうですね。

838 :デフォルトの名無しさん:04/12/29 20:43:17
>>836
それは813がやりたいこと次第だな。
言語例外はライブラリが「あえて」起こすもので、単なるエラーとは違う。
どう処理するかはプログラマーがやりたい事に即して決めるものだ。

839 :デフォルトの名無しさん:04/12/29 21:34:34
del4,5,6,7のプロ版のうち、どれか一つ友人からもらうことになりました。
どれがおすすめですか?

一応、自分のマシンは400MHZ,256MBのAMDK6-2マシンです。

使用目的は、Delphi言語の学習&フリーウエアの制作(夢)です。
友人は6,7のうちどちらかを手元に残して置きたいそうなので、
4,5あたりをもらおうかと思うのですがどうでしょう?

840 :デフォルトの名無しさん:04/12/29 21:39:51
……。

841 :デフォルトの名無しさん:04/12/29 21:43:14
6のPersonalで十分だろ

842 :839:04/12/29 21:45:08
>>841
いや、その友人はプロ版しかもっていないので
パーソ版をくれとはいえないのです。

843 :デフォルトの名無しさん:04/12/29 21:49:27
通報しますた。

844 :デフォルトの名無しさん:04/12/29 21:52:00
>>842
6のプロ最強っす。
もらっとけばー。

845 :デフォルトの名無しさん:04/12/29 22:17:10
>>839
ずばり6。
5でも悪くはないが、6にでは、一部のイベントが拡張されている(TlabelのOnMouseEnterなど)。
7は、重いし、6とあまり変わってない。仕様許諾で、個人情報をもっていかれるのが気色悪い。

846 :デフォルトの名無しさん:04/12/29 22:27:40
だからDel7は登録せずとも使えると何度言えば・・・

847 :デフォルトの名無しさん:04/12/29 22:31:37
>>839
釣られているかと思うが、マジレスするとさ、
その友人は多分、アップグレード版で各バージョンを
揃えているはずだからさ、アップグレードした前のバージョンを
人にあげるのは、ライセンス違反だから気をつけなよ。

Borlandはかなりライセンスについてはケチなので。

848 :デフォルトの名無しさん:04/12/29 22:41:59
いや、839とその友人の人格が融合して一人になれば全バージョン使い放題だよ。

849 :デフォルトの名無しさん:04/12/29 22:45:42
6はPersonal版のおかげで一番多く出回っているし開発実績も多いと言ってみる。

850 :デフォルトの名無しさん:04/12/29 22:47:58
> 使用目的は、Delphi言語の学習&フリーウエアの制作(夢)です。

6per でいいじゃん。ライセンスもオッケーだし。

851 :デフォルトの名無しさん:04/12/29 22:53:03
>>849
Delphiでぐぐると
>Borland - Delphi 6 Personal Download
がトップ項目に出てくるしな・・・
某にとっていいこととも思えないが。

852 :デフォルトの名無しさん:04/12/29 23:02:04
母集団が大きくなるメリットとタダで配布のデメリット
どちらが得かは非常に微妙なところだ

853 :デフォルトの名無しさん:04/12/29 23:05:32
per落として浮いた金で書籍買うわけでもなし
単に潰した暇をドブに捨ててるだけだから日本全体の損失だよ。
そんな暇があったら働いて彼女作って子供作って収入を力の限り消費しなさい。

854 :813:04/12/29 23:10:45
>>838さん、レスthxです。
例外処理は「もうだめぽ」というよりは「注意」程度のものとして考えてもいいんでしょうか
てっきりもうなにもできないからプログラム死ぬのを待つもんだと思ってました。
やっぱりエラートラップ仕掛ける事にします。ありがとうございました。

855 :デフォルトの名無しさん:04/12/29 23:14:15
try
IdHTTP.head('http://tyometyome.com/');
ヘッダが取れた
except
ヘッダが取れない
end.
で分岐するコードを書けばいいんだろ

856 :デフォルトの名無しさん:04/12/29 23:16:28
まっ、これからDelphiやり始めることが果たしていいことなのかどうかは微妙。
オレだったらC#をすすめるが

857 :デフォルトの名無しさん:04/12/29 23:17:14
end; な

858 :813:04/12/29 23:19:05
>>855さん
そんな感じでやってみる事にします。
取得できないときにResponseCodeを使うことにしました。

859 :デフォルトの名無しさん:04/12/29 23:38:48
C#は意外と難しいからC++のように挫折する可能性あり

860 :デフォルトの名無しさん:04/12/29 23:51:14
Delphiより簡単、入門本も山ほどあるし

861 :デフォルトの名無しさん:04/12/29 23:52:23
ヘルプも充実してるしね

862 :デフォルトの名無しさん:04/12/30 00:15:39
>>839
DVDに全部焼けばいいじゃないか。
それよりも、本気でやるならもう少しPCいいもの使ったほうがいいいよ。

863 :デフォルトの名無しさん:04/12/30 00:20:50
メディアの話ではないんだが・・・・

864 :まとめ:04/12/30 00:21:15
>>839
Delphi6 Personalは無料で入手可能。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi%A4%CE%C6%FE%BC%EA%A4%C8%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%5D%5D
それに対してもらうのはライセンス違反の可能性大。
違反してまで古い4,5を使うメリットはないからやめとけ。

865 :デフォルトの名無しさん:04/12/30 00:40:15
>>866
だまりなさい いぬちくしょうめ
おまえに しゃべる けんりなど ないのです


866 :デフォルトの名無しさん:04/12/30 00:46:21
わんわん

867 :デフォルトの名無しさん:04/12/30 02:08:32
ついに でるふぁい を てにいれたぞ

868 :デフォルトの名無しさん:04/12/30 03:16:32
→そう、かんけいないね

  ゆずってくれ!たのむ!

  ころしてでも、うばいとる

869 :デフォルトの名無しさん:04/12/30 09:34:45
>>856
C#rろくにやってないのがばればれ

870 :デフォルトの名無しさん:04/12/30 09:43:16
>>869
>>856はライターですから…


871 :デフォルトの名無しさん:04/12/30 10:48:17
>>867-868
ガラハドワラタ

872 :デフォルトの名無しさん:04/12/30 11:13:42
>>869 はC#を挫折したのか? アフォばればれだな

873 :デフォルトの名無しさん:04/12/30 11:18:06
938 :デフォルトの名無しさん :04/12/30 09:06:54
今年、ちょと気になったこと。

GDN掲示板でDel>>>C#乗り換え厨らしい人をたくさん見たこと。

>>869 みたいに沈みかけた船から乗り換えられない人もいるんだな

874 :デフォルトの名無しさん:04/12/30 11:20:29
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室だけじゃ檻足りないのかな。

875 :デフォルトの名無しさん:04/12/30 11:22:17
冬休みに突入するといろんなことがある。

876 :デフォルトの名無しさん:04/12/30 12:28:04
ClientSocketとServerSocketでListBox全体を送受信するにはどうすればいいんでしょうか(^^;)

877 :デフォルトの名無しさん:04/12/30 14:21:30
>>876
プロトコルを決めれば自ずと結果は導き出されるだろ・・・

878 :デフォルトの名無しさん:04/12/30 14:25:22
馬鹿は無理してレス付けなくていいよ。
部屋の掃除でも指定なさい。

879 :デフォルトの名無しさん:04/12/30 16:21:25
SendText,ReceiveBuf(ClientReadイベントで処理) を使う
ただしSTX,ETX(crlf)等の区切りを意識して送受信


880 :876:04/12/30 17:07:57
>>879
ありがとうございます。やってみます。

881 :デフォルトの名無しさん:04/12/30 17:09:18
ListBox1.Items.Textをバイナリで送るとか

882 :デフォルトの名無しさん:04/12/30 17:59:18
>>802
Toolbar2000とTBXを使ってみたいんだけど、ライセンスがよくわからん…。
フリーウェアなの?

883 :デフォルトの名無しさん:04/12/30 18:08:58
>>882
シェアウェア


884 :デフォルトの名無しさん:04/12/30 18:43:56
>>883
Toolbar2000のregisterのところに
Registration is required if you use Toolbar2000 in any applications that you or your organization are profiting from (e.g., commercial or shareware).
とあるけど、これってフリーウェアなら登録は必要ありませんってことじゃないんですか?

885 :デフォルトの名無しさん:04/12/30 20:33:41
ありがとうございました。

886 :デフォルトの名無しさん:04/12/30 21:56:11
タスクバーのアプリケーションウィンドウを右クリックしたときに出るメニューを
編集するにはどうしたらよいのですか?

887 :デフォルトの名無しさん:04/12/30 22:02:49
タスクバーのウィンドウ?

888 :デフォルトの名無しさん:04/12/30 22:17:11
GetSystemMenu(
AppendMenu(
とかを使う。


889 :デフォルトの名無しさん:04/12/30 22:23:00
>>888
うげ、ちらっと調べてみたけどこんなにめんどくさい方法しかないの?
MainMenuとかみたいにメニューデザイナで編集したりはできない?

890 :デフォルトの名無しさん:04/12/30 22:31:16
専用コンポがある
名前忘れたけど
PopupMenu指定するだけのやつ

891 :886=889:04/12/30 22:41:07
>>890
いくつかのコンポーネントがみつかりました。
ひとつずつソースを見ながら試してみようと思います。
いろいろありがとうございました。

892 :デフォルトの名無しさん:04/12/30 22:43:19
うーむ、コンポをつくるヤツ、それないと何にも出来ないヤツ、いろいろだな

893 :デフォルトの名無しさん:04/12/30 22:45:30
>>891
名前おせーて

>>892
万人が下水道這いずり回ったりバキュームカー運転したりする
低レベル作業員である必要はないからな


894 :デフォルトの名無しさん:04/12/30 22:56:29
低脳重役ばっか

895 :デフォルトの名無しさん:04/12/30 23:07:46
>>894
そうだね。それがDelphiのいいところでもあるんだよ。実装を一切知らずにコンポ
探し回ってなんとかアプリの形を整える。で、バージョンアップなどでコンポが使えな
くなったりすると青ざめる。そんなのの繰り返し。だから他へ移れない。

896 :デフォルトの名無しさん:04/12/30 23:09:46
低レベル作業員が一番賢そうだな・・・・

897 :デフォルトの名無しさん:04/12/30 23:21:59
D2005で初めてC#に触れてみましたがDelphiみたいな感じですね。
VS.NETに移行しても問題ないかなぁって思いました。w

898 :デフォルトの名無しさん:04/12/30 23:30:41
いままでなにが問題だったの?

899 :デフォルトの名無しさん:04/12/30 23:33:09
C#がDelphiみたいと言ってる奴は全く理解できていない証拠。
Delの機能と対応している部分しか見ていない。
C#+.NETFWははるかに高機能で複雑だよ。
それを理解した上でなおDelphiを選択する奴は
よっぽど開発・実行環境が劣悪なんだろうな。あるいはおつむが。

900 :デフォルトの名無しさん:04/12/30 23:35:15
>>899
もちろん対応している部分を見て言ってるんだがw

901 :デフォルトの名無しさん:04/12/30 23:41:20
そりゃ対応してる部分はDelphiみたいだろうな。対応してるんだから。バカだなぁ。

902 :デフォルトの名無しさん:04/12/30 23:42:00
>>899
よかったらその高機能な点を教えてください。

Win32アプリだったらDelphiが現時点で
最強のツールであることに依存はないと思うけど
乗り換えるような魅力はあるのですか?

903 :デフォルトの名無しさん:04/12/30 23:42:36
C# は言語としては簡単だよ。
>>899 が言ってるのは .NET のライブラリの部分。VCL より巨大な迷路だと言えるね。
べつに Delphi.Win32 と機能がかぶってるわけじゃないら使い分ければいいだろ

904 :デフォルトの名無しさん:04/12/30 23:44:00
> 乗り換えるような魅力はあるのですか?

乗り換える必要はない。ただ、平行してやっておく価値はある、と断言できるよ。

905 :デフォルトの名無しさん:04/12/30 23:44:16
C#が簡単で理解したつもりになってるアホ一匹

906 :デフォルトの名無しさん:04/12/30 23:46:39
>>902
> よかったらその高機能な点を教えてください。

そんなのMSDNへいって.NET のレファレンス見てご覧。かなり VCL に似てるけど
それより遥かに広範囲高機能だとすぐに分かるよ

907 :デフォルトの名無しさん:04/12/30 23:47:40
>>905 みたいなのは言語の文法とライブラリを混同してる可能性大

908 :デフォルトの名無しさん:04/12/30 23:53:55
スレ違いの話題みたいで申し訳ないのですが

>>904
C#に価値が見出せないのですが
Javaより優れている点はありますか?
結局はWindows環境でしか使われない予感・・

>>906
もっと端的に説明できませんか?
戸田君みたいなレスは要りません

909 :デフォルトの名無しさん:04/12/30 23:54:08
>>906
それは言語の話じゃないよね?

910 :デフォルトの名無しさん:04/12/30 23:59:01
CLIの知識がすっぽり抜け落ちてるアホ一匹

911 :デフォルトの名無しさん:04/12/30 23:59:03
>>908-909
>それは言語の話じゃないよね?

そう。言語のはなしじゃない。.NET の CLR の話。C# は独自のライブラリをほとんど
持ってなくて、全面的に CLR に依存している。だから .NET 専用の言語といえるだろう。
で、>>908 はMSDNへ行ってみるくらいの自助努力をしたの? 一目瞭然だけど。

912 :デフォルトの名無しさん:04/12/31 00:08:36
>>911
あなたが>>899と同一人物かどうかはわかりませんがそうだと仮定します。
少なくとも>>899を見るとC#についてかなりの理解があると思います。

だけど「端的に教えて」と尋ねたら「MSDN見ろプゲラ」
としか言えないようなら口だけ番長を証明してるようなものですよ

913 :デフォルトの名無しさん:04/12/31 00:24:45
>>912
いや、百聞は一見に如かずだからね。真面目に答えたいけど、真面目な質問なら
ほんとに行ってみなよ。ただ、アンチのためだけに煽ってるんじゃないんだけど。

> 口だけ番長を証明してるようなものですよ

それはそうかもね。きみは単なる教えて君であることを証明してるけどね。

試しに VCL のすばらしさは端的に答えてご覧。MSDN には載ってないし。

ちなみに >>899 とは別人。>>899 のどこがC#についてかなり理解があると思うの?

914 :Delフサギコ ◆A6VzDeLphI :04/12/31 00:26:49
    ∧,,∧  
   ミ,,゚Д゚彡 
    ミ つ旦)~~
  〜と,,,~),,~)

赤の他人のしかも
くだすれDelでC#をえらそうにもちあげるような人間の
具体性に乏しい発言を立証するために
"自助努力"という名目で補ってあげるほどに
できた人間を漏れは見たことないし
これからもみることはないと思うのだが。

915 :デフォルトの名無しさん:04/12/31 00:35:17
>>914
へんなヤツだね。
Delphi2005 は Delphi.Win32 と Delphi.NET と C# の統合開発環境だろ。
Delスレで C# の質問が出て、真面目に答えてどうしてそんなこと言われなきゃならないの?

916 :911:04/12/31 00:38:13
>>913
まだシロートなのでつい教えて君になってしまいますスイマセン

>試しに VCL のすばらしさは端的に答えてご覧。
VCLというかペタペタコンポーネント貼るだけで簡単にWin32アプリが作れる
Delphiという開発環境はとても凄いと思います。勿論限界もありますが。
VCLの素晴らしさとは何かと辞書的に聞かれても答えられるほど理解がありません。

>>899 のどこがC#についてかなり理解があると思うの?
何か偉そうな口調で語っていたのでかなりでなくともそれなりに
理解はありそうだと思いましたので

917 :デフォルトの名無しさん:04/12/31 00:39:17
>>906>>911 は Delphi.NET からでも使えるライブラリの話でもあるよ

918 :デフォルトの名無しさん:04/12/31 00:43:00
> VCLというかペタペタコンポーネント貼るだけで簡単にWin32アプリが作れる

それはVCLというより、IDEとの協調作業に依っている。VC# や Delphi2005 の C# や Delphi.NET
でもほとんど同じですよ。Windows.Forms アプリの場合は使われるライブラリが
違っているだけで。Win32 アプリはつくれませんけど。だから、乗り換えるんじゃなくて
使い分け。

919 :デフォルトの名無しさん:04/12/31 00:45:39
最近は談話室からあふれ出たMSマンセー軍団がここにも進出しているのか?

920 :911:04/12/31 00:49:41
>>918
なるほど、使い分けですか
当面はWin32のDelphiでいいけど
MicrosoftがWin32を見捨てて.Net環境に全面移行する可能性もあるので
そうなったらC#が必要になる。だったら今から準備してもいいってことですね



921 :デフォルトの名無しさん:04/12/31 00:50:38
だから自分が使いやすいと思う開発環境を使えばすむ話。
というか、それ以外に決着のつけようがない。

この議論で「○○の方がいろいろ優れてて使いやすいんだ〜」って結論が出ても
「俺は××の方が気に入ってるからそれを使う。個人的なことに意見を言われる筋合いはない」で終わりなんだから。

922 :デフォルトの名無しさん:04/12/31 00:55:36
好みの話はしていないだろ

923 :Delフサギコ ◆A6VzDeLphI :04/12/31 00:58:10
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ

"自分が使いやすいと思う開発環境"
の定義を構築、修正したいから
議論や情報をやりとりする意味はとてもあるよ。

ただ、結論はその人の思考に大きく左右される
ことも多いのでなかなか結論が出ない、状態にはなる
んだろうけど。



924 :デフォルトの名無しさん:04/12/31 01:02:08
結論は出す必要はないし、出せないだろ。

あっちに高い山があるんだけど、面白そうだから登ってみないか。っていう話。

山があることも、あるいは、あることは知っていてもその高さを知らないかも
知れないから、ちょっと地図でも見てご覧っていう程度。

925 :Delフサギコ ◆A6VzDeLphI :04/12/31 01:10:58
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ

砂漠で目玉がどうたら、という比喩は
なんのことを指しているのか漏れにはわからなくて
語呂もきれいくないので好きではないんだが、、、

.NETがそれを使うだけで
VCLに対して断然優れていたとしたら
D8はその存在だけでユーザーに許容されていただろうし
D2005であえてWin32を呼び戻したり
BCB(Win32のみと思われ)を存続させる必要は全くないんだが...

そもそも、DelphiIDEをWinFormで書けばいいのに
某もVCLorVCL.NETで構築しちゃっているわけで....

926 :デフォルトの名無しさん:04/12/31 01:14:51
某の失敗は言語にあるんじゃなくてその実装にある。
D8 は Delphi.NET オンリーでしょ。.NET をやるのに言語として Delphi を
選ぶ理由はないと思うし、Delユーザもそのことをよく知っているのでは。

927 :デフォルトの名無しさん:04/12/31 01:17:23
何遍もいうけど .NET アプリの開発環境と Win32 の開発環境は機能として重複して
ないのだから、両方やってもなんの矛盾もないと思う

928 :デフォルトの名無しさん:04/12/31 01:21:58
おい、何でココで議論してんだよ
スレ違いだ、どっか他でやれよ

929 :デフォルトの名無しさん:04/12/31 01:23:10
そうだね、スマソ

930 :デフォルトの名無しさん:04/12/31 02:05:08
特定BBSに書き込むプログラムの書き方を1から教えてください。
環境 Delphi2005
OS WinXP pro sp2
です。よろしくお願いします

931 :デフォルトの名無しさん:04/12/31 02:18:51
>>930
多分ネタだと思うけどマジだったら死ね

932 :デフォルトの名無しさん:04/12/31 02:19:15
>>930
嫌だっぷー(・3・)

933 :デフォルトの名無しさん:04/12/31 02:19:38
>>931
まじです。作りがのっているHPがないのでわかりません。
どなたか教えてください

934 :デフォルトの名無しさん:04/12/31 02:22:14
>>933
マジにしては人を馬鹿にした内容だな
まあIndy内のHTML関連のコンポーネント使ってGetメソッドとか使ってみれば

935 :デフォルトの名無しさん:04/12/31 02:24:44
Indyってどこにありますか?
超初心者です

936 :デフォルトの名無しさん:04/12/31 02:28:07
そもそも用途が荒らしっぽいから

937 :デフォルトの名無しさん:04/12/31 02:29:54
>>935
お前の心の中

938 :デフォルトの名無しさん:04/12/31 02:29:55
>>935
http://www.indyjapan.com/
http://www.indyproject.org/download/Files/Indy9.html

939 :デフォルトの名無しさん:04/12/31 02:37:34
>>934
すいません、文章が下手なので
>>936
荒らし目的じゃないです。簡単に投稿できるようにしたいだけです。
>>938
9.0.17 Source code distributionのzipをDLして解凍しました。このあとどうしたらいいですか?

940 :Delフサギコ ◆A6VzDeLphI :04/12/31 02:45:40
 ∫,,,,,,,,,∧,,∧  こことかやろか…
⊂,,,,,,,,,つ,,゚Д゚ミつ
>>939さん

Wininet Programing
http://www.geocities.jp/wininet_dll_jp/page15.html

WinInet.DLLを使う方法ですが。

941 :Delフサギコ ◆A6VzDeLphI :04/12/31 02:50:34
 ∫,,,,,,,,,∧,,∧  Indyインストールを
⊂,,,,,,,,,つ,,゚Д゚ミつ さらっとググってみました。

どぞー

Delphi TIPS/Indyのインストール - dev.chu.jp : http://dev.chu.jp/index.php?Delphi%20TIPS%2FIndy%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

ギコナビのビルド方法 : http://deuxdeux.hp.infoseek.co.jp/gikobuild.html

942 :デフォルトの名無しさん:04/12/31 02:55:50
>>941
ありです!参考になります。
少しは自分でがんばってみようと思います。

943 :デフォルトの名無しさん:04/12/31 03:00:03
>>942
がんがれ〜

944 :名無し募集中。。。:04/12/31 03:02:00
>>942
>少しは自分でがんばってみようと思います。

この一言を書けるお前ならきっと出来る、頑張れ、

945 :デフォルトの名無しさん:04/12/31 03:17:39
DelphiにIIF関数ってないですか?(もしくは代わりになる関数)
煽りとかじゃなくてあったら便利なのにと思って

946 :名無し募集中。。。:04/12/31 03:36:05
>>945
DelphiにはIIFや三項演算に相当するものがない
引数の型ごとに関数を作ってオーバーロードするとか
後はVariant型でまとめて処理するとかぐらい

947 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :04/12/31 03:57:57
>>942さん
Indy Tips : http://www.monazilla.org/document/indytips.html

これやな。


948 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :04/12/31 04:14:36
>>945-946
たしかD6からだけど
IfThen
ってのがあるよ。
三項演算子じゃないから、ATrue/AFalseに
関数が渡されると、どちらも呼び出されちゃうけど。



949 :946:04/12/31 04:21:21
>>948
こんな関数知らなかった、どうもです

950 :デフォルトの名無しさん:04/12/31 09:18:03
Delphi6 Professionalなんですけど、
DBGridで行を移動したのを拾うにはどうしたらいいんでしょうか?
マウスで移動した場合はOnCellClickが使えそうですが、
カーソルキーの上下で移動した場合がわかりません。

951 :デフォルトの名無しさん:04/12/31 10:12:16
ずっとム版の過去スレを彷徨っていたら。

「くだすれ」とは

どんなに「くだ」らない質問でも、誰かが優しくレスをしてくれる「すれ」っど
by 毛の生えたブリーフ(別名:毛の生えたフサギコ 別名:40歳だけど〜青年です)

であることを突き止めた。

952 :デフォルトの名無しさん:04/12/31 10:24:34
2005のinlineでIfThen書いたらショートサーキット有効になるかな

953 :デフォルトの名無しさん:04/12/31 10:35:04
C#って、 世界共通語として考案されたがほとんど使用されていない幻のエスペラント語みたいだよね。

954 :デフォルトの名無しさん:04/12/31 12:14:00
>>950
Onkeydownイベントで、キー入力をトラップして、調べるのはどう。


955 :デフォルトの名無しさん:04/12/31 12:15:45
>>953
あれただの文字セットだよ
同じく人工的に作られたハングルはうまく使われてるようだけどね

956 :デフォルトの名無しさん:04/12/31 13:20:48
>>930
  ∧ ∧     ┌───────── 
  ( ´ー`)   < シラネーヨ 
   \ <     └───/|──── 
    \.\______// 
      \       / 
       ∪∪ ̄∪∪ 




957 :デフォルトの名無しさん:04/12/31 13:30:30
>>950
DataSetのイベントでしょ。普通は。

958 :デフォルトの名無しさん:04/12/31 13:34:49
TSearchRecをFindCloseしようとするとCardinalと互換性がないって
言われるんだけど、これってバグ?

959 :945:04/12/31 14:09:26
>>946-948
今、起きました。
うおー本当にあったんだぁ。integerを返す奴をひとつ手製で作ってました・・。
さすがBorland、こういうとこは気が利くなぁ。
質問してよかったです。ありがとうございました。

960 :950:04/12/31 14:45:37
>>954
>>957
お二人の回答とはちょっと違うんですが、参考にして色々試していたら
DataSourceのOnDataChangeで出来ることがわかりました。
どうもありがとうございました。

961 :デフォルトの名無しさん:04/12/31 16:30:40
>958
usesにSysUtilsが追加されていないとか
WindowsがSysUtilsより後ろに来てるとかが原因だと思う。
バグでは無い。

962 :デフォルトの名無しさん:04/12/31 17:55:55
エクスプローラからファイルをD&Dして開くところの話なんですけど
D&Dされたものがファイルなのか、ディレクトリなのかで処理を分けたいのですが
どうやって判別したらよいのでしょうか?

963 :962:04/12/31 18:19:13
とりあえず、DirectoryExistsを使って判断するようにしました。
もっといい方法を知ってらしたら教えてください。

964 :デフォルトの名無しさん:04/12/31 18:20:54
FindFirstでAttr調べるとか。
Win32一発で取れたような気もするけど。

965 :デフォルトの名無しさん:04/12/31 19:14:34
FileGetAttr使えば?

966 :デフォルトの名無しさん:04/12/31 19:20:44
>>964
GetFileAttributesのことかな?

967 :デフォルトの名無しさん:04/12/31 21:54:40
Delphiって、以前からマイナーだったけど、いまはほとんど使用されていない古代リリアンスカ語みたいだよね。

968 :デフォルトの名無しさん:04/12/31 22:59:52
全質問対応回答テンプレ

Delphi では不可能、もしくは極めて困難です。
VB.NET なら簡単に実現できます。
乗り換えましょう。今ならまだ間に合います。

969 :デフォルトの名無しさん:04/12/31 23:07:52
VB.NETで出来ることはDelphi.NETでも出来るんじゃないの?
それが.NETでしょ

970 :デフォルトの名無しさん:04/12/31 23:33:33
そうそう、だからヘルプにも載ってない、本も絶滅寸前なDelphiでやることはない

971 :ななしへたぐらま ◆XcB18Bks.Y :04/12/31 23:46:52
>>958
>>961に補足すると,おそらくDelphiのコンパイラはそのFindCloseをWindowsユニットで宣言されているFindClose関数だと判断しています.

FindCloseという名前のものはSysUtilsユニットで手続きとして宣言されている一方で
Windowsユニットでは関数(WindowsのFindCloseというAPIを直接呼び出している)として宣言されています.
名前がぶつかった場合,Delphiでは以下の優先順位でどれを使うかを決めます.

同じクラス>同じユニット>uses節の後ろの方に宣言したユニット>uses節の前の方に宣言したユニット

統合環境からフォームを新規作成した場合はuses節には
SysUtilsユニットがWindowsユニットよりあとに書かれていますので,
単にFindCloseと書くとSysUtilsユニットのFindClose手続きだと解釈されますが
WindowsユニットのみでSysUtilsが無かったり宣言の順序が逆の場合はWindowsユニットのFindClose関数だと解釈されます.
そのため予期しないコンパイルエラーに遭遇することがあります.

この場合の対処法はふたつあります.
ひとつはuses節で列挙する順番を入れ替えること(この場合はWindowsユニットを先にSysUtilsユニットをあとに書く)です.
もうひとつは関数(または手続き)の名前の前にユニット名を指定することです.

たとえばuses節で列挙する順序と無関係にSysUtilsユニットのFindClose手続きを使いたい場合は

 SysUtils.FindClose(SearchRec)

というように記述します.



972 :デフォルトの名無しさん:04/12/31 23:50:32
同じ関数名にしたのが間違いだ罠

973 :デフォルトの名無しさん:04/12/31 23:51:33
その為のnamespaceだろ

974 :デフォルトの名無しさん:05/01/01 00:08:25
ちがう

975 :デフォルトの名無しさん:05/01/01 00:09:50
昔のCは同じ識別子は使えなかったから、
hogeや_hogeやHoge等々いろいろあった…

976 :デフォルトの名無しさん:05/01/01 00:24:12
FindFirstFile や FindNextFile はわざわざ同名を避けたのに FindClose() は
API と同名。 Windows.pas は普通 uses の前の方にあるから問題にはなりにくいけど。
TBitmap なんかも API にあるよね


977 :デフォルトの名無しさん:05/01/01 00:37:10
ShowMessage('あけましておめでとう');

978 :デフォルトの名無しさん:05/01/01 00:50:06
while 曙が勝つ do
 begin
 application.ProcessMessages;
 ShowMessage( 'あけおめ' );
 end;

979 :デフォルトの名無しさん:05/01/01 00:57:03
モーダルダイアログだしながら Application.ProcessMessages; するのは無意味

980 :デフォルトの名無しさん:05/01/01 01:02:14
ネタにマジレス、無意味。

981 :デフォルトの名無しさん:05/01/01 01:40:01
わはははは、無意味にマジレス、無意味

982 :ななしへたぐらま ◆XcB18Bks.Y :05/01/01 01:49:54
そろそろ1000が近いので新スレ立ててみます.

>>975
QuickBASIC(VBの血のつながらない先祖)のときも名前がぶつかったら駄目だったので,
Delphiのこの仕様はありがたかったです.


983 :ななしへたぐらま ◆XcB18Bks.Y :05/01/01 02:02:11
建てました.

くだすれDelphi(超初心者用)その21
http://pc5.2ch.net/test/read.cgi/tech/1104511938/l50

このスレがいっぱいになったら移住して下さい.

984 :デフォルトの名無しさん:05/01/01 02:24:55
>>982
ユーザがライブラリの中の名前を気にしなくてもいいのは便利。
だけど、メーカが供給するライブラリの中では、名前がぶつかっているのは無意味に
混乱させるだけだと思う。

985 :デフォルトの名無しさん:05/01/01 04:19:18
シグネチャが同じだったら、バティングしててもコンパイル通るんだろ。警告すらしないんだろ。
すげー名前空間あるのにすげーDelphi
m9(^Д^)プギャー

986 :デフォルトの名無しさん:05/01/01 04:34:57
atamawarusugi

987 :デフォルトの名無しさん:05/01/01 04:40:41
しょぼいなDel

988 :デフォルトの名無しさん:05/01/01 04:47:37
>>986
m9(^Д^)プギャー

989 :デフォルトの名無しさん:05/01/01 13:40:03
フサギコスレのアンチ、初心者スレにまで貼りついいてんのかよw
小学生誘拐犯人並みにキモイ奴だな

990 :デフォルトの名無しさん:05/01/01 14:04:57
Applicationに送られてくるメッセージってどうやって捕まえればいいの?
Form1宛のメッセージはなんとか取得できるのだが・・

991 :デフォルトの名無しさん:05/01/01 14:30:11
>>989
このスレでは放置しる。
フサギコのスレで撒き餌ばらまいて「m9(^Д^)プギャー」なんて言わせて喜ばしておけ。

992 :デフォルトの名無しさん:05/01/01 14:45:01
といいつつ構わずにいられないDEL厨www

993 :デフォルトの名無しさん:05/01/01 14:50:12

相手にしてもらえないでよっぽど悔しいらしい(藁

994 :デフォルトの名無しさん:05/01/01 15:10:00
ほらまたww

995 :デフォルトの名無しさん:05/01/01 15:37:54
HTMLのカラーネーム(redとかgreen)をRGB値に変換したいんだけど、
if thenを延々と書き連ねるしかないのかなぁ…。
これだとあんまりスマートじゃないような気がするんですけど、
もっといい方法があったりするんですか?

996 :デフォルトの名無しさん:05/01/01 16:05:52
ColorNames := TStringList.Create
ColorNames['Red'] := '0000FF';

997 :デフォルトの名無しさん:05/01/01 16:18:40
begin
writeln("hello")
end.

998 :デフォルトの名無しさん:05/01/01 16:24:00
唐突ですけど質問させて下さい。
delphi4はWindows2000でも間違いなく動きますでしょうか。
どなたかご教示下さい。

999 :デフォルトの名無しさん:05/01/01 16:24:52
>>994
別に、おら通りすがりで遊んであげただけ(藁藁

どうなっているか見に来たけどやっぱり喰いついている(藁藁藁

1000 :デフォルトの名無しさん:05/01/01 16:28:17
1000だぴょん

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

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

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)