トップページ⇒tech
1001コメント384KB

モナーの *やさしい* Delphi質問スレ Ver2

レス数が1000を超えています。これ以上書き込みはできません。
0001DELモナーNGNG
01/10/15 11:36
DELモナーがどんな厨房疑問でもやさしく答えます。
DELモナは時に私であり、時には別の人。
他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 ∧ ∧
( ´∀`)(    )

00022NGNG
Ruby!
0003DELモナーNGNG
モナーの *やさしい* Delphi質問スレ 前スレ
http://pc.2ch.net/test/read.cgi/tech/1003113413/
0004デフォルトの名無しさんNGNG
新スレおつかれ>DELモナー
最近あまり出てこないので、DELギコと間違われて刺されたのかと
思ってたよ。
0005デフォルトの名無しさんNGNG
Delphi6 Personalを一度アンインストールしたいのですが、
アプリケーションの追加と削除にDelphiの項目が無く、アンインストーラーも見当たりません。
どうすればアンインストールアンインストール出来るのでしょうか
0006デフォルトの名無しさんNGNG
フォルダごと削除
0007デフォルトの名無しさんNGNG
DirectInput使うとかいうのは無しで5ボタンマウス対応にするAPIがわからん
なんでD6は3つしかマウスに対応しないんだ?
エクスプローラーも対応しているのに
おせーて
0008デフォルトの名無しさんNGNG
>6
それも考えたのですが、それだとレジストリにゴミが残りませんか?
問題無いのならフォルダごと削除しますが・・・
0009デフォルトの名無しさんNGNG
俺は追加と削除の項目に
Del6あるけど、
ない人もいるのか
0010デフォルトの名無しさんNGNG
>>8
フォルダごと削除して再インストール。そのあとアプリケーションの追加と削除からアンインストール。
やっぱりなかったら諦める。
0011デフォルトの名無しさんNGNG
5 はどうやってインストールしたんだろう。

0012デフォルトの名無しさんNGNG
クラック
0013デフォルトの名無しさんNGNG
Delphi に VB のような、コントロール配列はありますか?
大至急、マジレス頼む!
0014デフォルトの名無しさんNGNG
>>13 検索しる!
http://www.google.co.jp/search?num=100&hl=ja&q=Delphi+%83R%83%93%83g%83%8D%81%5B%83%8B%94z%97%F1&lr=lang_ja
00155=8NGNG
>10
アンインストール出来ました。ありがとうございました

>11-12
BolandのサイトからDLし、インストールキーを取得して
あとは画面の表記に従ってインストールしていきましたが・・・
0016デフォルトの名無しさんNGNG
>10
どうもです。あせってると駄目だ。
ハマリ脱出!
0017プッNGNG
>>12
Personalをクラック?
0018デフォルトの名無しさんNGNG
>>15
なんというか、インストール/アンインストールはインストールシールド(と Windows Installer)の
管理する部分だから Delphi とは関係ない。

インストールしないでクラックしてバイナリを手に入れる位のスキルの持ち主なら
こんなタコな質問はしないだろうから、インストールユーザーとアンインストール時の
ユーザーが異なっている。ってくらいかな?
0019デフォルトの名無しさんNGNG
>>18 あるいは、インストール後にマシンがトンで、
レジストリがインストール前に戻ってしまったとか。
0020デフォルトの名無しさんNGNG
>>19 あるいは XP/Me のシステムの復元でレジストリを元に戻してしまったとか。
0021デフォルトの名無しさんNGNG
>>20 あるいはインストールもせず使ってもいなかったとか。
0022ド素人NGNG
Delphi6PersonalにIndyをインストールしたいんですが、
バッチフィルを起動してもエラーでインストール出来ません。
どのようにすればインストール出来ますか?
0023DelフサギコNGNG
   ∧,,∧    / ̄
  ミ,,゚Д゚彡 < 日経ソフトに書いてあったような...
  (ミ  ミ)   \_
 〜ミ  ミ
   ∪''∪
0024ド素人NGNG
>>23
今月号ですか? だとしたら本屋に逝ってきます。
0025DEL初心者NGNG
D5を使っているのですが動的配列は常に連続してメモリ上にあるのでしょうか?
例えば
var
Data : array of longint;
begin
Setlength(Data,100);
// 処理(ここで配列の数がかわる)
// ストリームに書き出し
Stream.Write(Data[0],SizeOf(Data[0])*Length(Data));
の様にやっても大丈夫でしょうか? HELP見たけどいまいちわかりません
よろしくお願いします。
002625NGNG
すみません訂正です
誤:// 処理(ここで配列の数がかわる)
正:// 処理(ここで配列の長さがかわる)
0027デフォルトの名無しさんNGNG
>>25
連続していると仮定していいはずです。
動的配列は参照カウンタ、長さ、実際の配列しか定義がないからです。
ObjectPascal言語ガイドのメモリ管理を参照してみてください。
002825NGNG
>>27 ありがとうございます!すっきりしました
Helpのメモリ管理知りませんでした
実数型の所が手書き風味で良いですね(w
0029ド素人NGNG
>>24
立ち読みしてきましたけど、インストールの方法は書いてなかったです(涙
0030デフォルトの名無しさんNGNG
あれは US のライブラリかどうかをチェックしているのだ。
0031デフォルトの名無しさんNGNG
Indyはバージョンが一つ古い9.0.1Bじゃないとインストーラではだめ。
日本語Updateを認識してくれないので。

こんなサイトを見つけた。手動で入れる方法について。
http://www.sakaki.keiaikai.or.jp/Library/webconv/compile.html
0032ド素人NGNG
>>31
おかげさまでインストール出来ました、ありがとうございました。\(^o^)/
0033デフォルトの名無しさんNGNG
だれかいます?
0034デフォルトの名無しさんNGNG
いますが、何か?
0035デフォルトの名無しさんNGNG

WinHndd := FindWindow('TfrmChat', nil);
SetForegroundWindow(WinHndd);
EdtHndd := FindWindowEx(WinHndd, 0, 'TRichEdit', nil);
SendMessage(EdtHndd,WM_PASTE,0,0);
Ebtnn := FindWindowEx(WinHndd, 0, 'TButton', nil);
SendMessage(Getparent(Ebtnn),WM_COMMAND,1,(BN_CLICKED shl 16) + Ebtnn);
これで偽メッセンジャーからクリップボードの内容を送信できると
思うのですが実行しても送信できていませんわかりますでしょうか??
0036デフォルトの名無しさんNGNG
デバッグを人にまかすな。ボケ!
0037デフォルトの名無しさんNGNG
やはりあなたでもだめですか ふぅ・・・
0038デフォルトの名無しさんNGNG
たすけてください。
ClientSocket と ServerSocket を使ってテスト通信ソフトをつくりましたが、
サーバからクライアントに送信すると、必ずエラーが発生してしまいます。

ソースコードを下に置いたので、エラー原因を教えていただけないでしょうか。

http://www.geocities.co.jp/SiliconValley-PaloAlto/4845/socket.zip
0039冒険開始1日目NGNG
コンポーネントパレットの[Additional]ページにある
ActionManager コンポーネントてのはD6Personalでは使えないんですか?
それとも、アップデートすればイイだけのことですか?
0040デフォルトの名無しさんNGNG
>>38
デバッグを人にまかすな。ボケ!
0041デフォルトの名無しさんNGNG
>>38
この程度のバグを取れないようでは困ると思うが...
バグは2カ所。

TForm1.socServerClientRead で,一つのイベントに対して
Socket.ReceiveText と (socServer.Socket).ReceiveText の2カ所で
文字列を取ろうとするから2回目でエラー。

TForm1.Button3Click で,EdtText.Text をクライアントに送り返すはずのコードが
なぜか ReceiveText を SendText しようとしている。何も受信していないだろ?

もし,周りにデバッグのうまい人がいたら頼み込んでデバッグの現場を見せてもらいなさい。
他人のデバッグ手法は見ていておもしろいぞ。
0042デフォルトの名無しさんNGNG
逆立ちしてデバッグするの?
0043前スレではお世話になりましたNGNG
細かい質問をちょこちょこっと。
お時間がございましたら答えてやってください。

1)
iniファイルにFont.Styleの値を保存しようと思うのですが、
これはWriteStringではダメなんでしょうか?

2)
メモ帳の「右端で折り返す」処理を実装しようと思い、
以下のようにCheckdで作成してみました。
procedure TForm1.TurnOnRight1Click(Sender: TObject);
begin
{[設定]-[右端で折り返す]}
// Checkedの反転&スクロールバーの処理
If TurnOnRight1.Checked Then
begin
Memo1.ScrollBars := ssBoth;
TurnOnRight1.Checked := False;
end
else
begin
Memo1.ScrollBars := ssVertical;
TurnOnRight1.Checked := True;
end;
end;

これ、使っている分にはちゃんと折り返されてるみたいなんですが、
こんなんでいいんでしょうか?(邪道っぽい気がするもんで)

宜しくお願いします(´∀`)ノ
0044デフォルトの名無しさんNGNG
>>43
1)だけ。
型が違うやん。
ini.WriteInteger(Section, Ident, Byte(Font.Style));
でどうよ?
0045前スレではお世話になりましたNGNG
>>44さん、出来ました(笑
てっきり[fsBold]だからStringかと思ってたのですが…。

回答有難うございました(´∀`)
0046デフォルトの名無しさんNGNG
>>43
では2)
  TurnOnRight1.Checked := not TurnOnRight1.Checked;
  Memo1.Wordwrap := TurnOnRight1.Checked;
  if TurnOnRight1.Checked then
    Memo1.ScrollBars := ssVertical
  else
    Memo1.ScrollBars := ssBoth;
0047DEL初心者NGNG
>>43さん
解決されているようですが… こんなんも出来ますよん
uses typInfo; // どっかにあるので探してね
//オブジェクトインスペクタ風味の書き出し
ini.WriteInteger(Section, Ident,GetSetProp(Self.Font,'Style',true));
0048デフォルトの名無しさんNGNG
>>47 もうちょっと頑張れば 文字列としても取り出せるよ
004947NGNG
げは…また間違った
ini.WriteInteger( は ini.WriteString( です。
逝ってきます
005044NGNG
>>49
コピペしやがったな(w
005147NGNG
>>50 はい。すみません(汗

一応投稿前にCTRL+F9押してエラーが無いことを確認したのに…
IEだったら意味無かった
005238NGNG
>>41
ほんとうにどうもありがとうございます。
なるほど、ReceiveTextのヘルプにもそう記述されていますね。
デバッグ手法を見たいのは山々なのですが、
私はアマチュアで、まわりにDelphiを使う人が一人もいないので
独学でやるしかないのです…
005338NGNG
ついでに…

ローカルアドレス
ローカルホスト
リモートアドレス
リモートホスト

の違いを教えてくれませんか…
0054デフォルトの名無しさんNGNG
>>53
ヘルプで「ソケットコンポーネント」を検索すると「ソケットコンポーネントの使い方」と
いうのが出てくるから、それを順に読め。

独学ならば、それこそ調べる癖をつけないと困るよ。
005538NGNG
そのことなんですが、キーワード欄に何も表示されないのは
どういう事なのでしょうか。目次は存在するし、コード編集ウィンドウ内の
キーワード上でF1するとちゃんと出てくるのですが。

Delphi6Pro + Win98SE です
0056デフォルトの名無しさんNGNG
>>55
もしかして。

ヘルプ→カスタマイズでOpenHelpを開いて、キーワードタブに登録してあるヘルプのうち
要らなさそうの消してみ。CLXリファレンスとか。
ここの容量がでかいとWin95系では表示されなくなるとかってのを聞いたことがある。
005738NGNG
>LocalHost プロパティと LocalPort プロパティを使って,
>ローカルのクライアントまたはサーバーのソケットが使った
>アドレスとポート番号を確認するか,RemoteHost プロパティと
>RemotePort プロパティを使って,リモートのクライアントまたは
>サーバーのソケットが使ったアドレスとポート番号を確認できます。

つまり、Local は「自分」で、Remoteは「相手」ということ?

Host と Address プロパティは、IPアドレスに変換する必要があるかどうかですね。
Host にはドメイン名も指定できるが、それをIPアドレスに変換する手間がかかる。
一方、Address にはIPアドレスしか指定できないが、そのぶん早く接続できると。
005843NGNG
46、47さんご教授ありがとうございます。
46さんのTurnOnRightの例を使わせて頂きました(´∀`)
47さんの例は今度ライブラリ?を集めた時に使ってみようと思いますー

で、申し訳ないのですが追加の質問を…。
上でiniファイルに保存したStyleの値を読もうとしているのですが、

 Memo1.Font.Style := IniFile.ReadInteger('Font','Style',Byte(Memo1.Font.Style));
 もしくは
 Memo1.Font.Style := IniFile.ReadInteger('Font','Style',Memo1.Font.Style);

のように記述しても読んでくれません。
iniには

 [Font]
 Size=12
 Color=-2147483640
 Name=MS Sans Serif
 CharSet=0
 Style=0      ←

のように保存されているのでReadIntegerで大丈夫だとは思うのですが…。
(´・ω・`)ショボーン
005944NGNG
>>58
ini.WriteInteger(Section, Ident, Byte(Font.Style));
の「Byte」の意味がわかってないね?
TFont.Styleのヘルプを見ると集合型だろ。これはIntegerと互換性がない。
だから無理矢理「これはByte型だ、Byte型と思い込め」とDelphiに教えてやってるんだよ。

だったら逆の場合も同じようにしてやらないといけない。
Integerで返ってきたものを「これはTFontStyles型だ、TFontStyles型と思い込め」とDelphiを
催眠術にかけてやればいい。

 Memo1.Font.Style := TFontStyles(IniFile.ReadInteger('Font','Style',Byte(Memo1.Font.Style)));
0060デフォルトの名無しさんNGNG
こんどは読んだ Integer の値を TFontStyles でキャストしましょう
006160NGNG
負けた…
006244NGNG
>>61
勝ったぁ!(w

で、その催眠術は>>60の書いてる通り「キャスト」と言うんだよ。
0063ひろゆきと愉快な信者達NGNG
50 :参加するカモさん :01/11/30 21:16
28 名前:西村の同級生 投稿日: 2001/02/12(金) 10:08
中学の頃クラスでイタズラ電話や下駄箱の靴が紛失する事件が頻発したんだけど
その時、女子の間では「犯人西村」説が跋扈していた。
真相は藪の中だけど、実は私もそう思ってたうちの一人。
証拠もないのに疑いをかけるのは悪い事だと思うけど、西村にはそういう嫌疑を抱かせる
雰囲気があったのも事実。

52 :参加するカモさん :01/11/30 22:33
50を読んでも驚かないところが不思議
ふーんて感じ
そういうダーティーなところも含めてひろゆきカッコイイ

53 :参加するカモさん :01/12/01 05:08
オレも52と同様、1変人として素晴らしいと感じる。
我等変態をナメるな。
ひろゆき擁護者として、間違い無く彼が犯人だったと断言するぞ。

54 :参加するカモさん :01/12/01 16:47
堂々たる変人ぶりだ、、、
006438NGNG
>>56
おおおお
どうもありがとうございます。
ちゃんとキーワードが表示されるようになりました。
006543NGNG
素早い解答ありがとうございます。
さっそく試したところ、見事に反映しました!
もしかしたら一般的な技法なのかもしれませんが、
知らなかった分勉強になりました。>キャスト

ではしばらく他のデバッグ作業に戻ります…(;´Д`)
0066デフォルトの名無しさんNGNG
やばいです
webサイトの更新日を取得する方法がわかりません
HttpQueryInfoですか? 
0067デフォルトの名無しさんNGNG
>66
何を使ってんのか知らんけど、Headerに更新日情報は入ってるよ。
0068デフォルトの名無しさんNGNG
あなたは RFC から読む事をお薦めする
0069デフォルトの名無しさんNGNG
でも Indy とか使ってるとわからなくてもできちゃうからな・・・
0070デフォルトの名無しさんNGNG
HttpQueryInfoってなんなんだろ? 知ってる方いらっしゃいます?
0071デフォルトの名無しさんNGNG
とあるアプリからサイトが更新されたどうかを確認して
されていたらメッセージを送るみたいなことをしたい
どうだろうか?
0072デフォルトの名無しさんNGNG
>>71
いいんじゃないでしょうか
0073sageNGNG
どうやるのか方法をご教授して頂けませんか?
どうだろうか?
0074デフォルトの名無しさんNGNG
>>73
これを使う。
http://www.koizuka.jp/wwwd/
0075デフォルトの名無しさんNGNG
tesu
0076吐駄NGNG
>>70
URL が長いが。
ttp://www.google.co.jp/search?q=%82%B1%82%A4%82%E2%82%C1%82%C4+HttpQueryInfo+%8C%9F%8D%F5%82%B5%82%EB&hl=ja&lr=
0077sageNGNG
ソフトの紹介ではなくて方法をご教授して頂けませんか?
どうだろうか?
0078デフォルトの名無しさんNGNG
何の方法を教授されたがっているのだろうか?
どうだろうかはどうだろうか?
0079デフォルトの名無しさんNGNG
>>77
WWWDのようなソフトのコードを書いてタダでよこせという意味でいいですか?
>>67-69 は読まれましたか?
0080デフォルトの名無しさんNGNG
>>78
とあるアプリからサイトが更新されたどうかを確認して
されていたらメッセージを送るみたいなことをしたい
ソフトの紹介ではなくて方法をご教授して頂けませんか?
0081デフォルトの名無しさんNGNG
>>80
http://pc.2ch.net/test/read.cgi/tech/997074601/650-655
0082デフォルトの名無しさんNGNG
HttpQueryInfoでHTTP_QUERY_LAST_MODIFIEDを取りましたが
以前の更新日時との比較のしかたがわかりません
又は、上記のやり方以外で更新日時を取る方法はあるのでしょうか?
0083デフォルトの名無しさんNGNG
うざい
厨房質問にも限度がある
008470NGNG
>>76
うっ、WIN32ヘルプまでは見たのだが・・・。申し訳ないです。

>>82
なぜ比較の仕方がわからないのかがわかりません。
0085デフォルトの名無しさんNGNG
>82
文字列で比較して1文字でも違っていたら更新されたってことにしとけ。
0086デフォルトの名無しさんNGNG
全部別人が質問してたりして。
0087デフォルトの名無しさんNGNG
なんか教えて君が増殖しているなぁ。なんかあったっけ?
0088デフォルトの名無しさんNGNG
1に
>他のスレに書き込んで罵倒される前に、まずここで質問しよう。
と書いてあるのだが、肝心の*やさしい*DELモナーがいない(w

質問の仕方がなってない奴は叩かれる、典型例ですな。
いきなり>>82が書いてあればここまで罵倒されることもなかったのに。
0089デフォルトの名無しさんNGNG
「*やさしい*」が教えて君を引き寄せているのかな?
しかし初代スレに比べて急に増えた気がするが。それも Delphi 系だけ。

某 ML でいじめられたから、とか
某広場でかまってもらえなくなったとか
某情報局でボロクソいわれたからとか
0090デフォルトの名無しさんNGNG
初めて書き込みします
先輩にdelphiというものを8000円で買わされしかも1週間以内に
なんか作れといわれてしまいました
先輩はdelphiは本当は何万円もするぞと言ってましたが本当ですか?
どうしたらいいかわかりません
どうかみなさん助けてください
0091デフォルトの名無しさんNGNG
>>90
ネタか?

Delphiを起動してヘルプメニューからバージョン情報を見る。
Professionalと書いてあったら6万8千円、Enterpriseと書いてあったら36万円。
Personalと書いてあったら0円。
0092デフォルトの名無しさんNGNG
Personalに1000ぺリカ
0093デフォルトの名無しさんNGNG
>先輩はdelphiは本当は何万円もするぞと言ってましたが本当ですか?
嘘です。

>なんか作れといわれてしまいました
↓きっとお役に立つでしょう。
http://www.monazilla.org/
0094デフォルトの名無しさんNGNG
>>91
箱にはPersonalと書いてあります
>>93
リンク先に行ってみましたがよくわかりません
なんか作れと言われましたが何が作れるのでしょうか?
0095某 ML よりNGNG
.....
それから、別の話題ですが、先日2ちゃんねるのデルファイ初心者用の
掲示板を覗いてみたら、質問をされた方が「ヘルプを読め!」と怒られて
いるのを見てしまいました(笑)。ヘルプや過去ログという話はどこへ
いってもありますし、自助努力という姿勢も良いことだとは思うのですが、
学校で隣の席の友人に「ねえ、ねえ」と言って訊ねたりできるという
感じがあれば助かるなぁ・・と思っています。先生に聞きに行くよりも
手軽な感じです。

具体的には、

・「ヘルプを見なさい」「過去ログを見なさい」禁止の
・初心者同士の初心者同士による初心者同士のための
・休み時間のようなメーリングリスト。

を立ち上げようかなーどーしよーかなーと考えています。
みんなで「わからん、わからん」と言ってるような、
烏合の衆のようなMLです(笑)。
0096デフォルトの名無しさんNGNG
http://www.borland.co.jp/delphi/prodinfo/

Borland Delphi 6 Personal \4,800 (無料版あり。違いは箱と紙のマニュアル)
Borland Delphi 6 Professional \68,000
Borland Delphi 6 Enterprise \360,000
0097デフォルトの名無しさんNGNG
初心者には2種類あって
1.プログラムの初心者
2.Delphiの初心者
がいるんだよね。で、両方とも初心者でくくっちゃうから混乱する。

2.にはプログラムの経験者も含まれるから、いきなりAPIの
話したりDBやWebの話したりとかする(でもDelphiは初心者)。

1.こそが本当の初心者だと思うんだけどね。
0098デフォルトの名無しさんNGNG
>>94
ここに1週間で丁度出来そうな
ゲームのソースがあるから これをダウンして 作ったといいなさい
http://www5.tok2.com/home/luminel/

その後お礼をこのスレに書いてあげような
http://pc.2ch.net/test/read.cgi/tech/1010318049/
0099デフォルトの名無しさんNGNG
今日初めてDelphi6をさわったのですが

var
iHoge: Integer;
iFoo: Integer;
case iHoge of

1: iFoo := iFoo + 10;
2: iFoo := iFoo + 20;
3: iFoo := iFoo + 30;
end;

var
sHoge: String;
iFoo: Integer;
case sHoge of

'hoge1': iFoo := iFoo + 10;
'hoge2': iFoo := iFoo + 20;
'hoge3': iFoo := iFoo + 30;
end;

文字列を使用した条件分岐は出来ないのですか?
0100デフォルトの名無しさんNGNG
>>99
case セレクタ式 of
ケースリスト1: 文1;
...
ケースリストn: 文n;
end
セレクタ式には順序型の任意の式を使用できます。文字列型は無効です。
0101デフォルトの名無しさんNGNG
みなさん本当にありがとうございました
これで一週間後の先輩どうにかなりそうです
0102デフォルトの名無しさんNGNG
var
 sHoge: String;
 iFoo: Integer;
begin
  if sHoge = 'hoge1' then iFoo := iFoo + 10
 else if sHoge = 'hoge2' then iFoo := iFoo + 20
 else if sHoge = 'hoge3' then iFoo := iFoo + 30;
end;
0103デフォルトの名無しさんNGNG
前から思ってたんですけど「ほげ」ってなんですか?
0104デフォルトの名無しさんNGNG
http://www.selab.tutkie.tut.ac.jp/~yoshida/hoge.html
010599NGNG
>>100

そうですか、ちょっと使いづらいですね

>>102
そうすれば良いのは解るのですが
ソースのわかりやすさを考えると

case sHoge of
'hoge1': iFoo := iFoo + 10;
'hoge2': iFoo := iFoo + 20;
'hoge3': iFoo := iFoo + 30;
end;

できると幸せだなぁと思ったんですが
010699NGNG
もう一つ質問なのですが
http://isweb30.infoseek.co.jp/computer/hotzonu/hotzonu2.html
ホットゾヌのスレッド一覧を提供している
コンポーネントみたいな物を作るのは難しいですか?

あまりプログラムは得意では有りませんが
ファイラーみたいな物が作りたいのですが
リスト形式でさらにファイルの属性によって色を変えたりしたいのです。

0107デフォルトの名無しさんNGNG
>106
TListView もしくは TDrawGrid もちろん OwnerDraw で。
 ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ∧ ∧
( ´∀`)
(    )
0108モザイクNGNG
http://homepage1.nifty.com/beny/index.html
ここのサイトのモザイク処理で
var
X, Y, I, J: Integer;
xR, xG, xB, XX, YY: Integer;
Cnt, BlockW, BlockH: Integer;
pSrcCache: PCacheLines;
pSrcLine: PLine24;
begin〜〜
とありますがPCacheLinesって何でしょうか?当方D6です

0109デフォルトの名無しさんNGNG
>>108
BBS まで用意しているんだから作者に聞きなよぉ。
0110モザイクNGNG
あ、すみません。では そうして見ます 急ぎだったもので・・
0111DelフサギコNGNG
           >>97
  ∧,,∧    / たまに 
 ミ,,゚Д゚彡 <   人生の初心者も
Π ̄ ̄ ̄|  \  まざっとる
|つオレモナー()   
| |___.|
  ∪∪
0112モザイクNGNG
TCacheLines = array[0..MaxInt div SizeOf(Pointer) -1]of Pointer;
PCacheLines = ^TCacheLines;
自己解決。。。。あほや、自分。
0113デフォルトの名無しさんNGNG
Delphiで複数行を一発でコメントできないかな?
それとも手作業なの?
0114デフォルトの名無しさんNGNG
>>113
{ } か (* *) で囲んじゃダメ?

0115デフォルトの名無しさんNGNG
もしかして、全ての行頭に // を入れているの?
0116113NGNG
>>114
そりゃそーだ。ハズカシイ・・・

いやVBみたいに一括でできないかとフト思ったんだけど、俺逝ってヨシ。
0117113NGNG
>>115
ゴメンヨーゴメンヨー
0118デフォルトの名無しさんNGNG
Del1では、//形式のコメントは使えなかったね。
0119ビクーリ!NGNG
Hotkeyちゃんが自前HP作ったみたいYO!
ビクーリ!でも、プロフィール無いから何歳か分からないYO!
0120デフォルトの名無しさんNGNG
せめて、URL書いてくれないと・・・
0121デフォルトの名無しさんNGNG
ウザいよ?
0122ビクーリ!NGNG
>>120
ヲッチャーなので、晒すようなことは出来ませぬ。
0123デフォルトの名無しさんNGNG
>122
オナニーしてな。
0124はて?NGNG
デルファイってどんな言語なんですか?
0125無視しないでNGNG
>124
どんな回答を期待しているのですか?
あなたが使える言語を例に教えて下さい。

VC++→Microsoftが売っているコンパイラー
と教えてくれれば、
Delphi→Borlandが売っているコンパイラー
と答えられます。
0126黙阿弥上人NGNG
>101

ネタじゃなかったのか?

まぁ、いいさ。 よろこんでもらえりゃ。

先輩にもヨロシクな。

(これが、もって回った皮肉なら、あっぱれ!みごとなり! と賞賛に
 値する。複線の張りかたなど用意周到だ)

コレも人生。 合掌...
0127黙阿弥上人NGNG
あ、
「複線」→「伏線」ね。
(俺のせいじゃねぇ、IME...)
0128デフォルトの名無しさんNGNG
>>116
GExpertsで出来ますよ
0129デフォルトの名無しさんNGNG
>>105
処理系によってはできますね。
出来ないのはDelphiの言語仕様としか言えないです。

書きやすさに対して実行時のコストが高いからでしょう。
# それでもそんなに頻繁に使うものでもないでしょうから、
# あってもいいようなものです

ちなみにどうしてもやりたければ
文字列をキーとするハッシュに数字を割り当ててcase ofするのがよいかと。
0130DelフサギコNGNG
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < CaseStr構文でも導入してもらいたいかも
  UU"""" U U    \_______________
 ナクテモイイケド
0131デフォルトの名無しさんNGNG
>>130
要らんでしょ?文字列を単純な数字列にする関数内関数を書いて
constで数字列と文字列を対応付ければ済むと思うが・・・・・
013243ですNGNG
おはようございます。(;´Д`)
昨日の書き込みで書いた通りFont.Styleが反映したと思っていたのですが、
今日になって実行してみるとなぜかエラーが吐き出されてしまいました。

 Memo1.Font.Style := TFontStyles(IniFile.ReadInteger('Font','Style',Byte(Memo1.Font.Style)));
 [エラー] Unit1.pas(100): 正しくない型キャスト

>>59さんのアドバイスを参考にして記述したのですが、
どこかおかしな所などございますでしょうか?
ヘルプを見てみたら

TFontStyle = (fsBold, fsItalic, fsUnderline, fsStrikeOut);
TFontStyles = set of TFontStyle;

と言う記述があったのでここかと思われる場所に set of を記述してみたのですが、
これもダメなようで…。

ちなみに、当方Delphi6Personalです。
あと亀レスですが>>95のメーリングリストいいですね。(゚д゚)ウマー
013343ですNGNG
sageてた・・・鬱
0134デフォルトの名無しさんNGNG
確かに面白い>>95
立ち上がったら告知キボーン
013544NGNG
>>132
ごめん。
 Memo1.Font.Style := TFontStyles(Byte(IniFile.ReadInteger('Font','Style',Byte(Memo1.Font.Style))));
だった。申し訳ない。
013643ですNGNG
44さんフォローありがとうございます(´∀`)
と言うか、自分でもよくわからぬままiniを実装しようとしたのも反省しとります。
とりあえずキャストはしっかりと頭に叩き込んでおきます!

こちらも何度も申し訳ございませんでした。
013799NGNG
>>107
ありがとう


ListItemにオブジェクトを関連づけるってイメージわかないんですが・・・
ListItemにクラスや配列を関連づけたりして
それに対応した処理をさせたりとかするんですか?

たとえばDBのレコードとかそういう物を関連づけたりする?

procedure TForm1.FormCreate(Sender: TObject);
var
Aho : String;
NewItem:TListItem;
begin

Aho := 'hogege';

NewItem := ListView1.Items.Add;
NewItem.Caption := 'なんとか';
NewItem.Data := @Aho; // データへの参照.
NewItem.SubItems.Add('hoge1);
end;

procedure TForm1.ListView1Click(Sender: TObject);
begin

end;

この場合のSenderってのは何が引数で渡されるのですか?
0138デフォルトの名無しさんNGNG
これからDelphiを始めるのですが、ソフトがまだ買えません。
Delphi初心者が読んで使いやすいマニュアル本などあったら
教えてください。(みなさんが使っているお勧めの本など)
本当は自分で見て選びたいのですが本屋にあまり置いてなくて
中身が見れなくて不安です。よろしくお願いします。
経験言語はaccessとCOBOLです。
0139デフォルトの名無しさんNGNG
>Delphiを始めるのですが、ソフトがまだ買えません。

( ゚д゚)ポカーン
Delphi6 Personal は無料ですが?
0140DelフサギコNGNG
 Delphi無料版をゲットォォォォ!!! スレ>>138
  ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
      ∧,,∧          (´´
   \,,,,ミ,,゚Д゚彡      (´⌒(´
  ⊂,,,,,,,,,つつ.≡≡≡(´⌒;;;≡≡≡
           (´⌒(´⌒;;
      ズザーーーーーッ

>>137
Senderにはイベントを呼び出したコントロールが入るので
この場合はListView1辺りが入っているでしょう。

Ahoという文字列のアドレスを渡すよりは
Stringをフィールドに持つTAhoクラスでも作って
それをDataプロパに登録する方がわかりやすいかと。
0141デフォルトの名無しさんNGNG
ところでDelphiってDelphiで作られているのですか?
だったら私でもDelphi7作れますか?
0142デフォルトの名無しさんNGNG
>>141 Delphi7を作るのは商標とかいろいろなしがらみでダメでしょうね

また、Delphiのフォームの使い方は特許になってるかもしれません。


世の中にはFreePascalというのがありますから、これを元にDelphi並の
ものをお考えになっては?
0143デフォルトの名無しさんNGNG
最初にコマンドラインDelphiコンパイラを作る
コンポーネントやライブラリをメモ帳で作成。
Delphi統合環境プログラムをメモ帳で作成し、コンパイル

Delphi統合環境の出来あがり。
0144謎絵だNGNG
>>140
それ逆向きに飛んでんのかw
0145デフォルトの名無しさんNGNG
いや 前足で砂をかけてる図かと
0146デフォルトの名無しさんNGNG
先輩だが
おまえら1時間以内になんか作れ
変な入れ知恵しやがって
0147デフォルトの名無しさんNGNG
>>139
説明不足ですいません。
客先の都合でDelphiで開発指示がきました。
正式受注後にpro版を買って貰えるのですが、それまでの勉強と
リファレンス的な使い方ができる本が欲しいと思ったので。。
(本は自費です)
0148デフォルトの名無しさんNGNG
とりあえずPer使えよ
0149デフォルトの名無しさんNGNG
Perl?Haa?Ruby Only makes sense!
0150デフォルトの名無しさんNGNG
>>147 そういう事ならこれからでいいのかな?

http://www.cbook24.com/bm_detail.asp?sku=99925917
0151デフォルトの名無しさんNGNG
>>147 ↓これとか
http://www.amazon.co.jp/exec/obidos/ASIN/4873110408/ref%3Dpd%5Fsim%5Fb%5Fdp%5F1%5F1/249-6318906-1305962
0152147NGNG
>>150
ありがとうございます。
「基礎編」というトコにひかれてました。
やはり実際読んだ方のお勧めを聞きたかったもので。
他に候補として他にインプレ○・オライリ○があったのですが・・・
もし読んだ方いましたらお勧め度聞かせてください。
0153デフォルトの名無しさんNGNG
149の馬鹿っぷりにワラタ
0154デフォルトの名無しさんNGNG
>>152
全部買って12万程度だよ 全部買ったら?


DelphiによるWindowsプログラミング入門 綿貫 啓一 (著) <1995/12/1< 日刊工業新聞社 :¥1,845
Delphiプログラミング大全 Programmer’s SELECTION ジェフ ダンテマン (著),<1995/12/1< 翔泳社 :¥5,631
Delphiパーフェクトマニュアル―ボーランド公式 チャールズ カルバート (著),<1996/3/1< インプレス :¥5,631
やさしいDelphi 村上 宣寛 (著) <1997/6/1< 日刊工業新聞社 :¥2,200
Delphiで作る高速CGI 田原 孝 (著) <1998/12/1< エーアイ出版 :¥3,200
ここまでできる Borland Delphi4パワーガイド 小出 俊夫 (著),<1999/4/1< 秀和システム :¥2,800
Delphi Win32 APIリファレンス Ascii books John Ayres (著), 光田 秀 (翻訳) <1999/5/1< アスキー :¥8,800
使いながら覚える Borland Delphi4プログラミング入門 やさしいWindowsプログラミング 竹田 英雄 (著) <1999/5/1< エーアイ出版 :¥2,500
Delphi 4プログラミングバイブル マルコ カントウ (著),<1999/6/1< インプレス :¥5,680
Borland Delphi4オフィシャルコースウェア クライアントサーバシステム構築編 Inprise公式コースウェアシリーズ 真木 保 (著) <1999/7/1< アスキー :¥5,200
DelphiでWindowsゲームを作ろう! 青山 学 (著) <1999/7/1< ピアソン・エデュケーション :¥3,400
Delphi4プログラミング技法〈Vol.2〉コンポーネントとDBの実践テクニック Borland Press ザビエル パチェコ (著),<1999/8/1< ピアソン・エデュケーション :¥5,700
これで完璧!Delphi5裏技170選 金井 利美男 (著) <1999/10/1< エーアイ出版 :¥2,800
基礎からわかるDelphi5 三原 幸一 (著) <1999/10/1< 秀和システム :¥2,400
Delphi Object Pascalリファレンスブック アンク (著) <1999/11/1< 技術評論社 :¥2,480
Delphi5実践データベースプログラミング―DBコンポーネントとQuickReportの活用 田中 和明 (著) <2000/6/1< カットシステム :¥3,800
Delphiデータベースアプリケーション開発ガイド―データベースフレームワークから帳票作成、Oracle8i入門まで 三原 幸一 (著) <2000/6/1< 秀和システム :¥2,800
Delphi & C++Builder即戦力コンポーネントライブラリ―Windowsプログラミングの効率アップ 中島 信行 (著) <2001/1/1< CQ出版 :¥3,000
Delphi Win32 Graphics APIリファレンス ジョン アイレス (著),<2001/3/1< アスキー :¥8,800
Delphiクイックリファレンス レイ リシュナー (著),<2001/5/1< オライリー・ジャパン :¥4,500
Delphi 魔法のTIPS 500 Programmer's Bible Series EXPERTGIG開発室 <2001/8/31< エキスパートギグ :¥8,500
Delphi6プログラミングテクニック裏技180選+新機能20選 金井 利美男 (著) <2001/9/1< エーアイ出版 :¥2,980
VBユーザーのためのDelphi6プログラミング 佐藤 親一 (著) <2001/12/1< オーム社 :¥2,600
Delphi DB&Webプログラミング 松浦 健一郎 (著), 司 ゆき (著) <2001/12/1< ソフトバンクパブリッシング :¥3,200
Borland Delphi 6オフィシャルコースウェア (応用編) Borland official courseware series 井上 勉 (著) <2002/1/1< アスキー :¥4,800
Borland Delphi 6オフィシャルコースウェア (基礎編) Borland official courseware series 服部 誠 (著) <2002/1/1< アスキー :¥2,800
Delphiゲームプログラミングのエッセンス 日高 徹 (著) <2002/1/1< ソフトバンクパブリッシング :¥3,400
0155デフォルトの名無しさんNGNG
>DelphiプログラマのためのCGI入門―WebBrokerでらくらくプログラミング TRY COMPUTING BOOKS
>山本 秀樹 (著)

この本廃刊だけど良い本だと思ってるの自分だけかな?
0156デフォルトの名無しさんNGNG
>>155 それも持ってるよ。 
 良い本だと思うけど、 お勧め出来るかどうかはその人の経験とか色々で違うからな
0157デフォルトの名無しさんNGNG
>Delphiパーフェクトマニュアル―ボーランド公式 チャールズ カルバート (著),<1996/3/1< インプレス :¥5,631
これ、Delphi1用。

続編がDelphi2.0J 32ビットパワープログラミング。
いい本だけど、枕になる可能性もある諸刃の剣。初心者にはお薦めできない。

それ以降のは邦訳は出てないけど、原書の方はあるらしい。
0158デフォルトの名無しさんNGNG
Delphiって関数の戻り値とかはどうなってるの?
そもそも戻り値っていう概念が有るのだろうか・・・
0159147NGNG
>>154- >>157
ありがとうございます。
こんなにあるんですね・・・
とりあえずインプレスは対象からハズすことにします。
0160DelフサギコNGNG
  ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ ゚Д゚ミ  < 何がいいたいん?>>158
 (ミ  ミつ)ビシッ\_________
〜ミ  ミ
  ∪ ∪ カオアラッテ デナオセ

function AAA: Integer;
begin
 Resutl := 666;
 //AAA := 666;
end;
0161デフォルトの名無しさんNGNG
とりあえず>>158には戻り値の無い関数を教えてもらいたい…
0162158NGNG
>>160
出直します・・・

>>161
Pascalって古いイメージ有るから
Basicみたいにサブルーチンしか無かったらなぁと思ったり
0163デフォルトの名無しさんNGNG
>>162
Cも古いですけど。
0164161NGNG
なるほど…確かにPascalは1623年生まれだからな…(とボケてみる)
0165デフォルトの名無しさんNGNG
C(hrist)は紀元前4年頃だっけ
0166デフォルトの名無しさんNGNG
TStringGrid では、一つのCellに表示できるのは1行だけですよね。
Borlandのサイトには複数行表示できる物が載っていますが、
WordWrapできる複数行 TStringGrid はどこかにないでしょうか。

今は TDrawGrid を継承して、自力で描画しています。ところが、
TStringGrid のように、各セルに文字列を関連付ける方法がわからなかったため、
OnDrawString というイベントを作って、その都度書きこむ文字列やフォントを
指定しています。
0167デフォルトの名無しさんNGNG
>>162
多子化Cの一年先輩だった気がする。
アセンブラマンセーのリッチーらにオモチャってコケにされたんだっけ?
0168Delphi初心者NGNG
すいません クラスメンバーの可視性で質問なのですが…
疑問�@
type
TForm2 = class(TForm)
Button1: TButton;
この場合Button1はパブリッシュメンバーになるのですよね?
疑問�A
type
TMyClass = class(TObject)
0169168=Delphi初心者NGNG
すみません 途中で投稿しました…(鬱
疑問�A
type
TMyClass = class(TObject)
 hoge : TList;
この場合hogeは何になるのでしょう?
{$M+}の時はバブリッシュ? それともいつでもパブリック?

特に問題は無いのですが気になって…
0170デフォルトの名無しさんNGNG
>>166
>OnDrawString というイベントを作って、その都度書きこむ文字列やフォントを
>指定しています。

そこまでできるならコンポーネントにできるだろうに。
抽象化能力が足りないのかな?でも自分で作って自分で使うのなら
それでも良いと思うよ。
0171デフォルトの名無しさんNGNG
ちょっとお聞きしたいのですが
タブを利用したプログラム(同じタブを沢山)で
オブジェクト(ボタンとかリストとか)を動的に作成したいのですが
その場合は
タブに含まれるオブジェクトを格納するクラスを作って
新しいタブを作るときに動的配列にそのクラスを生成すればいいのですか?
0172デフォルトの名無しさんNGNG
まずやって、それでダメなら聞いてみてください
0173DelフサギコNGNG
  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < 今日は冷えるね
  ,;゙  ミ     \_____________
 ミ.  ミ
/゛゛゛゛
>>168-169
�@publishというよりpublicですが
あまりButtonの属性は気にせずにどぞ。

DelphiIDEが管理する部分なので
自分でコード書くときはprivateとかpublicとか
に書くようにしませう。

�Aちゃんとprivateとかpublicのトコに移動
させて、くださいな。

publicとpublishってオブジェインスペクタに現れる
かどうかだけだからButtonやhogeは
public族生だと思われ。
0174168=Delphi初心者NGNG
>>172
あわわ、すみません とりあえずRTTIが有るのか調べてみます。
0175デフォルトの名無しさんNGNG
>>172
各オブジェクトのparentをTABページにすること。
0176168=Delphi初心者 NGNG
>>173 Delフサギコさん
すみません 寒い質問ばかりで…(汗

色々調べたのですがやはり{$M}に左右される様です。
{$M+}だとパブリッシュ で{$M-}でパブリックのようです。

>publicとpublishってオブジェインスペクタに現れる
>かどうかだけだからButtonやhogeは
>public族生だと思われ。

これはpublishedだとメンバが呼び出されていなくても
実行コードに埋め込まれる点を除いて同じようです。
#RTTIに載るメンバのコードは必ず実行コードに含まれるようです。

HELPには{$M-}の状態で{$M+}でコンパイルされたクラスの
派生クラス以外はPublishedメンバを作れませんと書いてあるし…
(Del5)

うーん TP3→TP5→Del1→Del5 と某社の使ってますが
HELPの難解度は変わりませんね(w
0177DelフサギコNGNG
 いや、そうではなくて
 ホントに気温が低いって言いたいだけです。

  . ̄ ̄∨ ̄ ̄ ̄
    . ∧,,∧  質問内容はスッキシして
     ミ ゚Д゚ ミ  いいと思うです
     (ミ  ミ)  というか、凄い事追求されてますのね。
    〜ミ  ミ
      ∪''∪ ゴメンヨ マギラワシイ コメントデ

 俺の部屋、1Fなので
 床下から冷えがね。結構、くるのよ
 ああ、寒い寒いわ〜
0178名無しヘタぐらま ◆B18Bks.Y NGNG
>>166
ボーランドのサイトにあるTipsってこれですよね.
http://www.borland.co.jp/tips/delphi/dh011/sgrid_1.html
ワードラップは壱カ所いぢるだけで出来ます.

Options := DT_EDITCONTROL;

これを

Options := DT_NOPREFIX or DT_WORDBRAK;

に変えればOK(のはず).

        ☆        ☆

DT_WORDBRAK がワードラップ指定で改行コードの処理もやってくれます.
DT_NOPREFIX はワードラップには全く関係ありませんが,
これを入れないとたとえば
"Tom&Jerry"は"TomJerry"となってJに下線がつきます(メニューの表示みたいになる).

DrawCellEx については詳しくはここをご覧になるとよいでしょう.
http://www.microsoft.com/JAPAN/developer/library/jpgdipf/_win32_drawtextex.htm
ワードラップのほかに位置合わせもできるAPIなので覚えておいて損はないでしょう.
0179168=Delphi初心者NGNG
>>177 Delフサギコ さん
うう。。深読みしすぎました すみません(汗

ブランクが長かったのとWinベース(Del)になってからちゃんとクラス型のことを
調べずにやってたandちょっと暇が出来たので最上位クラスから見直そうかと思い
色々やってます。

ってか HELPを読み直すと「クラスメンバーの可視性」でちゃんと書いて有りました(鬱
でも「パブリッシュメンバー」の最後の説明はよくわからない(w

TP5やってたからなんとなくわかるけどDelからいきなり始めた人はOOPを覚えるの
大変じゃないのかな?OOP周りのHELPが殆ど無い&ボロボロのような気が…

俺がアフォなだけという可能性が高いですが(鬱
0180166NGNG
>>177
うう、わざわざありがとうございます。
でもごめんなさい、超重要なことを忘れてました。
どうして悩んでるかといえば、WORDWRAP 自体には、それほどの問題はないのです。
問題は、
「WordWrapされた文章が常に全部表示されるように、その行の Height を自動調整したい」

ことなんです。Drawイベント時に、その行に含まれるセルの中で、最も
Height を必要としているセルを割りだし、そのHeight値を得て、その行のHeightを設定しています。
でも、すごく処理が重くなってしまうのです。たまに再描画されないときもあるし、
最後の1行(セルの行ではなく、セルに含まれる文字列)が表示されないときもあるしで…

最終的に何がしたいのかというと、

(1) Gridコントロールの横幅にあわせ、一番右側のセル列の幅を自動調整する(横スクロールバーを出さないように)
(2) 各セルに表示された文字列を、セル内での横スクロールをしなくても読めるように、WordWrapしておく。
(3) 各セルに表示された文字列を、セル内での縦スクロールをしなくても読めるように、セルの高さを自動調整する。
(4) 各セルにフォント情報を埋め込めるようにする(Cells[x,y].Fontみたいに)

こういう事をしたいのです。
いや、「なら、つくれよ」といわれれば確かにその通りですし、
作ったのですが、どうにも効率が悪いような気がして…
018143ですNGNG
前スレからずっとテキストエディタ作ってます。ヽ(;´Д`)ノ
今は参考書なども購入してなんとか調べつつ作っている状況でございます。
完成度はだいたい90%くらいでもうすぐ終わりそうなんですが、
結局今日も懲りずに質問に参った次第でして…。

最後にGUIアプリによくある「実行ファイルにファイルをドラッグ&ドロップすると
ファイルを読み込む」と言うのを実装しようと思ってます。
んで自分なりに調べた所、前にやってたVBだと
command.comから引数を取ってなんちゃら…と言うのがあったと思ったので、
Delphiでもそれを応用してみようと思ったのですが、
…いかんせんまだ初心者なんでどうにも調べようがなく…(;´Д`)
(Memoコンポーネントにドラッグ&ドロップするのは出来たんですが)

厨房的な質問ではございますが、ご教授頂ければ幸いです。

>>52さん
私も学校の課題で自分しか学んでないのでかなり孤独です。
VBに詳しい友達となんとか手取り足取りやってますが、
やっぱり噛み合わない部分も多かったりでいろいろ疲れますな(笑
0182デフォルトの名無しさんNGNG
>>181 ParamStr をヘルプで 
0183デフォルトの名無しさんNGNG
でも、ParamStrだと、スペースの入ったパスが分割される問題が。

Name1 := ParamStr(1);
Name2 := Name1 + ' ' + ParamStr(2);
if FileExists( Name2 ) then FileName := Name2 else
if FileExists( Name1 ) then FileName := Name1 else
FileName := '';

とか?
0184デフォルトの名無しさんNGNG
>180
>(4) 各セルにフォント情報を埋め込めるようにする(Cells[x,y].Fontみたいに)
StringGridならObjectsプロパティを利用するのがいいのだろうけど、DrawGridにはないのか・・・。

Grid系って妙に重いような気がするので、1から作っちゃった方がいいかもしれない。
昔、マインスイーパーをDrawGridで作ったらゲームにならなかったのでPaintBoxで
描画するように作り直した覚えがある。
0185デフォルトの名無しさんNGNG
>>179 RTTIを利用したいかどうかだけなので、あんまり考えなくていい所のように思います

フォームを継承するような場面で、そのユニットには.DFMを持たせずに
 下位クラスの別.DFM で初期化させたい時とかには手動で書いたりしますけど

後、RTTIを使って 列挙型の文字列を取りたい時くらいかな
0186デフォルトの名無しさんNGNG
>>183 Drag&Dropなら ""が付いて自動的にParamStrが解釈して ""を取り外してくれるよ
0187186NGNG
コマンドライン入力がそのまま欲しい場合は GetCommandLine というAPIを使うといいよ
018843NGNG


沢山の回答ありがとうございます。
やはりParamStrを使うのですな。(182,183さん)
187さんのGetCommandLineと言うのも良さそうなので、
とりあえず自分なりに解釈して頑張ってみます…。

ハマったらまたお世話になるかもしれません(;´Д`)(ぉ
018943@ハマリ中NGNG
すいません、ParamStrについて質問させてください(;´Д`)

Param関数において、
ParamStr(0)が実行ファイルのパス、
ParamStr(1)がその後に続く値、
ParamStr(2)がその後…と言う感じに続くのであれば、
Windowsの[ファイル名を指定して実行]で行うコマンド…
つまりはメモ帳にパラメータを追加して実行するみたいに

 notepad testfile.txt
   ↑     ↑
 ParamStr(0) ParamStr(1)

と解釈して良いのでしょうか?
それだとParamStr(1)に対する処理を書けば良いのかな?
と思っているのですが…。
0190デフォルトの名無しさんNGNG
>>189 その通りです。ParamCountで数がわかります
IDEの実行メニューの実行時引数に色々入れて試してみては?
0191デフォルトの名無しさんNGNG
>>189 うろ覚えだけど ParamStr(0)はフルパスじゃなかったかな
0192デフォルトの名無しさんNGNG
notepad testfile.txt "this is a pen.txt"
なら
ParamStr(0) = c:\windows\notepad.exe のようにフルパス
ParamStr(1) = testfile.txt
ParamStr(2) = this is a pen.txt のように " は除かれる
019343@ハマリ中NGNG
>192さん
では、空白の入るファイル名に関して特に懸念することは無いのでしょうか?
0194デフォルトの名無しさんNGNG
>>193 無い
ためしにやってみれば判るが 複数ファイルを同時にD&Dしても自動的に""が付いて
Delphi側で除かれるから
019543@ハマリ中NGNG
ありがとうございます。
しばらく作業してみます。
0196名無しヘタぐらま ◆B18Bks.Y NGNG
>>178
×→DrawCellEx
○→DrawTextEx

×→Options := DT_NOPREFIX or DT_WORDBRAK;
○→Options := DT_NOPREFIX or DT_WORDBREAK or DT_EDITCONTROL;

>>180
文字列グリッド(TStringGrid)で作ってみました.Delphi4以降専用です.
(セルごとのフォント指定は実装していません)

フォームに文字列グリッドを貼り,グリッドのAlignプロパティをalClientにして,
フォームのOnCreate,OnResize,グリッドのOnDrawCellイベントハンドラ
およびUpdateCellHeightsメソッドを以下のように書きます.

const
cDefaultDrawTextOptions = DT_NOPREFIX or DT_WORDBREAK or DT_EDITCONTROL;

procedure TForm1.FormCreate(Sender: TObject);
var
aRow, aCol: integer;
begin
for aRow := 0 to StringGrid1.RowCount - 1 do
if not (aRow in [1, 4]) then
for aCol := 0 to StringGrid1.ColCount - 1 do
StringGrid1.Cells[aCol, aRow] := format('This cell is %s 行 %s 列', [
StringOfChar('R', aRow), StringOfChar('C', aCol)]);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
// グリッドのセルの幅の変更…(1)
StringGrid1.DefaultColWidth :=
StringGrid1.ClientWidth div StringGrid1.ColCount - StringGrid1.GridLineWidth;
// グリッドのセルの高さの変更…(3)
UpdateCellHeights;
end;

(つづく)
0197名無しヘタぐらま ◆B18Bks.Y NGNG
(つづき)

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
StringGrid1.Canvas.FillRect(Rect);
// ワードラップして描画…(2)
DrawText(StringGrid1.Canvas.Handle, PChar(StringGrid1.Cells[ACol, ARow]),
-1, Rect, cDefaultDrawTextOptions);
end;

// グリッドのセルの高さの変更…(3)
// フォントやセルの文字列を変えたときにはこのメソッドを実行してください.
procedure TForm1.UpdateCellHeights;
var
aRow, aCol, MaxHeight, aHeight, MinHeight: integer;
aRect: TRect;
begin
MinHeight := StringGrid1.Canvas.TextHeight('gM');
for aRow := 0 to StringGrid1.RowCount - 1 do
begin
MaxHeight := MinHeight;
for aCol := 0 to StringGrid1.ColCount - 1 do
begin
aRect := Bounds(0, 0, StringGrid1.ColWidths[aCol], 1);
// ワードラップして描画したときの高さを求める
aHeight := DrawText(StringGrid1.Canvas.Handle,
PChar(StringGrid1.Cells[aCol, aRow]), -1,
aRect, DT_CALCRECT or cDefaultDrawTextOptions);
if aHeight > MaxHeight then
MaxHeight := aHeight;
end;
StringGrid1.RowHeights[aRow] := MaxHeight;
end;
end;

0198デフォルトの名無しさんNGNG
TWebBrowserでActiveXのビデオ表示した場合、
音が出ない形で表示されちゃうんだけど、
これはなぜでしょう?
一応、検索してみたけどヒットしないみたい…。
0199198NGNG
「<OBJECT>のタグで」が抜けました。同じ物をIEで見ると、
普通に表示されます。不思議…?
0200デフォルトの名無しさんNGNG
Windowsのボタンやメニューで標準で使われているフォントを調べるのって、
直接レジストリを見に行かないとできないんでしょうか?
0201誰か教えてくれよぉ〜NGNG
D6で自作コンポ作ったのだが、都合で他の奴がAccessからそのコンポを使いたい
とケチつけやがった、そこで、ActiveX版も作ってやろうとした、
ActiveXなんて初めての挑戦だったのだが、Borlandのホームページ見ると
VCLコンポから簡単にActiveXが作れるような事が書いてあった。で、
新規作成の所でActiveXコントロールを選択しても、VCLの欄に俺のコンポが
出てこないのだがなぜ?(他のは出てくるし、俺のもEditから派生させた
のは出てる)非ビジュアルコンポってActiveXにできないのか?
0202デフォルトの名無しさんNGNG
>>201 非ビジュアルは出ない
継承元をTComponentからTWinControlかTCustomControlに
0203誰か教えてくれよぉ〜NGNG
>>202
やぱし、そーなの?助かったよ、ありがと。これでAccess野郎も喜ぶだろう。
でも、継承元がTComponentなコンポはなぜ出てこないの?継承元が単純すぎるから?
0204デフォルトの名無しさんNGNG
TServerSocket使ってたものです。挙動が異なり困っています。具体的には…

クライアントがサーバに接続している際、クライアントプログラムを一方的に強制終了すると、サーバ側ではエラーにならず、切断イベントが発生していました。が、

自作サーバクラス内に TServerSocket を組み込んで使用したところ、
クライアント側が強制終了するとエラーが発生するようになってしまいました。どこがいけないのでしょう?

type
TReportEvent = procedure (Sender:TObject; AText:string) of object;

TChatServer = class( TComponent )
private
 { サーバソケット }
 Server: TServerSocket;
 FOnReport:TReportEvent;
 procedure SetPort(const Value: Integer);
protected
 { TServerSocketのイベントに関連付けるイベント手続き }
 procedure OnClientConnect(Sender:TObject;Socket: TCustomWinSocket); virtual;
 procedure OnClientDisconnect(Sender:TObject;Socket: TCustomWinSocket); virtual;
 procedure OnClientError(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);virtual;
 { ステータスやログ等を出力 }
 procedure Report(AText:string);
public
 constructor Create( AComponent: TComponent ); override;
 destructor Destroy; override;
 procedure Open;
 procedure Close;
 property Port:Integer write SetPort;
published
 property OnReport:TReportEvent read FOnReport write FOnReport;
end;

const
 SocketErrorMessage:array [TErrorEvent] of string = (
  {eeGeneral} 'ソケットは,どのカテゴリにも属さないエラーメッセージを受け取った',
  {eeSend} 'ソケット接続に書き込もうとしたときにエラーが発生した',
  {eeReceive} 'ソケット接続から読み出そうとしたときにエラーが発生した',
  {eeConnect} '接続要求が完了できなかった',
  {eeDisconnect} '接続を閉じようとしたときにエラーが発生した',
  {eeAccept} 'クライアント接続要求を受け付けようとしたときに問題が発生した',
  {eeLookup} 'LOCKUP ERROR'
 );

0205デフォルトの名無しさんNGNG
implementation

{ TChatServer }

procedure TChatServer.Close;
begin
 Server.Close;
end;

constructor TChatServer.Create(AComponent: TComponent);
begin
 inherited;

 { Server の生成と設定 }
 Server := TServerSocket.Create( Self );
 Server.ServerType := stNonBlocking;

 { イベントの関連付け }
 Server.OnClientConnect := Self.OnClientConnect;
 Server.OnClientDisconnect := Self.OnClientDisconnect;
 Server.OnClientError := Self.OnClientError;
end;

destructor TChatServer.Destroy;
begin
 Server.Free;
 inherited;
end;
0206デフォルトの名無しさんNGNG
{ クライアントが接続した際に発生(TServerSocketに関連付けられるイベント) }
procedure TChatServer.OnClientConnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Self.Report('[接続] /アドレス:'+Socket.RemoteAddress);
end;

{ クライアントが切断した際に発生(TServerSocketに関連付けられるイベント) }
procedure TChatServer.OnClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
 Self.Report('[切断] /アドレス:'+ Socket.RemoteAddress );
end;

procedure TChatServer.Open;
begin
 Self.Server.Open;
end;

procedure TChatServer.Report(AText: string);
begin
 if Assigned( Self.OnReport ) then
  Self.OnReport( Self, AText );
end;

procedure TChatServer.SetPort(const Value: Integer);
begin
 Server.Port := Value;
end;

procedure TChatServer.OnClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
 Self.Report( '[エラー] '+ SocketErrorMessage[ ErrorEvent ] );
end;
0207デフォルトの名無しさんNGNG
>>204
ちょっと漠然としてる感じがします。

1.「サーバ側ではエラーにならず、切断イベントが発生していました」というのは
  どういう条件だったんですか?
2.どんなエラーが発生するんですか?
3.エラーをトラップして切断イベントの代わりにはできないんですか?
0208デフォルトの名無しさんNGNG
Delphi6 Personalを使ってます。

FormよりForm内のコンポーネントが大きい場合にす小ロールバーが出ますよね。
そのスクロールバーのサイズってどう取得すれば良いんでしょうか?
ButtonSizeもSizeも0なので困っています。

後、タスクバーのWindowクラス名ってなんになるんでしょうか?
0209デフォルトの名無しさんNGNG
保守age
0210デフォルトの名無しさんNGNG
Delphi初心者です。
TMemoでファイルから読み込み表示するときに、
特定キーワードのみ文字色を変えたいのですが、
どうすればよいでしょうか。ヒントだけでも教えてください。
0211デフォルトの名無しさんNGNG
>>210 TMemoでなければダメですか?
シェアウエアとかのエディターコンポを使うのが簡単なように思うんですが?
0212デフォルトの名無しさんNGNG
>>210
TRichEdit使えば。
0213デフォルトの名無しさんNGNG
フリーのAFEditも色分けできるよん
俺はTEditor使いだが。
0214デフォルトの名無しさんNGNG
kylixでも動くようにしたいので、TMemoの方法が知りたいです
あと(いつか)できたらソース付きで公開したいので、
シェアウェアとかフリーウェアを使わないでやりたいと思ってます
0215デフォルトの名無しさんNGNG
TMemoにコダワルと、とても難しい。
 自分でビュアー作った方がマシなくらい難しい
0216デフォルトの名無しさんNGNG
>>215
と、言うかテキストボックスってオーナードローできるの?
0217デフォルトの名無しさんNGNG
まだ見てますので>>208わかる方おられたらお願いします。
0218デフォルトの名無しさんNGNG
>>215
エディタ部分が分離可能な設計にしましょう

CLXベースで一から自作するんならそうでなくてもいいが。
0219ねこまNGNG
「スクロールバーのサイズ」って漠然と言われてもねぇ……

GetSystemMetrics ?
0220デフォルトの名無しさんNGNG
>>219
試してみます。
0221デフォルトの名無しさんNGNG
>>219
できました。助かりました。
0222デフォルトの名無しさんNGNG
OCXをDELPHIで作って、VBから使おうとすると文字列が帰ってこないがなぜ?

function TTestOCX.REC(var fpRec:WideString):Integer;
begin
fpRec:='2ちゃんねる';
result:=0;
end;

-------------- vb -----------------
dim tmp_rec as string
dim rc as integer
rc=TestOCX.rec(tmp_rec) <--- tmp_recの中身は空になってる
0223デフォルトの名無しさんNGNG
>>222 WideString を使うなら 
 ええとど忘れした・・・とにかく VBから読める使える型にしてやっておくれ
0224 NGNG
WinSightってどこかでDL出来ません?
Delphi6に入ってないんです・・
0225224NGNG
解決しました・・・
スレ汚しスマソです・・・
0226222NGNG
>>223
StringToWideChar使えって事かな?
0227198NGNG
レス無かったか…。
どなたかTWebBrowserでobjectタグのメディアプレーヤ埋め込み型で
音が出ないことについて知ってる人はいないですかね?
自分だけなのかな?
TWebBrowserでは音声不可になる…ってことはあり得るのかな?
0228名無しNGNG
他のアプリの、MainFormから3階層目のハンドル(TTabControlのハンドル)を得たいのですが、
 hHWND := FindWindow('TMainForm', nil);
 hHWND := FindWindowEx(hHWND, 0, 'TPanel', nil);
 hHWND := FindWindowEx(hHWND, 0, 'TPanel', nil);
 hHWND := FindWindowEx(hHWND, 0, 'TTabControl', nil);
としたところ、0が返ってきてしまい上手くいきません。
どこらへんがマズイでしょうか?

メインフォームにパネルが幾つか貼ってあり、その中の一つにまたパネルが貼ってあり、
そのパネルにタブコントロールが貼ってあるという状況です。
0229デフォルトの名無しさんNGNG
>>222
ActiveXでVBに渡すなら、WideStringじゃなくて普通にStringでいいだろ
0230ねこまNGNG
TWebBrowser を貼り付けたアプリと IE とで code="〜" のパスの介錯に違いがあるのではないかと予測するがどうか?
0231198NGNG
>>230
おっ!レスあるとウレシイですねー。
えーと、「音声のみ」不可となって表示されるんですよ。
動画(メディアプレーヤ自体も)は出るんです。
が、「音出ないよ」のマークになっちゃってるんですよねー?
もちろん、その動画(mpeg)は音あるし、IEで見るとちゃんと
音出るんです。不思議…??
0232222NGNG
>>222 で書いた者です
>>223 VBで使える文字列の型がいまだに探し出せません(;;)
>>229 ocxの場合、DELPHIのStringは駄目だと思いますが、WideStringだから
駄目ってのはアリですか?単にプロパティで設定された条件により文字列を
返したいだけなのですが・・・。
0233貧乏人NGNG
「delphiで作られた有名ソフトって何がある?」ってスレ
すごく短命でしたな。それほど浸透してない(?)ってことだろうか?

あの4800円くらいするデカイ本を本屋で見た。デカかった・・・。
欲しかったけど、高いなー。基礎編の方は割と必要なさげだった。
アレはエロゲーパッケージに通ずるデカさだ(藁
0234デフォルトの名無しさんNGNG
>>228
> どこらへんがマズイでしょうか?
たぶん、複数のパネルのうち TTabControl がのっかっているのと
ちがうのが最初に見つかるためでしょう。

以下の FindClassInChilds( ) 関数では、直接の子のほかに
孫、ひ孫...も検索して、指定のクラス名のウィンドウハンドルを
返します。見つからなかったらゼロを返します。

type
pFindData = ^TFindData;
TFindData = record
ClassName:string;
FindHandle:HWND;
end;

function GetClassNameString(hWindow:HWND):string;
var
p:PChar;
ret:integer;
begin
GetMem(p,100);
ret := GetClassName(hWindow,p,100);
SetString(result,p,ret);
FreeMem(p);
end;

function EnumCldProc(hWindow:HWND;Data:LParam):Boolean; stdcall;
begin
result := true;
if GetClassNameString(hWindow) = pFindData(Data)^.ClassName then
begin
pFindData(Data)^.FindHandle := hWindow;
result := false;
end;
end;

function FindClassInChilds(hParent:HWND;ClassName:string):HWND;
var
FindData:TFindData;
begin
FindData.ClassName := ClassName;
FindData.FindHandle := 0;
EnumChildWindows(hParent,@EnumCldProc,integer(@FindData));
result := FindData.FindHandle;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
hParent:HWND;
begin
hParent := FindWindow('TMainForm', nil);
Label1.Caption := IntToStr(FindClassInChilds(hParent,'TTabControl'));
end;

0235誰か教えとくれぇ〜 NGNG
>>232
VCLからActiveXを作成したのであれば、自動で変換できなかった部分もある
かもしれない、もう一度ActiveX変換後のソースを眺めてみれ。
と、人の蝿おってる場合じゃない、折れもActiveXに挑戦中(^^;

折れが作った非ビジュアルActiveXだが、貼り付けた時にアイコンが表示さ
れないのだが、何処にアイコンを設定すりゃいいのさ、誰か知ってる?
0236171NGNG
>>172
ほかの人はどうやっているのか気になったんです
ただDelphiでのクラスの作り方がよく解らなかったんで
クラス化するのは後にすることにしました。
今はタブ、ツリー、リスト、スプリッターの動的配列を確保して
インスタンスを生成してます

>>175
Borlandのページにタブとボタンを動的生成するページが有ったんで参考にしました。
取りあえず動作するようになり前に進みました。


今困ってるのは新規タブを作成した場合
一番左はしに出来てしまうのです。
右側に作りたい場合などはどうすればいいのか解る方がいたら
アドバイス欲しいです。

0237デフォルトの名無しさんNGNG
>>200
//メニューのフォント
var
 lf: LOGFONT;
 nm: NONCLIENTMETRICS;
begin
 nm.cbSize := sizeof(NONCLIENTMETRICS);
 SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @nm, 0);
 lf := nm.lfMenuFont;
//
 lf.lfFaceName//フォント名
 lf.lfHeight//フォント高さ
 lf.lfWeight//700以上でBold
 lf.lfItalic//1の場合はitalic
0238デフォルトの名無しさんNGNG
>>228
最後だけ0を返すの?
0239デフォルトの名無しさんNGNG
Shift-JIS ←→ EUC-JP 相互コンバートなコードを書ことしています。
String でデータがある時は ByteType を使って if 文を簡略化してますが、
文字コードしか無い場合には、すべて if 文で総当りしてコンバートするくらいしか
方法を思いつきません。その手しか無いのでしょうか???
もっと賢いやり方があるような気はしているのですが・・・・・
0240239NGNG
ちなみに漢字は対象外にしています。
1バイト文字と2バイト文字が混ざっていますが
2バイト文字の方は英数字記号ひらカナなどの
合計500文字程度なので、少々おバカで無駄の多いコードでも
何とかなりそうではあるのですが・・・
0241ムッチムチの名無しさん NGNG
ハイ!質問です。

IEを取り込んで、ボタンでIE上のフォームに記入するのはどのようにすればいいでしょうか?
パスワードとかIDとかを自動入力させるみたいな・・・
0242デフォルトの名無しさんNGNG
あの方はどちらへ逝かれたのでしょうか・・・。
0243デフォルトの名無しさんNGNG
>>239-240
素直に既存のライブラリ(jconvert.pasとか)を使うわけにはいかないの?
0244 ◆iWks40y. NGNG
 Delphi初心者です。
Delphi6.0PersonalとDelphi2.0を使っています。

ユーザーがキーボードを入力したのを、感知するにはどうしたらいいでしょうか?
フォーム上でなら感知することは出来ますが、フォームが非アクティブになると、
感知できません。TForm.OnMessageでも反応しないようです…。
どうかよろしくお願いします。
0245デフォルトの名無しさんNGNG
>>242
pちゃん?
0246名無しNGNG
>>234
出来ました!
完璧ッス。
ありがとうございました!
0247デフォルトの名無しさんNGNG
メニューアイテムの座標を知りたいのですが、なにか良い方法はありませんか?具体的には、メインフォームからの相対座標を取得したいのです。
そこで以下の関数を作ったのですが、3階層目あたりの
サブメニューになると、正確な値が取得できず困っています。

{ フォーム AForm からのメニュー AMenu の相対座標を得る }
function GetMenuRect(AForm:TForm;AMenu:TMenuItem):TRect;
 function ShiftRect(ARect:TRect;dx,dy:integer):TRect;
 begin
  Result:=Rect( ARect.Left+dx, ARect.Top+dy, ARect.Right+dx, ARect.Bottom+dy );
 end;
var
 DRect: TRect;
 IMenu: TMenuItem;
begin
 { その位置のスクリーンでの座標取得 }
 GetMenuItemRect( AForm.Handle, AMenu.Parent.Handle, AMenu.MenuIndex, Result );
 { フォームからの相対座標に変換 }
 Result:=ShiftRect( Result, -AForm.Left, -AForm.Top-24 );

 IMenu:=AMenu.Parent;
 while IMenu.Parent is TMenuItem do
 begin
  { その位置のスクリーンでの座標取得 }
  GetMenuItemRect( AForm.Handle, IMenu.Parent.Handle, IMenu.MenuIndex, DRect );
  { フォームからの相対座標に変換 }
  DRect := ShiftRect( DRect, -AForm.Left, -AForm.Top-24 );
  Result := ShiftRect( Result, DRect.Left, DRect.Top );
  IMenu := IMenu.Parent;
 end;
end;
0248デフォルトの名無しさんNGNG
クラスのメンバー関数を呼び出したとき
そのクラスの先頭ポインタはどこにあるのですか?
Bレジスタかと思っていたのだけれどはっきりしない。
0249239NGNG
>>243
なんと!こんな素晴らしいものが!
これで十分。全然オッケィです。
この前検索した時は見つけられなくて・・・
情報サンクスでした!
0250デフォルトの名無しさんNGNG
>>235
おっしゃる通りでした、有難うございました。
但し、私も非ビジュアルActiveXだが、貼り付けた時にアイコンが表示さ
れないです、非ビジュアルなocxだからそんなものなのではないでしょうか?
0251 NGNG
別のアプリにF3押しを伝えるには↓でいいんですよね?
SendMessage(Form1.Handle,WM_KEYDOWN,VK_F3,0);

上手くいかないんですが・・・
0252デフォルトの名無しさんNGNG
別のアプリだったら、別のアプリのHANDLEなんじゃないの?
0253デフォルトの名無しさんNGNG
別アプリに送るのに Form1.Handle というのはあるまい
0254デフォルトの名無しさんNGNG
これからDelphiを始めようと思って、Delphi 6 Personalを買おうと思っています。
超初心者にお勧めの本ってありますか?
おすすめのサイトなんかもあったら教えてください。
0255書けませんよ。。。NGNG
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ 
0256デフォルトの名無しさんNGNG
personalは買うもんではなくダウソするもの。

実用に耐えるのはプロフェッショナル版。
0257デフォルトの名無しさんNGNG
>>256
ダウンロードできるんですか?
それじゃあ製品版の意味ってなんなんでしょうね…
0258デフォルトの名無しさんNGNG
>>257
メディア、言語リファレンス本代。
5000前後でしょ。

それから、ダウソが面倒ならC魔蛾のCDに付いてるYO!
0259デフォルトの名無しさんNGNG
>254
PersonalならCDが付属する入門書を購入するという手も有りますよ。

http://www.ascii.co.jp/books/detail/4-7561/4-7561-4002-5.html

なんか「オフィシャル」って名が付いてるから良いかも。
0260デフォルトの名無しさんNGNG
>>258
それだけで\5,000もするんですか…
C魔蛾って何ですか?

>>259
その本は超初心者がDelphiを始めるに当たっていい本なんでしょうか?
0261デフォルトの名無しさんNGNG
あれ。この著者、服部誠/謎さんじゃない。
0262デフォルトの名無しさんNGNG
>>261
誰それ?
0263デフォルトの名無しさんNGNG
実際
見てきめれば?
0264デフォルトの名無しさんNGNG
>>260
Cマガジン だYO!
1000円くらいするかな。
買う前にその月のCD-ROM内容確認してNE!
0265デフォルトの名無しさんNGNG
>>263
そうですね。実際に見て決めたいと思います。

>>264
それって本屋に普通に売っているんでしょうか。聞いたことないです…
0266デフォルトの名無しさんNGNG
>それって本屋に普通に売っているんでしょうか。聞いたことないです…
うそ、、、もしかして僻地にお住まい?
0267デフォルトの名無しさんNGNG
>>267
僻地… まぁ確かに田舎ですね。30分くらい歩かないと本屋ないですし…
0268↑NGNG
間違えました。
>>266
ですね…
0269デフォルトの名無しさんNGNG
>>267
学生さんなら時間があるだろうから最寄の電脳街へ行ってみるといいよ
0270デフォルトの名無しさんNGNG
>>269
今、ネットで検索して調べたんですが難しそうな内容ですね…
これ買って読んでいけるかものすごく心配です。
プログラム初心者の自分でも大丈夫なんでしょうか?
0271デフォルトの名無しさんNGNG
CマガはDelphi 6 Personalの入ったCD-ROMの入手用と割り切って
参考書は別に買ったほうがいいでしょう
(Cマガも読んで無駄にはならないと思うけど)
0272デフォルトの名無しさんNGNG
たとえ本が難しかったとしても、del本体は初心者にやさしいYO!
プロレベルになってコードが大きくなっても読みやすいし。

とりあえず、ダウソか安い本かで始めちゃえば。
0273デフォルトの名無しさんNGNG
>>271-272
Cマガ買ってDelphi手に入れたいと思います。
これからDelphiの世界に足踏み入れますので、よろしくお願いします!
0274259NGNG
>254
本屋で見かけたら買おうかなとは思って居るのですが、
見かけないので内容はよく分かりません。
私は、「基礎から分かるDelphi5」を買って勉強しました。

今、家にある雑誌を確認したところ、「日経ソフトウェア」の
一月号にDelphi6を収録したCDがついていましたよ。
0275231NGNG
私はCにゃ「まだ」興味が無いので(delphiが先という意味)、
付録目当てにCマガ買うのはもったいないな…
と思ってたらテックウィンに付いてたのでラッキーでした まる。

あいやー、まだ問題が解決出来ない…(TT。なぜなんだー。
誰かTWebBrowserで作ったブラウザで「objectタグ」のビデオ、
音が出るぞ!って人いませんかね?うーむ。検索もしてるのだが、
うまくヒットさせられない…。潮時かな、ここでは…。
0276デフォルトの名無しさんNGNG
>>274
ありがとうございます。日経ソフトウェアというのも実は恥ずかしながら聞いたことないです…
今度書店で「基礎から分かるDelphi5」を見てみたいと思います。

>>275
CマガジンってC言語なんかの雑誌なんですか?プログラムの総合誌かと思いました。
0277デフォルトの名無しさんNGNG
昔は C 言語マガジンだったが、とちゅうから Computer マガジンの C に
変わった。
ぼろくそいう人も多いけど、存在は知っておいても損はない。
0278デフォルトの名無しさんNGNG
>CマガジンってC言語なんかの雑誌なんですか?プログラムの総合誌かと思いました。
元々は「C言語の雑誌」だったけど今は「プログラムの総合誌」になったらしいね
0279275NGNG
>C言語なんかの雑誌なんですか
です(^^;。
0280275NGNG
>>278
ありゃ。そーなんですか。読んでなかったから…。
いつの間に総合誌に…。
0281デフォルトの名無しさんNGNG
>>253
なんとなく意味をくんで欲しかったのだが、
こー書けば理解して頂けるでしょうか?
var
wfHWND:HWND;
begin
wfHWND:=FindWindow('xxxxxxxx',nil);
if (wfHWND <> 0) then
begin
SetForegroundWindow(wfHWND);
keybd_event(VK_F3,0,0,0);
end;
0282253NGNG
>>281
SetForegroundWindowは、Win98以降失敗の可能性大。
したがって、keybd_event() は目的のアプリに届かないよ。
0283281NGNG
>>282
それは知らなかったよ
AttachThreadInputでスレッド結合しても駄目なのか?
0284281NGNG
ちょっと調べて見た、
SystemParametersInfo 使ったらSetForegroundWindow 出来そうだが
0285281NGNG
↑駄目だった
0286デフォルトの名無しさんNGNG
japan.comp.lang.delphi
って何なのですか?
0287デフォルトの名無しさんNGNG
news group
0288デフォルトの名無しさんNGNG
吐田じゃねーが過去ログみろやゴルァ
0289デフォルトの名無しさんNGNG
SetActiveWindow…
これもだめぽ?
0290デフォルトの名無しさんNGNG
>>288は吐駄
0291253NGNG
>>281
ここを読んでね。Cだけど参考になるよ。

必ずウィンドウをフォアグラウンドまたはアクティブにするには?
http://techtips.belution.com/ja/vc/0012/
029290NGNG
先輩に作品を見せましたが嘘だとばれてしまいました
こんどはちゃんと作ってこいと言われてしまい何を作って良いかわかりません
みなさんどうかお知恵をお貸しください
0293デフォルトの名無しさんNGNG
OS作れ
0294デフォルトの名無しさんNGNG
Windows上で動くOSでいいですか?
0295デフォルトの名無しさんNGNG
>Windows上で動くOS
ワラタ
0296デフォルトの名無しさんNGNG
Personalを8000円で売ってくれた先輩なんか放置。>>292
029743@ハマリ中NGNG
43です。
ドラッグ&ドロップの件で土日を使って試行錯誤してみたのですが、
今ひとつ理解できない部分があり困っております。

(1)
project.dprにParamStr関数を使用した命令を記述して
ドラッグ&ドロップの処理をしようと思い、以下のように記述しました。

// -------------------
// project1.dpr (参考:ttp://www.w-frontier.com/tips.html)
// -------------------

program Project1;

uses
Forms,Windows,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {FrmAbout};

{$R *.res}

begin
Application.Initialize;
Application.Title := 'Lite';
Application.HelpFile := 'C:\Program Files\Borland\Delphi6\Projects\20020117\readme.html';
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TFrmAbout, FrmAbout);
Application.Run;

Form1.DDFileOpen(ParamStr(1));
 
end.
(続く)
029843@ハマリ中NGNG
で、Unit1.pas(メインのウィンドウ)に

type
  TForm1 = class(TForm)
  Memo1: TMemo;
  StatusBar1: TStatusBar;
  …
  procedure DDFileOpen(Sender:TObject; var DFName: string);
  private
  { Private 宣言 }
  FName:string;
  DFName:string;

{$R *.dfm}
  …
  procedure DDFileOpen(Sender:TObject; var DFName: string);
  begin
  {D&Dによるファイルのオープン}
  // テキストが変更されていた場合
  if Memo1.Modified then
  case MessageDlg(ExtractFileName(FName)+'は変更されています。'+Chr(13)+Chr(13)+'保存しますか?',mtWarning,mbYesNoCancel,0) of
  mrYes:Save1Click(Sender);
  mrCancel:Exit;
  end;

  // [開く]の処理
  begin
  FName:=DFName;
  Memo1.Lines.LoadFromFile(FName);
  Form1.Caption:=Application.Title+' - '+FName;
  end;
  end;

などと書いてみたのですが、どうも上手く起動しない…と言うか、
これもしかして僕が全く見当違いな事やってたりしますか?
とりあえず自前でファイルを開く関数を作ろう(DDFileOpen)と思って作ってみたのですが。

「関数の勉強しろ(,,゚Д゚)ゴルァ!」と言われそうですが、
現在関数についていろいろ調べている最中です。
明らかに勘違いしている場所など指摘して頂ければ幸いでございます。
0299デフォルトの名無しさんNGNG
>>297
Application.Run はメインフォームが閉じるまで帰ってこない。
030043@ハマリ中NGNG
Runしてから値を渡すのだろうか、と思っていたのですが…。
では、CreateFormのすぐ後に記述してみます。

$R *.res}

begin
Application.Initialize;
Application.Title := 'Lite';
Application.HelpFile := 'C:\Program Files\Borland\Delphi6\Projects\20020117\readme.html';
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TFrmAbout, FrmAbout);
Form1.DDFileOpen(ParamStr(1));
Application.Run;
 
end.
0301デフォルトの名無しさんNGNG
>>298
>などと書いてみたのですが、どうも上手く起動しない…と言うか、
そもそもコンパイルできなでしょ? 関数の宣言と実装がことなり、
また、呼び出し時のパラメータも間違ってるよ。

TForm1 の OnCreate() イベントハンドラで

if Length(ParamStr(1)) then
Memo1.Lines.LoadFromFile(ParamStr(1));

というところから始めて下さい。
 

0302デフォルトの名無しさんNGNG
>>299
実のところそうとも限らんかったはず。
例外発生時なんかRunから戻ってきたような気が。

気のせいとか記憶違いだったらスマソ。

>>301
TForm1のOnCreateかOnShowイベントに書いてみたら?
0303デフォルトの名無しさんNGNG
>>295 昔ソフマップで売ってたMADO-OS って知ってるか?
グーグルしたらまだ現役でびっくり ttp://www.mado.info/
0304301NGNG
>if Length(ParamStr(1)) then
訂正 if Length(ParamStr(1)) > 1 then
0305302NGNG
おろ、レス番間違ってたスマソ
× >>301
○ >>298
030643NGNG
>>301さん

>そもそもコンパイルできないでしょ?
はい、出来ませんでした(汗

>TForm1 の OnCreate() イベントハンドラで〜
早速参考にさせて頂いたのですが、見事に出来ました。
あれだけ試行錯誤したのが…。

CとVBを少ししかかじった事しかなくて
自前の関数と言うのは少し無理があったかもしれません…。
次のアプリを作る際には勉強しておきたいものです。
ともあれ、色々とアドバイス有難うございました(´∀`)
あともう少し付け加えたいしたい機能があるので(と言っても簡単なものですが)
すべて実装して完成した際にもう一度ここに戻ってきたいと思います。

では、改めてありがとうございました。
0307デフォルトの名無しさんNGNG
ああなるほど
 実装部の
procedure DDFileOpen(Sender:TObject; var DFName: string);
は確かに手続きだけど、ホントはメソッドにしたかったんだね
procedure TForm1.DDFileOpen(Sender:TObject; var DFName: string);
 とクラス名を付けてやる事

それから上のForm1でのメソッド定義部はpublishに書いてあるけどpublicに移した方がいい

0308デフォルトの名無しさんNGNG
実際にやってみることも大事だけど
検索すればサンプルが見つかるので
そういうのを見て定義、実装の仕方を
参考にすると良いと思われ。
D&Dのやり方なんか定番なんだし・・・

そうすればぐいぐい実力アップだよ!
0309301NGNG
>>308 同意。
43は、ちょっとしたコツさえつかめば、上達ははやい、とみた。
なかなか、根性もセンスもあると思いますよ。ガンバッテ!
031043NGNG
>>307さん
お察しの通りでございます。
ただVBの知識だけで作ったのでだいぶボロボロです(笑
クラス名が必要なのですか…よく叩き込んでおきます。
宣言の場所も…あぁ覚える事が多いw
今度時間が空いたときにじっくり取り組んでみますね。

>>308さん
助言ありがとうございますー。
とりあえず自分的には一通り検索をかけてみて、
どうしてもダメな場合に書き込むようにしております。
プロの皆さんから見れば他愛も無い質問だと思うのですが…
なかなか自分の思っているような解説をしているページを
探すのは難しいです(;´Д`)
ゆっくりではございますが、よく噛み砕きながらやりたいと思っております。

>>309さん
どもです。正直嬉しいです(*´∀`)
今回の学校の課題(卒業制作です)でDelphiは僕一人だけなので、
わざと自分を追い詰める感じでプログラミングしております。
今週末に提出なんでそれまで頑張ります!

では、また制作に戻ります。
0311デフォルトの名無しさんNGNG
>>310
メソッドの場合は場合は、そのクラスに宣言を書く。
そこで Ctrl+Shift+C を押すとそのメソッドの雛型ができる。便利だよ。

Personal版だと出来るかどうか知らないけど。
0312デフォルトの名無しさんNGNG
別noDelスレではレスの2〜5番目くらいに
参考、関連リンクがあって便利だったんだけど
このスレにはないな・・・
0313デフォルトの名無しさんNGNG
訂正:別no→別の
0314デフォルトの名無しさんNGNG
>>311
コードエクスプローラの機能らしくて、perだとできないぽ。
0315TIconNGNG
TIconにアプリケーションのアイコンを取り込んで保存するアプリ作っているのですが
Icon.Handle := ExtractIcon(HInstance,PChar(FileName),0);
にて取得したTIconオブジェクトの以下の症状で悩んでます。

1.アイコン取得後は256カラー(?)で表示されるが ファイルに保存後読み込むと
色が変わる(16色かな?)

2.一部のアプリケーションのアイコンを取得後保存しようとすると
 「ビットマップイメージが不正です」とエラーが出る。

以上なにか解決の手がかりなりそうな情報は無いでしょうか?
グーグルで検索したのですがなかなか情報が見つかりませんでした…
0316デフォルトの名無しさんNGNG
>>314
さんくす。perはダメですか。
この辺もperに解放しないとなぁ・・・>某島
0317デフォルトの名無しさんNGNG
TButtonを枠付きのフラットボタンにするため、

凹んだボーダースタイルのパネル上に、ボタンを配置して使っています。

Panel.BevelOuter:=bvLowered;
Button.Parent:=Panel;
Button.Top:=1;
Button.Left:=1;
Button.Width:=Panel.Width-2;
Button.Height:=Panel.Height-2;

このようにすると、丁度フラットボタンに
枠がついたように見えます。
これを TFlatButton としてコンポーネントにしたいのですが、
どのようなコードを書けば良いのでしょうか。
PanelにButtonが「含まれている状態」とはいえ、これはあくまでも
Buttonなので…
これはButtonではなくPanelと見なされてしまうのでしょうか。
0318昔はグレーゾーン(レ○タル屋)だったくせにNGNG
>>303
遅レスだが、なっつかしーなー(藁
なーんか、やってたなー。そーいえば。あのころはプログラミング
「なんだそりゃ」と思っていたけど。なにやら「早い早いィィッ!」
みたいな宣伝やってましたなぁ。思い出した。思い出した。
誰か使ってるヤツいんのかねー(藁
0319318NGNG
わ。変なレスになってもた…。スマソ。
「プログラミング」は余計だす。トホホ。
0320デフォルトの名無しさんNGNG
>>315
TIconは16色以外非対応。48x48とかも非対応。
全部自分で管理するしかなかばってん
0321デフォルトの名無しさんNGNG
MADO-OSはWindowsXPになって現役だよん
0322315NGNG
>>315さん

やっぱそうなんですか、なんとなく思っていたのですが
読み込み&描画が上手くいったのでそのまま保存して
やってました。
とりあえずTBitMapに変換してやります。

ちなみに保存時エラーになるのはかちゅ〜しゃを起動する
Kage.exeのICONです(w
0323デフォルトの名無しさんNGNG
DELPHIで他のアプリを終了させるにはどうしたら良いんですか?
以下にあるフリーソフトみたいなことがしたいのですが
ttp://members.jcom.home.ne.jp/shinonon/gabaquit.html
0324デフォルトの名無しさんNGNG
遅レスですがTMemoで質問した者です。
レスありがとうございました。>>215〜>>218
0325デフォルトの名無しさんNGNG
>>320
TIconって、256色に対応したんじゃなかったっけ?
保存は知らんが。
0326デフォルトの名無しさんNGNG
厨房質問なんですが、DirectXについて質問。
・DelphiでDirectXを扱うことは可能か?
・可能なら単純なDirecxtXスクリーンセーバー程度の物なら、DelとVCどっちが開発楽?
0327デフォルトの名無しさんNGNG
>>326
>・DelphiでDirectXを扱うことは可能か?
可能。探せばunitが見つかる。
クラスライブラリもいくつかある。

>・可能なら単純なDirecxtXスクリーンセーバー程度の物なら、DelとVCどっちが開発楽?
GUI作らなきゃわざわざDel選択するメリットなし。
0328デフォルトの名無しさんNGNG
>>326
VC使えるなら、VC使っとけ。頭にDirectと付く類のは、その方が楽だ。
0329デフォルトの名無しさんNGNG
>GUI作らなきゃわざわざDel選択するメリットなし。
コンポーネント自作するだけの能力があるならメリット無い事もないだろけど
それはには先にDirectXが使える事が条件なわけで、
それが使えない人の場合は、サンプルがそのままコンパイル出来るVCが
楽という結論だな
0330デフォルトの名無しさんNGNG
TGraphicControl を継承した自作コンポーネントをコンパイルして登録し、
フォームに貼りつけようとすると、
「コントロール””は親ウィンドウを持っていません」
といわれますが、どういうことですか?
0331315NGNG
>>322 独り言になってる(鬱 >>320さんの間違いです

>>325さん
とりあえず保存以外は大丈夫です。とりあえず取得後すぐBMPに変換する方法で
対処しました。
0332デフォルトの名無しさんNGNG
>>326
資料の多さを考えると、VCでしょうな。
俺はそれでもDelphiでやってるけど
0333デフォルトの名無しさんNGNG
そろそろ後少しでDel歴3年目突入なんですが、
未だ持って分からんことがあるので質問。

TFormのプロパティのデフォルト値なんですが、
AutoScroll := True
ShowHint := False
の2つのプロパティは何故デフォルトでこの値なんでしょうか?
自分にはこの2つは逆の方がよい気がしますが…

特にHintは未設定でも問題ないわけですし、
ユーザに優しいUI考えたらTrueの方がよい気がします。

いや「某陸がそう設定したから」「お前だけ」「変えれば済む話」
とか言われればそれまでなんですが、ずっと気になってまして。
0334デフォルトの名無しさんNGNG
>>333

俺もHintプロパティ設定したのに、ツールチップ出てこねーじゃん、
と最初の頃ちょっと困りました。

確かに一度知ってしまえばたいしたことないんですが。
0335(′∀`)NGNG
1. 自分が使いやすいようにプロパティを変更したフォームを
右クリックして[リポジトリに追加]。適当な名前とか付けて登録。

2.ツールバーの[ツール]-[リポジトリ]で今登録したフォームを
選び、[フォームの新規作成時に使用]にチェックする。
0336なゆなゆNGNG
なんで、C_Builderじゃなくて、わざわざDelphi使うの?
すごく不思議。。。
0337インディアソポーカNGNG
今日、Cマガを買いました。Delphiもインストールしました。
それにしてもCマガって難しいですね…
0338(′∀`)NGNG
>>336
好みの問題としか言いようが無い。Delphi使ってる人間なら
逆の事を考えるだろう。
0339デフォルトの名無しさんNGNG
でもさ〜、pascalよりC++の方が良いようなような気がする…。
0340デフォルトの名無しさんNGNG
>>339
だから立場が違えば逆だってば。

とかいいつつ最近はBuilderもいいかなって・・・思ってる。鬱。
0341デフォルトの名無しさんNGNG
Delphiはストレスが無いから。>>336
BCBで大型コードコンパイルすると鬱。
ヘッダーファイルってのも時代遅れナ気が。
だって、コード小さくても展開されるし。
0342339NGNG
ほうほう。いや、知り合いにもDelphiユーザー一杯いるからDelphiの魅力を聞いてみたかっただけです。
0343名無しNGNG
>>336
自分としてはBuilderも使ってみたいと思ってるんですが、
学生には少々値段高くて手が出しづらいです。
コンパイラは使ってますけどね。
Delphiは無償版を使ってます。
0344339NGNG
>>343
すいません…。無償版のリンク貼って貰えます?
使ってみたいかも…。
0345デフォルトの名無しさんNGNG
>341
爆速のコンパイルは何ものにも代え難い。
0346339NGNG
すいません。メインページに無償版がありました。
今日から使ってみます。皆さんの仲間になるかもです。。。
0347デフォルトの名無しさんNGNG
また一人地獄に向かうか…。
クソ!何人の犠牲をだせば気が済むんだ!
おまえらRuby仕え!!!
0348デフォルトの名無しさんNGNG
一人でどうぞ
0349デフォルトの名無しさんNGNG
>>347
そんなに Ruby 使いたかったら、Apollo でも使ったら?

http://www.users.yun.co.jp/~moriq/apollo/

Ruby でデータベース処理もできるしねぇ。
0350デフォルトの名無しさんNGNG
Ruby厨氏ね。
0351デフォルトの名無しさんNGNG
バイナリファイルからテキストを抜き出したいのですが、

[offset]: +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF
----------------------------------------------------------------------------
00000000: 97 E9 96 D8 00 88 C9 8F 57 89 40 00 90 58 00 鈴木.伊集院.森.

例えばこんな感じで文字列の長さは不定なので$00なら終わりと判定してます。
また、文字列の数も不定なのでひとつのString変数を使いまわしてTMemoなどに
渡しているのですが、どうもケツにゴミがついてしまいます。

m:TmemoryStream;
s:String;
b:Byte;
c:Char;
i:Integer;

for i:=1 to 終わり値 do
begin
m.Read(b, sizeof(b));
c:=Chr(b);
s[i]:=c;
end;

大体こういう流れなのですが、String変数を初期化(?)しなければ
ならないような気がしつつも方法がわかりません。

こういう場合は普通こうやるんだよ、みたいな
セオリー的な方法があったら教えてください。
0352デフォルトの名無しさんNGNG
>351
SetLengthを調べてみ。
0353デフォルトの名無しさんNGNG
サイズがわかってるのならSetLengthで良さそうだが。
0354デフォルトの名無しさんNGNG
s := s + c;
の方がいいんじゃないの?

m.Read(c, SizeOf(c));
でもよさそうだし。
0355デフォルトの名無しさんNGNG
>352
>353
ああ、こんなのがあったのですね
早速SetLength使ってみます、どうもありがとう!

>354
すみません、説明を割愛したのですが一旦バイト単位で
データを取得する必要があって、351みたいにしてました。
その処理を別で済ませれば354の方が簡単なんですよね。
ちょっと考え直してみます。助言ありがとう!
0356デフォルトの名無しさんNGNG
>>347
お前面白い、テンプレとして使わせもらうよ(w
0357デフォルトの名無しさんNGNG
>>351
SetLength(s,終わり値+1);
m.Read(pChar(s)^ ,終わり値);
s:=pChar(s);
0358デフォルトの名無しさんNGNG
Del初心者です、宜しくお願いします。

データベースのテーブルにデータを追加する際に、
レコードのキーを MAX + 1 で取得したいのですが、
簡単な方法はありますか?
0359デフォルトの名無しさんNGNG
PostgreSQLとDelphiでシステム考えていますが、
PQコンポ使うのとODBC経由で作るのとどっちがいいと思いますか?
自分的には、ODBCの方がいいような気がするのですが、レスポンス
テストしたらPQコンポも捨てがたい・・・。
そーいや、最近のKylix等でのMySQL関連の動向等をみても、
今後は、DelphiにおいてもBDEの幻想は崩れたのでしょうか・・・。
0360デフォルトの名無しさんNGNG
ディレクトリを取得したくて

FindFirst('C:\*',faDirectory,SearchRec);

としてみたところ、なぜか全てのファイルが取得されてしまったのですが、何が悪いんでしょうか?
0361デフォルトの名無しさんNGNG
>360
APIの仕様です。取得したファイルから自力でディレクトリだけを抽出しないといけません。
0362デフォルトの名無しさんNGNG
DelphiでDLL作ったんだけどさ、上手く動きません、たぶん、
DLL内でグローバル変数を使って処理しようとしてるからだろうと思うが、
結局、DLL内で定義されたグローバル変数は、どの段階で破棄されてるの?
呼ばれた関数が終了した時?(1つのDLLに複数関数がある)
呼んだプログラムが終了した時?
それとも、明示的に破棄するような処理が必要?
0363デルファイで遊ぼうNGNG
右舷猿人直撃です浣腸!age
0364 NGNG
マルチポストまがいですが下記の質問にお願いします。。。
http://pc.2ch.net/test/read.cgi/tech/1006602102/973
0365デフォルトの名無しさんNGNG
MSDNの英語版FindFirstFileより抜粋
This function searches for files by name only; it cannot be used for attribute-based searches.
日本語版に頼ってるとたまに落とし穴にはまります
0366デフォルトの名無しさんNGNG
日本語でだってちゃんと書いてある
0367デフォルトの名無しさんNGNG
持ってるのが古いせいかな?
普段使ってるのはPlatformSDKのヘルプだけど、日本語で持ってるのはVS6についてたやつだから……
(もう一回見直してみたけど書いてないし…)
0368?切望?NGNG
「Delphi オブジェクト指向プログラミング」塚越一雄著、技術評論社刊
の復刊へむけて投票よろしくお願いしまーす >ALL

http://www.fukkan.com/vote.php3?no=4407
0369デフォルトの名無しさんNGNG
>>364
大抵の人向こうも見てるから意味ないってーの(それがマルチポストって言うやつだよ・・・
0370デフォルトの名無しさんNGNG
>>359
確かにBDEはびみょーに使いづらい感があるが、まあ妥当なところだと思ってる。
dbExpressって接続エンジン + ClientDataSet(?)だから扱い的にはBDEとそう大差はない。
0371デフォルトの名無しさんNGNG
>>358
やり方は大きく分けて2通り
1.データベースに任せる
 �@Accessならオートナンバー
 �AParadoxならカウンタ型
 �BOracleならCREATE SEQUENCEを使う
2.プログラムで処理する
 �@起動時に最大値を変数へ読み込んでおいて
  レコード作成時に加算してゆく
 �A毎回SQL等で最大値を所得する

単にユニークなインデックスが欲しいだけなら
データベースに任せたほうが確実
0372デフォルトの名無しさんNGNG
あるアプリの起動を知りたいんですが、
どんなAPIを使えばよいですか?
0373デフォルトの名無しさんNGNG
>>372
EnumWindows

0374372NGNG
どうも。やってみます。
0375373NGNG
でも実はそれだけでは不完全なんだわ。理由は自分で考えてくれ。

とりあえずEnumWindowsの使い方。コールバック関数という奴だ。
(ListBox1とButton1を用意しる!)

function EnumWindowProc(Handle:hwnd; lParam:Integer):Bool; stdcall;
var
  szTitle:array[0..255] of char;
begin
  If GetWindowText(Handle, szTitle,255 ) > 0 then Form1.ListBox1.Items.Add(szTitle);
  Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Clear;
  EnumWindows(@EnumWindowProc, 0);
end;
0376372NGNG
373サン、ありがとうございました。
あと、起動したアプリのある場所を割り出したいんですが、
そんな事は出来ますか?
0377not 373NGNG
>>376
位置というのがEXEのフルパスなら
→http://www.microsoft.com/japan/support/kb/articles/JP175/0/30.asp

そのまんまウィンドウ位置なら
→GetWindowRect API
0378372NGNG
>位置というのがEXEのフルパスなら
それです。ありがとうございました。
0379デフォルトの名無しさんNGNG
>>359
>>370
しかし、現実問題としてBDEの優位性は損なわれつつあるのも事実だろう、
359が書いたようにPgSQL等を使う場合、ODBCを経由させてBDE接続させる
意味は希薄になる、しかもDBGrid等の既存コンポが使えない事でのデメ
リットは、プログラム次第で補えるだろう、捨てがたい機能としては、
グリッドに対する更新処理とキャッシュアップデート機能だが、これを
実務で活かす事は難しいと感じる、俺は、PQコンポーネントの優位性の
方が高いと感じる。
0380370NGNG
>>379
いまの仕事Oracle8iでやってるがDelのTransactionの扱いがいまいち不透明なんで
(Edit,Post/StartTransaction,Commit)CacheUpdate使ってます。
多少レスポンス悪くなるが、こっちのほうがわかりやすい。
ISAM感覚で使えるし。

あと、TClientDataSetってxmlでデータ吐き出せるからけっこう便利だNE!

おれがいまやってる仕事では低速回線(56kとか)でDB鯖と接続とかするから
そういう環境ではCacheUpdateは結構役に立つ。
ついでにDB鯖と切り離した場合(モバイルとか)も想定してるんで、
そうなるとClientDataSetつかうとかなり楽ちんですな。
0381379NGNG
なる、当然ながら用途によってってことか・・・。
そう言えば、ParadoxはまだDel6に付いてるけど、あれ使ってる人いるのか?
Borlandは将来的には、今のParadoxの用途にMySQL辺りを据えたいと
思っているのかと感じたこともあったが、ノートPCが普及すると、
持ち出し時にDBを切り離す使い方ではなく、レプリケートしたりして
持ち歩く事が多いんじゃないの?(まぁ、携帯も常時接続的に使える
時代だから、そっちで対応するのかもしれんが)
デスクトップレベルでもOracleとか使うのが常識なのかな?
0382デフォルトの名無しさんNGNG
はい!先生!
Delphi(Pascal)のソースからJavaのソースを生成できますか?
0383デフォルトの名無しさんNGNG
ブルドッグソースか、おたふくソースなら出来(略)
0384デフォルトの名無しさんNGNG
>そう言えば、ParadoxはまだDel6に付いてるけど、あれ使ってる人いるのか?
DelのDBコンポーネントの機能を一番やりたい放題に使えるのはParadox
(Oracle等単方向のデータセットには色々制約がある)

俺はローカルデータベースとしては良く使うよ
DBLookupComboBoxとかも何の工夫もせずにリアルタイムで動作するし
(さすがにC/Sは無理があるのでOracleとかになるけど
 場合によっては併用も考える)
0385デフォルトの名無しさんNGNG
>>375
これをやってみたが

EnumWindows(@enumWindowProc,0);
のところで 変数が必要です というエラーが出る・・・なにか足りない??
0386デフォルトの名無しさんNGNG
      ヘ  ⊂⊃ヘ
    ι/ヽ.∧__ ∧ヽ╋  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ιノ ノ  ( ・∀・) ┃< 1000ゲットして幸せになろう。
  ιノノ ノ⊂ __ †  つ  \_______________
 ιノノノ  /|__二二|. ┃
 ιノ   /_(__)_)┃ 
0387デフォルトの名無しさんNGNG
>>382
Delphi用のパーサー書いて、Javaソースにコンバートするアプリ書けば出来るけれど、
VCLのことを考えると頭が痛い
0388382NGNG
そこまで作るならjavaで書き直した方がはやそうですね。
(誰か作らないかなぁ、需要あると思うけど・・・)
0389デフォルトの名無しさんNGNG
全くないわけではないが、無い。
0390デフォルトの名無しさんNGNG
>>385
ひょっとしたら、EnumWindowProcをTForm1のメソッドとして作っていない?
独立した関数として作らないとうまくいかないよ。
0391悪いけどNGNG
無いと思う。
0392391NGNG
>>388へ。
0393デフォルトの名無しさんNGNG
http://homepages.borland.com/dthorpe/products.html
Delphi J-code

compiling Delphi source code into a different machine code format - Java byte code.

0394385NGNG
>>390 
なぜ独立してないとだめなのか全く解らないままですが
リストがうじゃうじゃと出てきましたー ありがとう。
0395デフォルトの名無しさんNGNG
オフィシャルコースウェアの応用編買っちまっただよ。
アレについてるパッチは今、ボーランドのHPにアップされてる
ヤツと同じかなぁ?
なんで20メガもあるんだろう?
0396デフォルトの名無しさんNGNG
>>394
ヘルプでメソッドでも引いてみな
0397デフォルトの名無しさんNGNG
TPen.colorってどうやって処理されてるんですかね?。
以下の2つの処理で重さが全然違ってしまいます。

処理1)
for i := 0 to 〜
Canvas.Pen.Color := clRed;
Canvas.PolyLine( 〜
Canvas.Pen.Color := clBlack;
Canvas.PolyLine( 〜
end;

処理2)
Canvas.Pen.Color := clRed;
for i := 0 to 〜
Canvas.PolyLine( 〜
end;

Canvas.Pen.Color := clBlack;
for i := 0 to 〜
Canvas.PolyLine( 〜
end;

描画している線の数は同じでも処理1の方がはるかに重い。
単にColorプロパティを変更するのがそんなに重いとも思えない。
Windows上での描画システムを根本的に理解できてないのでしょうか?


0398デフォルトの名無しさんNGNG
>Windows上での描画システムを根本的に理解できてないのでしょうか?
そうです
0399デフォルトの名無しさんNGNG
APIヘルプを見ると CreatePen はあるけど SetPenはないです
ですから Pen.Color:= も内部ではいちいち CloseObjectしてCreatePen SelectObjectしてるかと

試しに、ペンを2つ先に用意しておいて ペンごと交換してみては?
0400デフォルトの名無しさんNGNG
Personalユーザか・・・
0401397NGNG
397でTpen.Colorについて質問した者ですが、
http://www.asahi-net.or.jp/~HA3T-NKMR/vcl2.htm
このサイトとかを読んでボンヤリとですが、わかってきました。

TPenはGDIオブジェクトって奴で限られたリソースであって、
Canvasごとにインスタンスを持っているわけでなく、
リソースマネージャで管理され、いろんなとこと共有していると。
だからPenのプロパティをセットすると、いちいちリソースマネージャに共有できそうなPenがすでに存在するかどうか
いちいち問い合わせにいっちまうので、重くなってしまう。

こんなかんじの理解であってるかな?
つまり漏れがした質問はWindowsの問題であって、
このスレで聞く事ではないってことですな。スマソ、逝ってきます。
0402デフォルトの名無しさんNGNG
とりあえず 全角やめれ
0403デフォルトの名無しさんNGNG
>397
完全に間違い。GDI 処理が遅いんであって、それを極力回避するためのメカニズムが
リソースマネージャ。
ループ回数を100として、処理1だと毎回色を変えて描画。200回色を変えなきゃいけない。
処理2だと色の変更はわずか2回。
0404デフォルトの名無しさんNGNG
Ver2.0 以来、久しぶりにDelphiをいじってます。
メニューを追加しようとして、FormにMainMenuを配置し、テンプレート
のファイルメニューを選んだところでとりあえずコンパイルしたんです
がなぜかメニューが表示されないんです。他にしなくてはならないこ
とって、ありましたっけ?
0405デフォルトの名無しさんNGNG
表示させるだけなら他にはない。
0406390NGNG
>>401

 単純にやるとTPen.Colorだけを変更したつもりでも実際には Windowsに対して
  CloseObject(Handle) -> CreatePen ->SelectObject
 と3つのAPIが呼ばれてしまいます。APIコールはそれだけで重い処理なので
 リソースマネージャを使ってそれを軽減する為にハッシュで検索する処理が入っ
 ています。

速度を追求しなければいけないなら
 ペンを先に2つ用意しておいて SelectObjectだけですむようにした方が速いです
 しかしそれよりも同じ色は連続して描画するとか APIコールを減らす為に
 Canvas.PolyLine よりもAPIのPolyPolylineを使うとかの工夫が必要です

しかしそういう事をする場合は、それを隠蔽するように上手に組んで下さい
でなければ 速度を追求する事が必要かどうか考えなおした方がいいでしょう
0407デフォルトの名無しさんNGNG
>>405
ですよね。なんでかなぁ。
0408404NGNG
解決しました。FormのBorderStyleがbsDialogのままになってました。
0409デフォルトの名無しさんNGNG
1:多の関係にあるレコードの、多側の外部キー項目を画面で更新した際に、
1側の項目をテキストに表示させるにはどうすればよいのでしょうか?

ここまで作ってみました(以下

地区マスタ(1側)
顧客マスタ(多側)

1.顧客マスタの入力画面に、Queryで地区マスタと顧客マスタの結合したSQLを設定
2.初期表示状態では、きちんと地区に該当する項目がテキストに表示される
3.地区コードを変更しても、テキストに該当する項目が反映されない

SQLを設定しておけば、自動的に1側の参照項目は表示されると思うのですが
コードで書かないとダメなのでしょうか?

よろしくお願いします。



0410デフォルトの名無しさんNGNG
再問い合わせ
またはTTableを使う。
0411デフォルトの名無しさんNGNG
>>1-410
0412411NGNG
くばっ
アボーンで見たらすごいことに…。
0413デフォルトの名無しさんNGNG
初心者ですみません。
うんこはどうやってサポートできますか?
0414デフォルトの名無しさんNGNG
>413
面白いと思ったわけだ、君は。
0415デフォルトの名無しさんNGNG
>>414 冷静なつっこみにワラタ。
0416デフォルトの名無しさんNGNG
TDBGridを利用して、固定行をクリックなり右クリックなりで、
内容をソートしたいのですが、SQL解析してORDER BY句を入れる以外に方法ありますか?
0417デフォルトの名無しさんNGNG
>>413
寝なさい
0418デフォルトの名無しさんNGNG
>>416
そーゆーことをするためのローカルデータベースなのだが、近頃は嫌われることが多いようだ。
クライアントデータセット/Midas/Mybase を使う方法もある。

ただ、こったことをすればするほど、データ更新時の作業が面倒なことになるので
気をつけて。表示と更新を異なる画面にするのが楽チンかな。
0419デフォルトの名無しさんNGNG
>>414 ワラタ。
0420デフォルトの名無しさんNGNG
>413
僕がサポートするよ。もぐもぐもぐ。
0421デフォルトの名無しさんNGNG
>表示と更新を異なる画面にするのが楽チンかな
プログラマの都合で使い勝手を悪くするのはいかがなものかと
0422デフォルトの名無しさんNGNG
質問です。ごめんなさい。
1、form1のボタンにa:=yes;って書いてform2のedit1にedit1.text:=a;みたいな感じでやりたい時は
どのようにやればいいのでしょうか?

2、button1,button2とedit1をform1に配置。
button1を押した時にa:='yes!'
button2を押した時にa:='no!'
ってedit1のtextに入れたいんですが、button1,button2両方にedit1.text:=aって入れないと
上手くいきません。
edit1にedit1.text:=aって書くだけじゃ駄目なもんなんでしょうか?

解りづらくて申し訳ないです。ご教授お願いします。
0423デフォルトの名無しさんNGNG
当たり前だろ!!
変数に入れただけで何で関係ないコントロールの値まで変わるんだよw
0424423NGNG
まあ、いいや

1
「uses Unit2;」を追加
Form2.Edit1.Text := 'yes';

2
Edit1.Text := 'yes!';
Edit1.Text := 'no!';

aはString変数でしょ?
変数に値入れても"使わなきゃ"入ったまんまよ?
0425デフォルトの名無しさんNGNG
すでに>>423-424が解説してくれてるけど一言

自分がやらなきゃ誰もやってくれないよ。
0426デフォルトの名無しさんNGNG
>>423
あ!ありがとうございます!
1番わっかりました!感動です!HP色々見ても、意味不明だったんで・・・
ちょっと近道しすぎですね。(汗

2番なんですが、a:='yes!'で変数に入れます。そのままじゃ意味ないって事はわかるんですが、
そのaをedit1のtextに入れたい場合はどうすればいいのかと・・・・
var s:string;
s:='yes!!';
edit1.text:=s;
buttonに書けば出来るんですが、editではこれじゃ駄目なんですか?
イベントがないから???
一応やってみましたが、駄目でした。

>>425
あ、もちろんやってみましたよ。で、駄目なんで出来ないのかなぁと気になったので・・・
私の書いたの見るとやって無いように見えますね。すいませんです。
0427デフォルトの名無しさんNGNG
>>426
意味不明。
とりあえず付属のsample見て出直せ。


一応レスしとくが、
イベントドリブンだからイベントが発生しなければ(そのイベントの)コードは実行されない。
edit1.text := sをbutton1のOnClickイベントの間に書けば医院で内科医?
0428デフォルトの名無しさんNGNG
>あ、もちろんやってみましたよ。
そうじゃなくて
>変数に値入れても"使わなきゃ"入ったまんまよ?
という話。
0429デフォルトの名無しさんNGNG
>>426
おまえ、他所のDelphi板でもイベントのことで聞いてただろ?
0430409NGNG
>>410 レスありがとうございます。

>再問い合わせ
>またはTTableを使う。

TTableで>>409の動作を実現するには
どうすればよいのでしょうか?

質問ばかりですいません・・・


0431DelフサギコNGNG
>>426
小学校の文章問題みたく
文章の意味が通じないのですが
単にローカル変数以外の変数を使いたいって事?

  ,,,,,,,,,,,,,∧,,∧   /
〜′,,,,,,,ミ,,゚Д゚彡 < あってるかな。
  UU""" U U   \

 Form1 = class...
 private
  FStr: String;
 public
 end;

procedure Button1クリック
begin
 FStr := '逝ってよし';
end;

procedure Button2クリック
begin
 Edit1.text := FStr;
end;

procedure Button3クリック
begin
 Edit2.Text := FStr;
end;
0432デフォルトの名無しさんNGNG
>>426
もしかして2番はこういう事をしたいのかな?

TForm1 = class(TForm)
   |略
private
procedure SetEditStr(const Value: string);
public
property EditStr : string write SetEditStr;
end;
   |略
implementation
   |略
procedure TForm1.SetEditStr(const Value: string);
begin
Edit1.Text := Value;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EditStr := 'yes!';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
EditStr := 'no!';
end;

違うか…
 ところでDelフサギコさんは見かけますがモナーさんは居ないのですか?
0433デフォルトの名無しさんNGNG
>>432
>>1
>DELモナは時に私であり、時には別の人。
あなたがやってもいいです。
0434432NGNG
ぎゃー >>1に書いてあったのね すみません

>>433
>あなたがやってもいいです。
DelはWinがわからんので無理かな 現役の頃はTP3〜5なので…(鬱

Pasはカセットテープに入ってた頃からっす(w
0435デフォルトの名無しさんNGNG
>434 それくらいのレベルがこのスレでは丁度いいかも
0436435NGNG
いや、バカにしてるんじゃなくて、質問者が質問し易いという意味ですよ
0437デフォルトの名無しさんNGNG
>>409
TTableの項目エディタで新規作成−参照項目でOK
0438デフォルトの名無しさんNGNG
Delphiで640x480のフォームを解像度変えてフルスクリーン化する方法って無いですか?
よくDirectXとかでやってるやつです。

0439デフォルトの名無しさんNGNG
>>438
DirectX 使えば?
Windows の通常の API では画面解像度の変更はできないから、ビデオドライバ依存、
または DirectX API を使うしかない。
0440デフォルトの名無しさんNGNG
この瞬間ChangeDisplaySettingsはAPIではなくなったようです
この瞬間ChangeDisplaySettingsはAPIではなくなったようです
この瞬間ChangeDisplaySettingsはAPIではなくなったようです
この瞬間ChangeDisplaySettingsはAPIではなくなったようです
この瞬間ChangeDisplaySettingsはAPIではなくなったようです
この瞬間ChangeDisplaySettingsはAPIではなくなったようです
0441デフォルトの名無しさんNGNG
>ChangeDisplaySettings
確実に他のウインドウ巻き込んでリサイズするので、
ちゃんとウインドウを元に戻してくれる手法を確立しない限りは使用しないで欲しい。
ゲームで使うのはもっての他。
OpenGL系で多くてこまる・・・

ただし、DirectXの場合でもタイミングによっては、
他のウインドウ巻き込むので注意されたし。
0442デフォルトの名無しさんNGNG
>>441
アイコンが640x480にちっちゃくなっちゃうあれか。
まあしゃあ無いんじゃ無い?
0443434NGNG
>>435-436
いえいえWinAPIに関しては十分馬鹿にされるレヴェルです。
なかなかWin絡みじゃない質問が無いのですが 出来る時はレスしてみます。
0444デフォルトの名無しさんNGNG
>>442
アイコンもそうだけど現在開いているウインドウね。
0445デフォルトの名無しさんNGNG
初心者です。よろしくです。
TWebBrowserを含んだTTabSheetを作りたいと思い、
なんとなく下記のようにしてみたところ
[エラー] Unit1.pas(43): 読み込み専用プロパティに書き込むことはできません
と言われてしまいます。
どうやってparentを指定すればいいのでしょうか?

procedure TForm1.FileNewExecute(Sender: TObject);
var
NewTabSheet:TTabSheet;
begin
NewTabSheet := TTabSheet.Create(Self);
NewTabSheet.PageControl := PageControl1;
NewTabSheet.Caption := 'Page' + IntToStr(PageControl1.PageCount);
with TWebBrowser.Create(NewTabSheet) do
begin
Parent := NewTabSheet; //この行がエラー
Align := alClient;
end;
NewTabSheet.Show;
end;
0446デフォルトの名無しさんNGNG
構造体を作成して、文字列を入れたいけど?
type
 TRec = record
  aaa:char;
  bbb:char;
end;
<その後>
var
 wRec:TRec;
 wStr:String;
begin
 wStr:='12';
 wRec:=wStr; <---- これ駄目でしょ?

VBだと簡単なのだが、Delphiだと出来ない?
0447432NGNG
>>446 何種類か方法はありますが可変部分を持つレコード型にしてみては?

type
 TRec = packed record
 case boolean of
  false : (aaa,bbb : char);
  true : (str : array[0..1] of char);
 end;

procedure hoge;
var
 Rec : TRec;
begin
 Rec.str := '12';
 :

packed 忘れないでね
0448432NGNG
>>447 間違った ごめんなさい
0449432NGNG
>>448 正解書けよ
type
 PRec = ^TRec;
 TRec = packed record
  aaa,bbb : char;
 end;

procedure TForm1.SetEditStr(const Value: string);
var
 Rec : PRec;
 A : string;
begin
 A := 'HOGE';
 Rec := @A[1];
 ShowMessage(Rec.aaa);

やっぱりpacked忘れないでね(詳しくはHELPを
0450デフォルトの名無しさんNGNG
>>449
それって代入になってないんだけど、>>446的にはどうなんだろ?
0451446NGNG
みなさんありがとう、でもなんか違う感じがするのですが・・・

>>446 でやりたかったのは、代入した後で
wRec.aaa とか wRec.bbbが使いたいんですよ。
本当は、構造体の中は2つだけじゃなくてもっと複雑なんです。
0452デフォルトの名無しさんNGNG
使えるんじゃないの?
やりたいこともっと具体的に書いた方が良いかと。
0453デフォルトの名無しさんNGNG
遅くなりましたがお礼を言わせてください。
>>427
わけのわからん、質問にレス感謝です!
でも、私のやりたい事はそうじゃないんです・・・
>>429
いや、まったく。初めてこの板に書き込みしましたが?
>>431
そうですね、自分の解らない事、伝えるって難しいです。
それは、知っておりました。
でも、わざわざレス感謝です。
>>432
ビンゴ!!!!!!!
そうです!そうしたかったのです!
あ〜すごくすっきりしました!ありがとうございます!!
いやぁ俺プログラム勉強する前に、日本語勉強するべきですね。
難解な文章を読み取ってくれてうれしいです(汗

でも、こうゆうのって、どう書いて説明すれば、いいんでしょう?
いつもは、ネットで検索かけてなんとかするんですが、今回はお手上げでした。

レスくれた皆様ありがとうございました。
0454446NGNG
すみません、>>449で出来そうな感じがして、やってみてるんですが、
Rec := @A[1];
の所でエラーになってコンパイル出来ません、
(が必要な場所に:=があるとかって怒られてます。(T_T)
0455446NGNG
>>449
本当に、ありがとうございました、出来ました!
当然ですが、僕が間違ってました。
 Rec : PRec;
の所が、
 Rec : TRec;
になってました。m(..)m
その後、HELPとか見て勉強したのですが、これって文字列の位置
つまり、文字列の格納してあるアドレスをポインタで渡してるって
事ですか?この方法で他の型の違う物でも無理やりバッファとか
に押し込んでおくとかも出来るのでしょうね、凄い。
実は、先月までVB厨房だったのですが、正月からVB捨てて
Delphiを勉強しているアホです。また質問するかもしれませんが、
よろしくお願いします。
0456デフォルトの名無しさんNGNG
型違い。PCharからPRecへの代入は禁止されてる。
Rec := PRec(@A[1])ならいけるはず。
にしても汚いコードだ。
素直に添え字かPChar使えよ。
0457409NGNG
>>437
遅いレスですが、ありがとうございます。
早速、確認してみます。
0458446NGNG
>>456 型違いの代入は駄目なのですか?
それは、もしも将来に型の仕様が変化した場合の為ですか?
やりたかったのは、StringListに溜まっている固定長のデータから
数十種類ある構造体へ振り分けてデータを分離して保存する為に
Copyで区切るよりも判り易いかな?と思っての事でした。
とりあえず、切り出しには成功したのですが、添え字を使っては
切り出しみたいな事は面倒になりますよね?
0459デフォルトの名無しさんNGNG
Delphi6をWindowsXP上で動かしている人いますか?
先日、ノートパスコンを買ったらWindowsXPHomeが入っていたのですが、
Delphi6でデバッグをしているときに、マウスクリックが5分後くらいに反応するくらい
重くなる場合があります。
メモリは512MBです。ステップ実行時によくおきます。
同じプログラムをデスクトップパスコン(Windows2000)でステップ実行しても全然OKです。
XPじゃダメなの?XPプロ版ならOKなの?
0460デフォルトの名無しさんNGNG
>>459
起きる人と起きない人がいるようです。
私は XPPRO を常用して問題起きていませんが、会社の XPHome でも問題が
起きませんでした。

システムの復元が ON になっていると、よけいな物を保存するので OFF にした方が
よい。という話を聞いたことがあります。確かめてみては?
0461デフォルトの名無しさんNGNG
うちのXPはDelphi固まってもタスクバーボタンを右クリックすると直る事がある。
0462デフォルトの名無しさんNGNG
richedit上で右クリックしても無反応なのは仕様ですか?
0463デフォルトの名無しさんNGNG
DelphiはLinuxへ移植されてKylixが出来た、
WinCEやPalmへは移植されないのか?
特に今後WinCEはクライアントの主力になるのだろう、移植とまで
は行かなくてもクロスコンパイルが出来れば良いと考えるがどうか。
0464デフォルトの名無しさんNGNG
Palm 用の VCL のサブセットと Windows IDE ならサードパーティで出しているよ。

Palm は CPU パワーの問題。
CE はプラットフォームの寿命の問題から開発元の MS 以外ではサポートしづらいだろうよ。
0465デフォルトの名無しさんNGNG
CEはこれからしばらくは仕様変更が相次ぎそう
0466462NGNG
アレ?richeditでのコピー&ペーストのメニュー(なんて言うんだっけ?)が
出ないのは至極当たり前なのかな?
オレの環境だけってこたー無いよね?ね?
0467デフォルトの名無しさんNGNG
でるよ
0468462 NGNG
>>467
マジ?
0469462NGNG
オレの環境、win95っていう素晴らしい環境なんだけど、
98以上だとメニューでるとか…。なんてこたーない?
なんか妙なこと聞いてる気がして赤面してしまふ。
0470デフォルトの名無しさんNGNG
popupmenuで指定して実装
0471462NGNG
>>470
いや、最終的にはソレだとは思ってるんだけど、もしも!
「オレ以外の環境ではメニュー出るのにpopup実装しちゃったら!?」
愉快なことになりそうだったから(汗
0472462NGNG
検索してみたら(何て検索したらいいのか思いつかなかった)、
「popup実装してみましょう」みたいなページがあった。
よーするに、出ないんだね。richeditでは。
0473デフォルトの名無しさんNGNG
エクスプローラでのファイル上の右クリックとまったく同じメニューを出すにはどうしたらいいんでしょうか?
API名だけでもいいので教えてください…
0474457NGNG
>>437 さん
参照項目を使って、イメージしていた動作>>409を実現できました。
結果の報告です。
ありがとうございました。
0475デフォルトの名無しさんNGNG
>445
TOleControl(WebBrowser).Parent := NewTabSheet;
0476デフォルトの名無しさんNGNG
>>460 >>461
レスありがとです。
今日試してみます。
0477445NGNG
>475
うまくいきました!
ありがとうございます!
0478476NGNG
>>460
システムの復元をOFFにしたのですが、やはり固まります。
と、思ったら、Borlandのサイトに書いてありました。。。
どうやら、互換モードで動かすとOKらしいです。
今、見つけたばかりだから、まだ試してないけど。
http://www.borland.co.jp/delphi/devsupport/d6issues.html
0479デフォルトの名無しさんNGNG
あの、どうにも納得いかないのですが、
プログラムの挙動が予想していたものと異なるので
ブレークポイントを設定し、ステップ実行したところ、
以下のようになりました。

http://www.geocities.co.jp/SiliconValley-PaloAlto/4845/delphi_nazo.png

つまり、

if ( A = False) and B then ...

と書いていて、A が False , B が True になっているにもかかわらず
if 文の中身が実行されなかったのです。

なぜ??

コンパイルされていないのかとおもい、念ののため再構築しましたが
結果は同じでした。どなたか、原因を教えてください。
0480デフォルトの名無しさんNGNG
???
ところが、

if A = False then
 if B then ...

とやったら、ちゃんと実行されました。(??)
そのあと if (A = False) and B then に戻してみたら、また
おかしくなりました。 ???
0481デフォルトの名無しさんNGNG
>>480
最適化がらみじゃない?

IDEで変数の中身をみてもそれが正しくないことがあるから
OutputDebugString 関数でログ出してみたら。
0482デフォルトの名無しさんNGNG
if (not A) and B then でも駄目?
0483デフォルトの名無しさんNGNG
ダメ元でもう1重かっこつけてみるとか・・

if ((A = False) and B) then
0484デフォルトの名無しさんNGNG
・>481のようにIDEでの変数が実際の値と異なるなら、
 実際の値を出力して確認する
・本当に同じ条件で、>480のような状態でちゃんと実行されるならば
 CPUウインドウでアセンブラレベルで見る
0485484NGNG
実際には>481の可能性が大。
自分もよくはまりました。特にwith文の中などはよく間違えますね。
0486DelフサギコNGNG
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < 再現性のあるコード掲載しる
  UU""" U U   \_______________
0487 ◆xDd9P2XM NGNG
>484 さんの
・本当に同じ条件で、>480のような状態でちゃんと実行されるならば
 CPUウインドウでアセンブラレベルで見る
が確実。

Player.Unfinish がメンバー変数ではなく関数呼び出しを伴うプロパティ
の場合、関数呼び出しによる副作用の問題もあり得るから(デフォルトでは
副作用が起きる評価は抑止するようになっているが)再確認を。
0488デフォルトの名無しさんNGNG
レスどうもありがとうございました。
再現性のあるコードは、なにぶんソースコードが入り組んでいるので、
単純化するのに時間がかかりそうです。今はトータルで4000行程度です。多分。

ご指摘の通り、Player.Unfinish は内部で GetUnfinish メソッドを呼び出しています。そういえば、ヘルプで関数呼び出しの副作用について呼んだような気がするのですが、どこに書いてあったか忘れてしまいました…

0489名無しヘタぐらま ◆B18Bks.Y NGNG
>>479
これは『ショートサーキット評価』と呼ばれるものです.

(A and B)がTrue(真)かFalse(偽<ぎ>)かを求める場合,
AがFalseならBがTrueであろうがFalseであろうが
(A and B)はFalseになります.

また,(A or B)でAがTrueだった場合は必ず(A or B)はTrueになります.

つまり,両方を調べなくても全体の結果がわかってしまう場合があるわけです.
Aの結果によってBを調べなくても全体の結果がわかってしまう場合に
Bを調べないやり方が『ショートサーキット評価』です.

Delphiのコンパイラはデフォルトで『ショートサーキット評価』を使うので
>479の例ではBの中の関数は呼び出されなかったわけです.

『ショートサーキット評価』を使いたくない場合は
『プロジェクトオプション』ダイアログの『コンパイラ』ページ,『文法オプション』の枠にある
『完全な論理評価(B)』チェックボックスをオンにします.

詳しくはDelphiのヘルプでキーワード『ショートサーキット』で検索してみてください.
0490デフォルトの名無しさんNGNG
ほんとにヘタぐらま。

論理式の評価結果が真なのに IF 文のなかに入っていかない(ようにみえる)
ということを問題にしているの。
0491デフォルトの名無しさんNGNG
>>488
おかしい部分の CPU 逆アセンブル結果だけでも貼れない?
0492デフォルトの名無しさんNGNG
>>488
あと、Delphi のバージョン。
0493DelフサギコNGNG
  ∧,,∧   /しかし、ショートサーキット評価
  ミ,,゚Д゚ミ <  が怪しいとは折れも思ってる
  ミ   ミ   \
〜ミ,UU_ミ  IFの所で勘違いしてるだけちゃう?


>再現性のあるコードは、なにぶんソースコードが入り組んでいるので、
>単純化するのに時間がかかりそうです。
怪しいなあ。

アセンブラみるとか言う前にコーディング全般を
見直した方がいいかも。
0494484NGNG
>>488
>論理式の評価結果が真なのに
というが前提であると思ってるとハマるんだって。
本当に真なのかをうたがったほうがいいよ。
0495デフォルトの名無しさんNGNG
そこ、ステップ実行じゃなくて トレース実行してみたら?

GetUnfinish で再帰してない?
0496デフォルトの名無しさんNGNG
アセンブラでステップ実行すりゃ5秒で解明するよ
0497名無しヘタぐらま ◆B18Bks.Y NGNG
>>490
          ヽ(`Д´)ノ ゴウカイニカンチガイシタヨ゙!!
            (  )   ウワァァン!!
            / ヽ
0498デフォルトの名無しさんNGNG
やっと最低限のコードが出来ました。

TChatClient を Create して、Test メソッドを実行してみてください。
そして、Testメソッド内の

if (Player.Unfinish = False) and UMsg then

にブレークポイントを設定して、値をみてみてください。
Player.Unfinish は False しか返さず、UMsg も必ず True になりますが、
IF 文は実行されませんです。

-----------------------------------------------------------
type
TPlayer = class
private
function GetUnfinish:Boolean;
public
property Unfinish:Boolean read GetUnfinish;
end;

TChatClient = class( TComponent )
protected
procedure Report(Player:TPlayer; Attr:Integer);
public
procedure Test;
end;


implementation

function TPlayer.GetUnfinish: Boolean;
begin
Result := False; { Falseしか返さない }
end;

procedure TChatClient.Test;
var
P:TPlayer;
begin
P := TPlayer.Create;
Report( P, 2 );
end;

procedure TChatClient.Report(Player:TPlayer; Attr:Integer);
var
UMsg:Boolean;
begin
UMsg := Boolean( Attr and 2 ); { UMsg は Ture になるはず。 }

Showmessage( Inttostr( Ord(UMsg) ) );

{ ここでおかしくなる }
if (Player.Unfinish = False) and UMsg then
begin
ShowMessage('B');
end;
ShowMessage('C');
end;
0499デフォルトの名無しさんNGNG
クリックするとファイル開くダイアログが出るボタンを作ろうとした。

unit Test;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls,Dialogs;

type
TFileSelBtn=class(TButton)
private
  FOpenDialog:TOpenDialog;
protected
public
  constructor Create(AOwnder:TComponent);override;
  procedure Click;override;
published
  property OpenDialog:TOpenDialog read FOpenDialog write FOpenDialog;
end;

implementation//------------------------------------

constructor TFileSelBtn.Create(AOwnder: TComponent);
begin
  inherited;
  FOpenDialog := TOpenDialog.Create(Self);
end;

procedure TFileSelBtn.Click;
begin
  inherited;
  FOpenDialog.Execute;
end;

end.

しかし、OpenDialogにプロパティをセットしても、実行時に反映されず、
プロパティの値もセーブできない。何が不足しているかおしえてきぼんぬ。
0500デフォルトの名無しさんNGNG
500ゲト(してなかったら藁ってくれ)

>499
FOpenDialogを自分でCreateする必要はない。っつーかしちゃダメ。

Clickイベントの所は
 if Assigned(FOpenDialog) then FOpenDialog.Execute;
のようにする。
0501デフォルトの名無しさんNGNG
>>498
UMsg := Boolean(Attr and 2);
で、UMsgがFalseになる。これって正しい挙動なの?非0はTrueなのかと思ってた。
D6PersonalをDLしたばかりの超が付く初心者の俺には分からんヽ(;´Д`)ノ
因みに、UMsg := Boolean(Attr and 1);だと、if文の中身が実行される。
0502501@超初心者NGNG
ごめん、勘違い。
Report(Player, 1)で呼び出してたのが原因だった。
1 and 2が0になるのは当たり前だヽ(;´Д`)ノ

と言うわけで、D6Personalでは再現しないです>>498
0503498NGNG
あ、私が使っているのは Del6 Pro です。
0504501@超初心者NGNG
度々ごめんなさい。
ChatClient.testを呼ぶと確かにif文の中に入っていかないです。
Player.Unfinish = falseだしUMsgはTrueなのに、何故?不思議・・・・・
0505デフォルトの名無しさんNGNG
UMsg := Boolean( Attr and 2 );
のキャストが原因。

言語ガイドによると、Booleanは0がFalseで1がTrueだから、2は範囲外。
0がFalseで非0がTrueになるByteBoolでキャストすると正常に動作する。

これがバグか仕様かということだが、俺には判断できない。
Booleanに入る数値がいつかのバージョンで変わったことがあったような。
VB?に合わすとかなんとか。
0506 ◆xDd9P2XM NGNG
う。遅かった。 >>505 正解。

微妙なバグだよ。うん。
大本をたどると C と VB とで論理偽の値が異なることが問題だったんだな。
OLE Automation 関係で VB 流儀が Windows に大量に流れ込んだ時点でいろんな
ところに破綻が起きた。MS-C / MFC にも影響がでている。

0507DelフサギコNGNG
フサは
   UMsg := Boolean( Attr and 2 );
こんなコードを自分で書くことは”絶対”ないので
すごく読みにくく感じるのですが
これって、いったい何がしたいのですか?
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧  ハテ?
  ミ,, ゚Д゚彡 
   〃つl⌒|⌒l
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
ビットが1か0かを調べるには
なんか他に方法があったような気が…
0508501@超初心者NGNG
>>498
えーと、分かったです。
if (Player.Unfinish = False) and UMsg thenの場合
Call Player.Unfinish
test al, al //Player.Unfinish = Falseの比較をしてるです。
setz al //必ずTrueになるから、最適化されたのかな?だとしたらtest al, alは無駄なような?
test al, bl //blはUMsgだから、文字通りPlayer.UnfinishとUMsgをandしてるらしい<オイ!
結果は0になるので、if文の中に入れないですよ(´д`;)

if (Player.Unfinish = False) and (UMsg) thenとしてやれば
test al, al
jnz //if文の外へ
test bl, bl
jz //if文の外へ
となり、OKでした。

UMsg := Boolean(UMsg and 2)してもUMsgの中身が2のままなのが妙に不思議な気もしますが・・・・・
0509498NGNG
なんか、フサギコさん性格変わりました?
いぜんはそんなに嫌味じゃなかったような。

それはいいとして、
Boolean は非ゼロでもTrueとみなされないのですね。
というか実行時エラーオプションで
範囲チェックを有効にしているので、そういうのはエラーになると
安心していました。

以後気をつけます。
どうもお騒がせしました。
0510505NGNG
>>506
ふぉろーさんくす。
OLE Automationか。すっかり忘れてた。

>>507
俺なら
UMsg := (Attr and 2) <> 0;
かな。キャストしなくても論理値になるし。

>>509
ギコ系だからそんなもんでしょ(w
0511498NGNG
というか、ByteBool 使わずに素直に

UMsg := Attr and 2 <> 0

と書くことにします。
0512デフォルトの名無しさんNGNG
ヘルプから引用。
>範囲チェック 配列と文字列の添字が範囲内にあるかどうかを検査する。
0513501@超初心者NGNG
やっぱ、>>498の例はDelphiのバグでは?
試してみたけど、Booleanは非ゼロをTrueと評価してるように見える。
そもそも、(Player.Unfinish = False) and UMsgは
Boolean(Player.Unfinish = False) and Boolean(UMsg)と
見なすのが唯一の解釈で、Player.Unfinish and UMsgとは見なせない。
だって、UMsgはBoolean型だからTrue、False以外の値を持ち得ないのだから
それに、UMsgがTrue&Flase以外の値(この場合2)を持ち得るとすれば
Boolean型と非Boolean型のandってことになるから、コンパイルが通るのは
おかしいと思うんだけど、どうかな?
0514 ◆woDeLPHI NGNG
検証用のコード
function A:boolean;
begin result:=false;
end;
var B:boolean;
begin
B:= Boolean( 2 );
if (A=false) and B then
caption:='OK';
end;

コンパイル結果
mov bl,$02
call A
test al,al
setz al
test al,bl
jz +$0c
mov edx,$00450324
mov eax,esi
call TControl.SetText

>>513 あくまでも、Boolean型なのに無理やり型変換したのがバグの原因です
  型変換は、その型を安全に変換してくれる訳ではありません
  型変換を使う時はそのチェックは自分ですべきです
0515DelフサギコNGNG
俺もトリップでヲーデルファしたいかも
インデントは全角スペースで。

|,,∧
|Д゚彡 ジー   
⊂ミ
| ,;゙   時々マターリが不足して
|´    カラダヂウ イヤミン に満たされたり…
     きっとあれですね。月に一度やってくるというアレ

フサならxバイト目のビット
を調べる関数を作ってしまうかな。

0000 0000 0000 0010
と and とって<>0
って何を表して…るんだ??

論理演算苦手なの。。。

ああ、きっとまた「おまえほんとにプログラマか?」
とか言われちゃう
0516デフォルトの名無しさんNGNG
>>513
http://pc.2ch.net/test/read.cgi/tech/1001442200/436
0517デフォルトの名無しさんNGNG
>月に一度やってくるというアレ
狼男?娘男?
0518デフォルトの名無しさんNGNG
>>516
引用がちょっとズレているような?
513 は不満を表明しているようには見えんが。ただ、議論は
間違っているが。

0519デフォルトの名無しさんNGNG
デルファイありきで語ると、反デルファイは敵に見えちゃうらしいな(w

A, B: Boolean; A := Boolean(2); B := Boolean(4);とした時
if A thenはTrueとなり、if B thenもTrueとなるが
if A and B thenはFalseになり、if (A) and (B) thenはTrueになる。

対処はいくらでも可能だから、これをもってデルファイは云々と
言うつもりは全然ないけど、なんか美しくない。
0520 ◆woDeLPHI NGNG
ヘルプ見てみました

>ByteBool 型,LongBool 型,または WordBool 型の値は,
>順序値が非ゼロの場合に True と見なされます。
>Boolean が期待される状況でこれらの値が使用された場合,
>コンパイラは順序値が非ゼロの値を自動的に True に変換します。

ここだけ読むと 常に0か0でないかで区別してるように見えますね
だから if A then ・・ という処理は Aが0でなければ実行されると思います

しかし、
>変数を論理型に型キャストしても結果は保証されません
という文もあります。これは論理演算を使う場合にはダメだよという意味と思いますよ


また、論理型は順序型の一つです ですから LOW(boolean)〜High(boolean)の
範囲になければいけません。
0521デフォルトの名無しさんNGNG
>>518
Delphiのバグにしたいようなので。
0522 ◆woDeLPHI NGNG
理屈からいうと、たぶん論理型は0か1しかダメだよとしたいけど
それではAPIの呼び出しとか 他の言語と通信するのが不便だから
単独で条件分岐した場合は 0かそうじゃないかになるようにしたんじゃないかな

でもこれ気を付けないといけないな 特にAPI呼び出しとかでは論理演算使わないようにしないと
0523デフォルトの名無しさんNGNG
>デルファイありきで語ると、反デルファイは敵に見えちゃうらしいな(w
Delphiであろうとなかろうと、処理系よりも先に自分で書いたコードを疑うべき
ではないかと思っているだけ。
0524519NGNG
>>522
省略せず、if (A = True) and (B = True) thenとすれば、特に意識する
必要はないと思う。
勿論、if (A) and (B) thenでも構わないけど、省略はせず多少回りくどい
くらいの方がパスカルらしいかも?
0525デフォルトの名無しさんNGNG
>>524
案外 、
if (A <>False) and (B <>False) then
じゃないとダメだったりして
0526デフォルトの名無しさんNGNG
個人的には合法な手段(UMsg := (Attr and 2) <> 0;)があるのに、無理やりキャストしたほうがやっぱり悪いと思ふ。
0527519NGNG
>>526
オイオイ、見えてねーな。もう誰もそんな話はしてないだろ?

例えば、Boolean型を引数に取るライブラリを組むとして、渡されたBooleanが
整数型をキャストしたものでないとは限らないだろ?
だから、ライブラリ内でif boolean and boolean thenを使う時は、()で囲むか
省略せず(boolean = True)しといた方が安全だというお話、OK?
0528デフォルトの名無しさんNGNG
例えば
if ( 1000-999-1 ) then
が行儀良いと思わんがのぅ
0529デフォルトの名無しさんNGNG
あほやなあ。
Boolean 型で渡されたっていうんなら Boolean 型でしかないからそれがどのような形で作られたかを気にする必要はないだろ。
今回は Boolean 型を作るときに Int 型を無理に Boolean 型にキャストするという非合法なことして自分のミスでバグったんだろ。
だからその関数が本当に Boolean 型で返ってくるんなら (boolean = True) なんて無駄なことをする必要はかけらもない。

要するに
UMsg := Boolean( Attr and 2 ); { UMsg は Ture になるはず。 }
の "なるはず" に問題があったって話じゃないか。

本人も UMsg := (Attr and 2) <> 0;) とすべきだといってただろ。

520 だって
>また、論理型は順序型の一つです ですから LOW(boolean)〜High(boolean)の
>範囲になければいけません

といってるだろ。

要するに 整数型 を 論理値型 に強制キャストするのが悪いっつーの。
C言語や Basic では論理値型として明示的に整数を使ってるけど Derlphi はそうじゃない。
>Object Pascal では論理型の式を整数や実数と等価に見なすことはできません。
とヘルプにもかかれているだろ。

Delphi は整数型と論理型を明確に区別してんだよ。
他言語と似たようなもんだと勘違いしてとろいこといってんじゃないよ。
0530デフォルトの名無しさんNGNG
>>528
行儀も何も非合法だってば。
Boolean のヘルプの下のほうの例にちゃんと書いてある。
例では X という整数変数を使ってるけど即値だって条件は同じ。
0531デフォルトの名無しさんNGNG
519 のソースなんて Integer を Boolean にキャストしている時点で非合法だよ。
たまたまうまくいっていると合法を勘違いしないで欲しいね。
0532デフォルトの名無しさんNGNG
Cで作られたDLLをDelphiで使った時に、Boolean でハマったことがあったな。
たとえば
 C側: void foo(BOOL bFlag);
 Delphi側: procedure foo(bFlag: Boolean);
のように宣言して、foo(True); を呼び出すと、foo には -1 が渡される。
Cの方では if (bFlag == TRUE) なんて判定してたから、
常にFALSEの方の処理しか実行されなかった。
DLLには手が加えられなかったから、仕方なく Boolean を Integer に
変えて対処したよ。

そんなわけで>524よ、Trueと比較するのはやめとけ。
0533デフォルトの名無しさんNGNG
>>532
論理型のヘルプを見る限りではそういった用途には Boolean ではなく ByteBool,WordBool,LongBool あたりを使うらしい。
> ほかの言語や Windows 環境との互換性を提供するために用意されています。
とも書かれてるしな。
0534デフォルトの名無しさんNGNG
おもしれーな、ここの議論。

個人的には、C の Bool がゼロ、非ゼロでキャスト可能なのより、
Delphi の Pascal の Boolean のほうが論理値という意味で純粋
なので好きです。でも、APIとの関連などで、どうしても代入しなけれ
ばならない時は、必ず、(式)<>0 の形で、論理値にしてから
代入すべきだと思っています。
Boolean に型キャストで代入するな!、ということで。

今回のことで自戒もこめて。

それから、if 文などの論理式のなかで Boolen 型の変数と
true または false を比較するのは二重に論理式を評価しているので
混乱するばかりか、冗長でもあると思います。
0535デフォルトの名無しさんNGNG
こんばんは。初めまして。
C++Builderのexeをスタートアップに登録して
起動時にある処理を行いたいのですがその時フォームを非表示
にして処理を行いたいのです。
で,下記の様に記述するとフォームを非表示にできる事は
解ったのですが最初の処理をどこに記述したら良いかよく
解らないのです。
VBの場合だとSub Main()ルーチンに記述するのですが・・・
Formのshowイベントとかはまずいし・・・・・・
参考になる物があったら教えて下さい(T__T)
Application->ShowMainForm = false;
0536デフォルトの名無しさんNGNG
MainFormのOnCreateは?
0537 ◆woDeLPHI NGNG
>>535
CTRL+F12 を押して、アプリ名と同じユニットを探して下さい

そのファイルの
Application->Run();
の前に入れると良いでしょう。

それから Builderスレは
http://pc.2ch.net/test/read.cgi/tech/997074601/
0538デフォルトの名無しさんNGNG
>>535
そもそも、フォームが必要ないならフォームを使わなければいいだけだろ。
なんで、非表示にする必要あるんだ?スレ違いだし。
0539デフォルトの名無しさんNGNG
>>535
WinMain
0540459NGNG
XPの互換モードでDelphi6を動かしても固まった。。。
もうだめぽ。。
0541デフォルトの名無しさんNGNG
DelphiのBooleanはTrue = 1, False = 0
ByteBool, WordBool, LongBoolはTrue = -1, False = 0
とどこかのDelphi本で読んだような気がする。
0542498NGNG
>>498
くっそー、おもしれーネタだったのに乗り遅れた(涙)
かなり遅レスだが・・・俺にも言わせてくれ〜!

そんな変な書き方がどーしてもしたいのならば、

> UMsg := Boolean( Attr and 2 ); { UMsg は Ture になるはず。 }
ここを

UMsg := (Attr=2);
こーだ。(w;
0543542NGNG
はぁ・・・。俺が498になってらぁ・・・。(涙)
自作自演じゃねーよ、コピペミスってただけだい!
0544デフォルトの名無しさんNGNG
>>ByteBool, WordBool, LongBoolはTrue = -1, False = 0
正解。で VB 由来の値。-1 は正確には全ビット1が立った値です。

Windows そのものを作っている C では False = 0 で,それ以外の値は全部 True。
C には論理型は組込型としては存在しないことに注意。

MS-C/Visual-C では Version4 の時に VB-Bool とのすりあわせが行われたようだ。
ちょっと細かい時期まではわからない。

C++ には言語仕様に論理型が加わり,当然 ANSI-C++ としては C の論理型を踏襲したため
bool と BOOL の二種類の「論理型」が存在する。

bool
http://www.microsoft.com/JAPAN/developer/library/vccore/_langref_bool.htm

BOOL
(みつからん)
0545ネタニマジレスNGNG
>>542
いや、それだと Attr := 2 or 4 とかってやってた場合に対処できないジャン

0546デフォルトの名無しさんNGNG
ヘルプ読まないやつ多すぎ。

>>544
ByteBool, WordBool, LongBool は
Ord(False) = 0
Ord(True) <> 0
と定義されてる。
-1 とは限らない。
-1 が True であるのは確かだが。
0547デフォルトの名無しさんNGNG
出遅れたか(w
ザクっと読んでみたが
1.if A and B then
2.if (A) and (B) then
の違いが理解できてる奴は半分くらいしかいないな。
これが理解できないと、本質的な問題は理解できないだろ。
0548デフォルトの名無しさんNGNG
>>547
そういう煽りはマ板で。
0549デフォルトの名無しさんNGNG
      ∧∧  ミ _ ドスッ
      (   ,,)┌─┴┴─┐
     /   つ 釣り禁止
   〜′ /´ └─┬┬─┘
    ∪ ∪     ││ _ε3
            ゛゛'゛'゛
0550デフォルトの名無しさんNGNG
>>547
 教えて下さい!
0551デフォルトの名無しさんNGNG
テストコード

program bool;
{$APPTYPE CONSOLE}
 procedure CheckBoolean(a: Boolean);
 begin
  if (a = true) then
   Write(True)
  else if (a = false) then
   Write(False)
  else
   Write('out of boolean range.');
 end;
const
 Ints: array [0..5] of Integer = (-1000, -1, 0, 1, 2, 1000);
var
 i: Integer;
 a, b: Boolean;
begin
 for i := Low(Ints) to High(Ints) do begin
  Write(Ints[i]);
  Write(', ');

  a := Boolean(Ints[i]);
  if a then
   Write(True)
  else
   Write(False);
  Write(', ');

  if (a) then
   Write(True)
  else
   Write(False);
  Write(', ');
  
  CheckBoolean(a);
  Writeln;
{
  // 場合によってはランタイムエラー
  a := Boolean(Ints[i]);
  Writeln(a);
}
 end;
 Writeln;

 a := Boolean(2); Write('a = '); CheckBoolean(a); Writeln;
 b := Boolean(4); Write('b = '); CheckBoolean(b); Writeln;
 Write('a and b = ', (a and b)); Writeln;
 Write('(a) and (b) = ', ((a) and (b))); Writeln;
 Write('CheckBoolean(a and b) = '); CheckBoolean(b); Writeln;
 Write('CheckBoolean((a) and (b)) = '); CheckBoolean(b); Writeln;
end.
0552デフォルトの名無しさんNGNG
実行結果(Delphi6 Pro)

-1000, TRUE, TRUE, out of boolean range.
-1, TRUE, TRUE, out of boolean range.
0, FALSE, FALSE, FALSE
1, TRUE, TRUE, TRUE
2, TRUE, TRUE, out of boolean range.
1000, TRUE, TRUE, out of boolean range.

a = out of boolean range.
b = out of boolean range.
a and b = FALSE
(a) and (b) = TRUE
CheckBoolean(a and b) = out of boolean range.
CheckBoolean((a) and (b)) = out of boolean range.
0553デフォルトの名無しさんNGNG
C言語は論理型の変わりに整数でやってるからすぐに問題になるんだけれど、
Delphiは隠しちゃってるからいざ問題に遭遇するとあわてちゃうね。
0554デフォルトの名無しさんNGNG
  if (a = true) then
   Write(True)
  else if (a = false) then
   Write(False)
  else
   Write('out of boolean range.');

これがおもしろいところで、論理型も単なる順序型の1つつーことで。
0555デフォルトの名無しさんNGNG
>>550
al = A; bl = B

if A and B then
{ if (A and A) = 0 then A = 1 else A = 0}
test al, al
setz al
{ if (A and B) = 0 then False else True}
test al, bl
jz False

if (A) and (B) then
{ if (A and A) = 0 then False }
test al, al
jz False
{ if (B and B) = 0 then False }
test bl, bl
jz False

A := Boolean(2); B := True;
1.if A and B then True else False;
2.if B and A then True else False;
さて、1.と2.の結果はどうなるでしょう?(w
0556555NGNG
×:{ if (A and A) = 0 then A = 1 else A = 0 }
○:{ if (A and A) = 0 then A := 0 else A := 1 }
0557デフォルトの名無しさんNGNG
順序型の範囲外の値は実行時エラーにはならないものかのォ
もしくは警告を出すとか。

「警告 順序型の範囲を越える可能性があります。」

構文チェッカー、だれかツクッテヨ
いや、まじで。コンパイラで拾えないエラーや、バグの原因にありがちな
書き方を警告してくれるという。
0558デフォルトの名無しさんNGNG
>>557
型変換はアプリレベルではむやみにやらないというので良いのでは?
String<-PCHAR のおかげで型変換のクセがついてしまってるのが元凶でCスタイルの侵食かもね

0559デフォルトの名無しさんNGNG
>>558
「型変換」って何?
ヘルプでは「型変換ルーチン」とかあって、Rect() とか StrToInt() とか
あるが。

> String<-PCHAR のおかげで型変換のクセがついてしまってるのが元凶

これの「型変換」ってどうするの? 矢印の向きが逆では?

型キャストと「型変換」は別な概念では?
0560デフォルトの名無しさんNGNG
>>557
「あなたにはこれは使いこなせません」という警告が出たりして
0561デフォルトの名無しさんNGNG
「(致命的エラー) 構文エラーが多すぎます」

ってエラーメッセージを出してほしいもんだ。
0562デフォルトの名無しさんNGNG

「警告 あなたのコードはいたるところでエラーになる可能性があります。」
0563デフォルトの名無しさんNGNG
>>557
> 型変換はアプリレベルではむやみにやらないというので良いのでは?

型変換が型キャストのことだとすると、型キャストなしではOOPの
多態性を利用できませんが、どうしましょう?

ちゃんと意味のある型キャストは、アプリレベルで利用しても何の害
もありません。むしろ有用な場合が多いです。

「むやみ」というのが「意味も分からず」ということでしたら、
そのとおりだと思うんですが。
0564デフォルトの名無しさんNGNG
>>563
>型変換が型キャストのことだとすると、型キャストなしではOOPの
>多態性を利用できませんが、どうしましょう?

そんなことはないだろう。
まぁ、型キャストは使ったほうが便利ではあるが、多態性の利用に
とって必須ではないよ。
0565563NGNG
>>557 じゃなくて >>558 ね。

>>564
>まぁ、型キャストは使ったほうが便利ではあるが、多態性の利用に
>とって必須ではないよ。

そうですかぁ、上位クラスへの代入互換性も型キャストの一種という
ことではだめですか?
0566デフォルトの名無しさんNGNG
 マウスがフォームの外にあっても、マウスのデスクトップ全体からの座標を取得するには
どうしたら良いでしょうか?
 現在、TTimer(Interval=1)と、GetCursorPosを組み合わせているのですが、
どうもしっくり来ません。
0567デフォルトの名無しさんNGNG
564の言ってるのは明示的なキャストのことで、565の言ってるのは暗黙的な
キャストだろ? で、564は使い分けてるけど、565はどっちも同じモノとして
見たいと。
0568デフォルトの名無しさんNGNG
>>566
何がしっくりこないのですか?
0569デフォルトの名無しさんNGNG
>>566
フックかSetCaptureだな。
常にマウスの動きを監視したいならフック、
TScrollBarみたいに限られた時間だけ監視するならSetCapture。
0570566NGNG
>>568
 タイマーを使うと重くなりそうだし、また、必要以上にちらつくからです。
正しくない感じもしますし。

>>569
 フックをするにはどうすればいいでしょうか?
フックプロシージャのインストールの仕方や、コールバック関数の書き方がよく分かりません。
もし宜しければ教えてくれませんか?
0571デフォルトの名無しさんNGNG
566さん 何をしたいのか書いてみては?

D&Dを実現する程度の事なら SetCaptureで間に合いますよ
0572566NGNG
>>571
 えーと、書いたとおりなんですが、
常に、マウスの位置を取得したいのです。
具体的にやりたいことを言いますと、マウスの動きを記録したいのです。
0573デフォルトの名無しさんNGNG
>>572
そうじゃなくて、なんのためにマウスの動きを記録して、どうするわけ?
俺はそんなアプリなんて書かないから、目的がわからん。
だから目的がわかれば別解も出てくるんじゃないの?

ついでに言うと
>フックプロシージャのインストールの仕方や、コールバック関数の書き方がよく分かりません。
というのは自分なりに調査した結果だろうから、例えば「〜のページを見て書いて
みたけど〜の所がわからないので教えろ」とか書けば誰か教えてくれると思う。
0574571NGNG
もしかしてこういうソフトを作りたいの?
http://www.vector.co.jp/magazine/spotlight/001011/sl00101115.html

だとしたら、 SetWindowsHookEx をMSDNで検索してみたらいい
全アプリに対するフックをかけるにはDLLを作らないとダメだよと思うよ

0575デフォルトの名無しさんNGNG
>>572
http://www.kumei.ne.jp/c_lang/sdk2/sdk_162.htm
まずはこれをDelphiに移植してみては?
0576デフォルトの名無しさんNGNG
>>572
http://www2.biglobe.ne.jp/~sakai/usehook.htm
このページって有名なところ?俺も今勉強中なんだけど、超分かり易いよ。
0577デフォルトの名無しさんNGNG
TThread の派生クラスにメンバとして
procedure OnTerminate(Sender:TObject) を持たせて、
それを property OnTerminate に代入することはできないのでしょうか。
TForm などではオブジェクトインスペクタを使って、同一クラス内で
プロパティと同名のプロシージャを設定できるようですが。
というか、こういうときは同じ名前を使うわないほうがいいんでしょうか。
 
また、汎用の関数を作るとき、処理に時間がかかりそうな場合は最初からTThreadを
継承して作るべきですか?
0578Delフサギコ ◆zE1iiRdQ NGNG
         _________
  ∧,,∧   / KJHookってのがあったような。
 ミ,,゚Д゚彡<  Wired
  ミつ つ  \ http://www.asahi-net.or.jp/~nk2w-ishr/programs.htm
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U  ここのサンプルを試してみるのはいいとおもう
      動かし方にコツが合ったと思うので
      うごかなかったらカキコしてください。
>>576
作者はもう放棄しているみたいだけどDelphi創世記くらいから有名みたいだよ
0579Delフサギコ ◆zE1iiRdQ NGNG
  ∧,,∧     /
 ミ,,゚Д゚彡  < ちょっと意味がわからんですが
  U  U    \
〜ミ  ミ
  ∪∪

procedure DoTerminateとか
procedure Terminateとか名付けるものではないかと...

プロパティと同名の手続きは設定できないのでは?

>また、汎用の関数を作るとき、処理に時間がかかりそうな場合は最初からTThreadを
>継承して作るべきですか?
知らない。
0580577NGNG
>>579
はい、設定できないと思うんですが、オブジェクトインスペクタで Form1 とかのイベントを
いじると OnClick イベントに OnClick プロシージャが設定できたりするので聞いてみました。
Do を付けたりするのが一般的ならそちらにしようと思います。
0581デフォルトの名無しさんNGNG
>>577
TThread に限らず、「継承してぶち込む」って考え方は間違っているので考え直しなさい。

単独テストをしておいてスレッド関連以外のバグをつぶしておいてから、
TThread から「呼び出す」

もちろん呼び出す関数自体はスレッドから呼び出されることを考慮して作るんだよ。
グローバル変数なんかはつかってはいけない。
0582577NGNG
>>581
すみません、質問が言葉足らずでした。
処理に時間のかかる関数をTThreadから呼び出した場合、Terminate しても
その関数からすぐに抜けることができないのでちょっと困るような気がします。
(アプリケーションごと終了するときなど、結果が出ていなくても中断しなければいけない時がある)
それで、その関数を作り直して TThread にしたほうがいいかな、と思ったんです。
0583Delフサギコ ◆zE1iiRdQ NGNG
    ∧ ∧  常に停止指令がくることを
    ミ ゚Д゚彡  予想してプログラミングヲ
  〜ミ,,,,uuミ
          ループとかでフラグ見て途中停止処理を入れましょう

        スレッドハ中々難しいんですよね

サブフォルダまでファイル名列挙とか、
誰かスレッドを使って実現したクラス持ってないかしら。
0584デフォルトの名無しさんNGNG
>>582
固有のスレッドにしたからといって、好きなときに止められるわけではないが。
スレッドは同時に複数実行できるってことでしかないのだよ。
0585デフォルトの名無しさんNGNG
>>582
気持ちは凄いわかる。
俺もその辺の理想的な回答を知りたいと思ってるけど
多分、理想的な回答はないんだと思う。

いっそ時間の掛かる処理は全部COMにしてみっか?
とか真面目に思ってるんだけど・・・・・
デバッグが超面倒なんで挫折気味ヽ(;´Д`)ノ ムツカシー
0586デフォルトの名無しさんNGNG
何が起きても良いから中断したいのなら Halt しちゃえば?

それがいやなら、ちゃんと自分から終了しにいくようなコードを作らないと。
スレッドにしようが外部プロセスの COM にしようが、後始末の問題は残るし。

例外をうまく使えば、多重ループの奥の奥から一気に終了させることができるから
そちらを考えた方が良いよ。l
0587デフォルトの名無しさんNGNG
Haltはマジ強制終了でまずくない?
0588デフォルトの名無しさんNGNG
嫌ならちゃんと後始末できるコードを作るしかない
0589デフォルトの名無しさんNGNG
以下のような処理関数を作れば良いかと。
そうすれば、特定のクラスなどに依存しない、汎用ルーチンができると。

type
 //中断すべきならばTrueを返すような関数
 TCheckFunc = function of TObject;
 EHalt = Expression?;(例外のスペル忘れた…

function Proc(Param1,Param2,..; CheckFunc:TCheckFunc=nil):Boolean;
begin
 try
  処理内容。
  事あるごとに if CheckFunc then raise EHalt; と書いておく。
 extract
  on EHalt do 強制終了時の処理;
 end;
end;
0590589NGNG
訂正。

if Assigned(CheckFunc) and CheckFunc then raise EHalt;

0591デフォルトの名無しさんNGNG
>>589
で、[処理内容]を実行中はどうやって CheckFunc の内容を変更するの?
やはり別スレッドで、ということですか?
0592デフォルトの名無しさんNGNG
>>590
> if Assigned(CheckFunc) and CheckFunc then raise EHalt;

関数の宣言をみると、Boolean を返してないようだが?
of TObject って何?
0593デフォルトの名無しさんNGNG
TCheckFunc = function:Boolean of TObject;
です。of object は、TCheckFunc はルーチンではなくメソッドだってこと。

[処理内容]部分には、長くても数秒ですむような(いや、短いほどいいんだけど、そうするとオーバーヘッドで余計処理時間が長くなるし)
コードを書いておく。たとえば、ディレクトリ一覧をつくるのであれば、

function Proc(Root:string; Files:TStrings; CheckFunc:TCheckFunc=nil):Boolean;
begin
 try
  Rootに含まれる最初のファイルを探す.
  Files.Add( Root );
  while まだ次のファイルがあれば do begin
   if ファイルがディレクトリであれば then
    Proc(ディレクトリ名, CheckFunc)
   else
    Files.Add( ファイル名 );
   if Assigned(CheckFunc) and CheckFunc then
    raise EHalt;
  end;
 extract
  on EHalt do 強制終了時の処理;
 end;
end;

ていう感じで…

0594デフォルトの名無しさんNGNG
また訂正。

function Proc(Root:string; Files:TStrings; CheckFunc:TCheckFunc=nil):Boolean;
begin
 Result := False;

 try
  FindFirst(...); //Rootに含まれる最初のファイルを探す.
  Files.Add( Root );
  while まだ次のファイルがあれば do begin
   if ファイルがディレクトリであれば then begin
    if Proc(ディレクトリ名, CheckFunc) then
     raise EHalt;
   end
   else
    Files.Add( ファイル名 );
   if Assigned(CheckFunc) and CheckFunc then
    raise EHalt;
  end;
 extract
  on EHalt do 強制終了時の処理;
  Exit; //EHalt が発動されたら、結果をTrueにすることなく抜け出る
 end;

 Result := True;
end;
0595591,592NGNG
いや、of Object は知っているんだが of TObject というのは
初めて見たもんで。

594 で処理を実行している間、どうやって CheckFunc が false
を返すようにするのかが分かりません。別スレッドでもない限り
ボタンを押すこともできないし、Timer メッセージも処理されな
いし。
0596591,592NGNG
あ、中断するためには true を返すんだね。
0597デフォルトの名無しさんNGNG
ごめん、TObject は typo.

>594 で処理を実行している間、どうやって CheckFunc が false
>を返すようにするのか

それは、中止ボタン等に
DoStop := True とかいておいて、

function TForm.CheckFunc:Boolean;
begin
 Application.ProcessMessage;
 Result := DoStop;
end;

とかやっておけばよいのでわ。
0598591,592NGNG
>>597
なるほど、了解しました。ご教示ありがとう。

ボタンを押せるのは、CheckFunc で

Application.ProcessMessage;

を実行しているからですね。ふーむ、だとすると、
594 の Proc()の中の while ループに

Application.ProcessMessage;

を置いておいて、CheckFunc をわたす代わりに Boolean 型のフィールド変数を
参照するのと同じですね。関数を渡すことの利点について教えて下さい。
0599591,592NGNG
Application.ProcessMessages; ですね
0600デフォルトの名無しさんNGNG
>関数を渡すことの利点

それは、たんにルーチンを一般化するってだけ。
たとえば、関数内で直接 Boolean変数を参照すると、
グローバル変数の参照になっちゃうでしょ。

例に出したディレクトリ検索ルーチンみたなものを
自作ライブラリなんかに入れたときに困ることがあるし。

それに、中断機能を使わない場合なんかに、グローバル変数だけ
残るのもなんか汚いし。使う必要が内場合でも気持ち良く出来るように、
関数を指定しなくても良いようにしてあるという…

function Proc(....; CheckFunc:TCheckFunc=nil):...

の =nil のぶぶん。
0601デフォルトの名無しさんNGNG
…俺なんか間違ってる事言ってるかな。
有識者の意見キボン
0602デフォルトの名無しさんNGNG
>>600
禿同。
ライブラリにすることを考えると、極力グローバル変数は使わない方向に行きますね。
0603591,592NGNG
>>600
>たとえば、関数内で直接 Boolean変数を参照すると、
>グローバル変数の参照になっちゃうでしょ。

いや、関数内で何かのクラスのメソッドを参照するのと、
そのクラスの Boolean 型のフィールド変数を参照するのと
は同じではありませんか。597では変数 DoStop を使って
いるので結局同じではありませんか。

でも、関数のほうが一般化できる分だけ有利ですね。確かに。
必要ないときは Application.ProcessMessages; を実行しな
くて済む分だけでも、関数を渡した方がよいですね。

ありがとうございました。
0604デフォルトの名無しさんNGNG
いやいや、メソッドの参照とフィールド変数の参照はちがうよ。
「フィールド」は、あくまでも「ある特定のクラスに属する変数」
でしょ。「特定のクラス」。例に出した Proc 関数は、
特定のクラスに依存しないルーチンであってメソッドということ。

あるルーチンがフィールド変数を直接参照していると、そのルーチンを利用するためには、たとえ全く使わなくてもそのルーチンが「必要とする」クラスを生成しないといけないでしょ。

「特定のクラスの、特定のフィールド変数」を利用するのではなく、
あくまでも「只のメソッド」を利用することによって、それがいかなるクラスに属する物であれ、引数が無く、Booleanを返すものであればなんでも指定できることになる。 …と思う。
0605デフォルトの名無しさんNGNG
訂正。

× 特定のクラスに依存しないルーチンであってメソッドということ。
○ 特定のクラスに依存しないルーチンであるということ。
0606591,592NGNG
>>604
おや、そうですか。
関数を渡す代わりに、Boolean型の変数を var 渡しにしても
同じではないですか? メソッドだって、「あるクラスに属する
関数」じゃないですか?

Proc を別ユニットに作成したとしても var StopFlag:Boolean
のパラメータでどうして特定のクラスに依存することになるのですか?
0607デフォルトの名無しさんNGNG
いや、その「あるクラス」をルーチンが決めたのでは困るという意味。
たとえば、あるルーチンが「内部でクラス THoge のフィールドを参照しています」
というのであれば、それを使う時は必ず THoge を利用しないと
いけないじゃない。「あるクラス」はあくまでも単なるクラス
であって、特定の THoge とかを指すのではないという
意味だったんだけど…

というか、 var 指定ってそう言う使い方が出来るのか。いや、
考えてみればそうだな。ごめん、全く思いつかなかった。
確かにそのほうがよいね。
0608591,592NGNG
>>607
>確かにそのほうがよいね。

いや、603で書きましたように、最初の通り、関数(メソッドでもよい)
渡しの方が汎用性があってよいと思います。APIのコールバック関数み
たいにライブラリ関数のユーザが自由にコードを書ける、という意味で。

おつきあい、ありがとうございました。
0609デフォルトの名無しさんNGNG
WinSightのように、クラスを獲得出来るソフトって無いでしょうか?
0610デフォルトの名無しさんNGNG
>>609
「クラスを獲得」ってどういう意味?
WinSight じゃなぜだめなの?
0611 NGNG
うっ・すいません
WinSightはProfessional以上にしかないので
http://www.vector.co.jp/soft/dl/win95/prog/s0067974.html
とりあえずこれでやってみます
0612Delフサギコ ◆zE1iiRdQ NGNG
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  < 今日も寒いやね。
_と~,,,  ~,,,ノ_. ∀  \_________
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻

よくわからんですが、Application.ProcessMessageを
呼ぶタイミングと同じタイミングで
イベントをよんで、ライブラリを使う側から
Applicaion.ProcessMessageを呼んだり
他の処理させたり、ストップ命令出したりすると
よいと思われ。

ま、関数渡しと変わらんけど、イベントの方が
より柔軟では?

って、同じ事逝ってるか…

procedure TFom1.AruEvent(var Stop: Boolean);
begin
 if AruJyoken then
  Stop := True
 else
  Stop := False;
end;
0613デフォルトの名無しさんNGNG
>>612
>同じ事逝ってるか…

同じだと思います。イベントハンドラは単なるメソッドですからね。
0614デフォルトの名無しさんNGNG
>>612
どうでもいいけど、フサギコさん、トリップ使うようになってから
スキル落ちてないですか?
0615デフォルトの名無しさんNGNG
スキルあげ
0616デフォルトの名無しさん NGNG
教えてDELモナ

解像度(画面の領域)を変えるにはどうすればいいでしか?
0617デフォルトの名無しさんNGNG
Enum/ChangeDisplaySettings
0618デフォルトの名無しさんNGNG
>>617
ありがとうDELモナ
漏れには分からないモナ
0619デフォルトの名無しさんNGNG
>>616=618?
617のAPIで確かにできるけど
うまく逝かない場合があって
ttp://www.kt.rim.or.jp/~s-matsu/sub/prog/unskill018.html
のように結構面倒。
ここまでするかどうかは場合によるだろうが
0620ボソッNGNG
俺は素直にTThread継承させるなぁ・・・
0621デフォルトの名無しさんNGNG
>>620
そうだね。きれいな中断方法教えてください。
0622sageNGNG
if Assigned(CheckFunc) and CheckFunc then
だるいんで
function TForm1.NullCheckFunc:Boolean;
begin
 Result := False;
end;
if CheckFunc then ...
0623デフォルトの名無しさんNGNG
TThread.Executeが800行
逝ってくる
0624デフォルトの名無しさんNGNG
こっちでも。

じさくクラスに、プロパティ類コピーの目的で

THoge.Assign(Source:THoge)

とか作るとするじゃない。
そうするとさ、Assignメソッドのなかで、少なくとも全部のプロパティを
コピーしなきゃならないでしょ。

あとでプロパティを増やしたりしたときに、Assignメソッド内に
そのプロパティをコピーする項目を増やすの、絶対忘れちゃうんだよね。

みんなはどうしてるの?
根性で思い出してるの?

0625( ´∀`)NGNG
サンプルコードに、スレッドとTreeViewを組み合わせた奴が… なかったっけ?
Sortだけだったっけ。
0626エフェドリンながヰNGNG
http://www.puchiwara.com/hacking/
           __,,,-‐――‐-、__   ヽ、
        __=ニ-―''''"""゙゙`‐-、_`ヽ、  ヽ.
      __,/ ,.--ヾ/''''''"'''"''ー、、ヽ、ヽ、  ヽ.
    / / /            ミ `ヽヽ  i
   / / i /              ヾ__ヽヽ  |
  / / ,| |             __L i |  |
  / /| |ヽ |        ,,,,-∠''''""  ミ  i|  |
  { | { |-+ヽ,,,,,,,    ,,illニ-==三`゙`‐---+  |  |
  ||  i |┼'"三三ヽ    ;/(ソ::ノ T´  ヽ-、.| |
   ヽ ヽー'"(ソ:)` !     ‐‐-‐'´    ∧`}| .|
       .| ``''"´ /            ヽ. { !| .|
       .i    <             '´/ | ||
       !    ヽ `          ○  | ||
       ハ.    _,=---         /   | |.|
       .| ヽ.   `'''''''´      / | |  | | |
       | | ヽ         ,. ' /  .| .| || || |
      .| |  / ヽ      ,/ /   |  | || || |
      | | /   `_t‐‐‐'"´,.----―''''''7 | || || |
      .| | / / <"ヽj  /    __. /┐| || || |
     ./ // /,.-‐ゝ->‐/-‐ヽ__/‐‐‐/ ヽ|_ || |.| |
     ./ // //,.-〈 〈‐、  \--/    ``ー、!_|
0627デフォルトの名無しさんNGNG
>>.624
Published だけなら実行時型情報で列挙してコピーするなんて出来るかもしれないけど

nameとか コピーしちゃいけないのって出てくるから難しいかもね
0628デフォルトの名無しさんNGNG
>Published だけなら実行時型情報で列挙してコピーするなんて出来る
これって、どうやるの?
0629デフォルトの名無しさんNGNG
「.NET製品戦略」ですと。
http://www.borland.com/about/press/2002/net_platform.html
0630デフォルトの名無しさんNGNG
.NETもいいが
旧世代Windows向けの究極の開発ツールとして「Borland C#」出してホスィ
Nativeなやつね
0631デフォルトの名無しさんNGNG
TStringGridの内容Excel等の表計算ソフト向けにコピペするソフトを作っているのだが

現状はお約束通りの方法↓

function _GridTo:String;
var
  X,Y:Integer;
begin
  Result:='';
  with Grid do
  for Y:=0 to RowCount -1 do
  begin
    for X := 0 to ColCount-2 do Result := Result + Cells[X,Y] + #$9;
    Result := Result + Cells[X,ColCount-1] + #$D#$A
  end;
end;

でやっているのだが、500行以上になると遅くてヽ(`Д´)ノゴルァ!な状態。
スピードアップ改善策を練っているのだが、速度改善のコツがあったら教えてきぼんぬ。
0632デフォルトの名無しさんNGNG
TMemoryStreamなんですが、ひとつのTMemoryStreamで動的に確保できる
最大の容量が16MBまでだったり、複数のTMemoryStreamの合計が最大32MBまで
だったりの制限なんてあるのでしょうか??どうもバグを発見できなくて…
0633デフォルトの名無しさんNGNG
>>632
ソースみるよろし
0634デフォルトの名無しさんNGNG
自分で書いたソースですか?それともVCLの?
自分で書いたソースの方は何度も見直しているのですが
疑わしい箇所を発見できなくて、もしかしてTMemoryStreamに
そういう制限があるのならこの挙動も納得できる、
っていう仮説を立ててみたのですが、そんな制限は無いのでしょうか?
0635デフォルトの名無しさんNGNG
とりあえずそういったバグは聞いたことない。
48MB扱うサンプル書いてみたら?
0636デフォルトの名無しさんNGNG
>>631
TStrings.Assignで一行(or一列)まとめて取り出したら?
0637デフォルトの名無しさんNGNG
>628
with TMemoryStream.Create do
begin
WriteComponent(Source);
Seek(0,0);
ReadComponent(Self);
Free;
end;
とか。でも>>627のいうとおりややこしい部分もあるかも。
0638デフォルトの名無しさんNGNG
>>628
Web 上のどこからのコピペコードだが

uses TypInfo;

procedure GetPublishedProperties(comp: TComponent; lst: TStrings);
var
Props: PPropList;
TypeData: PTypeData;
i: Integer;
begin
TypeData := GetTypeData(comp.ClassInfo);
if (TypeData = nil) or (TypeData^.PropCount = 0) then Exit;

GetMem(Props, TypeData^.PropCount * sizeof(Pointer));
try
GetPropInfos(comp.ClassInfo, Props);
for i := 0 to TypeData^.PropCount-1 do
begin
with Props^[i]^ do
lst.Add(Name);
end;
finally
FreeMem(Props);
end;
end;
0639632NGNG
解決しました。
ただ単に最初にSetSizeで48MBなり64MBなり設定して確保しておくだけで
問題がクリアしました。今までSetSizeしなくても動的に確保してくれて
いたのでほとんど疑っていなかったのですがこれで前に進める〜
泣きそうでしたよマジで。SetSizeしなかった理由は、Sizeを参照して
現在のサイズを調べてたからなんです。この辺は複数メモリストリームを
用意して解決できそうです。回答してくれた方ありがとう!
0640デフォルトの名無しさんNGNG
>>631
http://hp.vector.co.jp/authors/VA015850/program/dtips21.html
を参考に。

>for X := 0 to ColCount-2 do Result := Result + Cells[X,Y] + #$9;
>Result := Result + Cells[X,ColCount-1] + #$D#$A
ここがバッファリングなしで単純に足し算しているので改善の余地あり。
0641Delフサギコ ◆zE1iiRdQ NGNG
   ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < WriteCompoもどぞ
   U  つ∀ \____________
 〜ミ  ミ
   ∪''∪ MidNightはワインでも・

var
 MemStream: TMemoryStream;
 NameBuffer1, NameBuffer2: String;
begin
 MemStream := TMemoryStream.Create;
 try
  NameBuffer1 := Compo1.Name;
  NameBuffer2 := Compo2.Name;

  Compo1.Name := 'XX';
  MemStream.WriteComponent(Compo1);
  Compo1.Name := NameBuffer1;

  MemStream.Position := 0;
  MemStream.ReadComponent(Compo2);
  Compo2.Name := NameBuffer2;
 finally
  MemStream.Free;
 end;

こんなんで動くかしら?
0642デフォルトの名無しさんNGNG
ここだったかな?UPXの話題が出てたのは。スレが多くて…。
初めて使ってみたけど半分くらいにはなるのな。
どーもアングラなニホヒがして使っていいものやら困る(^^;。
ボーランドさんが正式に採用して、自動的にUPXの圧縮当てるとか
するのはどーか(藁
0643お腹いっぱいNGNG
またサイズの話かよ...
0644Delフサギコ ◆zE1iiRdQ NGNG
  たった今
    ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚彡 <  昨日のノミの腰のビルーを飲んだ
   ミ つ日   \___________
 〜ミ,,,,,, ,,ミ

    ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  Σミ゚Д゚,,彡  <  どえらいマズイ
   ミ つ日   \___________
 〜ミ,,,,,, ,,ミ ペッペっ
            (実話)

 そんな話題>>Exeのサイズ

 実行時パケージ使いなさい
0645デフォルトの名無しさんNGNG
時々、Delphiでプログラム作成中にDelphiで作られたで
あろうと思われるプログラムを起動すると起動できない
事があるのですが、これって定説?おれだけ?
例えば、WinXP上でD6あげてて ギコナビあげた時とか。
0646デフォルトの名無しさんNGNG
ずぃっこーじぱっけーずぃを使うと、別途配布せにゃーならんべ?
その辺解説してるページ知らんべか?
0647ななしっすNGNG
だれか、Delphi Base Library プロジェクトを立ち上げてください。
0648Delフサギコ ◆zE1iiRdQ NGNG
>>646さん
    ______
     |  カコログ   |
     | 四露死苦  |
     |______|
     ∧,,∧..||
    ミ,,トДダ||    
    ミ  づΦ   
  〜ミ  ミ   MLの・・…・・
    U''''.U  
0649636NGNG
>>631
気になって試してみた。500x600のGridでAssignするとかなり遅くなった。5秒ぐらい。
681のコードで試してみたら文字列作成に850msぐらい。そんなに遅いか?
641のtipsで多少速くなるかも。

ただ、Memo1.Lines.Add(s);したら返ってこなくなったので、
前後の処理に時間がかかってると思われる。
ClipBoead.AsText := s;
は一瞬で終った。メモリ256MB,セレ400
0650646NGNG
カコログダベカ...
0651デフォルトの名無しさんNGNG
昔、「MFC」って書かれたアイコン見るたびに、「どうして違うソフトで
同じアイコンなんだろう?」って思ったりしてたのだが、アレって
VC?で作るとデフォルトであーなるんでしょ?
H○Pのは「スープに湯気」のアイコンとか…。
どうして自分で作らんのだろうか…。でも、delphiの「柱に緑丸にイナズマ」
ってゆーワケワカメなヤツのまんまって見たこと無い。見たこと有る人いますか?
0652デフォルトの名無しさんNGNG
>>651
フリーでも沢山みてるけど?
俺も気分が乗らないような仕事の時はアイコンまで作らない。
0653651NGNG
>>652
へー!あるんだ。そっかー。
0654デフォルトの名無しさんNGNG
青にたいまつ?のアイコンもDelphiじゃなかったっけ?
0655636NGNG
>青にたいまつ
D3 あれが一番かっこよかった
0656651NGNG
>>654
そだね。バージョンの違いかな?
しかし、イナズマは何を意味してるやら。
「VCL」って書かないだけマシかなぁ。
0657デフォルトの名無しさんNGNG
デルファイに存在したであろう神殿のアイコンもあったな。
それともアテネ神殿か。

※知ってるとは思うけど、「デルファイ」はギリシャの古都の名前。
0658デフォルトの名無しさんNGNG
>>645
2重起動防止のコードをコピペして使ってるいつがいるに十票。
Mutexにどのアプリケーションも同じサンプルの文字列を渡してるに違いない。
0659デフォルトの名無しさんNGNG
>>655
激しく同意。
Delphi5でアイコン周りにガクーっときた。
ドット絵マンセー
0660631NGNG
>>640
やっぱこのへんがやばいと思っていたが
上手い解決方法がわからなかったので激しく参考になった。
0661デフォルトの名無しさんNGNG
>>658
あ〜、Mutexじゃないけど、それでトラブったことあるよ。
俺の場合、システムフック用のDLLで、他で使ってる文字列を
そのまま使ってファイルマップしてた。
なぜクラッシュするのか原因が分からなくて悩みまくったよ(w

教訓:CreateFileMappingの後は要GetLastError!
0662デフォルトの名無しさんNGNG
>>645 >>658
ひどいや!ギコナビのmutex名は「gikoNaviInstance」だよ。
0663デフォルトの名無しさんNGNG
えーと。同時起動の話、再現性高いですか?
本気で調べてみようと思いますが。
0664デフォルトの名無しさんNGNG
*.dpkで配布されているコンポーネントって、
どうやってインストールするんですか?
0665デフォルトの名無しさんNGNG
Delphi6Proをつかっていますが、コンポーネントを使おうとするとエラーが起きます。

http://delphi-area.fs-tools.de/pdl_downloads.php?file=14

からアーカイブをダウンロードし、インストールしたのですが、
コンパイルエラーがおきました。
ヘルプにある互換性のページ

>プロジェクト内の DsgnIntf への参照は,新しい Delphi 6 の名前 DesignIntf に
>変更する必要があります。また,uses 節に DesignEditors,VCLEditors,
>および RTLConsts を追加する必要もあります。

を参考に、

TFlatDesignRegister.pas の uses 節を修正しました。
コンポーネントは無事登録されたのですが、
オブジェクトインスペクタで、貼りつけたコンポーネントの
色関係のプロパティの色定数リストを表示させる(リストをスクロールさせる)と、
このコンポーネントで独自に追加したと思われる色定数について、
「***は数値ではありません」というエラーが表示されてしまいます。

どうすれば、ちゃんと使えるようになるでしょうか。
0666デフォルトの名無しさんNGNG
>>664
Delphi 6 なら普通に開いてインストールできるよ。
0667デフォルトの名無しさんNGNG
関数を手続きとして使ったとき(戻り値を無視したとき)、
警告を発してくれるようなコンパイラオプションがあったとおもうのですが、
みつけられません。なんというオプションか教えてくださいませんか。
0668デフォルトの名無しさんNGNG
X-
0669667NGNG
おお、ありがとうです

でも推奨さてないみたいですね…

>$X 指令は,下位互換性を提供します。Delphi のアプリケーション
>を記述するときは,{$X-} モードを使用してはなりません。
0670デフォルトの名無しさんNGNG
他言語から使用可能なDLLを作る場合
varによる参照引数は使用してよし、それとも駄目?
C++には参照があるけど、Cにはないから駄目かな?とか思ったんだけど・・・・・
0671傍観者NGNG
Delphi は UNICODE 対応してないってホントですか?
0672解脱者NGNG
>>671
心の眼で見るのだ。さすれば何もかも分かる。
0673傍観者NGNG
>672

ハァ?
0674先行者NGNG
>>673
バーカ
0675デフォルトの名無しさんNGNG
WideString ?
0676傍観者NGNG
>674

redirect
0677傍観者NGNG
やっぱり、UNICODE 対応してないんですか? 最近の開発言語とは思えませんね。
0678デフォルトの名無しさんNGNG
アレだな。自分で調べもしないで、ほざいてる馬鹿はいるもんだな。
0679マジレスきぼんぬさんNGNG
文字列リストへの削除がわからないので教えてください.

list.Delete(位置); <--- 指定した位置の文字列を削除
ここまでは分かります。位置の指定がわかりません。
0680ビクーリ!NGNG
Halbowさんって、談話室で有名人なんでしょ?
Hotkeyちゃんったら、自分のページでレスを
載せてるようだけど、承諾してんのかな。
つーか、デスクトップの一部分拡大ってよくあるヤツをシェアウェアに
しちゃったYO!
0681傍観者NGNG
>678

Delphi - ML の I wish List で話題になりましたよ。調べてないのは678では?
0682馬鹿にマジレスNGNG
>やっぱり、UNICODE 対応してないんですか? 最近の開発言語とは思えませんね。
↑ここで聞いてる馬鹿が「調べた」って言えるとは驚いた。
0683傍観者NGNG
俺もあんたの「しったか」には驚いた。
0684デフォルトの名無しさんNGNG
>>679
最初がゼロ、次が1、ウーム、なぜヘルプを読まないのか不思議です。
0685デフォルトの名無しさんNGNG
(´-`)。o ○ (あんたって誰だろう?質問してるのに偉そうなのはなぜだろう?)
0686ビクーリ!NGNG
誰もHotkeyヲッチャーはいないのか?うーむ。シェアウェアって
誰か金払うとでも思ってんのかなぁ?人に聞きまくってシェアか…。
0687デフォルトの名無しさんNGNG
でも、ベクタとかだと、1本2本だと振込み手数料がかかる
から相殺しましたとかって言って銭払ってもらえないが知ってるか?
結局、その小銭はベクタの懐に入るってすんぽうさ。
ベクタも昔はクズが詰まったCDを送ってくれてたけど、
最近はそれも止めたしフリーソフト作ってる人間からすれば
メリット無くなったな、googleの恩恵か、自分とこのホームページ
で公開してても結構人来るし、よくよく考えたら、別に使ってもら
わなくてもいいんだよなぁ。
0688デフォルトの名無しさんNGNG
>>663
うちじゃ、そのようです。
0689683は結局何が言いたいんだ?NGNG
>>687
まぁまぁ。気持ちは分からんでもないけど。つーか、シェアウェア作る人の
気持ちが分からん。いや、「有益で利用する価値があって金払いたくなるほど
素晴らしいソフト」の作者はいいんだ。
そーじゃない人っているじゃん。「そのソフトでいくらもらったんだ、今までに」
って聞いてみたくなる人ってさ。不思議だなぁ、っていつも思うよ。
500円くらいの「フリーでいくらでも同じ(それ以上)のがあるよ」って
ヤツ、公開してるのってよくあるけど、金払う人がいるとするなら、その人の
気持ちも分からん。
0690デフォルトの名無しさんNGNG
スレ違いにつきsageで、

まあね、でも、初心者とかが騙されるんだよ。
ネット詐欺の一種だと思われ(w

0691デフォルトの名無しさんNGNG
目的のページが見つかったんで、つづきね。
ttp://www.geocities.co.jp/SiliconValley/3765/
↑もう随分昔の話だけど
こんな明らかに妖しい有料登録に金払って登録したDQNもいるのよ。
0692デフォルトの名無しさんNGNG
TTreeView で、各項目ごとにツールチップを表示させるには
どうすればいいのでしょうか?
TListView には OnInfoTip イベントがありますが、TTreeView には
そういったものが見あたりません。
いろいろと調べてみたのですが、分かりませんでした。

ご存じの方いましたら教えてください。
0693名無しヘタぐらま ◆B18Bks.Y NGNG
>>671
念のためにマジレスすると,ちゃんと対応してますぞ.
(Delphi 3からだったと思います)
0694デフォルトの名無しさんNGNG
>>689
下を見るなよ。DQNなんてリアル世界でいくらでもいるだろ。
0695デフォルトの名無しさんNGNG
>>688
おいらの環境じゃ再現しませんでしたyo
0696デフォルトの名無しさんNGNG
>>693
そりゃ、あれだろ、UNICODE用の文字列関数があるって事だろ、
厳密には対応したってより、変換関数を取って付けたってだけ
では?

折れが思うには UNICODEよりも何よりも.Net戦略に騙されて
駄目にならなきゃいいと願うばかりだ。
Delphiは、今のままでもいいと思うが、MSDN又は、同規模の
情報を付けて欲しいなぁ、結局、MSDNも買うんだよなぁ。
0697デフォルトの名無しさんNGNG
>>696 VBでのShiftJISの扱いよりはマシに対応してると思うが?
0698デフォルトの名無しさんNGNG
>結局、MSDNも買うんだよなぁ。
そうなんだよなあ(笑

0699デフォルトの名無しさんNGNG
delphiマガジンの発行部数を教えてください。
0700デフォルトの名無しさんNGNG
だいたい800〜1250くらいかな
0701デルファイの名無しさんNGNG
delphiのインラインアセンブラについて解説してるいいページ
知らないですか?
検索したけど、なかなかヒットせなんだ。
0702699NGNG
>>700
マジ?
0703デフォルトの名無しさんNGNG
>>701
なにが知りたい?
0704デフォルトの名無しさんNGNG
>>700
誰が見てもわかるウソ
0705デフォルトの名無しさんNGNG
残念ですが、それは機密扱いなんで教えられません。
ヒントとしてはVBマガジンより少し少ないとお考え下さい。
0706デルファイの名無しさん NGNG
>>703
命令っちゅーか、とりあえず、いろいろ。ヘルプもなんか、うまくヒット
せなんだ。「こうこうこーゆーことするとこーなる」って感じに書いてない
気がする。
0707デフォルトの名無しさんNGNG
メールマガジンの「Delphiマガジン オンライン」が、最新号で 4158 部。

メールを読まない読者数を考えると、6000 ± 1000 くらいと見るのが妥当ではないか?
0708デフォルトの名無しさんNGNG
>>706
アセンブラそのものの説明がほしいの?
だとすると、ちょっと大変だな。
0709デルファイの名無しさん NGNG
>>708
でっかー…。むかーしアセンブラかじった位だから、「そこはかとなく」は
分かるんだが…。とりあえず、「delphiの」は、どんなんかな?と…。
特に変わらん?
0710デフォルトの名無しさんNGNG
インラインアセンブラには共通だろうけど、アセンブラとの違いは、
変数領域の確保はpascalでやって、そのシンボルをそのまま使える。
その代わりマクロは少なめ。
って感じかなあ
0711デルファイの名無しさん NGNG
>>710
ダスかぁ。どもありがとダス。
0712デフォルトの名無しさんNGNG
とりあえずfor i:=1 to 10 do inc(sum, i)とか書いてCPUウインドウでアセンブラコードチェックすればなんとなくわかるかも。
0713デフォルトの名無しさんNGNG
お願いします、みなさんの技術を教えてください。

相互参照するようなコンポーネントの場合、どのように実装するのが
一番スマートですか。例えば、

データベースを表わすコンポーネントが1つに対して、それを
表示・操作するコンポーネントが複数あるとします。


表示・操作コンポーネントは、プロパティ DataBaseComp で
データベースコンポーネントを指定するとします。そうすることで、
操作コンポーネントでデータベースを変更したいときは、
自身の DataBaseComp プロパティにアクセスすれば良いことになります。

問題は、その逆なんです。

データベースが変更された際に、表示・操作コンポーネントに
そのことを通知して、画面を更新したいのですが、データベースと
表示・操作コンポーネントの関係はあくまでも一方通行です。

現在は、表示・操作コンポーネントに Update メソッドを用いて、
データベースの OnChanged イベント内で、
全ての表示・操作コンポーネントの Update メソッドを
呼び出しているのですが、どうにも不自然な感じがします。

表示・操作コンポーネント → データベース
のアクセスは、プロパティを使えばいいだけなのに、

データベース → 表示・操作コンポーネント
のアクセスは、そのためのコードを毎回記述しなければならないなんて…

どうすればスマートにいきますか?
0714デフォルトの名無しさんNGNG
observerパターンの考え方をVCL風に実装してみたら?
0715デフォルトの名無しさんNGNG
delphiでMDBを出力させたいのですが
AccessをつなげてTTableやTQueryで表示させると
Accessでルックアップで入力した個所は1、2、3みたいな感じで数字で出てしまうのですが
そのままルックアップで指定したデータを出せないのでしょうか?

一応リレーションシップも繋がっています
0716デフォルトの名無しさんNGNG
>713
まあアドホックだけどCM_DATABASECHANGEDを定義して、
wParamにデータベースコンポのアドレスでも入れて、
MainForm.Broadcastするとか。
データベース操作/表示コントロールはwParamが自分の
属するデータベースコンポか調べて、更新するの。
0717Delフサギコ ◆zE1iiRdQ NGNG
   _____
 /:\._____\  />>713
 |: ̄\ ミ,,゚Д゚ミ  < VCLでは普通にプロパティで
 |:   :|: ̄U U ̄:|  \相互参照しているような.

 TreeViewとTreeNodeとか。

 DataBaseCompoにリストで表示操作コンポを
 登録するというスタイルはダメかしら?
0718デフォルトの名無しさんNGNG
それはつまり、データベースを表わすコンポーネントに
「表示・操作コンポーネントリスト」プロパティと、
「コンポーネントリストに登録」メソッドを用意し、

表示・操作コンポーネントの DataBaseComp プロパティで

procedure THoge.SetDataBaseComp(Value:TDataBaseComponent);
begin
 FDataBaseComp := Value;
 Value.コンポーネントリストに登録メソッド( Self );
end;

のようにするという意味でしょうか。

なるほど、ためしてみます。

…というか、デザインパターンつかうと
こんなに説明というか、楽になるんですね…
(手元にデザインパターンの本があって良かった…)
0719名無しさんですNGNG
VB6使いだったんですが今日Del6を使い始めました。で、
ちょっろっとコントロールを貼ってコンパイルしただけで
500kbになったのですが、もう少しダイエットは出来ない
ものですか?
VBなら40kbくらいで済みそうなのですが。ランタイムって
イヤだったけど、サイズを考えるとデメリットばかりでも
ないですね。でもコンパイル早くて「あれ?反応しない」と
思って何度も実行してしまった。
0720714NGNG
>>718
それでいいと思う。
Valueにnil渡したときにリストから削除する処理も忘れずに。
0721デフォルトの名無しさんNGNG
>>719
ランタイムの分を足したら40kbじゃ済まないだろ
0722デフォルトの名無しさんNGNG
>>719
Delでもランタイムは使えるよん。プロジェクト→オプション→パッケージ
→実行時パッケージを使って構築する にチェックでGO
0723719NGNG
>>721
でもランタイムってほぼ共通(ほぼでもないか)だから、VB6の
ランタイム最新版フルパック一つ入れておけば済むかな、その
サイズで済む、と。ま、ランタイムはかなりウザイ要素なのだが。
0724719NGNG
>>722
なるほど。でもそれやっちゃうとDelのランタイムを配布しなきゃ
ならないってこと?もしそれやっちゃうとDelに移行するメリットが
無くなってしまう(笑)。
0725Delフサギコ ◆zE1iiRdQ NGNG
TDataBaseCompに全部内包しちゃってはだめなのかしら。

TDataBaseComp.CommandList(i) で操作コンポにアクセスして
TDataBaseComp.CommandSet(命令の種類)で
コマンドを生成してリストに登録するとか。。
  ____
 /......  .. .../
 ||:::   ∧,,∧ TCompo派生というわけにはいかんけど
 |: ̄\ ミ,, ゚Д゚ミ
 |:   :|: ̄U U ̄:|
 |:   :|:     .:|

>>719
VB使っているとどうしてもそう思うけど
VBはランタイムが元々ごっそりOSに入っているんだYO
0726デフォルトの名無しさんNGNG
VBランタイム4,5,6とさらにライブラリ足してますが何か?
また、既存のモノを使わずに1から組んでいけばサイズをおさえることもできます。
この辺もさんざん話したね。
0727719NGNG
>>725
当方win98無印なので標準ではVB5しか入ってナイッす。あと、
ツリ^ビューやツールバーなんか使っちゃうと標準では済まなく
なってしまうし…。サポートはいつもランタイムのことがほとんど
っす。

>>726
イチから?過去ログに答えがありそうですね。見てきます。
0728デフォルトの名無しさんNGNG
つい先日、サイズのこと書いて「またか」ってレスされたばかりなんだけど…。

>>727
小さいexeがどーたらこーたらってのでも検索してみれ。
0729Delフサギコ ◆zE1iiRdQ NGNG
>もしそれやっちゃうとDelに移行するメリットが 無くなってしまう(笑)。

ほんとにそうだろうかと、小一時間・・・・


  ∧,,∧    乗りかかった船で
 ミ,,゚Д゚彡   いろいろ評価してミソが
 ミつ[|lllll]).   よろしいかと。
〜ミ  ミ
  U''U

日Del振のリンクの最後みてみー
http://hp.vector.co.jp/authors/VA009712/take/delphi/dellink.htm


"イチから組む"という方法は並の人間には難しく
人造人間にしかでけない技なので
http://halbow.cool.ne.jp/top.html
ここみて、5分程度であきらめよう
0730デフォルトの名無しさんNGNG
で、定番のページが出てきて
ttp://halbow.cool.ne.jp/top.html
ttp://www.vector.co.jp/soft/win95/prog/se076841.html
ここまでやるんだったらC++と・・・
という話になる、と。
0731719NGNG
>>728
スマソ。今日始めてこのスレ見たんだわ。今過去ログ漁ってます。

>>729
>ttp://halbow.cool.ne.jp/top.html

ここ今日見た(ワラ)。サッパリでしたわ。

>>もしそれやっちゃうとDelに移行するメリットが 無くなってしまう(笑)。
>ほんとにそうだろうかと、小一時間・・・・

実はちと気に入ったコンポーネントを落としてきたんですわ。で、
ちょっろっとコーティングしてみたんですが、これがイイ!
他人のコンポーネントに頼るのは厨なのかどうかはまだDel始めた
ばかりでわからないけど、かなりの魅力を感じた。

>>730
>ここまでやるんだったらC++と・・・
ん〜、まだ始めたばかりだからなんとも…。
0732デフォルトの名無しさんNGNG
誰かexeのサイズネタをwikiにまとめろよ
0733デフォルトの名無しさんNGNG
Delphiのコンポーネントは利便性において最大の利点であり、
またプログラミングにおける欠点でもある。
用は使いよう
0734デフォルトの名無しさんNGNG
>またプログラミングにおける欠点でもある。
ハァ?
0735Delフサギコ ◆zE1iiRdQ NGNG
>他人のコンポーネントに頼るのは厨なのかどうかはまだDel始めた
>ばかりでわからないけど、かなりの魅力を感じた。

           クラスライブラリ使いを
  ∧,,∧     /厨だと言いたい人には言わせておく。
 ミ ゚Д゚ミ  <  
 (ミ  ミつ)ビシッ\だけど、生産性は負けない
〜ミ  ミ       それがDel使い
  ∪ ∪

---- (^_^)(^_^)(^_^) THE REAL CHU-BOU (^_^)(^_^)(^_^) ----
海岸では、実際のプログラマが砂の中のフローチャートを引くプログラマです。
∧,,∧ イミワカンネー
ミ゚Д゚彡 Delフサギコ mailto:[email protected]
0736デフォルトの名無しさんNGNG
DelフサギコってP-Codeなの?
0737Delフサギコ ◆zE1iiRdQ NGNG

 チガウ
      ∧,,∧l||l  マチガワレタ
       ;゙⌒ヽ彡  
     〜ミ___ミ
    ''" ""''"" "''




          クワッ
       ∧,,∧l||l  毒舌ですか...?
       ;;゙ミ゚Д゚彡  
     〜ミ___ミ
    ''" ""''"" "''
0738デフォルトの名無しさんNGNG
教えてください
Delphiで下記のように設定しても、表示はされるがSQLとしては何もおこりません
どこか間違っているのでしょうか?

begin
Database1.AliasName := 'ABC; // ODBCのデータソース名
Database1.DatabaseName := 'Aテーブル'; // DBのエイリアス
Database1.LoginPrompt := False; // DBのログインダイアログを抑制

Table1.DatabaseName := 'Aテーブル';
Table1.TableName := 'Aテーブル'; // MDB内に作ったテーブル名称

DataSource1.DataSet := Table1; // TTableコンポーネントを指定
DBGrid1.DataSource := DataSource1; // TDataSourceコンポーネントを指定
Query1.DataSource := DataSource1;

Query1.SQL.Add('SELECT *');
Query1.SQL.Add('FROM Aテーブル');
Query1.SQL.Add('ORDER BY タイトル DESC');

Database1.Open;
Table1.Open;
Query1.Open;
end;
0739デフォルトの名無しさんNGNG
フリー版のD6を入手しましたがObject Pascal?のポインタ関連に
つてい理解できません、なんかポインタとか詳しく書いてある本あり
ませんか?
0740デフォルトの名無しさんNGNG
>>736
P-Code = 玄ちゃん説は?

どちらも酒飲みだし。
0741デフォルトの名無しさんNGNG
>>739
PASCAL では C のような、物理アドレスに密接に関連した「ポインタ」は扱いません。
ほかのオブジェクトに対する参照としてのポインタとなります。当然配列とは何の関係も
ありません。

しかし、実装としては物理アドレス値を使っていますからメモリ空間の直接参照もできます。
0742デフォルトの名無しさんNGNG
それじゃ和歌ランだろ
0743デフォルトの名無しさんNGNG
>>740
アホ。レベルが違う
0744Delフサギコ ◆zE1iiRdQ NGNG
   ∧,,∧    / ̄
  ミ,,゚Д゚彡 < つまり、ポインタわからんでもヨシと
  (ミ  ミ)   \_
 〜ミ  ミ
   ∪''∪                     …ホントカ?

引数のvar渡しと
クラスの参照がわかればいいとおもうけどね
0745デフォルトの名無しさんNGNG
>>744
いや、他のオブジェクトを参照する「何か」といったポインタがないと
ツリー構造すら満足に作れなくなるから、ポインタは知っておかなきゃいけない。

「Java にはポインタがない」伝説と似た部分あり。
歴史的経緯で Java ほどポインタ否定にはなっていないが。

もちろん、厳密には C/C++ でも規格書にはポインタが物理アドレスを示して
いる保証などないんだけどね。
0746デフォルトの名無しさんNGNG
>>738
以下2点を簡潔に述べよ。
・どこに何が表示されたのか。
・SQLとして、どのようなことが起きることを期待していたのか。

あと、ほとんどのプロパティを実行時に設定しているが、オブジェクトインスペクタからの
設定に何か問題でも?
0747デフォルトの名無しさんNGNG
>>738
DataSouce2 を追加して、まんなかへんを

DataSource1.DataSet := Table1;
Query1.DataSource := DataSource1;
DataSource2.DataSet := Query1;
DBGrid1.DataSource := DataSource2;
0748デフォルトの名無しさんNGNG
>>735
>---- (^_^)(^_^)(^_^) THE REAL CHU-BOU (^_^)(^_^)(^_^) ----
>海岸では、実際のプログラマが砂の中のフローチャートを引くプログラマです。

「真のプログラマとは、海辺で砂にフローチャートを描くようなプログラマのことである」

賛成できません。ちょっとこわいかもね。

0749真のプログラマとはNGNG
真のプログラマは トイレで頭の中にフローチャートを描く
0750真のプログラマとはNGNG
真のプログラマは

var
programmer:Real

のことである
0751真のプログラマとはNGNG
真のプログラマとは 山本 真 のことである
0752デフォルトの名無しさんNGNG
DLLを使わないで、システム全体のキーイベントやマウスイベントを
フックすることはできますか?
0753デフォルトの名無しさんNGNG
>>752
多分、できない。つーか、DLLを使いたくない理由が分からない。
なんだか難しそうとか思ってるなら、実際は難しくないから、とりあえずやってみれ。

本当はVC使った方が簡単なんだけどね・・・・・
0754デフォルトの名無しさんNGNG
>VC使った方が簡単
ShareMemoryの話?だったらレジストリ渡しで初期化するという手も。
0755デフォルトの名無しさんNGNG
>>750
const
programmer:Boolean=True;
0756750NGNG
>>755
たしかに....
0757デフォルトの名無しさんNGNG
function check(programmer: boolean; skill: boolean): boolean;
begin
 if programmer and skill then
  Result := True
 else
  Result := False;
end;

var
 programmer: boolean;
 skill: integer;
begin
{ snip }
check(programmer, boolean(skill)); //False;
check(programmer, skill > 0); //True;
0758デフォルトの名無しさんNGNG
すんません。
会社のDEL4 (NT)で、カラーパレットから色を作るとザラザラした色ができます。
ピンクを作ればピンクの小さい四角と白の小さい四角、といった感じで。
一方、自宅(windows98) DEL4で同じ色を作るときれいなムラのない色が作れます。
ザラザラにならないためにはどうすればよいのでしょうか。

激しく厨房で自分でも恥ずかしいのですが、よろしくお願いします。
0759デフォルトの名無しさんNGNG
           +
      +         +     +
  +
.      / ̄\  +.  ∧_∧アハハハ  +
ノリカエセヨー( ´∀`)    (´∀` )  
      (つ  つ     (つ  つ■
.   +  ( ヽノ      ( ヽノ        +
      し(_)      し(_)



0760デフォルトの名無しさんNGNG
>>758
そりゃ、NTの方のPCの色数とWin98の色数が違うだけだろ、
Windowsの画面のプロパティで設定して下さい。
0761デフォルトの名無しさんNGNG
>>759
それは早く返した方がいい
彼のアイデンティティだし
0762デフォルトの名無しさんNGNG
>761
ワラタ
0763デフォルトの名無しさん NGNG
(*゜ー゜)教えてDelモナ
Delphi6のShellTreeViewでマウスダウンしたディレクトリの
フルパスを知るにはどうすればいいですか?
0764デフォルトの名無しさんNGNG
>>763
手っ取り早くやるなら
コソーリShellListViewを配置してShellTreeViewと同調させて
ShellListView.Folder[0]を見るとか。
0765デフォルトの名無しさんNGNG
>>764
(*゚ー゚)レスありがとう。
でもダメでした。\マウスダウソ のフルパスがしりたいのに
\マウスダウソの下にディレクトリがあるとそれも取ってきちゃう
C:\マウスダウソ\hogehoge
0766デフォルトの名無しさんNGNG
質問なんですけど、
Delphiの\Help\Examplesに入っているプログラムは
日本語表示させると文字化けするんです。
日本語表示させるにはどうしたらいいのですか?
0767デフォルトの名無しさんNGNG
>>766
何が「日本語表示」なの?何を表示させたいワケ?
0768デフォルトの名無しさんNGNG
フォントの初期値が英語なんでしょ。
あんまり細かいところを気にするな。
0769デフォルトの名無しさんNGNG
教えてください
Delphiでテーブルやクエリを使用して実行したら
データベースへのログインというダイアログが出てしまいますが
出ない事ようにできないのですか?
0770Delフサギコ ◆zE1iiRdQ NGNG
TDatabase.LoginPrompt を falseにして
TDatabase.Paramsの値を

SERVER NAME=なんちゃらサーバー
USER NAME=ほにゃららユーザー
PASSWORD=ちょめちょめパスワド

にすると

____∧ ∧_ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___ミ,,゚Д゚ミ< で、パスワード聞かれなくなる!
__ ミ ⊃ つ  \______________
_〜ミ,, ,,〃
_ ∪ ∪


---- (^_^)(^_^)(^_^) THE REAL CHU-BOU (^_^)(^_^)(^_^) ----
真のプログラマは今時フローチャートなんて書かない。
∧,,∧ フツー カカネーダロ
ミ゚Д゚彡 Delフサギコ mailto:[email protected]
>>748さんサンクスコ
0771Delフサギコ ◆zE1iiRdQ NGNG
http://www.borland.co.jp/qanda/delphi/d0003342.html
http://www.borland.co.jp/tips/cbuilder/cb002/cb_2.html
http://www.wwlnk.com/boheme/delphi/dbtips/css0110.htm

  ∧,,∧ ──────
 ミ゚Д゚,,彡 < いちお、URL
 ⊂⊂ ミ──────
    ヾ ,,ミ〜 ────
     し じ ─────
0772デフォルトの名無しさんNGNG
>>770,771
thanks
0773766NGNG
>>768
その通りでした。
つまんない質問してごめんなさい。
0774デフォルトの名無しさんNGNG
>>769
わかっていると思うが、ユーザー名/パスワードがベタテキストでフォームに埋め込まれるので
パスワードつけた意味がなくなります。
0775デフォルトの名無しさんNGNG
Delphiのシェルを作りたいんですが、
ツリーに登録されている関数名や変数は如何したら取り出せますか。
0776デフォルトの名無しさんNGNG
>わかっていると思うが、ユーザー名/パスワードがベタテキストでフォームに埋め込まれるので
>パスワードつけた意味がなくなります。
よい子は文字列を分散させておいて実行時に組み立てて代入します
もっとよい子は乱数などで暗号化しておきます
0777デフォルトの名無しさんNGNG
ボタンをクリックするとボタンを追加する、ということは出来るのでしょうか?
0778デフォルトの名無しさんNGNG
>>777
できます。
0779デフォルトの名無しさんNGNG
>>777
procedure TForm1.Button1Clien(Sender: TObject);
var button: TButton;
begin
button := TButton.Create(Self); // 必須
button.Parent := Self; // 必須
button.OnClick := Button1Click; // ボタンが押された場合のイベントハンドラ登録
... // その他座標・サイズ・キャプション等設定
end;
0780デフォルトの名無しさんNGNG
>>692
俺もそれやりたい。
TVS_INFOTIPをスタイルに加えて、TVN_GETINFOTIPメッセージを
捕まえればいいのかと思ったけど、どうもうまくいかない。
誰か知ってたら教えてください・・・
0781デフォルトの名無しさんNGNG
TreeView の InfoTip は、領域が「完全に見えない状態」の時に表示されるものなので
スクロールバーがでるくらいに幅を狭めては?
で、自動的に項目ごとに異なる文字列が出てくるが。

それとは別の話?
0782デフォルトの名無しさんNGNG
>781
コードエクスプローラの情報を取り出したいのです。
0783デフォルトの名無しさんNGNG
ごみ箱の「中身」のプロパティを出したいのですが、ごみ箱そのもののプロパティが出てしまいます。
なんで〜?Demoの中のvirtuallistviewやShellCtrlsなら問題ないのに…。

const
 EnumOption = SHCONTF_FOLDERS or SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN;
var
 Desktop, Bitbucket, Folder: IShellFolder;
 ID, Item, It: PItemIDList;
 Malloc: IMalloc;
 Enum: IEnumIDList;
 Got: DWORD;
 Menu: IContextMenu;
 Arg: TCMInvokeCommandInfo;
 PMenu: HMENU;
begin
 SHGetMalloc(Malloc);
 SHGetDesktopFolder(Desktop);
 SHGetSpecialFolderLocation(0, CSIDL_BITBUCKET, ID);
 Desktop.BindToObject(ID, nil, IID_IShellFolder, Bitbucket);
 Folder := Bitbucket;
 It := nil;
 Folder.EnumObjects(0, EnumOption, Enum);
 while Enum.Next(1, Item, Got) = S_OK do
 begin
  if It = nil then It := CopyPIDLs(Malloc, Item);
  Malloc.Free(Item);
 end;
 Malloc.Free(ID);
 if It <> nil then
 begin
  Folder.GetUIObjectOf(0, 1, It, IContextMenu, nil, Menu);
  PMenu := CreatePopupMenu;
  Menu.QueryContextMenu(PMenu, 0, 1, 100, CMF_NORMAL);
  DestroyMenu(PMenu);
  FillChar(Arg, SizeOf(Arg), 0);
  Arg.cbSize := SizeOf(Arg);
  Arg.nShow := SW_SHOW;
  Arg.lpVerb := Pointer(19); //'properties';
  Menu.InvokeCommand(Arg);
  Malloc.Free(It);
 end;
end.
0784783NGNG
事前にコントロールパネルの中の「タスク」を列挙しておくと正常動作することが判明。
なおさら謎だ〜!

( 何で思いついたかというと、
コントロールパネルの中の「フォント」を扱う時
先に「タスク」をやっとくと上手くいったことが… )
0785デフォルトの名無しさんNGNG
>「タスク」をやっとくと上手くいったことが

具体的にどんなことをしたの?
0786デフォルトの名無しさんNGNG
>>785
タスクスケジューラのスケジュールの列挙っちゅーことかな?
漏れは>783じゃないから分からないけど…
0787デフォルトの名無しさんNGNG
TDBGridの列に、
テーブルの内容を横向きの棒グラフで表示したいのですが、
どなたか方法を教えてください。
0788デフォルトの名無しさんNGNG
TIBTableのLocateについてなんですが、Delphi5で問題なくLocateできていたコードが
Delphi6では失敗します。IBTableに仕様の変更があったのでしょうか?
0789デフォルトの名無しさんNGNG
ソースみれ
Locateは怪しそうなので相当関数を作ってつかってる
0790デフォルトの名無しさんNGNG
TListViewでカラムの境界線をダブルクリックしたときに、
カラムのwidth設定をいじりたいんですが、
カラムの境界線をダブルクリックしたときに発生するイベントはあるんでしょうか?
0791788NGNG
>>789
RESありがとうございます。
でもソース見る根性無かったので、いろいろ試してみた結果、
日付フィールドの扱いが5と6で異なっていたみたいです。
5は日付形式で渡してOKだったのですが、6は文字列に直してやらないと
ダメでした。
0792780NGNG
>>781
いや、見えない部分を補完するあれではなくて、
項目ごとにTextプロパティとは別にヒントを表示したいのです。
たとえばIrvineなんかでは、そういう処理をしているとおもうのですが、
どうやっているんでしょう。
0793デフォルトの名無しさんNGNG
コンボボックスをフラットな状態?で表示させたいのですが、
Ctl3D:=Falseしても何も変化がありませんが、こんなもの?
他と違和感があるので、是非ともフラットにしたいのですが
回避策ありませんか?
0794デフォルトの名無しさんNGNG
巷にある、Delで書かれた正規表現検索オブジェクト
の使い勝手(速度や使いやすさ)レポートきぼんぬ。
0795デフォルトの名無しさんNGNG
>>793
BevelKind
0796デフォルトの名無しさんNGNG
ClientDataSetで
UpdatesPending: キャッシュバッファに未適用のレコードが入っているかどうか調べる
ってものが欲しい。何かで代用は出来ないものでしょうか?
それとも派生コンポつくって解決できるんですか?
0797793 NGNG
>>795
できました、ありがとう!
0798783NGNG
>>786
コントロールパネルと、その下のタスクの中の列挙です。
自分以外の環境ではどうなるか気になる所です。

( そういえばタスクスケジューラをサービスごと切っていた記憶も…
0799デフォルトの名無しさんNGNG
このスレだったかなぁ?デルスレ多くて…。
「ViXの作者がUPXでXPのなんたらかんたらで使うのやめた」って
吹聴してまわってるヤツいないか?
他の掲示板でまるまる同じレス見たよーな気がするんだが気のせいか?
0800800NGNG
(;´д`)
0801茶碗NGNG

質問です。

例えば
FormにRichEditとButtonとPopUpMenuがあります。
PopUpMenuにコピー、切り取りなどを適当に用意して
RichEdit1にPopUpMenuを関連付けてButtonのプロシージャで
for int1 := 0 to 10000 do begin
RichEdit1.Lines.Add(inttostr(int1));
RichEdit1.SetFocus;
application.ProcessMessages;
end;

等としたらずらーっと表示されていきます。
その処理中にRichEditで右クリックしPopUpMenuを
表示した場合ずらーっが止まってしまいます。
これを止まらずに行う方法は無いでしょうか。
0802デフォルトの名無しさんNGNG
>>801
すまんのぅ。意味が分からんのじゃ。
0803茶碗NGNG
いえ、こちらこそ。文章書くのが苦手で・・・
0804素数2NGNG
popupメニューのアイテムを全部削除するとポップアップしないみたいだけど・・・
一時的に削除したらどうだろうか・・・役にたたんなこの情報
0805デフォルトの名無しさんNGNG
>804
大麻やれ。
0806茶碗NGNG

>804
どうもありがとうございます。
>805
タイマーですか?

やりたい事は長い処理中にログみたいなのを表示したくて
PopUpMenuやMainMenuが表示されると処理が止まってしまう
のを何とかしたいのです。
Threadなどを使ってみたのですがどの部分をスレッドかすれば
良いかと思いやってみましたが上手く行きませんでした。

上手く言えないのですが例えば
Iriaでダウンロード中にログが表示されますが
その時にPopUpMenuが表示させたりMainMenuを表示させても
ログが流れて行きます。
そう言う事をやりたいのですが。
0807デフォルトの名無しさんNGNG
(´-`)。o ○ (それで何がしたいのだろう?popupがドバーっと出たらイヤだな…)
0808デフォルトの名無しさんNGNG
つーか、標準のpopupでなくて、自分で作れば?
右クリックを検知して自作のもんを出すとか…。
なーんて知ったかぶったりして。
0809デフォルトの名無しさんNGNG
RichEditとIriaのソレでは随分違うような・・・
0810茶碗NGNG
>808
それだとずらーっは大丈夫なんでしょうか。
やってみます。

>809
そうなんですか、あれはどうやってるんでしょうか。
簡単であれば教えて貰えませんか?
0811デフォルトの名無しさんNGNG
なんか話が逸れてしまいそうなので、適当に流して欲しいのだが
ログの表示はレスポンス(反応)に対して文字が書き込まれるのであって
単純にループで回すような仕組みではないと・・・
0812デフォルトの名無しさんNGNG
TClientSocketとTServerSocketについて解説してるページってないですか?
ていうか何でマニュアル付いてないんだ…
0813デフォルトの名無しさんNGNG
>>812
Helpついてるぞ?
0814デフォルトの名無しさんNGNG
PopUpMenuやMainMenuはモーダルダイアログの一種です
つまり、それを表示した窓のメッセージを止めてしまいます。
これはメッセージを止めるのであってスレッドを止めるのではないことに注意。
だから、タイマーを使うと、タイマーは隠れた別の窓を使いますからそれとは
別のタイミングで動かせます
0815デフォルトの名無しさんNGNG
はじめまして
顕微鏡で細胞分裂を観察しているのですがdelphiで録画と画像処理をやろうと思います。
カメラから画像を取り込むためのライブラリはございますでしょうか?
ご指導のほどよろしくお願いいたします。
0816デフォルトの名無しさんNGNG
カメラ付属のソフトでビットマップで取り込んで
あとは好きなようにってのは駄目なの?
0817デフォルトの名無しさんNGNG
>>815
コレ使えば?
http://www.clavis.ne.jp/~listcam/index_j.ssi
0818デフォルトの名無しさんNGNG
>>815
ここで聞いても無駄。技量のあるやつなんかイネーヨ(ワラ
VB使え!
0819デフォルトの名無しさんNGNG
質問の仕方が初心者だな。
要らない情報が詳しくて、必要な情報が足りていない。
0820デフォルトの名無しさんNGNG
>>813
Helpの場所はどこですか?
・IDEでTClientSocketにカーソルを合わせてF1
・VCLリファレンスヘルプでキーワード検索
・VCLリファレンスヘルプの目次から「オブジェクト・コンポーネント(アルファベット順)」→「TC」
以上のどれでやっても出てこないんですが…俺の環境がどっかおかしいんでしょうか。
0821デフォルトの名無しさんNGNG
>>820 もしかしてフリー版? あれにはついてないかもね
0822デフォルトの名無しさんNGNG
TWebBrowserで表示しているページを保存したいのですが、
簡単な方法って有りますか?
0823デフォルトの名無しさんNGNG
Panelの上に複数のObjectが乗せてあるとする。
これと同じ物を実行時に複製したいよ。
Panelの上じゃなくて、全てを個別に作成するしかないかな?
結構数がある上に、後々変更とかで楽がしたいんでPanelの
コピーでオブジェクトが作成できれば楽かと思っているのだが
どーすりゃいいモナー。
0824デフォルトの名無しさんNGNG
>>822
http://www.hpsozai.com/up/ap.cgi?get=2002212214830.jpg

0825デフォルトの名無しさんNGNG
>>823 TFrameではダメ?
0826デフォルトの名無しさんNGNG
>>825
いッいつの間に!こんな機能が!
恥ずかしながら全く知りませんでした。(汗)
0827デフォルトの名無しさんNGNG
>>823
フォームデザイナでパネルを選択してCtrl+Insしてコピー。その後親となるコントロールをクリックしてShift+Insで貼り付けでコピーできる。

TFrameとの違いは手軽に使えることと、一方を修正しても他方に反映されないこと。
0828デフォルトの名無しさんNGNG
>>827
>>832の逝っている事と少し違うような気がするけど
それってデザインでの話しでしょ、832は実行時って書いてるようだが
0829デフォルトの名無しさんNGNG
832間違い >>823 だね
0830デフォルトの名無しさんNGNG
>>828
TFrame のインスタンスを実行時に動的に複製すればいいのでは?
0831デフォルトの名無しさんNGNG
>815 Win32APIを使いなさい。詳しくは解説書を買いなさい。

>816-819 頭の足りない者は無理して答えなくても結構。
0832茶碗NGNG

>814

出来ました。ありがとうございました。
0833デフォルトの名無しさんNGNG
>>821
最初からついてないんですか…残念。
0834デフォルトの名無しさんNGNG
>>823-830
Frameねぇ、便利なんだけどWin9xだと使えないかもよ?
リソース食いまくるからね、まあ、激しく使わなきゃ大丈夫か。

20個固定だが、その辺りはなんとかしてくれ、
取りあえずこんな感じでどお?

// Frame2を新規フレームとして作成しておいて、
// Form1 に ScrollBox1を張る。
var
  Frame: array[1..20] of TFrame2;
    ・
    ・
    ・
procedure TForm1.FormCreate(Sender: TObject);
var
  idx:Integer;
begin

  for idx:=1 to 20 do
  begin
    Frame[idx]:=TFrame2.Create(Self);
    Frame[idx].Parent:=Self.ScrollBox1;
    Frame[idx].Name:='iFrame'+IntToStr(idx);
    Frame[idx].AutoSize:=True;
    Frame[idx].Top:=(Frame[idx].Height*(idx-1));
end;

end;
0835823NGNG
有難うございます、おかげさまで出来ました。

しかし、なぜフレーム使うとリソースが足りなくなるのかわかりませんが、
もしかして、フレームって貼り付ける度にフォーム生成してるのと同じ?

便利なんで、色々なフォームの共通点をフレームにしちゃおうかと思って
いたのですが、止めた方がいいでしょうか。
0836デフォルトの名無しさんNGNG
>>835 Windowsハンドル持ってるコンポなら同じじゃないの?
0837719NGNG
ちと困ってます。
フォームを追加してちょろっと手を加えて、その時は普通に
動いていたのですが、Delphiを閉じてからしばらくしてまた
立ち上げたら

「[致命的なエラー]Project1dpr(7)ファイル'AFEdit.dcu'が見つかりません」

と出て実行できなくなりました。
AFEeditは追加したコンポーネントです。閉じる前までは
正常に起動できていたのですが…。原因と対策を教えて
ください。
0838デフォルトの名無しさんNGNG
VCLリファレンスによると、TColor型の色指定でツールチップの
色clInfoText、clInfoBkは「Win95、NT4.0のみ」となっているのですが、
これ以外のOSの場合はどのように指定すればいいのでしょうか?

一応私の環境(Win98SE)では、clInfoText、clInfoBkで指定しても
反映されるのですが、Me、2k、XPなどはどうなんでしょう?
0839名無しヘタぐらま ◆B18Bks.Y NGNG
>>835
内部構造はわからないけど
リソースメーターとにらめっこしながら
フレームを使う場合と使わない場合で実験してみてはどうでしょうか.

あんまり人気のないフレームですが(笑)
余計な作業は減るしコードはシンプルになるしで
個人的にはかなりお世話になっています.


>>838
私が仕事で使ってるXPは大丈夫でした.
たーぶーん,同じでよいと思うのですが.

そちらのDelphiのバージョンがわかりませんが,
Delpht 5の場合はWin98登場の頃だったためかWin98の対応がなく,
(Windows の英語ヘルプもWin95/NT4.0時代のものです)
またWindowsでは将来の互換性が保証されているわけではないので
『のみ』という表記になったものと思われます.
(Delphi6でも同じ表記ならボーランドの手抜き?)

ちなみに clInfoText と clInfoBk は
Delphi 5 ではGraphic.pasで以下のように記述されています.
> clInfoText = TColor(COLOR_INFOTEXT or $80000000);
> clInfoBk = TColor(COLOR_INFOBK or $80000000);
COLOR_INFOTEXT と COLOR_INFOBK はWindows API の
GetSystemColor でツールチップのそれぞれ文字色,背景色を得るために使う定数ですが
ttp://www.microsoft.com/JAPAN/developer/library/jpsetupf/_win32_getsyscolor.htm
ここを見る限りWin95/NT4.0以後の変更については何も書かれていないので
おそらく大丈夫ではないかと.
0840838NGNG
>>839
レスありがとうございます。VCLリファレンスはDelphi6のものです。
clGradientActiveCaption、clGradientInactiveCaptionは、
「Win98とWin2k」になっているので、Delphi5と同じということは
無いと思いますが、やはり手抜きなんでしょうか。
私のはDelphi6PersonalなのでGraphic.pasついてません。(^^;

XPでもOKということは、気にしなくてもよさそうですね。
ありがとうございました。
0841昼寝NGNG
みなさん、初めまして
Delphiに触れて1週間未満の初心者ですが宜しくお願いします。

TTableコンポーネントのキャッシュアップデートを使用して
C/S環境のシステムを構築しようと思うのですが

画面に表示されたデータを、
他のユーザーがレコードを変更した場合、
ApplyUpdates
CommitUpdates
を実行すると例外エラーが発生します。

どのようにすれば良いのでしょうか?
0842デフォルトの名無しさんNGNG
>>841
C/SでTTableは使わないほうがいいよ。
TQueryを使ったほうが良い。
0843昼寝NGNG
842さん コメントありがとうございます。

TTableは、どういった理由で使わない方が良いのでしょうか?
TQueryだと、841の様なエラーは発生しませんか?

質問ばかりで、すいません
0844デフォルトの名無しさんNGNG
C/Sならデータトラフィックなどが結構重要になってくるし、
SQLでないと柔軟にデータを取り出せないと思われるのでQueryをすすめています。
ちなみにCashedUpdatesプロパティはTrueになってますか?
TQueryなら Cachedupdates := True; RequestLive := True;にしなきゃダメだよ。
0845デフォルトの名無しさんNGNG
申し訳ない。よく質問をみたら「他のユーザーがレコードを変更した場合、 」
と書いてありましたね。
そりゃ他のユーザーが変更したあとに新しくFetchしないでApplyかけたらエラーがかえってきますよ。
私なら行ロックをかけて変更不可にしますがどうでしょう?
0846デフォルトの名無しさんNGNG
DBがOracleなら
BeforeEditで SELECT HOGE FROM HOGE_TABLE WHERE〜〜 FOR UPDATE NOWAIT;
をかけてエラーが帰ってきたらロックされてますとか出した方がユーザーも納得するでしょう。
他の人ならどうするかわかりませんが・・・。
0847昼寝NGNG
>>845 コメントありがとうございます。

すいません、レコードのロックはかけたくないので、
例外エラーが発生したら、
「既に他のユーザーに変更されています、上書きしますか?」
「既に他のユーザーに削除されています、更新は行えません」
といったメッセージを表示し、処理を中断したいのですが、
どうすれば良いのでしょうか?


TQueryの件、ありがとうございました。
データトラフィックという説明で理解できました。
0848デフォルトの名無しさんNGNG
中断させるのはAbortメソッドあたりで出来そうですね。
そのまま上書きはどうすれば良いのか・・・・。申し訳ないですが解りません。
0849デフォルトの名無しさんNGNG
>>847
漏れ、DBサパーリだけど。

例外をtry..exceptでキャプチャ、except節で

if ExceptObjectがその手の物であれば then
begin
  メッセージを表示;
  Exit;
end;
else //そうでなければ
  Raise;

てのはどうよ?
漏れだったらとりあえずこういう風に組んでみる。
0850デフォルトの名無しさんNGNG
OnUpdateErrorイベントのヘルプの説明を見よ。
0851デフォルトの名無しさんNGNG
Delphi6使い始めたばっかりなんですけど、Stringの扱いに戸惑っています。

ヘルプにあるとおりに、 FileWrite(FileHandle, AString, Length(AString));
してみるも、変なバイナリを吐かれました。
FileWrite(FileHandle, PChar(AString)^, Length(AString)); でうまくいくようです。
何が起きているのかは想像できますが、何故そうなるのかがわかりません。
FileWriteの引数 Buffer が型無しなので、何を期待されているのか不明ですし、
そもそもどうしてヘルプにある書き方でうまくいかないのでしょうか?

また、Stringにヌルを含むバイト列を代入する方法もわかりません。
StrLCopyではヌル文字が見つかった時点で止まってしまいます。
MemCpy相当品、或いは任意のメモリ領域を参照させる方法はないですか?


まだ使い始めたばかりだからそう思うのかもしれませんが、
Delphiの文字列は相当に使いにくいような気がします。
文字列は任意のメモリ領域(倍取れる)であるとして、任意の文字(ヌル文字や
改行等)をデリミタとして扱うほうがわかりやすい思うんですがねぇ……
0852デフォルトの名無しさんNGNG
>851
ぐぁ…訂正
(倍取れる) -> (バイト列)

倍取れるって……鬱死
0853デフォルトの名無しさんNGNG
>>851
C を覚えているのなら C を使い続けた方がよいのでは?
0854デフォルトの名無しさんNGNG
>>851
悪いこと言わないからC++Builder使え
0855デフォルトの名無しさんNGNG
これからDelphi6 Personalを始めようと思っているので、
本を購入しようと思うのですが、
基礎からわかるDelphi6
http://www.cbook24.com/bm_detail.asp?sku=99926228
と
Borland Delphi6 オフィシャルコースウェア 基礎編
http://www.cbook24.com/bm_detail.asp?sku=99925917

ではどっちをやったほうがいいのでしょうか?
あまりプログラミングの経験が無いのですが。
0856デフォルトの名無しさんNGNG
>853
いや、VCLは使いたいんですよ。
ポトペタで簡単にUIを作れる魅力は捨てがたいです。
フリーなBCB(IDEつき)ってありましたっけ?
0857Delフサギコ ◆zE1iiRdQ NGNG
   ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < よくわからですが
   U  つ∀ \____________
 〜ミ  ミ
   ∪''∪ MidNightはワインでも・

>>FileWrite(FileHandle, AString, Length(AString));
それ使った記憶がないので知らん

>>MemCpy相当品
TMemoryStreamとかかな?
どういう処理させているんだろうか。

>>デリミタとして
・・・・・・

>854-855
胴衣

>>855
基礎からは、比較はともかく、いい本だと思われ。

オフィサルは読み物として面白さがない教科書的ぽっさを感じて
フサは立ち読みだけでイッパイイッパイです。
0858デフォルトの名無しさんNGNG
>855
漏れが立ち読みした感じだとどっちも悪い本じゃないので、
書店へ行ってみて、わかりやすそうだと思ったほうを買えばいいと思うよ。
ただどっちも基本的なことしか書いてないけど。
0859855NGNG
>>857
レスありがとうございます。
ではさっそく基礎からわかるDelphi6を買おうと思います。
0860851NGNG
おや、名前書いてなかったですね。
>856 自分す。


>857

>>>FileWrite(FileHandle, AString, Length(AString));
>それ使った記憶がないので知らん

えと……これってファイル入出力の最も基本的なやつじゃないんですか?
んじゃ、 FileStream.Write(AString, Length(AString)); でもいいんですが。
今試したところ、同様の結果になりました。

>>>MemCpy相当品
>TMemoryStreamとかかな?
>どういう処理させているんだろうか。

単に Buffer : array[0..x] of Byte を
SetLength(AString, SizeOf(Buffer)); して
StrLCopy(AString, Buffer, SizeOf(Buffer)); したいだけなんですが。
これだと Bufferにヌルあるとそれ以降コピーされないんですよね。
(ヘルプ見ずに書いているので引数に間違いなどあるやも知れず、為念)
これを全部コピー(或いは参照)させたいわけですよ。

要は単に0を含むバイナリをStringにぶち込みたいだけなんですが。
こういう使い方をするべきではないのかな?
0861デフォルトの名無しさんNGNG
「基礎からわかるDelphi5」を持ってるんですが、
「基礎からわかるDelphi6」って5との違いはどれくらいなんでしょうか?

それなりに内容が違うなら購入しようと思っているのですが、
本屋で見かけないので比較も出来ず、取り寄せてもらって
内容がほぼ一緒だと悲しいですし…
0862デフォルトの名無しさんNGNG
CopyMemoryじゃない?
0863Delフサギコ ◆zE1iiRdQ NGNG
        ∫
   ∧,,∧ ∬       / もっとも基本的な奴は
   ミ,,゚Д゚ノ,っ━~  <  ラップされたリッチライブラリに
_と~,,,  ~,,,ノ_. ∀  \ 及ぶべくもないから
    .ミ,,,/~),  .| ┷┳━  あまり使わないという罠
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
文字列IOならTStringListとか
MonaUtilsの関数を使うだけなんだけど…

Delファの文字列は#0で変な処理を
起こす部分がイパイですから、塗る文字含むのを使う場合は
文字列として扱っちゃダメダメ

そもそも、バイナリをどうして文字列に入れる必要が?

バイナリ系は
苦手分野なので他の方にまかせるです

>>861
確か内容は8割方同じです。サンプルで作るものが違ってたかな。

基礎D5をクリアしたなら、違う本にステップアップするよろし
0864del6無料から始めた男NGNG
本買うより、検索しまくっていろんなページ見る方が勉強になると思うよ。
その後で本買うといいと思うな。個人的に。オレ、そうしたし。
オフィシャルの応用コースしか、本は買ってないよ。
0865デフォルトの名無しさんNGNG
>>860
Delphi6使ってんだから、昔みたいに文字列を動的配列みたいに使うのはやめようよ。

>FileWrite(FileHandle, AString, Length(AString));
AStringはCみたいに配列の先頭ささないから駄目ですよ。
何でも渡せるからつい渡しちゃんのはわかるけれど。
 FileWrite(FileHandle, AString[1], Length(AString));
でだめですか?

そういや、FileWriteって使ったこと無いなあ。
FileOpenのヘルプ見ても推奨されないみたいなことかいてあるし、
大抵はStream使うのでは?
0866デフォルトの名無しさんNGNG
>大抵はStream使うのでは?
いいすぎた。
AssignFileとかBlockWriteかなと。
0867851NGNG
>862
おお、これこそ求めていたもののようです。
ありがとうございます。

……しかし、これ、ヘルプに載ってないのね。

>863
>文字列IOならTStringListとか
>MonaUtilsの関数を使うだけなんだけど…
>
>Delファの文字列は#0で変な処理を
>起こす部分がイパイですから、塗る文字含むのを使う場合は
>文字列として扱っちゃダメダメ

そうでしたか、勉強になります。

>そもそも、バイナリをどうして文字列に入れる必要が?

TIdCoderが引数としてStringを要求するから
TIdHTTPがHTTP BodyをStringで返すから。

>865 >866

どうもです。
調べてみます。
0868851NGNG
>861
上の書き込みの通り私も初心者なんですが、
「基礎からわかるDelphi4」を持ってます。
2つも前のバージョンですけど、私にはこれで十分でした。
Delphiは昔から完成度が高かったのか、今のバージョンと
あまり変わりがないように見えます。(この本を見る限りでは)
なので、この本の5も6も大して違いはないのでは?

この本には基本的なコンポーネントのさわりしか書いてないし、
実際にそのコンポを使うときはヘルプを見ますからね。
基本的なコンポの紹介とチュートリアルしては役立つと思いますよ。

それよりもObject Pascalの文法的な部分が少なすぎる気がします。
他の言語をかじった事があるなら話は別ですが、プログラミングの
初心者にはわかりにくいのではないかと。

それよりも 「Borland Delphi6 オフィシャルコースウェア 基礎編」
の方が良さそうに思えます。
5分程立ち読みした程度の感想ですが。
値段はどちらも大して変わりませんしね。

0869851NGNG
>868
ちょい加筆修正。

>この本には基本的なコンポーネントのさわりしか書いてないし、

もちろん簡単なアプリの組み方や、IDE(開発環境)の使い方、
DataBaseの作り方まで書いてあるのでこの一文は訂正します。
この辺は自分にとっても役に立ちました。
ただまぁ、言いたいことは

>それよりもObject Pascalの文法的な部分が少なすぎる気がします。

これに尽きるということで。
0870デフォルトの名無しさんNGNG
もっと広まるように、デルマガを本屋にたくさん置いてもらう嘆願書を
作りましょう!
あと、はなっからVCLがシステムにインストールされてる環境にするように
ビルゲイツに頼みましょう!
0871デフォルトの名無しさんNGNG
いきおいでDel6proを買ったんだけど
今押し入れです。
personalでじゅうぶんでした。
0872デフォルトの名無しさんNGNG
でもデルマガの記事って、わかってる人はわかってるし
わからない人は読んでもわからんし、かといって中道的ナチュラルネタをやる訳でもなし。
なんつーかこう。。。
0873デフォルトの名無しさんNGNG
>>867
CopyMemoryはWinAPIだーよ
0874デフォルトの名無しさんNGNG
>>871
Personal使うならProつかっとけって
0875三村NGNG
>>871
押し入れかよ!
0876デフォルトの名無しさんNGNG
メモ帳に書いてある内容を読み込む方法ってありますか?
0877デフォルトの名無しさんNGNG
>>876
死ぬほど検索して質問してるのだろうな?
0878デフォルトの名無しさんNGNG
paradoxのpass解析ソフト あったら教えてください
0879デフォルトの名無しさんNGNG
>>878
死ぬほど検索して質問してるのだろうな?
0880三村2NGNG
>>887,879
死ぬほどかよ!
つーか、ひつけーよ!
0881三村2NGNG
>>880
つーか、887かよ、877だろ!
0882デフォルトの名無しさんNGNG
>>876
とりあえず、クリップボード経由版

procedure TForm1.Button1Click(Sender: TObject);
var
hEdit:HWND;
begin
hEdit := GetWindow(FindWindow('Notepad',nil),GW_CHILD);
if hEdit = 0 then exit;
SendMessage(hEdit,EM_SETSEL,0,-1);
SendMessage(hEdit,WM_COPY,0,0);
SendMessage(hEdit,EM_SETSEL,0,0);
Memo1.Clear;
Memo1.PasteFromClipboard;
end;
0883デフォルトの名無しさんNGNG
>>876 WM_GETTEXT版

procedure TForm1.Button1Click(Sender: TObject);
var
hEdit:HWND;
len:integer;
s:string;
begin
hEdit := GetWindow(FindWindow('Notepad',nil),GW_CHILD);
if hEdit = 0 then exit;
len := SendMessage(hEdit,WM_GETTEXTLENGTH,0,0);
SetLength(s,len+1);
SendMessage(hEdit,WM_GETTEXT,len+1,LPARAM(PChar(s)));
Memo1.Text := s;
end;
0884デフォルトの名無しさんNGNG
>>851

もう解決しているかもしれませんが

文字列は、「参照カウンタ、長さ、内容」を保持したメモリーブロックへのポインタで
実装されているので、データそのものの先頭へのポインタは
PChar(AString) か @AString[1]で取れます。
で、参照渡しの場合は、
PChar(AString)^ か、(@AString[1])^ = AString[1] となります。

AStringへのバイナリーデータ設定は、
SetString(AString, 先頭へのポインタ, 長さ) が便利です。

>>863で書かれているように、SysUtilsの文字列関数は
内部でWindowsAPI(C文字列を扱う)を使ってますので#0で誤動作します。
(しかしCompareStringみたいに明示的に長さを渡せるものはOK)
Systemの文字列関数(Pos, Delete, Insertなど)は
純正Pascal関数なので#0を含んでいても正常動作します。
0885851NGNG
いちおう結果報告

CopyMemory(PChar(AString), @Source[0], Length(Sourch));
CopyMemory(@AString[1], @Source[0], Length(Sourch));

で望みどおりの結果が得られました。
IOの場合も同様に、但しアドレスではなく実体を渡すと。
なんで実体なのかさっぱりわからないけれど、これはきっとC++の
参照渡しみたいなものなんだろーなということで納得。

結局Stringに任意の場所を参照させる方法はわかりませんでしたが、
Stringの参照先を書き換えることはできるようなのでよしとします。
みなさん、どうもありがとうございました。


それからいろいろ試した結果、

DynamicArray := @StaticArray[0] とすると
@StaticArray = @StaticArray[0]
@DynamicArray <> @DynamicArray[0] = @StaticArray[0]
@aString <> @aString[1] = Pointer(aString)

だったんですね。
Stringが1originなのはShortStringとの互換のためですか。
いやはや、この辺はCと同じと思っていたので嵌りました。

それにしても動的配列まで参照カウントつきだったとは驚きでした。
配列については組み込みでauto_ptrが用意されてるわけですな。
メモリリークの心配もなく、Shallow Copyできて万々歳と。
……いや、ちょっとまて、それはいいとしても、(標準で)Deep Copy
‘できない’動的配列てなんかおかしくないですか?
普通Deep Copyする手段を用意した上で、デフォをShallow Copyにするものでは。
このへんどういうつもりなんでしょうかね? 


>865
>Delphi6使ってんだから、昔みたいに文字列を動的配列みたいに使うのはやめようよ。

昔は文字列が動的配列の代わりだったんですか?
遅延書き込みつきでさらに高機能なんだし、いいじゃないですか。
あ…それだと今度はポインタ的な使い方ができないのか。

いや、それよりも文字列と配列(というかコンテナ)を区別する理由ってなんでしょう?
(> 863 の理由ならまぁ納得ですが)
文字列といっても単なるバイト列、一種の動的配列じゃないですか。
親子関係にあるべきとまでは言わないけど、操作はできるだけ互換にして欲しいな。

0886851NGNG
>884
あ、どうもすみません。
新着がないか確認するべきでしたね。

>883 の通り解決済みですが、自分の考えに間違いが
なかったとわかったので安心できました。


> >>863で書かれているように、SysUtilsの文字列関数は
> 内部でWindowsAPI(C文字列を扱う)を使ってますので#0で誤動作します。
> (しかしCompareStringみたいに明示的に長さを渡せるものはOK)
> Systemの文字列関数(Pos, Delete, Insertなど)は
> 純正Pascal関数なので#0を含んでいても正常動作します。

なるほど、そうですか。
参考になりました。
どうもありがとうございます。

0887851NGNG
>886
訂正するまでもないかもですが

> >883 の通り解決済み
は
> >885 ですね
0888デフォルトの名無しさんNGNG
ひつこい ではなくて しつこい ですよ。正しくは。
0889865NGNG
>>885
>昔は文字列が動的配列の代わりだったんですか?
そういう風に使ってる人がいたということで。
俺はC見たいにメモリ確保、解放してやってたけど。

今なら、array of byteのstring文字列実装とほぼ同じの動的配列があるんで・・・。
0890デフォルトの名無しさんNGNG
>>888
ここは、「なんだ、しつこいかよ!」と書くべきだろ。
しかも、888かよ!
0891デフォルトの名無しさんNGNG
Try ... except を使用して例外を取得しているのですが、
ApplyUpdatesで例外エラーが発生した場合、
exceptの処理が実行されずに、システムのエラーメッセージが表示されます。

以下、ソース抜粋
dbs.StartTransaction;
try
tbl.ApplyUpdates;
dbs.Commit;
except
dbs.Rollback;
end;

tbl.CommitUpdates;

どうすれば、システムのエラーメッセージを表示させずに、
例外を処理することができるのでしょうか?
0892名無しヘタぐらま ◆B18Bks.Y NGNG
>>885
すでに解決済みのようですが,

Move(Source[0], AString[1], Length(AString));

という手もありますです.
Moveは標準手続きです.

#私がかつて作った汎用リストクラスは1個の文字列をバッファにしていました(笑).

>>888
お江戸の方なのでしょう.
0893デフォルトの名無しさんNGNG
>>867
>>そもそも、バイナリをどうして文字列に入れる必要が?
>TIdCoderが引数としてStringを要求するから
>TIdHTTPがHTTP BodyをStringで返すから。

TIdCoder はよく知らんけど、TIdHTTP の場合は Stream で Body を返す
Method もきちんと用意されてるよん。String で返すシリーズは返ってくるのが
String で処理できるデータだとわかってる場合に使おうね。
0894783NGNG
すみませんが、>>783のコード「だけ」で、
正常にごみ箱の「中身」のプロパティが出せる環境の人いらっしゃいますか?
(VCLも使わない)

当方Windows2000SP2, IE5.5なのですが、結構怪しい環境なので、
この動作が、一般的に起こり得るのか、うちの環境が変なのか知りたいのです。

あれから試したかぎり、
・コントロールパネルのフォントのFORPARSINGで得られるディレクトリ
・コントロールパネルの管理ツールのFORPARSINGで得られるディレクトリ
・コントロールパネルのネットワークの中身
・ごみ箱の中身のプロパティ
が、事前に、コントロールパネルの中のタスクを調べておかないと変になります。
さらにタスクを調べるのはスレッド毎に必要なようです。
0895851NGNG
>892
> Move(Source[0], AString[1], Length(AString));
>
> という手もありますです.
> Moveは標準手続きです.

……こ、これはまた、ずいぶんとストレートなお名前ですな。
ということは、Copy やら Fill なんてのも…あった。

いや、お恥ずかしい、探し方が全く足りなかったようで、海よりも深く反省。
あまりに安直なので逆に考えもしなかったというか、StrCopyにつられて
MemXXだとかMemoryXXXなんてのばかり探してました。
やっぱりこの手の処理が標準で用意されていないわけなかったですね。


>889
メモリ転送の方法がわかった以上、最早配列の仕様に何の文句もありません。
が、Stringを動的配列の代わりにするべきではないというのはやっぱりわからないです。
遅延評価が必要かどうかで使い分ければいいのでは?
配列として扱う分にはどちらも同じように扱えるようだし。


>893
> TIdCoder はよく知らんけど、TIdHTTP の場合は Stream で Body を返す
> Method もきちんと用意されてるよん。String で返すシリーズは返ってくるのが
> String で処理できるデータだとわかってる場合に使おうね。

そうはいっても、ダウンロードしてみるまで中身がTextかどうかわからないですよ。
Content Typeをみて判断しろってことですかね。
というか、TIdCoderに至っては、Hash値がStringで返されるんですが。
これはTIdCoderの仕様が悪い?
0896デフォルトの名無しさんNGNG
>>895
>そうはいっても、ダウンロードしてみるまで中身がTextかどうかわからないですよ。
>Content Typeをみて判断しろってことですかね。

いや、だから >>893にも書いたように、中身が Textかどうかわからない場合は Stream
で Body を返す Method を使えばいいんじゃないかな?

戻り値の型が String なんだから NULL混じりのバイナリを扱えないというのは
当たり前の話だよね。
0897三村NGNG
当たり前かよ!
0898デフォルトの名無しさんNGNG
Tedit(FindComponent('EditA')).Text:='あいう';
みたいな感じをしたいのですが、この時に文字列として存在して
いるフォーム名も指定できる方法ありますか?
StringListにフォームの名称を入れておいて、その中に該当する
EditがあればStringListをグリグリして値をぶち込みたいです。

0899デフォルトの名無しさんNGNG
TStringListの中身のテキストデータサイズ、
Length(StringList.Text)
よりコストパフォーマンスの良い取得方法ないですかねぇ…
それっぽいメソッドもないし、ググルで検索しても無駄な物ばかり引っかかる…

検索とコーディングに疲れたので質問して寝ますスマソ


>>898
いまいちやりたいことが飲み込めん…
Screen.Formsは使えないかな?
0900Delフサギコ ◆zE1iiRdQ NGNG
TComponent.FindComponent

    ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚彡 <  TCompoのメソドだから…
   ミ つ日   \ 各FormのFindCompoを
 〜ミ,,,,,, ,,ミ       呼ぶのヨロシ。

Length(StringList.Text)
素直がよろしいのでパフォはあきらめたら?
っていうか、遅いのか?その程度の処理が?

>それっぽいメソッドもないし、
どうせそれっぽいメソドあっても
「よりコストパフォのよい取得方法は?」
っつう、質問が出てくるだけじゃないかしら?
0901デフォルトの名無しさんNGNG
>>900
900ゲットオメコォ!
0902Delフサギコ ◆zE1iiRdQ NGNG
         ∧,,∧ ・・ゲトォーメコ サレタ・・
      Σミ゚Д゚,,彡
        ⊂ ⊂ミ  
       ⊂゙゙ 〃  
       /(/″
0903デフォルトの名無しさんNGNG
>>882 >>883
丁寧なレスどうもありがとう!!
できるかできないかだけ教えてもらえさえすれば、
あとは自分で調べようと思ってたのだけど。
感動した!あんたいい人だ。
0904デフォルトの名無しさんNGNG
予想外に名スレになったもんだ、次でVer3か、
D相談を追い抜く勢いだな、そのうち、こっちがメインになるのか?(w;

0905デフォルトの名無しさんNGNG
少し前にFrameのネタが出ていたが、俺も今まで使った事がな
かった少し試してみたが、知ってる人がいるか知らんが、
MS-Accessのサブフォームと似た物なのかなと感じたのだが、
Frameを使ってる人は何に使っているのだ?
当然だが、FrameにはOnCreateイベントなんかもないし、
結構使い方が限定されそうだが、やはり、コンポーネント風に
使えるPanelって感じの使い方なのだろうか。
0906デフォルトの名無しさんNGNG
>905
たとえばページコントロール使ってプロパティシートみたいなのを作る時、
Frameを使うとそれぞれのページの中身を独立したモジュールとして
作れるので気持ちイイ、とか。
0907デフォルトの名無しさんNGNG
>>905
メインフォームにコードが集中しないように、適当な単位で Frame に分割
してる。例えば 3-Pane型のアプリなんかはそれぞれの Pane を個別の
Frame で実装して、メインフォームに乗っけてる形。

コードの見通しがよくなるんで、俺的には手放せない機能だな。

>当然だが、FrameにはOnCreateイベントなんかもないし、
コンストラクタで代用してる。(それはそれでいろいろ注意が必要だったり
するわけなんだけど)
0908ねこまNGNG
>>899
これでいかがか?

n := 0;
for i:=0 to strlist.Count-1 do
begin
 Inc(n, Length(strlist[i]));
end;
0909デフォルトの名無しさんNGNG
>908
結果は Length(StringList.Text) と同じですか?
0910デフォルトの名無しさんNGNG
>>905-907
複雑な画面になればなるほど、Frameで別のフォームに
してしまうと確かに、見通しはよくなるな
あと、繰り返しとか必要な処理を >>834 のように書けば、
昔よく言われてた、Delphiに配列が無いから云々も
かなり楽に扱えるようになるな、Frameの中のオブジェクト
名は同じnameが使えるわけだし
しかし、うちの会社では、俺以外は誰もFrame使ってない、
D4->D6にアップグレードしたから、誰も存在自体を知ら
ないのだろうか・・・・
0911デフォルトの名無しさんNGNG
改行分が…
0912ねこまNGNG
そういえば,CRLF が入らないからちょっと違うかも.
0913デフォルトの名無しさんNGNG
TMemoStringsとかじゃないだろな。
0914デフォルトの名無しさんNGNG
StringList.Count分をnに加算すればいいかな。
でも、カラの行ってCountに含まれたっけ?
0915 ◆10000jp. NGNG
>>891
(´∀`)<ApplyUpdatesの返値をチェックしたらどうだろ?
      んで、raise EDatabaseError.Create('もうだめぽ')
0916lilyNGNG

Deilphi で 旧文化オリエントの作った DenpyoMan に負けないコントロールを作りたいと思いますが
どのように始めればいいか分かりません。Grid から始めればいいんでしょうか?
APIはどのあたりを勉強すると良いですか?

質問ばっかりでスミマセンがお願いします。
0917783NGNG
誰もシェルネームスペースなんて興味ないのかな…
0918デフォルトの名無しさんNGNG
Personal版使ってるけど、
MSecsToTimeStampとか使えない・・・?
Pro版買うしかないのか・・・
0919891NGNG
>>915さん レスありがとうございます
返り値を判断してやってみます
0920デフォルトの名無しさんNGNG
>>916
コンポーネントを作った事がなければ、最初はラベルを継承して影
をつけたり、TEditを継承して数値入力コンポを作ったりして組み方を
学んでからの方が良いのでは?

実際には、StringGridを継承して作れば良いのだろうがコンポ以前に、
StringGridにコンボボックスを描くやり方とかを先に勉強した方が良い
と思われる。それに特殊なAPIなんかは使わなくても出来ると思うが。
0921デフォルトの名無しさんNGNG
キャッシュアップデートを使い
ApplyUpdatesでキャッシュをDBに反映させる際、
レコードのキーが重複している場合に、システムが応答不能になります。

tryで例外をキャッチできていないようなのですが、
ApplyUpdatesでキー重複が発生した場合は、
どのようにエラーを取得すればよいのでしょうか?
0922 ◆10000jp. NGNG
>>921
(´∀`)<>>915と被るかな? ApplyUpdatesの返値を調べて
      raise EDatabaseError.Create('うわ〜ん')でexcept部へ跳ぶ。
      詳しいエラーの内容が必要ならOnReconcileError イベントハンドラ
      (TCustomClientDataSet)でエラーの調査&処理するのはどうかな?
0923921NGNG
>>922
すいません、ApplyUpdatesの返り値は
どうやって調べたらよいのでしょうか?

0924 ◆10000jp. NGNG
(´∀`)<ApplyUpdatesは確かエラーの数を返すので、
      rslt := cds.ApplyUpdates(-1)等でrsltをチェック
      するのは駄目かなぁ?
      
0925923NGNG
>>924
ApplyUpdatesに引数設定や、戻り値の取得を行おうとすると
コンパイルエラーが出ました。

私はTQueryのApplyUpdatesを実行してますけど
これがいけないのでしょうか・・・
0926lilyNGNG
>920

あーなるほど。数値入力Editを作っておいて
StringGridの中に書いてみるってことですか。
やってみよ。
0927ああNGNG
Delphiで複数のフォームでテーブル、クエリ、データソース、
データベースグリッド使用しているのですが、
その際、すべてのプロパティをセットして実行しようとしたら
「データソース1、データ間の循環参照は許されません」
が出てしまいます。どうぞ教えてください
0928デフォルトの名無しさんNGNG
データソース1、データ間の循環参照は許されないんです。

0929ああNGNG
>>928
「データソース1、データ間の循環参照」の意味が
いまいちわかりづらいのですが
0930 ◆10000jp. NGNG
>>925
(´∀`)<TClientDataSetかと思ったらTQueryでしたか、、、ごめんなさい。
      僕のところのTQuery.ApplyUpdatesはキー違反で例外出します。
      Delphiのバージョンは6です。 構成はTQuery+TUpdateSQLですか?

>>927
(´∀`)<もう少し情報が必要かも。TTable/TQueryのDataSourceはmaster-detailで
使わないのであれば指定しなくて良いらしいですよ?
0931925NGNG
>>930
>TClientDataSetかと思ったらTQueryでしたか、、、ごめんなさい。
私のミスですので、こっちの方が、ごめんなさいです。

念のため、
TBDEClientDataSetで試しましたけど、ApplyUpdatesで
応答不能になりました。

TBDEClientDataSetは、
◆10000jpさんが使われているTClientDataSetとは別物ですよね
Delphi6 Pro版でも使えますか?
0932925NGNG
>>930
>Delphiのバージョンは6です。 構成はTQuery+TUpdateSQLですか?

はい、Delphi6 Proで、TQuery+TUpdateSQLを使ってます。
ApplyUpdatesでキー重複の場合はシステムの応答がなくなりました。

とりあえず、教えていただいた
TClientDataSetを使おうと思うのですが、
TBDEClientDataSetで大丈夫ですか?
0933デフォルトの名無しさんNGNG
たとえば、実行時に

Table1.MasterSource := DataSource1;
DataSource1.DataSet :=Table1;

ってやると、Table1 のマスターテーブルが自分自身になるので実行時エラーとなる。
オブジェクトインスペクターから設定する場合には、選択肢に出てこないからもともと
設定できないんだが。

これでわかるかな?
0934 ◆10000jp. NGNG
>>932
(´∀`)<TBDEClientDataSetはコード見れば解るけど危険な爆薬の香りです。
      僕は、ClientDataSet+Providerの方が安心かなぁ。偉そうですみません>ボーランド様
      でもTQuery+TUpdateSQL でもちゃんと動きましたよ。ApplyUpdate周辺の
      コード晒しできます?
0935ああNGNG
>>930
やはりDataSourceをはずしたらエラーはなくなりました
ありがとうございました
0936デフォルトの名無しさんNGNG
有名アクセスランキング系のサイト全容ってどこも大体似てるんだが、どこの「アクセスランキング」CGIスクリプト使っているか知ってる?
0937デフォルトの名無しさんNGNG
>>936
どうして個々で聞くの?
0938デフォルトの名無しさんNGNG
>>936
誤爆?
0939 ◆10000jp. NGNG
>>932
(´∀`)<あ、もしかして、、、重複キーのエラーダイアログがフォーム
      の後ろに出ているという事は無いですよね? IDEでのデバッグ中
      にはフォーカスが狂うこともしばしばあります。僕だけかもしれませんが、、、
      一度IDEデバッガを切って実行してみては?
0940932NGNG
>>934 親切に答えていただいて、ありがとうございます。

>でもTQuery+TUpdateSQL でもちゃんと動きましたよ。

ということは、私のコーディングか、プロパティ設定が
悪いのでしょうね・・・

>ApplyUpdate周辺のコード晒しできます?

はい、大丈夫です。(以下、コマンドボタンのクリック時イベント)

procedure TfrmInput.btnUpdateClick(Sender: TObject);
var
intAppliUpdates : integer;
begin
dmdDb.dbsOffice.StartTransaction;
try
intAppliUpdates := dmdDb.qryTokuisaki.ApplyUpdates(-1);
if intAppliUpdates <> 0 then
raise EDatabaseError.Create('うわ〜ん');
dmdDb.dbsOffice.Commit;
except
dmdDb.dbsOffice.Rollback;
ShowMessage('err');
end;
end;

dmdDb = データモジュール
dbsOffice = TDataBase
qryTokuisaki = TQuery(TUpdateSQL設定済み)

データベースは、Access97のMDBを使用しています。

>>939
>一度IDEデバッガを切って実行してみては?

素人質問ですいません
[ツール]-[デバッガオプション]-[言語固有の例外]
Delphi以外の例外で停止のチェックをOffにすればいいですか?

0941 ◆10000jp. NGNG
(´∀`)<[ツール]-[デバッガオプション]-[総合開発環境を使う]をOFFです
0942 ◆10000jp. NGNG
>>940
(´∀`)< exceptでは on e: EDatabaseError でキャッチしてあげて
ShowMessage(e.Message);しRollbackした後、変更分を
      キャンセルして、データベースと再同期をとった方が良いですよ。
0943940NGNG
>>942
了解です。

それと、
IDEデバッガを切って実行してみましたけど、
システムは応答なしのままでした。
TQuery + TUpdateSQL の組み合わせでApplyUpdates(引数指定できない)
で試してみました。

キーはフォームに張ったDBEditコントロールに手入力しているのですが、
重複しない値であれば、正常に動作しています。


0944親切な人NGNG

ヤフーオークションで、幻の人気商品、発見!!!

今は無き「コピーガードキャンセラー」↓
http://page.auctions.yahoo.co.jp/jp/auction/42757955

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0945 ◆10000jp. NGNG
>>943
(´∀`)<自分のTQuery+TUpdateQueryだとこんな感じでやってます。
      IDEでもデバッガ外してもちゃんとrollbackします。
      Access固有のバグなのかなぁ? ODBCじゃないよね?
      それでは、皆さんおやすみなさい。

procedure TForm1.Button1Click(Sender: TObject);
begin
 Database1.StartTransaction;
 try
  Query1.ApplyUpdates;
  Database1.Commit;
 except
  Database1.Rollback;
 end;
 Query1.CancelUpdates;
end;
0946デフォルトの名無しさんNGNG
整数型とTpointでは型が違うと怒られてしまいます。これって
Tpointを整数型に変換できますか?
0947デフォルトの名無しさんNGNG
TPointって整数を二つ含んでるけどどう変換したい?
0948946NGNG
>>947
えっと、実はテキストエディタの検索を作っているのですが、Posで
見つけた位置をLongint型に代入したいのです。
0949デフォルトの名無しさんNGNG
Posの戻り値はIntegerでLongIntに普通に代入できるよ。
TPointは無関係。ヘルプとサンプル見てみなよ。
0950デフォルトの名無しさんNGNG
Pos関数とTPointってどういう関係があるんだろう…
0951946NGNG
>>949
そうですか、もう少しヘルプを見てみます。

>>950
なんかそう言われると、やり方自体間違ってるかもと思うように
なってきた。

VBから移行してきたばかりでまだ良くわかってないのです。
とりあえずVB6で使ってたInstr関数の変わりでPosを使って
みたのですが…。Delで文字列検索の定番みたいなのが
あればヒントだけでも教えてもらえると助かります。
0952デフォルトの名無しさんNGNG
var
 I : Integer;
 S : string;
begin
 S := 'あいうえおABC1234.';
 I := Pos( 'ABC', S );
 ShowMessage( 'ABC は'+ IntToStr(I)+'文字目にあります');
end;

とか。
0953デフォルトの名無しさんNGNG
Posは漢字の検索で誤動作することがあるからAnsiPosだな。
0954デフォルトの名無しさんNGNG
>レス数が950を超えています。1000を超えると表示できなくなるよ。

そろそろ次スレを
0955デフォルトの名無しさんNGNG
大小文字を区別するのかがわかりにくいから、

TextPos と StrPos みたいに分けてほしいなァ
AnsiCompareText と AnsiCompareStr,
AnsiSameText と AnsiSameText みたいに。
ついでに
AnsiReplaceText と AnsiReplaceStr も。
0956デフォルトの名無しさんNGNG
>>954
じゃ、君が立てておくれ。
0957943NGNG
>>945
ODBC接続してました・・・ すいません
BDEだと教えていただいた通りの動作ができました。

ODBCだと、こういう動作があるのですね。
動作的な違いは無いのかと思ってました。

>それでは、皆さんおやすみなさい。

親切に答えて頂いてありがとうございました。
m(__)m ぺこり おやすみなさい
0958946NGNG
>>952 >>953 >>955
どうもです。見たことの無い関数ばかりなのでもう少し調べて
試行錯誤してみたいと思います。
0959デフォルトの名無しさんNGNG
モナーの *やさしい* Delphi質問スレ Ver3
http://pc.2ch.net/test/read.cgi/tech/1014474727/
0960デフォルトの名無しさんNGNG
モナーの *やさしい* Delphi質問スレ Ver3
http://pc.2ch.net/test/read.cgi/tech/1014474727/ 
0961ヲッチャーNGNG
誰だよ。Hotkeyちゃんの掲示板に辛辣なこと書いたの。
ちょっとヒドイぞ。どうせ2ちゃんねらーだろ?
0962デフォルトの名無しさんNGNG
>961
わけのわからない書き込みで新スレを汚さないでください。
0963ヲッチャーNGNG
>>962
はい。分かりました。
0964 ◆10000jp. NGNG
>>957
(´∀`)<ODBCドライバのバグですかね〜
      ともあれ動くようになって良かったですね〜
0965957NGNG
>>964
ありがとうございます お陰で動くようになりました。
m(__)m ぺこり これからはBDEを使うことにします。
0966デフォルトの名無しさんNGNG
 あうー、おかしいです。spineditに何も入力されてない状態でボタンを押すと
止まっちゃいます。
「プロジェクト aaa.exeがEconvertErrorクラスの例外を生成しました。
""は整数ではありません'」
て出ます。
ウインドーの右上の×は押しても平気ですが、それ以外は全部ダメみたいです。
何の処理も記述してないボタンでも、押すと固まります。
他のspineditをいじっても固まります。
何故か実行ファイルそのもの(aaa.exe)を実行すると固まらないんですが・・。

 "spineditに整数が入力されてないときに他のボタンを押すと、
変数の値(整数)をspineditに代入する" って形にしたいんですが・・・。
その処理をボタンに記述しても、押すと処理を開始する前に固まります。
 一応2ちゃんねる検索とBorland Maniacs とDelphi Maling list でも検索しましたが全然ダメでした・・。
 回避方法分かる方、どうかお願いします。

 使ってる言語はDelphi6のpersonalです。
0967デフォルトの名無しさんNGNG
>966
気にせずそのままF9で続行するか、前もって
[ツール]-[デバッガオプション]-[言語固有の例外]-[Delphi言語の例外で停止]
のチェックを外しておく。
例外をキャッチするようにしていても、上のチェックが付いていると
デバッガで停止させられるのはDelphiの仕様。
漏れはウザいから、Valueプロパティを自前のやつに置き換えた
コンポーネントを作ったけどな。
0968966NGNG
>967
ありがとうございました!!解決できました。
0969DELモナーNGNG

  ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< まだ書き込めるみたいだから
 (    )  | 書いておくよ。
 | | |   \_____________
 (__)_) 

次の次のスレが立っています。こちらへどうぞ。

モナーの *やさしい* Delphi質問スレ Ver4
http://pc.2ch.net/test/read.cgi/tech/1016467137/
0970デフォルトの名無しさんNGNG
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< Delモナーは
  (    ) | 普通のモナーとは
  | | |  | 微妙に違うモナ
  (__)_) \_____
0971デフォルトの名無しさんNGNG
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´♥`) 
  (    ) |  
  | | |  |  
  (__)_) \_____
0972デフォルトの名無しさんNGNG
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´♣`) 
  (    ) |  
  | | |  |  
  (__)_) \_____
0973春だから…NGNG

   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ♥♥♥)<無意味age♥ 
  (    ) |  
  | | |  |  
  (__)_) \_____
0974デフォルトの名無しさんNGNG
どうやら埋めたほうがいいらしいな
0975Delモナー ◆fPymXWHY NGNG
古いスレなので埋めておきます。

新スレ
モナーの *やさしい* Delphi質問スレ Ver.5
http://pc.2ch.net/test/read.cgi/tech/1017803412/
0976Delモナー ◆fPymXWHY NGNG
976
0977Delモナー ◆fPymXWHY NGNG
977
新スレへどうぞ。
0978Delモナー ◆fPymXWHY NGNG
モナーの *やさしい* Delphi質問スレ Ver4(HTML化待ち)
http://pc.2ch.net/test/read.cgi/tech/1016467137/
0979デフォルトの名無しさんNGNG
Indy WinInet について書いてある

ttp://members.jcom.home.ne.jp/monazilla/document/index.html
0980デフォルトの名無しさんNGNG
間違えた。こっちじゃなかった>>979
0981誤爆NGNG
なんで虎ノ門、1時間にするんだよッ!!
バカテレ朝!!
無能テレ朝!!
0982Delモナー ◆fPymXWHY NGNG
モナーの *やさしい* Delphi質問スレ Ver3(HTML化待ち)
http://pc.2ch.net/test/read.cgi/tech/1014474727/
0983Delモナー ◆fPymXWHY NGNG
モナーの *やさしい* Delphi質問スレ(HTML化済)
http://pc.2ch.net/tech/kako/1003/10031/1003113413.html

ageないよう注意。
0984Delモナー ◆fPymXWHY NGNG
■関連スレ
一番上が新しいスレです。書き込みは新しいスレに。

○ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室
Delphi や Borland に関する話題、雑談や質問をしながらマターリくつろごうや
�A http://pc.2ch.net/test/read.cgi/tech/1013298748/
�@ http://pc.2ch.net/test/read.cgi/tech/1003664165/
( ゚Д゚)ノ Delギコ猫のプログラミング相談室
DelphiやBorlandに関する雑談や質問しながらみなーで、くつろごうや
part4 http://pc.2ch.net/tech/kako/1002/10024/1002469894.html
part3 http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
part2 http://pc.2ch.net/tech/kako/999/999482946.html
part1 http://piza2.2ch.net/tech/kako/997/997348797.html
0985Delモナー ◆fPymXWHY NGNG
○Delphi相談室 現在その3
Delphi関連のTips Q&A はこちらです。
その3 http://pc.2ch.net/test/read.cgi/tech/1010153466/
その2 http://pc.2ch.net/tech/kako/995/995950803.html
その1 (逝ってしまったようです)
0986Delモナー ◆fPymXWHY NGNG
○***すれ立てるまでもない質問はここで***
どのスレッドに質問したらいいか、わからないときはここで質問してみよう。(略)
第12刷 http://pc.2ch.net/test/read.cgi/tech/1016631412/
第11刷 http://pc.2ch.net/test/read.cgi/tech/1014478527/ (HTML化待ち)
第A刷 http://pc.2ch.net/test/read.cgi/tech/1012536901/ (HTML化待ち)
第9刷 http://pc.2ch.net/test/read.cgi/tech/1010673275/
第8刷 http://pc.2ch.net/test/read.cgi/tech/1008908052/ (HTML化待ち)
第6刷 http://pc.2ch.net/tech/kako/1004/10041/1004183881.html
第5刷 http://pc.2ch.net/tech/kako/1001/10019/1001998049.html
第4刷 http://pc.2ch.net/tech/kako/998/998403891.html
第3刷 http://piza2.2ch.net/tech/kako/993/993933402.html
第2刷 http://piza.2ch.net/tech/kako/990/990082077.html
第1刷 http://piza.2ch.net/tech/kako/975/975576060.html
0987Delモナー ◆fPymXWHY NGNG
○Pascal の初心者用の質問・相談所
コンソールのみ。GUI は扱いません。
http://pc.2ch.net/test/read.cgi/tech/1009903617/
0988Delモナー ◆fPymXWHY NGNG
○kylix相談室(閑散)
2 http://pc.2ch.net/test/read.cgi/tech/988815580/
1 (行方不明)
0989Delモナー ◆fPymXWHY NGNG
○Delphiで小さな実行ファイルを作ろう
http://pc.2ch.net/test/read.cgi/tech/1009080085/
0990Delモナー ◆fPymXWHY NGNG
○delphiで作られた有名ソフトって何がある?
delphi自身もdelphi?てか、今delphiやってる人へ希望を与えてやって下さい。
http://pc.2ch.net/test/read.cgi/tech/990056026/
0991Delモナー ◆fPymXWHY NGNG
■Delphi製品情報

○公式サイト
http://www.borland.co.jp/delphi/
0992Delモナー ◆fPymXWHY NGNG
○Delphi 6 Personal
無料でダウンロードできる。持っていない人はこれを機にやってみよう。
ダウンロードするファイルはは59MBあり、またサーバーが重いので注意。
使用者登録が必要。
http://www.borland.co.jp/delphi/personal/
0993Delモナー ◆fPymXWHY NGNG
○Delphi 6 アップデート・ダウンロードサービス
最新のアップデートは次の通り。
Personal: Update Pack 2 (2002/3/19)
Professional, Enterprise: Update Pack 2 + 追加アップデート (2002/3/29)
http://www.borland.co.jp/delphi/del6up.html
0994Delモナー ◆fPymXWHY NGNG
■関連リンク

ここに貼っておきました。
どんどん追加して構いません。

こちらへ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
0995Delモナー ◆fPymXWHY NGNG
■質問者へ

○ここはDelphiのプログラミングに関する質問スレです。
スレ違いの質問は罵倒されるので、ほかのスレを探してください。

○厨房並みの初心者の質問はOKですが、厨房は質問するな。

○まずは自分で調べてみよう。回答にGoogleの検索結果を貼られないように。
Google http://www.google.com/intl/ja/
2ちゃんねる検索 http://2ken.net/
Delphi-ML検索 http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
0996Delモナー ◆fPymXWHY NGNG
■ソース置き場

このスレのソース置き場を作ってみました。
このスレに載せきれないソースはここへどうぞ。
○3000行までOKです。
○ソース書き込み時は等幅に設定してください。インデントが使えます。
○激しく長いソースは、同時にソースファイルを添付しておくと(゚Д゚)ウマーです。
○置くのはソースでなくても構いません。
ファイルのアップローダーとしてもどうぞ。

こちらへ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1017673221
0997Delモナー ◆fPymXWHY NGNG
「連続投稿ですか?」に阻まれる。
0998Delモナー ◆fPymXWHY NGNG
「2重カキコですか?」違うって・・・。
0999Delモナー ◆fPymXWHY NGNG
999です。
1000デフォルトの名無しさんNGNG
1000!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。