くだすれDelphi(超初心者用)その51 at TECH
[2ch|▼Menu]
[1からを表示]
50:デフォルトの名無しさん
09/12/27 16:47:26
>>49
ありがとうございます。ポインタ渡しでいこうと思います

51:デフォルトの名無しさん
10/01/03 02:32:26
すみません教えてください
日経ソフトウエアのTurboDelphiで始めるWindowsプログラムの本で
ジャンケンプログラムでラジオグループのイベントハンドラを作ろうとすると
エラーが出て作れません。
対策はあるでしょうか?
よろしくお願いいたします。

52:デフォルトの名無しさん
10/01/03 02:34:41
エスパーさんは今休みじゃないかな?

53:51
10/01/03 03:41:33
使ってるバージョンはDelphi2010です。
よろしくお願いいたします。

54:デフォルトの名無しさん
10/01/03 04:12:48
ソースぐらいうpしろksg

55:デフォルトの名無しさん
10/01/03 04:42:53
宣言部分無しで実装部分だけ書いちゃったんじゃないかとエスパーしてみる
とりあえずエラー出たならエラー内容も書こうよksg

56:51
10/01/03 08:49:41
すみませんでした。

ジャンケンプログラムを入力してコンパイルすると、
本には書いてませんが、セミコロンが必要と表示されて
コンパイルすることができません。

57:デフォルトの名無しさん
10/01/03 09:28:51
(´ρ`)そうなのかー

58:デフォルトの名無しさん
10/01/03 09:30:12
( ゚д゚ )そうなんすか!

59:51
10/01/03 09:37:57
すいません自己解決しました。
お騒がせいたしました。

60:デフォルトの名無しさん
10/01/04 00:08:23
メモ帳を編集中にF2キーを押したら自前アプリで音を鳴らす という動作をするアプリを自作したいんですが
ぐぐってもくそ難しいページしか出てきません。

他アプリにフォーカスがある状態でキーイベントが発生したらそれを取得するサンプルコード下さい。
明日の朝までに欲しいので早くしてくれ。

間に合わなくなっても知らんぞ?

61:デフォルトの名無しさん
10/01/04 00:14:09
ああ、ガムやるよ

62:60
10/01/04 02:21:17
というかソース貼られてもわかんねぇからもういいや。ソース貼りたい奴はここ見ろ。
URLリンク(www2.biglobe.ne.jp)

>>61
くっちゃくっちゃくっちゃ・・・・ぺっ

63:デフォルトの名無しさん
10/01/04 04:32:43
結局何が言いたいんだ?

64:60
10/01/04 04:44:15
>>63
質問取り消しな。俺には無理だ。

65:60
10/01/04 05:31:20
もう見に来ないから売買

66:デフォルトの名無しさん
10/01/04 17:04:55
delphi2010で、コード整形について質問です。

if then begin
1
end else begin
2
end;

のように、endとelseのあいだに改行の入らないようにしたいのです。

67:デフォルトの名無しさん
10/01/04 17:13:25
>>66
URLリンク(edn.embarcadero.com)

うそん。(><)

// INCORRECT
end else begin
// CORRECT
end
else
begin

おじさん泣いちゃうぞ。

68:デフォルトの名無しさん
10/01/04 20:01:25
>>66
delphi2010でそれできなくなったの?

69:66
10/01/04 20:35:09
>>68
いままでのdel5しか使ったこと無かったので、ソースの整形は初めてですわ。
end else
begin
みたく、elseとbeginのあいだの改行がどう設定しても取れなくて。
前からそうだったのかな?

70:デフォルトの名無しさん
10/01/04 21:08:42
>>69
俺の使ったことある物の記憶ではdelphi6,7,2007,2009はそんなことなかったと思う
俺も同じ書き方だからそれは不便だなー

71:デフォルトの名無しさん
10/01/04 22:28:09
Delphi2010のエディタで、コメント等日本語を入力していると
時々バグって(文字化けみたくなる)落ちるのは、うちだけでしょうか?

72:デフォルトの名無しさん
10/01/04 23:32:11
落ちるのは無いけど、コメント削除中とかにカーソルが変なとこ飛んで文字化けになるのはたまに起きる


73:デフォルトの名無しさん
10/01/05 23:07:53
>>72
おおよそ、同じような現象だと思います。
コメントの途中で挿入したり消したりしてると、
変なところで改行されたり文字化けしたり。
最新アップデートでも直ってなかったので
諦めるしかないかな…

74:デフォルトの名無しさん
10/01/06 07:21:02
あきらめられても。ねぇ。

再現できるデータとか何か無いかな。> エディタ周りバグ


75:デフォルトの名無しさん
10/01/06 07:21:51
化けた直後の画面とかだけでも有れば助けになるかとおもう。

76:デフォルトの名無しさん
10/01/06 17:56:21
つ キーロガー

でも、うちはIDEfix入れてるからかわからんけど
そいうことないなぁ。

77:デフォルトの名無しさん
10/01/07 17:37:32
用語の使い方が良く分からないので難解なところはエスパーしてください。

Application.CreateForm(TForm2, Form2);
これを、ですね。

procedure TEST00(h:TComponentClass; f:TForm)
begin
Application.CreateForm(h, f);
end;

な感じにフォームを引数にした関数にして

TEST00(TForm2, Form2);

みたいな呼び出し方をすることはできませんか。
ちなみに上のやり方はペケです。
コンパイルはとおりますけど、実行すると激しく長いエラー文で怒られます。







78:デフォルトの名無しさん
10/01/07 17:52:53
動作確認済み。

procedure test(InstanceClass: TComponentClass; var Reference);
begin
 Application.CreateForm(InstanceClass, Reference);
end;

第二引数に Var がついていないので
 TEST00(TForm2, Form2);
の呼び出しで Form2 の内容が更新されないことが、実行時エラーの直接の原因です

79:デフォルトの名無しさん
10/01/07 18:12:49
動きます、たしかに。
これで朝から夕方まで悩んでました。
ありがとうございました。

80:デフォルトの名無しさん
10/01/07 20:35:58
それをやる意味にすごく興味があるんだけど、
なぜそんなことをしようと思ったの?

81:71
10/01/07 22:28:18
来週開発環境がXP→7になるのでそれで直るかもしれないし
まあいいやと思いつつ、参考までにエディタが文字化けした
ときの画像を貼っておきます(モザイクの箇所はすべて正常です)。
ブレークポイントが張られていますが、これも私が張ったのではなく、
エラー発生時に勝手にこうなります。
URLリンク(convini.ddo.jp)

日本語部分の途中で挿入や削除をしようとすると
発生する気はします。IME(MS-IME2003)との
相性とかでしょうか…。
URLリンク(andy.jgknet.de)
に置いてあったIDE Fixも当ててみましたが、変わらずでした。

82:デフォルトの名無しさん
10/01/08 04:41:55
文字列入力中に文字化けが起きて
勝手にブレークポイントのマークが付く。と。
メモリ上のエディタバッファが壊れているように見えますね。

ここまでひどいとバグレポートが他にも有っても良いような.....


83:デフォルトの名無しさん
10/01/08 09:59:10
あの超つかいにくいエディタを使っている人っているんだね。
基本的に日本語処理部分は十分なテストは行われていないから
避けられるものなら、避けた方が無難。
使い慣れた外部エディタ使えば問題は一気に解決。
Indyの日本語処理もひどかったなぁ。


84:デフォルトの名無しさん
10/01/08 11:02:37
>Indyの日本語処理もひどかったなぁ。
Indy に関しては、あきらめずに、バグレポートを送り続けるしかないでしょう。

85:72
10/01/08 17:01:34
>>81
うちではATOK使ってそうなってるから、IMEとの相性はあまり関係ないかも
何となくだけど、2バイト文字の片方のバイトだけ削除したりして化けてる気がする
あとブレークポイントが勝手に張られたことはないなぁ

86:デフォルトの名無しさん
10/01/08 18:56:24
>>80
えと、ですね。
職場用のアプリを作っているんですが、いくつものアプリ(プロジェクト?)
に分けなきゃならないほど、いっぱいフォームがあって、ついでに似たような
処理のフォームがやけにいっぱいあるので、その処理をどこかにまとめて書いて
おけないかなと(「フォームを開く」ってのもその似たような処理のひとつ)

87:デフォルトの名無しさん
10/01/09 23:25:17
>>86
TFrameとか使うのかも知れない

88:デフォルトの名無しさん
10/01/10 05:48:30
>>86
それだとちょっとおかしくないかな?
あの処理はフォームを「開く」処理じゃなくてフォームを「作る」処理だよ
そもそもApplication.CreateFormは自分で呼ぶことはあまりない関数だし

89:デフォルトの名無しさん
10/01/10 08:48:58
何でそんなところに絡みたがるのかがよくわからん

90:デフォルトの名無しさん
10/01/10 11:33:17
無料のdelphiって無いですか?
昔personal6ってのがあったのですが・・・

91:デフォルトの名無しさん
10/01/10 11:40:02
Turbo Delphi Explorerってのがあったけどそれもなくなった。
今あるのは期間限定のトライアルのみ。
新会社の方針として完全にアマチュアそっちのけになったのだろう。
某が潰れる前にDel6Per認証解除パッチでも出してくれればよかったのに。

92:デフォルトの名無しさん
10/01/10 12:10:38
ボーランド終わったな

93:デフォルトの名無しさん
10/01/10 13:06:54
もうとっくにEmbarcaderoに身売り済みですが


94:デフォルトの名無しさん
10/01/10 15:10:16
del6personalって認証しないでも一応使えるぞ
いいのか悪いのか別としてw

95:デフォルトの名無しさん
10/01/10 15:25:13
そもそもダウンロード出来るところがなくなっちゃった

96:デフォルトの名無しさん
10/01/10 15:28:01
どっかの大学がサイトに置いて無かったっけ

97:デフォルトの名無しさん
10/01/10 15:30:39
もう無いよ

98:デフォルトの名無しさん
10/01/10 16:14:27
CodeGearからダウンロードしたのがあったなと思って、
ディスクのなかを探してみたら
Turbo Pascal 3.0
が出てきた。なつかしい・・・・


99:デフォルトの名無しさん
10/01/10 16:18:01
delphi6personalとturbodelphiどっちもあるけど再配布とかしたらウルサイこと言われんのかな?

100:デフォルトの名無しさん
10/01/10 16:45:21
俺は言わないよ

101:デフォルトの名無しさん
10/01/10 16:52:02
そういえば大学の図書館のdelphi6の本で付属CD-ROMに入ってたぞpersonal
大きい図書館で探せばあるかもね

102:デフォルトの名無しさん
10/01/10 18:42:38
>>88
おかしいと言われ、もしかしてと不安になって、ちょっとだけ実験。
ああやっぱりとショック受けてます。

フォームは全部visible、起動時クリエイトはform1だけにしてました
作業を始めたとき、かなりの数のフォームになりそうだってことで
起動時の一気生成は絶対無茶だって思ったんです。
でもけっきょく分割しなきゃならなくなり、一アプリあたりのフォーム数はせいぜい10.
10個の一気生成ってのもそれはそれは不安を誘いますけど
メインフォーム以外のクリエイト時プロシージャをコメントアウトしたうえ
実験してみたら、まったくどうってことありませんでした。
(起動時間もメモリ消費も違いがなさ過ぎて唖然)

書き直したほうがいいですか?

>>87
助言ありがとうございます
落ち着いたら調べてみます(いまかなりあせってる)

103:デフォルトの名無しさん
10/01/10 21:23:12
turboはあるから6が欲しいなぁ

104:デフォルトの名無しさん
10/01/10 23:05:37
>>102
10個程度は全然大した数じゃないよ
例え100個作ってもOnCreate内の処理(時間)が少しだけならほとんど変わらない
素直にIDEが自動生成したコードでフォーム作ればOKだと思う

105:デフォルトの名無しさん
10/01/11 00:44:12
基本となるフォームひとつだけ作って、条件ごとに変化するようにすればいい
似たようなフォームをたくさん作るなんてアホすぎる・・・

106:デフォルトの名無しさん
10/01/11 11:49:08
とりあえず10個のフォームにどんな違いがあるのかさらしたら?
些細なものならCreate時に対応
何せ基本はいるときに作って使ったらすぐに消すことだよ

107:デフォルトの名無しさん
10/01/11 18:30:14
>>条件ごとに変化するようにすればいい
ごめんなさい、そのやりかたは、何ていうかイヤなんです。
使っているうちに機能追加が出てくるのは分かりきっているので。
複雑になりすぎてわけわかんなくなります(前にMSAccsessで痛い目にあってる)

>>10個のフォームにどんな違いがあるのかさらしたら
10個ってのは似てる物の数じゃないです。アプリを分割して一アプリあたり
それぐらいにとどめようかなと。
最終的にいくになるかは分かりません。

ところで
>>基本はいるときに作って使ったらすぐに消すことだよ
これは、フォームの立ち上げ方のことですか。
Show,Hideじゃなく、Create,Releaseでもいいと?
だとすると助かるんですけど(書き直そうと思ってた、というかすでに一部
書き直しに入って早くも泥沼)

108:デフォルトの名無しさん
10/01/11 19:26:30
VBプログラマぽい考え方だねw AccessでVBAやってたんでしょ

109:デフォルトの名無しさん
10/01/11 19:36:28
はい
というかちょっと前まではそれしかいじったことがないです。
プログラマなんてものではないです。

110:デフォルトの名無しさん
10/01/11 20:30:05
>>>基本はいるときに作って使ったらすぐに消すことだよ?
>これは、フォームの立ち上げ方のことですか。
俺も基本は必要になったら、フォームをCreateしていらなくなったらRelease。

111:デフォルトの名無しさん
10/01/11 22:02:14
なんとなくだけど「はい・いいえ・キャンセル」程度のダイアログもフォームで自作してそうだなw

112:デフォルトの名無しさん
10/01/12 13:50:38
delphi 6 personal見つけてインスコしたけど
special launchのソース読み込むと
txpmanifestが見つかりません。とかエラーが出るおorz

113:デフォルトの名無しさん
10/01/12 13:52:15
personalにXPManifestはなかった筈

114:デフォルトの名無しさん
10/01/12 14:30:01
personalかどうかは関係ないだろ
そもそも6には存在しないんだから

115:デフォルトの名無しさん
10/01/12 14:32:29
そうだった勘違いしてた

116:デフォルトの名無しさん
10/01/12 14:38:12
えー
special launchって6じゃないのかorz

117:デフォルトの名無しさん
10/01/12 15:45:13
delphi 7ください!

118:デフォルトの名無しさん
10/01/12 15:53:41
>>111
版権物のソフトだと全部のダイアログにイラスト出せとか無理言われる

119:デフォルトの名無しさん
10/01/12 19:42:35
>>118
その程度ならいちいちフォームを設計しなくても、CreateMessageDialogで取得したTFormのインスタンスに
動的にTImage等を作成して乗っけてやればいい
むしろ全部に出さないといけないならコードでやった方が楽

120:デフォルトの名無しさん
10/01/12 21:45:50
SetLengthで確保した領域は次回SetLengthの時に勝手に解放してくれますか?


121:デフォルトの名無しさん
10/01/12 23:08:24
やってみれば分かるが解放される

122:デフォルトの名無しさん
10/01/13 02:41:37
>>120
ソースが見れるならSystem.pasの該当箇所を見ればSetLengthが内部では何やってるか分かる

123:デフォルトの名無しさん
10/01/13 02:44:31
ソースは読めるのにスレタイは読めないのか

124:デフォルトの名無しさん
10/01/13 03:20:57
>>121>>122
ありがとうございます
system.pas覗いてみますわ

125:デフォルトの名無しさん
10/01/13 11:29:02
del7で簡単なCGIを作りたくてdelを使ったCGI作成は
ググって大体分かったのですが、フォームの内容を
メール送信する時ってどうすればいいか、教えてください。
sendmaneとか見つけたのですが、利用制限があるので
(個人使用なので引っかかることはないのですが)
出来れば制限のない方法があれば教えて欲しいです。
よろしくお願いします。

126:デフォルトの名無しさん
10/01/13 11:45:51
普通にindy使えばよくね?


127:デフォルトの名無しさん
10/01/13 12:05:34
dです。
Indyスレ行ってきます。

128:デフォルトの名無しさん
10/01/14 22:01:40
indyは正直使えない

129:デフォルトの名無しさん
10/01/14 23:26:35
わけでもない

130:デフォルトの名無しさん
10/01/14 23:42:18
男は黙って

131:デフォルトの名無しさん
10/01/15 00:04:48
indy

132:デフォルトの名無しさん
10/01/15 07:53:00
TIdMessageは腐っているが
それ以外は、まあまあ使える


133:デフォルトの名無しさん
10/01/15 08:31:16
Synapse最高!

134:デフォルトの名無しさん
10/01/15 11:08:43
メールくらいソケット通信でやればよし

135:デフォルトの名無しさん
10/01/15 13:11:36
というわけでもない

136:デフォルトの名無しさん
10/01/15 21:19:11
匿名関数をWin32APIのコールバックとして渡すことは可能でしょうか?
例えば次のようなことがしたいです
EnumWindows(
 function(hwnd: HWND; lParam: LPARAM): BOOL
 begin
  // 処理
 end, 0
);
MakeObjectInstanceのようなものがあればよいのですが…。
バージョンは2010です。

137:デフォルトの名無しさん
10/01/16 18:18:21
これから試してみるけど
全力わはー
URLリンク(d.hatena.ne.jp)
これが参考になるだろうか。

138:デフォルトの名無しさん
10/01/16 18:44:49
無名関数に STDCALL つけられないから、コールバックにはそのままでは使えないな。


139:デフォルトの名無しさん
10/01/18 01:04:17
>>138
俺、delphi2010使ってないからよく分かんないけど、できたのかな?
URLリンク(d.hatena.ne.jp)

ってゆうかもしかして、本人様?

140:デフォルトの名無しさん
10/01/18 01:14:18
stdcallを指定してもまだコールバックとしては使えないみたいですね…。

141:デフォルトの名無しさん
10/01/18 08:17:12
stdcall 指定した無名関数から、関数のポインタだけを取り出す。
無名関数が親関数が終了するまで存在し続ける

この二つを実装、確認しないといけないですね
もう少し時間が必要です


142:デフォルトの名無しさん
10/01/18 14:43:06
>>137
2010持ってないから何やってるのかわからないんだけど、これってすごいの?

143:デフォルトの名無しさん
10/01/18 15:06:53
すごいっていうかもうlambdaはあって当たり前の機能

144:デフォルトの名無しさん
10/01/18 17:38:44
TStringListのCustomSortに無名関数が渡せない俺

145:デフォルトの名無しさん
10/01/18 23:03:13
Delphi 2010についてるQA検査を何となく使ってみたところ、
parameter 'XX' でCamel記法を使用、というのが警告の対象になったんですが、
Camel記法ってDelphiの推奨の命名法じゃなかったでしたっけ。
サンプルコードも大体Camelになってますし。
試しに変数名を小文字開始にしたら、警告対象外にはなったんですが。
新しめのコーディング規約とか、どこかにまとまってますか?

146:デフォルトの名無しさん
10/01/18 23:13:52
Pascalは昔からPascal記法だろ
言語名が記法の名前になってるくらいで新しくも何ともない
まとめ探す前に基本を勉強し直してこい

147:145
10/01/18 23:24:02
>>146
あぁ。camelっていうと先頭小文字を呼び分けるときにも使うんでしたっけ。

引数をPascal記法(InfixCaps、先頭大文字、単語の頭大文字)で記述しているにもかかわらず、
QA検査にかけると、「parameter 'XX' でCamel記法を使用」という警告が出てきて、
引数の頭文字が大文字なのは普通だろ、なんで警告出すんだ、と思ったので、
まさかどこかで推奨の命名法が先頭小文字に変わった? と思って質問した次第です。

「昔からPascal」なのは知ってるので、それで警告出されて不思議に思ったってことですね。


148:デフォルトの名無しさん
10/01/18 23:38:48
プログラミングでcamelっていったら普通はlower camel caseを指すと思うが

149:デフォルトの名無しさん
10/01/18 23:46:12
>>147
検査項目をクリックする時間の方がここで回答を待つ時間より早いと思いませんか?

150:デフォルトの名無しさん
10/01/19 00:45:45
>>147
試してみたら確かに警告出たが、そもそもこんな機能あることすら知らなかったぞ
[Camel記法を使用]って、使用しろ、なのか使用しているから警告、なのかこの日本語だと分からんな

>>149
警告の内容が妥当かどうかの質問なんじゃないのか?
警告が出たのに意味も分からずにOffにするってのはナンセンスだと思うが。
しかし警告自体がナンセンスだからOffにしとけ>>147

Javaとかだとcamelっていうと大体lowerを指すけれど、
DelphiでCamelっていうとUpperだと思ってる俺って古いのかな。
URLリンク(edn.embarcadero.com)
古いドキュメントだが、これにもThis is known as InfixCaps, or Camel Caps.
って書いてあるんだよな。
最近読んだものだと、cakephpとかのマニュアルもupperを単にcamelって書いてあった気がする。
影響力だか呼び分けだかでlower > upperなのは同意

151:デフォルトの名無しさん
10/01/19 03:02:11
PByteArrayの長さを取得するにはどうすればいいでしょうか。
Lengthは文字列しか受け付けてくれないみたいで……

152:デフォルトの名無しさん
10/01/19 03:04:37
それは質問自体が破綻している。
ソースで示さないとわからない。

153:デフォルトの名無しさん
10/01/19 03:41:49
Length(PByteArray)みたいな形で一発取得出来る関数があるものとばかり思い込んでいました。恥ずかしい
ソースで示さないとということは、中身に合わせて一桁ずつ中身があるかどうかを確認してカウントしないといけない、
ということでよろしいでしょうか?

Delphi全然慣れていないので型周りの把握が全然です。

154:デフォルトの名無しさん
10/01/19 04:04:33
慣れてないならPByteArrayは尚更使用すべきじゃないと思う
>>152のいうようにまずどういう状態かソースで示せ

155:デフォルトの名無しさん
10/01/19 10:03:53
Byteは0〜255の何を入れても構わないので「中身があるかどうかの確認」なんてやりようがない。
PByteArrayが何を指しているのかわからないので、サイズを一般的に求める方法はない。
だからみなさんがソースを出せと言ってる。

文字列や配列でLengthが使えるのは、内部的にサイズを記録してあるから。

156:デフォルトの名無しさん
10/01/19 10:40:14
くだすれだし、もう少し優しい言い方でも良いかなぁ。とおもいつつ。

Length (組み込み)関数が使えるのは「長い文字列型 (AnsiString, WideString, UnicodeString)」 と
「動的配列 (array of 〜)」です。

PByteArray の定義上の型は 「TByteArray へのポインタ」で
TByteArray は Byte 型の「静的」配列となっています。

この TByteArray型は動的配列が Delphi 言語に導入される前に使われていた、長さ不定の Byte 配列を
参照するための便宜的な型です。範囲チェックをオフにすることで任意のインデックスの場所を参照できました。
もちろん配列の領域確保と正しい場所へのアクセスはプログラム自身が保証する必要があります

現在は動的配列が導入されたため、領域確保に関しては動的配列を使えば解決できます。
Length または High を使えば実行時に配列の大きさを知ることもできます。

PByteArray 型は、キャストすることによって任意のポインタを Byte の配列として扱えるため
動的配列が導入された後もよく使われます。

PByteArray 型単体では、単なるポインタなのでコンパイラも(回答者も)それ以上のことは何も判りません。
PByteArray 型の指す実体が、何によって確保されているかによって、その実体の大きさを取得する方法は異なります。
PByteArray 型として格納されているポインタが不定なのであれば、そのポインタの指す「何か」の大きさを
知る方法は、まずありません。設計から見直しましょう。

157:デフォルトの名無しさん
10/01/19 12:42:04
あの、、、そんなこと長々と言われても分からないので。。。。
慣れてないって言ってるでしょう。。。

158:デフォルトの名無しさん
10/01/19 14:37:34
Delphi6 personalを使用しています
IDEでファイルを複数開いていて、IDEを再起動したとき
ファイルが1つしか開いてない状態になるんですが、
ファイルが複数開いたまま起動するにはどうしたらいいでしょうか?

159:デフォルトの名無しさん
10/01/19 14:57:04
D7なのでD6とはメニューの名前は違うかもしれないけど
ツール→環境オプション→設定タブ
自動保存の設定 内の プロジェクトデスクトップ にチェック

160:158
10/01/19 17:03:24
>>159
できました、ありがとうございます

161:デフォルトの名無しさん
10/01/21 16:08:30
そうそう それぐらいの答えやすい質問をしろ ポインタ配列なんか難しくてわかんないから

162:デフォルトの名無しさん
10/01/21 17:19:01
知らないならレスしないでいいです >161

163:デフォルトの名無しさん
10/01/21 17:24:53
>>161の頭を初期化しようとしたのですが、
「回復不能なエラーです」
という表示が出て初期化できません。
これはバグでしょうか?

164:デフォルトの名無しさん
10/01/21 18:25:57
初期化ではなくFreeAndNilをご利用ください。

165:デフォルトの名無しさん
10/01/21 18:30:14
>>162
間違ってるぞお前
正しくは「知らないならレスしないでください。ウザイだけです。」だ

166:デフォルトの名無しさん
10/01/21 19:17:26
わかりました。

>>165
知らないならレスしないでください。ウザイだけです。

167:151
10/01/21 22:56:51
>>154-155
メモリ確保したり解放したりガチャガチャやっているので、PByteArrayを使っています。
Delphi内部で扱う分には出来るだけ安全な型で処理したいものですが、
DLLファイルでポインタを受けたり投げたりもしているので、その辺りはポインタを生で扱っています。
はっきり把握出来ている部分だと速度の為に直接メモリ弄ったりビット演算したりもするんですけれど……。

>>156
どうもありがとうございます。別で長さを管理して、ポインタ代入時やデータ更新時に併せて更新するように書き直しました。

少しDelphiにも慣れてきたのでテストコード一杯書きながら色々確認しています。
答えて貰えるだけでもありがたいですし、ソースを出せ、というのもわざわざ確認してくれようという思いからでしょうし、
ありがたい限りです。どうもありがとうございます。

しかしくだすれでも偽物って沸くんですね……。回答遅くなった私が悪いのか。


168:デフォルトの名無しさん
10/01/21 23:35:26
分かってるのに聞いたの?
タチ悪いね

169:デフォルトの名無しさん
10/01/22 03:46:38
はいはい。素直に負けをみとめろや > 168

>くだすれでも偽物って沸く
2ch ですから。必要に応じてトリップ使いましょう

170:デフォルトの名無しさん
10/01/22 10:11:16
Delphi2010でCtrl+Dを押すとコードが整形されてしまうので
これを抑止したいのですが可能でしょうか?

あるいは、コードフォーマッタの設定で、
{$REGION 'ほにゃ'}
{$ENDREGION}
の前後に空行を入れる設定はあるでしょうか?
どちらかできればよいのですが…

171:デフォルトの名無しさん
10/01/22 10:51:28
リファクタリングのショートカットの Ctrl-D を抑止することはできません。

{$REGION を含むコメントの前後に空白を入れる機能はありません

Ctrl-D に関しては、カスタム拡張モジュールを作成できれば抑制できるかもしれません。

コードフォーマッターそのものを停止して良いのであれば
bin\Embarcadero.Modeling.Formatter.dll
を別の名前にリネームして再起動すれば Ctrl-D のキーアサインごと消えて無くなります。

レジストリでコントロールできない。のかな?だれか知ってるひといないかな?

172:170
10/01/22 11:40:17
>>171
ありがとうございます。
フォーマッタ自体を使えなくしたかったので、
DLLのリネームで事足りました。
Ctrl+SとかCtrl+Cを押し間違えたとき勝手に
整形されるのでイライラしておりました。

173:デフォルトの名無しさん
10/01/22 12:59:56
>>169
厨ってすぐに勝ち負けとか言い出すよね
何かトラウマでもあるのかな?かわいそう

174:デフォルトの名無しさん
10/01/22 14:00:13
64bitのバイナリ出力できるようになるのは次のバージョンからですか?

175:デフォルトの名無しさん
10/01/22 15:31:21
>>174
迷子ですか?新スレ立ってますよ
スレリンク(tech板)

176:デフォルトの名無しさん
10/01/24 22:58:15
ポップアップメニューを表示してそれを選ぶなりキャンセルするなりしたら即終了する
フォームを一切出さないフォームアプリってどうやって作ればいいんですか?

177:名無し募集中。。。
10/01/24 23:30:35
メインウィンドウ非表示&スプラッシュウィンドウで

178:デフォルトの名無しさん
10/01/25 15:09:59
ポップアップ出すだけなら、非表示どころかそもそも作る必要すらない
スプラッシュウィンドウも然り
TPopupMenuとTMenuItemを動的生成するだけでいい

179:デフォルトの名無しさん
10/01/29 19:48:25
DMonkeyってやたらexeのサイズが大きくなるけど
マイナーな機能取っ払ってサイズを劇的に小さくする技ってないの?

180:デフォルトの名無しさん
10/01/30 03:00:37
あの程度のサイズ増加を気にするのはお前だけ

181:デフォルトの名無しさん
10/01/31 06:57:17
>>179
あるよ

182:デフォルトの名無しさん
10/02/01 15:02:08
>>179
ないよ

183:デフォルトの名無しさん
10/02/01 23:30:50
>>99
TurboDelphiお願いします

184:デフォルトの名無しさん
10/02/02 01:25:39
いくら出せますか?

185:デフォルトの名無しさん
10/02/02 02:31:12
>>183
URLリンク(turbomirror.com)
他にもググればいくらでも出てくる

186:デフォルトの名無しさん
10/02/02 02:40:57
はいおつかれw
予想どうりw

187:デフォルトの名無しさん
10/02/05 15:30:54
??

188:デフォルトの名無しさん
10/02/05 21:39:13
質問です。
あるツールのフロントエンドを作っています。
そのツールがパスの通っているディレクトリのどこかに存在するか否か確認する方法を教えてください。
ツールの実行ファイル名はわかっています。

189:デフォルトの名無しさん
10/02/05 21:41:17
SearchPath

190:188
10/02/05 21:46:13
>>189
ありがとうございます!

191:デフォルトの名無しさん
10/02/10 13:38:38
はじめまして。
以前から興味があったのですが、今回思い切って初めてDelphi2010Proを購入してしまいました。
頑張って勉強していきたいと思います。
じつは、IDEの挙動について気になった事があり、お尋ねしたいと思います。
VCLその他の機能などをツールバーボタンに並べてみたのですが、マウスカーソルをボタンに持っていってもツールチップが表示されません。
ぼんやりとした記憶なのですが、インストール直後はちゃんと表示されていたような気がするのです。
まだまだボタンのアイコンと機能が頭の中で繋がらないため、ツールチップが表示されると大変助かるのですが(とくにVCL)…元々表示されないものでしたでしょうか。
ぐぐっても答えになりそうなページが見つからず、ご助言頂ければ幸いです。よろしくお願いいたします。
追伸 オプション内ツールパレット→「ボタンのキャプションを表示」にはチェックを入れてあります。

192:デフォルトの名無しさん
10/02/10 16:23:04
チェックしないで下さい

193:デフォルトの名無しさん
10/02/11 09:47:17
>>191
ShowHintプロパティ
URLリンク(docwiki.embarcadero.com)

194:191
10/02/11 11:31:15
>>192さん、
チェックの有無では変化ありませんでした。ツールバーカスタマイズメニュー下のツールチップON/OFFでも効果ありませんでした。
>>193さん、
アプリではなくIDEそのもののチップなので…でも紹介下さったページ勉強になりました。

再インストールとか色々調べてみましたら、やっと原因が判りました。
犯人は同時起動しているタブブラウザのタブ数でした。
60個近く開いているタブ数を減らしましたらチップが表示されるようになりました。
タブ数何個以下とは決まっていないみたいなので、よく分かりませんがリソースを食い合いしてたって事なんでしょうか。
IEコンポーネントベースだからなのかプログラム自体の問題なのかXPの問題なのか…勉強不足でわからないのですが、とりあえず自分の環境の所為と言う事がわかりました。

変な原因ですみません。ご回答頂きありがとうございました。



195:デフォルトの名無しさん
10/02/13 02:25:36

ツールバーのカスタマイズの実装方法について教えてください。

CustomizableプロパティをTRUEに設定して、
OnCustomizeCanDeleteとかOnCustomizeNewButtonとかのイベントを使うのだと思うのですが、
具体的にどのようなプログラムを書けばいいのでしょうか?

196:デフォルトの名無しさん
10/02/13 15:06:15
まず自分で分からないなりに書いてみたの?

197:デフォルトの名無しさん
10/02/15 09:01:02
TCollectionから派生させたTGraphItemのItemsに、TCollectionItemから派生させたTGraphItemsをリストするのはできました。

で、質問なのですが、
TGraphItemから派生させたTGraphBox,TGraphAxsis,TGraphLegend,TGraphDataなどの子クラスを同じTGraphItems.Itemに
リストしたいのですが、どうすればいいのでしょうか?
同じクラスしかリストできない?

ちなみにD6です。
よろしくお願いします。



198:デフォルトの名無しさん
10/02/15 09:05:00
あ、間違いです。

TCollectionから派生させたTGraphCollectionのItemsに、TCollectionItemから派生させたTGraphItemをリストするのはできました。
で、質問なのですが、
TGraphItemから派生させたTGraphBox,TGraphAxsis,TGraphLegend,TGraphDataなどの子クラスを同じTGraphColection.Itemsに
リストしたいのですが、どうすればいいのでしょうか?

です。
よろしくお願いします。


199:デフォルトの名無しさん
10/02/15 14:00:40
つD2010

200:デフォルトの名無しさん
10/02/15 14:04:43
D2010だと簡単にできるのですか?

D2006だっけ(?)は持ってるけど使ってないんです。


201:デフォルトの名無しさん
10/02/15 14:23:51
つかTListを委譲したクラスを作ればいいじゃん。
TCollectionから派生させるいみがわからん。

202:デフォルトの名無しさん
10/02/15 14:52:42
オブジェクトインスペクタに出すならTCollectionの方が向いてるとかじゃないの?
コンポ作らないからよくわかってないけど。

203:デフォルトの名無しさん
10/02/15 15:09:29
TListなりに放り込んで、各子クラス用のプロパティエディタを作ったほうが簡単だって事?



204:デフォルトの名無しさん
10/02/15 15:26:29
201みたいに答えわからない奴は書き込まなきゃいいのに。

って思う。
まぁ、俺もそうだけど…


205:デフォルトの名無しさん
10/02/15 16:16:42
>>198
リストしたいのですがって、派生クラスならできるでしょ
結局のところ何がしたいの?

206:デフォルトの名無しさん
10/02/15 16:47:50
>>205

要はグラフのコンポーネントなんですが、軸だとか凡例だとか項目名の子クラスをリストして、
リスト順に描画しようかと思ったわけです。

簡単そうではないので、仕方ないので各子クラス用のTCollectionを拵えて、
描画順は固定でいくようにします。



207:デフォルトの名無しさん
10/02/15 17:13:24
TListやTCollectionを継承する人はdelphi初心者というよりプログラム初心者な感じがするな

208:デフォルトの名無しさん
10/02/15 17:23:34
じゃぁ、今は何使うの?


209:デフォルトの名無しさん
10/02/15 17:25:16
>>206
描画順用のTCollection作って、個別のTCollectionと中身共有すればいいだけじゃないの?
簡単そうではないという判断基準はどこから出たの?

>>207
自分はバカだという新手の自己紹介ですか?

210:デフォルトの名無しさん
10/02/15 17:27:43
初心者かどうかはともかく10年以上も前のテクニックだとは思う

211:デフォルトの名無しさん
10/02/15 17:30:20
なぜだ

212:デフォルトの名無しさん
10/02/15 17:35:30
>>209
>描画順用のTCollection作って、個別のTCollectionと中身共有すればいいだけじゃないの?
なるほど、描画順はほかのリストで管理って言うのはいいですね。

>簡単そうではないという判断基準はどこから出たの?
そのCollectionにItemを追加する時に、どの子クラスを追加するかを指定する術をオブジェクトインスペクタが持っていないので
追加するときは規定クラスを追加して、その基底クラスのKindプロパティみたいな物を弄ると、そのプロパティに沿った子クラス
が作られる。みたいなものを考えていたのですが・・・

単一のCollectionにそんな機能を盛り込むよりも、一つの子クラスに一つのCollectionを与えたほうが簡単かなっと。
あとは描画順だけの問題なので、描画順のリストなりCollectionで対応しようと思います。

昔、「Visualこんぼ」っていうActivXコントロールがあったのですが、そのグラフ機能を模倣しようとしていたわけです。
だれか使ったことがある人いますか?



213:デフォルトの名無しさん
10/02/15 17:37:20
>>210

リストすることが10年前のテクニックなのか?
古いも何も、リストする事は普通だろ?配列とか使わないの?あなたは。

どこを指して古いと言っているのかわからないからおせーて。


214:デフォルトの名無しさん
10/02/15 17:47:12
元質問者そっちのけで申し訳ないけど、俺もその今時だか中級車向けだかのテクニックを教えてほしい。
煽りとかでなく、自分が古い知識のまま止まってる気がするので。

215:デフォルトの名無しさん
10/02/15 17:55:28
今はジェネリッククラスの時代だ

216:デフォルトの名無しさん
10/02/15 17:56:11
まさか、動的配列とか言わないですよね。


217:デフォルトの名無しさん
10/02/15 17:56:50
>>212
そういうことならオブジェクトインスペクタでボタン押した時に、
独自の編集フォームを表示するようにして、そこで追加クラス選べるようにすればいいんじゃない?
ぱっと思いつく範囲ではGLSceneがそういうことしてたと思う
描画順を別にしておいた方が実装は楽だろうけど

>その基底クラスのKindプロパティみたいな物を弄ると、
>そのプロパティに沿った子クラスが作られる。みたいなものを考えていたのですが・・・
子クラスが作られるという処理自体は簡単に作れるけど、
子クラスだけ持ってるプロパティがオブジェクトインスペクタに表示されるわけはないよね
さすがに発想からしてちょっと無理があると思う
基底クラスに派生で使われるプロパティが全部乗ってるとかならできると思うけど、
それだったらわざわざクラスを派生させずに単一のクラス内部で分岐すればいいだけになっちゃうし

218:デフォルトの名無しさん
10/02/15 18:05:41
>>217

どうもありがとうです。

>それだったらわざわざクラスを派生させずに単一のクラス内部で分岐すればいいだけになっちゃうし

そうなんですよね。
で、先ほど書いたように、各々の子クラス用のCollectionを用意しました。
あとは、描画順のコードを足してどうにかしようと思います。



219:デフォルトの名無しさん
10/02/15 18:20:21
コレクション系のクラスを継承してAddにobjectを指定する糞コード書く奴は間違いなくPG歴1ヶ月未満。

220:デフォルトの名無しさん
10/02/15 23:40:44
>>219でスレが止まってるの見てこのAA思い出したw
スレリンク(gline板:1番)n

221:デフォルトの名無しさん
10/02/18 02:25:50
クリエイトプロセスについての質問です。
win2k pro, Delphi 6 personalを使用しており、
ボタンをクリックするとエディタが起動するようにしておりますが、以下のコードによって
エディタが終了する前にshowmessageの'ok'が表示されてしまいます。
ググッてみたもののだいたい同じ内容のものしかヒットしませんでした。
エディタが終了した後に、残りの処理をする場合はどのようにすればよいのでしょうか?
教えてください。
パソコンが2コアだからとかは、関係ありますか?

procedure TForm1.Button1Click(Sender: TObject);
Var
PI : TProcessInformation;
SI : TStartupInfo;
begin
GetStartupInfo(SI);

CreateProcess(Nil,
'D:\Wintools\Dana\Dana.EXE test',
Nil,
Nil,
False,
0,
Nil,
Nil,
SI,
PI);

while WaitForSingleObject(PI.hProcess, 0) = WAIT_TIMEOUT do
Application.ProcessMessages;
showmessage('ok');
end;

222:デフォルトの名無しさん
10/02/18 02:30:26
状況としては、エディタが終了した後にshowmessageを表示したいのです。
現在は、エディタが起動したすぐ後にshowmessageが実行されてしまいます。


223:デフォルトの名無しさん
10/02/18 03:58:00
CreateProcessの2行目を
'notepad.exe',
にしたら待機できました。

なぜ、
'D:\Wintools\Dana\Dana.EXE test',
ではだめなのか、もう少し調べてみます。

224:デフォルトの名無しさん
10/02/18 04:08:03
あー、わかりました。
danaが常駐モードで起動していたため、うまく動いていませんでした。
常駐モードを切って、通常に起動すれば、待機するようになりました。

225:デフォルトの名無しさん
10/02/18 14:30:53
うん

226:デフォルトの名無しさん
10/02/18 19:09:22
だな

227:221
10/02/18 19:51:40
うーん、かなり初心者的なつまずきをしています。

テキストファイルの管理ソフトを作っているのですが、テキスト編集機能を自前で持つのではなく、
すでに優秀なエディタソフトがあるので、テキスト編集については、その外部ソフトで編集し、
編集した結果を管理ソフト側に持ってきたいと思っています。

Createprocessで起動していないソフトであれば、待機するということができるのが確認できたのですが、
常駐機能のあるDanaというエディタの場合は、待機できないことがわかりました。
(以降の処理が待機できない。)

こういう場合、外部のソフトで編集した結果を自分のソフト側に持ってくるとしたら、どういう機能を
使ったらよいのでしょうか?


228:デフォルトの名無しさん
10/02/18 20:00:33
ファイル更新監視

229:デフォルトの名無しさん
10/02/18 20:03:07
もう少し、わかりやすく説明した方がいいですね。

テキストデータ管理ソフトは、データベース(sqlite3)上にデータを格納しようと考えております。
管理ソフト側では、Memoコンポーネントをビューワーにして、新規作成および編集については、
外部のエディターソフトに任せて、その編集結果をMemoコンポーネントに取り込みたいと思っています。
現在は、管理ソフト側でtestというファイルを作成し、外部ソフト側はそのtestファイルを読み込み、
編集結果をtestファイルに書き込んだ後、管理ソフト側でtestファイルを読み込むということを
想定しています。

外部ソフトと管理ソフトとで、データのやりとりをしたいのですが、通常どのようにデータのやりとりを
するのでしょうか?

230:デフォルトの名無しさん
10/02/18 20:05:51
>>228
おー、ありがとうございます。
findfirstchangenotificationというのを調べておりました。
ファイルの更新をやはり監視して変更があった場合に、取り込みすればいいのですね。
ありがとうございます。
その手順で考えていきたいと思います。

231:デフォルトの名無しさん
10/02/18 20:58:44
JVCLにコンポーネント化されたものがあったはず。ところでCtrl-Sで頻繁に保存をするような
人もいるので一回きりじゃない動作を考えておくべきかも。たとえばプロセスの終了までは
監視を続けるとか。

232:デフォルトの名無しさん
10/02/18 21:07:24
>>231
どーもです。
そうですね。今いろいろとテストしていたんですけど、外部プロセスが終了していない間に
ファイルの削除(今回でいえば、test)とかをした場合など、困りますね。
外部プロセスの状態(起動中か終了しているのか)とか調べることも必要ですね。
教えていただいたjvclも調べてみます。ありがとうございます。

私のやりたいことは、CreateProcessとWaitForSingleObjectでそのまま動けば、
簡単なんですけど、常駐しているエディタもあることを考えるとそのまま使えないんですね。
ちょっと難しくなっちゃったな。とほほ。

233:デフォルトの名無しさん
10/02/18 21:14:01
そのエディタが編集中のファイルをロックしてるなら
Timerで1秒ごとに排他オープンを試みて成功したら処理するというのも出来るかも
タイムスタンプ監視で大体はうまくいくと思うけどね

234:デフォルトの名無しさん
10/02/18 22:58:57
>>233
そのエディタは、開いているだけの状態では、ファイルをロックしてませんでした。
ファイルの削除とか外部からできちゃいました。
ファイルの更新自体だけだと、エディタで処理が終わってファイルを書き込んだのか、
編集途中でファイルを書き込みをして、続けて処理しているのかが、はっきりわかりませんね。
困ったな。

プロセスの監視も実は、常駐モードだと常に起動状態なので、それだけだと状態の監視ができないです。
そうなると、エディタのWindowの状態を見て、testという文字列が表示されているかどうかを確認すれば、
良いのかな?
もう少し考えてみます。アドバイスありがとうございます。

235:デフォルトの名無しさん
10/02/19 00:36:26
エディタなんて星の数ほどあるのにプロセスの監視をするのは現実的じゃない
キャプションにファイル名等が表示されないエディタだってある
エディタ以外のプロセスが一時的にロックすることもある(アンチウイルスとか)

236:デフォルトの名無しさん
10/02/19 01:03:55
>>235
そうなんですよね。
vectorのサイトでeditorのレビューで一通りエディター画面見てみたんですけど、タイトルバーに
今編集してるファイル名が表示されてないのもある(9割以上は表示してる。)し、今使ってるDanaでさえも
複数ファイル編集していて、違うファイル開いているとタイトルバーがそのファイル名に
なってしまっているので、すべてのパターンに対応できないですね。

考えが浅はかだったかな?エディター部分を自分で作るよりは、すでにあるアプリで対応して、
ビューアー部分(将来的にはブラウザで表示しようとしてました。)とデータの格納部分だけ
作り込めばいいかなと思ってました。

ちょっと設計自体考え直す必要がありますね。
エディター部分の作り込みはあまりしたくないんだけどなぁ。自分の能力だと大した物できそうにないし。

237:デフォルトの名無しさん
10/02/19 04:32:50
なんで監視だけじゃだめなんだよ

238:デフォルトの名無しさん
10/02/19 06:32:00
>>237
何の監視ですか?
プロセスの監視は、常駐機能のあるエディタだと、ファイルの編集が終了した後でも、
起動したままですし、ファイルの更新状況の監視は、そのファイルが編集継続中であるのか、
すでに編集が終わっているのかの判断がつかないからです。

エディタで編集中であるのに、管理ソフト側を終了してしまうと、保存されないデータが出てくると
思われます。確実にファイルの編集が終わっている状況というのを管理ソフト側で把握できないと
確実なデータの受け渡しは難しいのではないかと思っています。

以上の点から、プロセスの監視もファイル更新の監視も、今の私の知識では無理じゃないかと思って
いるのですが、何か良い案をお持ちでしょうか?

239:デフォルトの名無しさん
10/02/19 09:22:56
文字列型と違い動的配列はコピーオンライトじゃないとだけは認識してたが、
SetLengthで長さ変えるとコピーされるんだ・・・
var
 A, B: array of Byte;
begin
 SetLength(A, 10);
 B := A;
 SetLength(B, 5); // コピーされて、AとBは別物
end;
ずっと、コピーされないと思ってたよ・・・


240:デフォルトの名無しさん
10/02/19 09:35:21
メモリ確保するためポインタ使う代わりに動的配列使ってたけど、
TClassA = class
FArray: array of Byte;
procedure TClassA.Method;
begin
 SetLength(A, 10);
end;
そうすると、FArrayが他の変数によって参照されてるか否か意識しなきゃいけんのか・・
素直にポインタ使ったほうが安全なのかな。

241:デフォルトの名無しさん
10/02/19 09:48:42
まぁ、型にうるさい言語だから
FArray: array of Byte;
とか単独で宣言すれば、まちがっても他の変数によって参照されることはコンパイルエラーが
でるからありえないけど、例えば、Typesユニットで定義されているTByteDynArrayとか使って
FArray: TByteDynArray;
とすると危険か。まぁ、いっか。普通に使うか。


242:デフォルトの名無しさん
10/02/19 11:02:46
すいません質問です
Delphi-MLの過去ログ検索のサイトが無くなっていたんですが
引き継ぎ先などの情報をお持ちの方おられるでしょうか?


243:デフォルトの名無しさん
10/02/19 11:04:57
過去ログブラウザおすすめ
C#はさらにおすすめ

244:デフォルトの名無しさん
10/02/19 11:07:42
サービス止まってるね
面白そうだし引き継ぎ挑戦してみようかな

245:デフォルトの名無しさん
10/02/19 11:28:30
「私の投稿メールを削除していただけませんか」
メールが来るから覚悟しておいた方が良いぞ > 244

246:デフォルトの名無しさん
10/02/19 11:30:02
ならやめたw


247:242
10/02/19 11:42:15
あの過去ログは宝の山でした・・・
あそこで使っていた過去ログって2008/05が最終なんでしょうか?

248:デフォルトの名無しさん
10/02/19 12:15:25
google の方に過去ログ追加しようかねぇ

249:デフォルトの名無しさん
10/02/19 12:18:10
2006/11 以降は URLリンク(groups.google.co.jp) にもバックアップされている。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5079日前に更新/277 KB
担当:undef