くだすれDelphi(超初心者用)その51at TECH
くだすれDelphi(超初心者用)その51 - 暇つぶし2ch175:デフォルトの名無しさん
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) にもバックアップされている。

250:デフォルトの名無しさん
10/02/19 13:17:03
>>239-241
ジェネリクス利用したコピーオンライト配列使えば問題なし

251:デフォルトの名無しさん
10/02/23 12:07:40
TQueryに新規作成した参照項目を元に整列表示させることはできないですか?
SQLのOrder節には入れられないし

252:デフォルトの名無しさん
10/02/23 13:53:52
Delphi6 ProとDelphi7 Pro、今使うならどっちがいいと思う?

253:デフォルトの名無しさん
10/02/23 13:59:20
7

254:デフォルトの名無しさん
10/02/23 14:15:25
7は6のマイナーチェンジな感じだからあえて6を選ぶ理由は少ないと思う。
6はXPのマニフェスト対応にも難有りだし。

255:デフォルトの名無しさん
10/02/23 22:08:08
難の前に未対応じゃん
XP出る前なんだから

256:デフォルトの名無しさん
10/02/23 22:31:21
del7使いなんだけど、最新のDelにしたら
マルチコアなCPUに対応したアプリって
簡単に作れるの?

257:デフォルトの名無しさん
10/02/23 22:46:01
>>255
難ってのはTheme Managerのことだろ
それにD2010はWin7出る前なのにWin7対応を謳ってますが

>>256
マルチスレッドじゃあかんの?

258:デフォルトの名無しさん
10/02/23 22:48:12
マルチスレッドなプログラム書けば特に意識しなくても複数のコア使うようになる。
簡単かは別。排他処理とかやらないと普通に死ぬ。

259:デフォルトの名無しさん
10/02/24 00:37:25
>>257
Del6の発売はXPの存在自体が発表される前なんですけど?
Win7はDel2010開発の段階でβ出てるじゃん
頭悪いね

260:デフォルトの名無しさん
10/02/24 00:39:02
>>258
明示的にAPIで指定しない限り複数のコアを使うとは限らない
嘘書くのはやめよう

261:デフォルトの名無しさん
10/02/24 01:46:31
>>260
>>258は別に嘘では無い。

262:デフォルトの名無しさん
10/02/24 03:11:00
本当でもないだけ。

263:デフォルトの名無しさん
10/02/24 03:28:30
OpenJaneのソース、HogeTextView#1839行より

Move(#13#10[1], result[Position], 2);

とあるのですが、この1つめの引数にある『#13#10[1]』とはどういう意味なのでしょうか?
ついでに、同じ意味になる別の表記方法もあるのであれば、教えて頂けると助かります。

264:デフォルトの名無しさん
10/02/24 04:13:54
VBでいうところの vbCR, vbLF 、 まぁ改行コードのことやね

265:デフォルトの名無しさん
10/02/24 09:26:24
明示的にAPIで指定するとどのコアでスレッドを動かすかなどを細かくコントロールできる。
明示指定してない場合でも、複数のコアをプロセスに割り当てる。
いくつ割り当てるかは、OS の種類によって細かく違いがある。
ただし一般的なコンシューマ版(Vista とか Windows7) ではデフォルトですべてのコアが
利用可能となる。

そんだけだ


266:デフォルトの名無しさん
10/02/24 11:27:56
private
function GetHoge(const Index: Integer; Idx: Integer): String;
procedure SetHoge(const Index: Integer; Idx: Integer; const Value: String);
public
property hogeA[Idx: Integer]: String index 0 read GetHoge write SetHoge;
property hogeB[Idx: Integer]: String index 1 read GetHoge write SetHoge;

こんなPropertyが使いたいのですが read GetHoge で"互換性の無い型です"って怒られます。
hogeA,hogeB毎に read write の関数作らないと駄目なんですかね。

ちなみにfunction GetHogeとprocedreu SetHogeはCtrl+Shift+Cで自動生成したものです。


267:デフォルトの名無しさん
10/02/24 11:34:30
266です。自己解決しました。

自動生成された
function GetHoge(const Index: Integer; Idx: Integer): String;
procedure SetHoge(const Index: Integer; Idx: Integer; const Value: String);

を下記に書き換えたら通りました。
function GetHoge(Idx: Integer; const Index: Integer): String;
procedure SetHoge(Idx: Integer; const Index: Integer; const Value: String);

自動生成だと、配列の添え字とインデックス値が逆になって、値の渡し方の問題でエラーになるみたいです。


268:デフォルトの名無しさん
10/02/24 14:12:06
配列プロパティにはデフォルト値与えられない??
property Items[Index: Integer = 0]: Integer read Get....


269:デフォルトの名無しさん
10/02/24 14:30:48
そんなことをするような設計が悪い

270:デフォルトの名無しさん
10/02/24 15:14:41
配列コピーの高速化って無理だよね

インラインアセンブラでMMX命令で32bitコピーとかやってもちっとも速くならねぇ

271:デフォルトの名無しさん
10/02/24 15:21:32
fastcode projectにmoveがあったような

272:デフォルトの名無しさん
10/02/24 20:37:10
>>264
理解できました。 thx!

273:デフォルトの名無しさん
10/02/25 07:22:20
>>260
あほか

274:デフォルトの名無しさん
10/02/25 08:46:15
あほです



このすれにまじめなこと書くはずないだろ

275:デフォルトの名無しさん
10/02/25 12:49:24
>>262
本当だし

276:デフォルトの名無しさん
10/02/25 14:36:43
はいはい知らなかったなら素直に言おうね

277:デフォルトの名無しさん
10/02/25 14:57:45
Windowsのスレッド配分アルゴリズムは同一プロセス内のスレッドは物理的に同じプロセッサに優先的に割り当てるようになってる。
これはダイ間の通信がコア間の通信に比べて顕著に遅延が発生する等、別個に割り当てると問題が生じるからで、
割当先候補が減っている分、その時の処理状態によっては同一コアに複数スレッドが割り当てられるという事態は普通に発生する。
つまり「明示的にAPIで指定しない限り複数のコアを使うとは限らない」は真。
Delphiには並列ライブラリがないからこういった情報の浸透が遅れているんだろうね。

278:デフォルトの名無しさん
10/02/25 15:45:17
それ、完全にお前の誤解。

スレッド A が Core 1 に割り当てられたときに、
タスク切り替えやスレッド休止後の再起床時に
同じ Core を「優先」して使う。

および同じプロセスに所属するスレッドは、できるだけ「有利」なコアを使う。
というだけ。

この場合の「有利」は、キャッシュを共有しているコアとかが選ばれる。

スレッドが二つ、A と B があったときに、
A と B が「かならず」物理的にひとつのコアしか使わない。のだとしたら
マルチスレッドの利点なんか残らないだろう?

それくらい実験すればすぐわかるのに...

279:デフォルトの名無しさん
10/02/25 16:01:25
Win32APIスレ池

280:デフォルトの名無しさん
10/02/25 17:49:09
こんなクズども寄越さないでください

281:デフォルトの名無しさん
10/02/25 17:52:40
>>278
必ずなんて一言も書いてないんだけど
OSに任せると必ず分散するとは限らないってだけ
お前はまず日本語を勉強してこい

282:デフォルトの名無しさん
10/02/25 18:03:22
その辺はMSDNにも
「スレッドの割り当ては考えてやってるから、分散してなくてもSetProcessAffinityMask使うのはあんまりおすすめしないよ」
みたいに書いてある
XPにはあまり賢くないアルゴリズムが載ってたからある程度自分でやった方が良かったけど

283:デフォルトの名無しさん
10/02/25 18:04:04
SetThreadAffinityMaskだった

284:デフォルトの名無しさん
10/02/25 18:06:27
         ノ´⌒ヽ,,
     γ⌒´      ヽ,
    // ""⌒⌒\  )
     i /::::::::: ノ  \ ヽ )
     !:::::::::::(・ )` ´( ・) i/
     |:::::::::::::::(__人_)  |
    \:::::::::::::`ー'  / チッ うっせーな…
    /:::::::::::::::::::::::::::\

285:デフォルトの名無しさん
10/02/25 18:07:18
使うとしたらこっちだな。SetThreadIdealProcessor


286:デフォルトの名無しさん
10/02/25 18:21:52
みなさん。
実験すればわかることなので、煽りは無視して自分で検証してみましょう。

一般向けの CPU では、物理的に存在する CPU コアのすべてが
プロセス内のスレッドに割り振られます。

個別にコントロールする API は別途ありますが、通常は OS に任せておいて
問題ありません。


287:デフォルトの名無しさん
10/02/25 19:58:17
>>286
何となく興味あったから実験してみたけど、
中でsleepするスレッド4つ作って動かしたら全部一緒になったよ
環境はXP SP3 Core2 Quad
なんで?

288:デフォルトの名無しさん
10/02/25 19:59:32
         ノ´⌒ヽ,,
     γ⌒´      ヽ,
    // ""⌒⌒\  )
     i /::::::::: ノ  \ ヽ )
     !:::::::::::(・ )` ´( ・) i/
     |:::::::::::::::(__人_)  |
    \:::::::::::::`ー'  / チッ うっせーな…
    /:::::::::::::::::::::::::::\

289:デフォルトの名無しさん
10/02/25 20:05:57
>>287
sleepしてるスレッドがどのコアで動いてるか分かるの?

290:デフォルトの名無しさん
10/02/25 20:34:33
タロット占いをするソフトを作りたいと思います。(実際に当たるかどうかは別にして)

TEditにタロットのカード名(魔術師とか、女教皇とか、愚者とか)
を表示させようと思うのですが、
Edit1~Edit6に表示させる際
それぞれが重複しない値にさせるに
はどうすればいいでしょうか。

単純にrandom(22)を使うと
重複してしまう場合があります。

291:デフォルトの名無しさん
10/02/25 20:44:26
リアルでのやり方と同じ。
カード全部を配列に突っ込んでシャッフルして頭から6枚取得する。
配列 シャッフルで検索かければそのコードが見つかるからDelphiに書き直せばいい。

292:デフォルトの名無しさん
10/02/25 21:07:56
WinXp+D7で質問です。
trunc関数で誤差が出るようなのですが何がいけないのでしょうか。
フォームにEdit1,2,3とButton1を配置し以下の計算をしますとEdit3だけが769になります。
Trunc内で計算せずにEdit1のようにすれば大丈夫なのでしょうか。

procedure TForm1.Button1Click(Sender: TObject);
var
Su : double;
Kin : double;
kei : double;
begin
Su := 1.4;
Kin := 550;
kei := Su * Kin;
Edit1.Text := Floattostr(trunc(kei));
Edit2.Text := Floattostr(trunc(1.4*550));
Edit3.Text := Floattostr(trunc(Su * Kin));
end;

293:290
10/02/25 21:12:22
>>291
アドバイスありがとうございます。
検索したらFisher-Yatesという方法も見つかりました。
これでやってみます。

294:デフォルトの名無しさん
10/02/25 21:31:36
>>292
参考になるかどうかわからないけど、過去ログからコピペ。

857 :826 :2008/03/02(日) 20:57:07
SimpleRoundToの個人的まとめ。
正解かどうかわからないので、必要な人は追試してください。

・SimpleRoundToは意図した結果が得られない場合(ADigit<0 ?)がある。

・Truncは引数に変数を使った式を与えると意図した結果が得られない場合がある。
 ○a := 10; Trunc(0.25 * a + 0.5) / a;
 ○Trunc(0.25 / 0.1 + 0.5) * 0.1;
 ×a := 0.1; Trunc(0.25 / a + 0.5) * a; //SimpleRoundToの中がこれ
・引数に指定する計算式の結果を一度変数に代入してから、Truncに与えれば大丈夫そう。
 ○a := 0.1; b := 0.25 / a + 0.5; Trunc(b) * a;

・Floorも内部でTruncを使ってるので同様。
・Ceilは内部でTruncを使っているものの大丈夫そう??


295:デフォルトの名無しさん
10/02/25 23:01:02
>>289
APIも知らないの?

296:デフォルトの名無しさん
10/02/25 23:01:54
>292
おもしろいね。時間があったら追試してみたいけど、気になったポイントを。
Edit1は計算結果が一旦Double型に代入されてそれがTruncに渡されている。
Edit2は予めコンパイラが計算した浮動小数点数の定数値をTruncに渡している。
Edit3は式の値がおそらくExtendedで一時的に保持されてそれがそのままTruncに渡されている。
CPUウィンドウでコンパイル結果がどのようなアセンブル命令に展開されているのかを見ると違いが
わかるのかも。

297:デフォルトの名無しさん
10/02/25 23:02:22
         ノ´⌒ヽ,,
     γ⌒´      ヽ,
    // ""⌒⌒\  )
     i /::::::::: ノ  \ ヽ )
     !:::::::::::(・ )` ´( ・) i/
     |:::::::::::::::(__人_)  |
    \:::::::::::::`ー'  / チッ うっせーな…
    /:::::::::::::::::::::::::::\

298:デフォルトの名無しさん
10/02/25 23:29:53
>>295
どれ使うか分からんので教えて。

299:デフォルトの名無しさん
10/02/26 00:08:58
>>290
procedure TForm1.Button1Click(Sender: TObject);
const
 CARD : array [0..5] of string = ('THE FOOL','THE MAGICIAN','THE HIGH PRIESTESS',
                    'THE EMPEROR','THE LOVERS','The HIEROPHANT');
 function tekitou(a,b:integer):TPoint;
 begin
  result.X := b;
  result.Y := a;
 end;
var
 CardNum: array [0..5] of Integer;
 i,r1,r2 : integer;
 p : TPoint;
begin
 Memo1.Clear;
 for i := 0 to 5 do
  CardNum[i] := i;
 for i := 0 to 999 do begin
  r1 := random(6);
  r2 := random(6);
  p := tekitou(CardNum[r1],CardNum[r2]);
  CardNum[r1] := p.X;
  CardNum[r2] := p.Y;
 end;
 for i := 0 to 5 do
  Memo1.Lines.Add(CARD[CardNum[i]]);
end;

駄目な例

300:デフォルトの名無しさん
10/02/26 00:44:44
>>298
URLリンク(msdn.microsoft.com)

301:デフォルトの名無しさん
10/02/26 06:39:48
OSに任せておけばいいだけやん。あほか。

302:デフォルトの名無しさん
10/02/26 07:10:59
>>287
GetCurrentProcessorNumberやCPUIDで調べる方法は知ってるけど、
Sleepしてる最中に調べるのは無理だろって話さ。
ThrreadIDと違って、コアは実行途中でも入れ替わるんだし、
SleepしてたらCPUはつかんでないだろ。


303:デフォルトの名無しさん
10/02/26 07:43:33
sleep したスレッドが1000個あったとして、それに意味があるの?

それこそ「特殊な」プログラムだと思うのだが。

304:デフォルトの名無しさん
10/02/26 12:54:02
>>302-303
だからいい加減出て行けよ
バカに噛みつくのもバカ
必死にしか見えない

305:デフォルトの名無しさん
10/02/26 12:54:45
はいはい本人乙

306:デフォルトの名無しさん
10/02/26 12:56:05
馬鹿というのは鳩山のAAを張ってる奴だな
いい迷惑だ

307:デフォルトの名無しさん
10/02/26 12:57:17
即レスとかどんだけ張り付いてるんだよw
そんなに悔しかったのか

308:デフォルトの名無しさん
10/02/26 12:59:29
>>302
そんなことしなくても外部からいくらでも観測する方法あるだろ…
必死になるあまり視野が狭くなってないか?落ち着けよ

309:デフォルトの名無しさん
10/02/26 13:02:13
本日も質問者不在のままおっさん鬱病患者達が頑張っていますね

310:デフォルトの名無しさん
10/02/26 13:06:52
必死必死うるせえんだよ
必死って言う方が必死なんだよばーーーーーーーーーーーーかwwwwwwwwwwwwwwwww
もうこんな気持ち悪いところ来ないから一人で勝手に喋ってろwwwwwwwwwwきめえwwwwww

311:デフォルトの名無しさん
10/02/26 13:08:47
これで静かになるな
ありがたやありがたや

312:デフォルトの名無しさん
10/02/26 13:16:25
TBase = class
public
  class const Value: Integer; abstract;
end;
TBaseClass = class of TBase;

TExtend1 = class(TBase)
public
  class const Value: Integer = 1;
end;

TExtend2 = class(TBase)
public
  class const Value: Integer = 2;
end;

var
  cls: TBaseClass;

cls := TExtend1;
a := cls.Value; //1が入って欲しい


もちろんこんなコードは書けないんですけど、
上記のようなクラス定数(もしくはクラス変数)の継承みたいなことって何かで代用できますかね

313:デフォルトの名無しさん
10/02/26 13:38:23
代替にはならないと思うがReadプロパティで対応するのが一般的だと思う。

314:デフォルトの名無しさん
10/02/26 18:44:42
引数なしの関数は変数にも見えるから

function Value : Integer; virtual;

を使う手もある





315:312
10/02/26 19:01:32
>>313-314
ありがとうございます
そうなんですよね、実装部に書くことを許容すればできるんですけど、
宣言部だけで継承先の振る舞いを変えられたらと思ったんですが、やはり仕様上難しそうですね…

316:デフォルトの名無しさん
10/02/26 22:52:20
Delphi、VisualStudioに付いてくるやつ以外で
TAnimateで使えるようなAVIファイルを集めた
市販の素材集はないでしょうか?

317:デフォルトの名無しさん
10/02/26 22:56:51
TStringListの内容をINIファイルの一行データとして安全に書き込んだり読み込んだりするための変換処理ってどう書けばいいですか?

318:デフォルトの名無しさん
10/02/26 23:29:37
具体的にどういう変換をしたいのかが見えない

319:デフォルトの名無しさん
10/02/26 23:37:10
ini[0] = TStringList.Parse(sl[0]);
sl[0] = TIniFile.Parse(ini[0]);

320:デフォルトの名無しさん
10/02/26 23:41:10
>>317
例えば、iniファイルに
key=aaa;bbb;ccc
と書かれていた場合に、

その値を
aaa
bbb
ccc

と、変換して取得したい。
または、逆変換してiniファイルに書き込みたい。ってこと?

単純にTStrings#DelimitedTextプロパティを通せば、自動的に変換してくれる。
ただし落とし穴があって、スペースもデリミタとして扱ってしまう。(Del 7の場合。以降のDelphiは使用したことないのでシラネ)

厳密に指定したデリミタのみで分割したい場合、JCL(URLリンク(jcl.delphi-jedi.org))に含まれる、JclStrings#StringsToStrやJclStrings#StrToStringsを使用してます。

iniファイルへの読み書きはTIniFile使えばいいじゃね?。安全にが何を指してるか知らないけど。


321:デフォルトの名無しさん
10/02/26 23:42:39
mailto:sage てs


322:デフォルトの名無しさん
10/02/26 23:47:32
正直な話、オレだったらTStringlistの内容をinifileに保存なんてしない。
何を目指してるのかは分からないけど。

323:デフォルトの名無しさん
10/02/27 03:53:55
>>320
個々にAnsiQuotedStr(読み込み時は逆にAnsiDequotedStr)を適用すれば外部ライブラリはいらない

324:デフォルトの名無しさん
10/02/27 09:18:11
マルチコアの話に便乗なんですが、要は1つのスレッドを
OSが適当に割り振るからあんまり考えなくて良いよって解釈しました。
言い方変えると1スレッドを複数のコアで処理はしないってこと?
マルチコア対応とか書いてあるアプリって、重い処理でも1スレッドに書いたほうが
プログラムが簡単なのにマルチスレッドに出来るだけ分けてるって事?

325:デフォルトの名無しさん
10/02/27 09:44:07
>>323
TStringListの個々の要素であるStringは#0-#20(当然#13#10も)なんかも格納できるバイナリコンテナだからもうひとひねり必要だな。
標準でやるには例えばURL Encode/Decodeとかできっちり処理しないと破綻する。

326:デフォルトの名無しさん
10/02/27 10:26:53
だがほとんどの処理で #0 以降の文字は欠落するから
もう忘れてもいいんじゃないかな?

327:292
10/02/27 14:37:50
どの程度誤差が発生するのかちょっと調べてみました。
memo1,2,3を配置して誤差が出たとき追加していきます。

procedure TForm1.Button3Click(Sender: TObject);
var
Su : double ;
Kin ,sux : integer;
kei ,ans : double;
a1,a2,a3 : double;
t :string;
const
sucon = 0.00000001;
begin
memo1.Clear;
memo2.Clear;
memo3.Clear;
for Sux := 1 to 1000 do
begin
su := sux / 10;
for Kin := 1 to 1000 do
begin
kei := Su * Kin ;
a1 := trunc(kei);
a2 := trunc( Kin * su);
a3 := trunc( Kin * su+ sucon);
ans := trunc((sux * kin / 10)) ;

328:292
10/02/27 14:40:31
if a1<>ans then
begin
t := Floattostr(kin) + ' , ' + Floattostr(su) + ' , ' + Floattostr(ans) + ' , ' + Floattostr(a1) + ' , ' + Floattostr(a2) + ' , ' + Floattostr(a3);
memo1.Lines.Add(t);
end;
if a2<>ans then
begin
t := Floattostr(kin) + ' , ' + Floattostr(su) + ' , ' + Floattostr(ans) + ' , ' + Floattostr(a1) + ' , ' + Floattostr(a2) + ' , ' + Floattostr(a3);
memo2.Lines.Add(t);
end;
if (a3<>ans) then
begin
t := Floattostr(kin) + ' , ' + Floattostr(su) + ' , ' + Floattostr(ans) + ' , ' + Floattostr(a1) + ' , ' + Floattostr(a2) + ' , ' + Floattostr(a3);
memo3.Lines.Add(t);
end;
end;
end;
memo1.Lines.SaveToFile('c:\memo1.csv');
memo2.Lines.SaveToFile('c:\memo2.csv');
memo3.Lines.SaveToFile('c:\memo3.csv');
end;


どうやら単に計算してからtruncしただけでは発生頻度が減るだけで完全な対策にはならなそうです。
小さい数を足してやって切り捨てるのが良いようです。

329:デフォルトの名無しさん
10/02/27 14:58:05
問題の所在を理解していないような希ガス…

330:デフォルトの名無しさん
10/02/28 07:34:09
やべー、俺も>>292の原因知りてぇ。
>>296さんのExtendedになぜなるのかが知りてぇ。

こういう場合、Edit1の方法で計算しないと間違った答えが出ることもあるってことだよね。

331:デフォルトの名無しさん
10/02/28 07:47:13
URLリンク(homepage1.nifty.com)

↑ここに同じようなやりとりがあった。

332:デフォルトの名無しさん
10/02/28 07:52:04
つーことで、実数型使うときはdoubleを使わないでextendedを使えってこと?

333:デフォルトの名無しさん
10/02/28 08:02:36
おー、すまん。一人でとっちらかっていた。
URLリンク(homepage1.nifty.com)
ここ読んでわかったけど、
Trunc(X: Extended): Int64;
で型変換してる。
Trunc使うときは、Extended型で使わないと誤差がでるってこと。

もしくは小数点移動させて、整数にしてから処理すればいいね。

334:330-333
10/02/28 08:20:53
浮動小数って、意味がわかりました。そういうものなんですね。
使ったことなかったものですから、、、今回よくわかりました。
332も違うつーことで。

335:デフォルトの名無しさん
10/02/28 18:43:16
それは不動少数

336:デフォルトの名無しさん
10/02/28 20:36:04
すみません教えて下さい。
Form1 に直接 Image1 を置いていたのですが後から Panel1 を追加して Image1 の親コントロールを Panel1 に変更したいのですが、IDE でやる方法はありませんか?

337:デフォルトの名無しさん
10/02/28 20:53:34
floatとdoubleで結果が異なる例は見たことあったけど
doubleとextendedで差が出る実例は初めて見た。
64bit厨はどうするのだろうか。

338:デフォルトの名無しさん
10/02/28 21:14:15
それ 64bit 関係ないし
x64 なら 128bit 浮動小数点数が必ず使えるし


339:デフォルトの名無しさん
10/02/28 21:51:41
337は64ビットネイティブバイナリでFPU命令が使えないと思っているんじゃないだろうか

340:デフォルトの名無しさん
10/02/28 22:00:26
>>336 切り取って貼り付ける。


341:デフォルトの名無しさん
10/02/28 22:02:28
>>340

なるほど!ありがとうございます!

342:337
10/02/28 23:33:39
>>338, 339
ごめん、知らなかった。
>128bit浮動小数点と、64bitネイティブでFPU
エンバカスレに帰るよ。

343:デフォルトの名無しさん
10/03/01 01:26:40
>>338
64bit2個をまとめて扱えるだけであって128bitが1個じゃないから

344:デフォルトの名無しさん
10/03/01 02:02:25
実装がどうなってるかは関係ないだろ
扱えることに変わりはないし

345:デフォルトの名無しさん
10/03/01 17:58:10
実装は関係ないだろキリッ!って言われてもなぁ

346:デフォルトの名無しさん
10/03/01 19:12:48
はいはい

347:デフォルトの名無しさん
10/03/01 19:25:15
>>345
お前がそう思うんならなんやらかんやら

348:デフォルトの名無しさん
10/03/01 19:25:56
delphi2011っていつでるの?

349:デフォルトの名無しさん
10/03/01 20:00:32
さあ

350:デフォルトの名無しさん
10/03/01 20:56:48
>>348
もうすぐじゃないの? ただし32ビット

351:デフォルトの名無しさん
10/03/02 21:21:42
特定の位置からバイナリを読み取って、違うファイルとして保存するというプログラムを書いています。
fileopen関数で開いて、FileRead(F, Buff^, Size);でバッファに格納はできたのですが、
この格納したものはテキストでならstringですので取り出せますが、バイナリとして保存する場合はどのように取り出せばよいのでしょうか?
お力をお貸しください。

352:デフォルトの名無しさん
10/03/02 21:35:10
そのままでいいだろ

353:デフォルトの名無しさん
10/03/02 21:36:16
>>344
実装がどうとか以前に扱えないし
SSE2が四倍精度浮動小数点数扱えると思ってんの?

354:デフォルトの名無しさん
10/03/02 21:41:13
>>352
バッファはテキストとして保存可能ですが、そのバイナリがテキストでない画像とかを
どうやってバイナリとして保存するかがわからなくて・・・。


355:デフォルトの名無しさん
10/03/02 21:49:37
>>354
MemoryStream


356:デフォルトの名無しさん
10/03/02 21:57:44
>>355
それやろうと思ったんだけど、うまくいかなくて・・・
var
ms:tmemorystream;
begin
ms := tmemorystream.create;
ms.loadfromfile('TEST.dat');
//このseekがよくわからない。例えばSizeが300の地点から500までを読む場合の位置設定がわからないところ

ms.seek(?);

ms.read(Buff^,sizeof(buff));
ms.savetofile('TEST2.dat');
ms.free;

これでできなかったんです・・・。



357:デフォルトの名無しさん
10/03/02 22:05:49
>351
ファイルストリームで元ファイルを開く→所定の位置にseekする→メモリストリームにコピーする
→メモリストリームのPositionを0に戻す→メモリストリームをファイルに書き込む

358:デフォルトの名無しさん
10/03/02 22:13:33
>>357
レスありがと。
メモリストリームにコピーとは?どのような関数ですか?

359:デフォルトの名無しさん
10/03/02 22:34:57
CB_SETCURSELってチェンジイベントみたいなのって起きないのかな。
他アプリのコンボボックスを操作するのに、CB_SETCURSELで選択項目を
変えるんだけど、一回コンボボックスにクリックメッセージを送らないと
認識しないみたいなんだ。
これって、相手のアプリの作りの問題?
別のAPIがあるの?

360:デフォルトの名無しさん
10/03/02 22:50:08
>>354
意味分からん
何もしてないのにバッファが書き換わるとでも言いたいのか

361:デフォルトの名無しさん
10/03/02 22:51:47
>>360
簡単にいうとどうやってこの格納されたバッファをファイルとして保存するかなんです。

362:デフォルトの名無しさん
10/03/02 23:11:16
ファイルストリームでもメモリストリームでも好きなの使えば素敵やん

363:デフォルトの名無しさん
10/03/02 23:43:28
>>361
b: array[0..4095] of byte;
MS: TMemoryStream;
begin
for i:= 0 to 4095 do b[i] := $FF;
MS:= TMemoryStream.Create;
MS.Write(b, 4096);
MS.SaveToFile('c:\gomi.dat');
MS.Free;

364:デフォルトの名無しさん
10/03/02 23:58:58
>>363
書き込むだけの用途ならTFileStream使え
Create-Freeはtry-finallyで囲め
ハードコーディングすんな

365:デフォルトの名無しさん
10/03/03 00:07:55
>>364
うわ…

366:デフォルトの名無しさん
10/03/03 00:30:48
>>358
とりあえず、マニュアル(ヘルプ)読んでから、質問しろ

function CopyFrom(Source: TStream; Count: Int64): Int64;

ってのが見つかるはずだから


367:デフォルトの名無しさん
10/03/03 13:06:15
Windows7が動くDelphiはどのバージョンまで対応していますか
Delphi2以降は一応動くと思うのですが

368:デフォルトの名無しさん
10/03/03 13:36:48
Delphi上でOSを動かそうというのはなかなか難しいのではないかと。

369:デフォルトの名無しさん
10/03/03 13:59:04
>>351 単純な手があるんじゃないの ファイルAとBを開き、Aのファイルポインタを
移動してから、あとは全部AをBへコピー メモリに覚える必要とかまったくないと思う

370:デフォルトの名無しさん
10/03/03 15:37:49
>>368
Delphiで仮想マシン作れってことか

371:デフォルトの名無しさん
10/03/03 15:53:45
対応の意味によるんじゃね。
厳密な意味で対応してるのは最新の奴だけだろうし
Vista以前のDelphiだとVistaでウィンドウのプレビューがうまくとれないなんて細かい不具合があったし。

372:デフォルトの名無しさん
10/03/04 10:10:42
超初心者です。
Delphi2005 プログラミングテクニックVOL4
に載っていた簡単なイメージビューワを作ってみましたが
作成中にフォームのOpenPictureDialogをクリックすると、
すべてのファイル(*jpg,*jpeg,*bmp・・・)と正しく表示されるのに
実行すると、jpegがすべてのファイルの中に出てきません。
bmp、ico、emf、ぐらいしか表示されません
フィールターも見たのですが・・・・

コードはメニュー開く(&O)...の中に
if OpenPictureDialog. Execute then
begin
Image.Picture.Bitmap.LoadFromFile(OpenPictureDialog.FileName);
MainForm.Caption := OpenPictureDialog.FileName;
end;

ご教授頂ければ幸いです。

373:デフォルトの名無しさん
10/03/04 10:28:30
uses
jpeg;

374:351
10/03/04 18:50:43
とりあえずfilestreamで読み込み、指定の位置へ移動、バッファいれるためのメモリ確保までは問題なく動作しているようです。
ですが、readが間違えているのかうまくいかず、指定の位置からではなく、そのままファイルをコピーするものになったしまいました。
やりたいことは指定した位置から最後まで読み込んで、その読み込んだ部分だけをファイルとして書き出すことです。以下がソースになります。
ms := tmemorystream.Create;
fs:= TFileStream.Create('C:\AAA.dat',fmOpenRead);
try
fs.Seek(targetposition, 0);
Buff := AllocMem(SrcSize + 1);
fs.Read(buff^,srcsize);
ms.LoadFromStream(fs);
ms.SaveToFile('C:\ABC.dat');
finally
FreeMem(Buff);
ms.Free;
fs.Free;
end;
どうかご回答の程、よろしくおねがいします。Copyfromよりこちらの方が楽そうに思いしようしました。

375:デフォルトの名無しさん
10/03/04 19:16:24
buffは何のために確保してるの?

376:デフォルトの名無しさん
10/03/04 19:20:26
>>374
君がやっていることを例えると、

本を借りてきて、
メモ用紙に必要な事項だけ書き写して、
本をコピー機で全部複製して、
メモ用紙を捨てて、
本を返してる

377:デフォルトの名無しさん
10/03/04 20:32:46
>>375
部分的に読み取ったものを格納して・・・と思ったんですが、違うんですか?
>>376
その例えの必要な事項だけ書き写したのを欲しいんですが、余計なコード書きすぎとかですか?
この指定した位置から読み取ったバッファ=fsという理解ではないのでしょうか?

378:デフォルトの名無しさん
10/03/04 21:18:41
buffに格納したものを利用せずに捨ててる

379:デフォルトの名無しさん
10/03/04 21:51:23
>>378
この読み取ったバッファをファイル保存するために、
ms.LoadFromStream(fs);
ms.SaveToFile('C:\ABC.dat');
としたんですが、どうもうまくいかないのです。
何か良い手はございますか?

380:デフォルトの名無しさん
10/03/04 22:37:23
msにbuffを書き込めよw

381:デフォルトの名無しさん
10/03/04 22:49:54
>>380
レスありがとうございます。
言われた通りにしたらうまくいきました。
これまでお付き合いくださった方、ありがとうございました。
そしてお騒がせ致しました。

382:デフォルトの名無しさん
10/03/05 00:02:09
いいねぇくだすれらしくてw


383:デフォルトの名無しさん
10/03/05 02:27:05
もどかしいが嫌いじゃないぜ、この流れw

384:デフォルトの名無しさん
10/03/05 12:06:52
無意味なエラートラップならやらないほうがいい

385:デフォルトの名無しさん
10/03/05 12:51:14
無意味なエラートラップはない

386:デフォルトの名無しさん
10/03/05 15:07:49
try
 abort;
except
 abort;
end;


387:デフォルトの名無しさん
10/03/05 15:16:16
それは無意味なエラートラップじゃなくて無意味なコード

388:デフォルトの名無しさん
10/03/10 18:08:50
よく改造サイトでエミュでチートを・・・とか書いてありますが、これを(チートを)そのエミュ上で行うのではなく、
自作のプログラムで行おうとする場合どのような流れになるのでしょうか?
簡単にいうと、エミュでチートを行わずに、自作のプログラムでいま起動されてるエミュ上のゲームのデータを書き換える
というものを作りたいのです。


389:デフォルトの名無しさん
10/03/10 20:23:01
ガキ臭いやつだなぁw

390:デフォルトの名無しさん
10/03/10 22:33:19
>389
素直に「答えられません」と降伏宣言したらだどうだ?。嫌ならゴミレスするな

391:デフォルトの名無しさん
10/03/10 22:38:14
答えられません
ですから諦めて下さい

392:デフォルトの名無しさん
10/03/11 02:50:49
改造板行けよ

393:デフォルトの名無しさん
10/03/11 06:39:25
Delphi6まで使っていましたが、最近またDelphiで開発する
はめになりました。
で、Delphi2010の購入を考えております。

そこでお聞きしたいのですが、Delphi2010は、Delphi6
と比較して、何が良くなっているのでしょうか?
特にエディタの使い易さなどはどうでしょうか。

メーカが出している機能比較のPDFなどは見ておりますが、
実際の開発者さんの感想をお聞きしたいです。

作成するアプリは、SQLServerおよびAccessMDBを使う業務
アプリです。

よろしくお願い申し上げます。

394:デフォルトの名無しさん
10/03/11 06:53:43
使い勝手は人によるので。

>特にエディタの使い易さ
となれば、D6 でどこが不満だったのかをまとめれば答えやすいと思うよ


395:デフォルトの名無しさん
10/03/11 09:28:58
Delphi 2010 Architect - 30 day trial
URLリンク(downloads.embarcadero.com)

396:デフォルトの名無しさん
10/03/11 13:57:05
>>393
エディタはコードの折りたたみ等必要ないなら外した方がいい。
若干バギーな部分もあるが実用できるとは思う。
ただしvimなど外部エディタに慣れてるならそっちで環境整えた方がいいっていうレベル。
でもリファクタリングは便利。

生産性は上がってる。ジェネリクスがあるのでコードの記述量が劇的に減る。
C++でテンプレートを使えていたなら何も考えずに使えるはず。
テンプレートもよく分からないのなら、Delphi2009Handbookを読めば解説がある。

397: [―{}@{}@{}-] デフォルトの名無しさん
10/03/11 16:03:34
ジェネリクスはバグだらけ。とナカムラセンセが言っていますよ?


398:デフォルトの名無しさん
10/03/11 16:18:15
中村先生が指摘してたバグはすでに修正されてますが?
何年前の話を持ち出してるんだよ情弱

399:デフォルトの名無しさん
10/03/11 16:22:41
「Delphi ジェネリクス バグ」で検索すると中村の指摘が真っ先に引っかかるからな。
一番上のネタを持ってくる辺り、検索して知ったにわか知識ということがよくわかる。

400:デフォルトの名無しさん
10/03/11 22:54:43
なんかごめん・・・・

401:デフォルトの名無しさん
10/03/12 13:01:50
ジェネリクスなどのコンパイラの新機能にエディタは追いついてないので
古いバージョンからアップグレードすると既存の機能でいらいらする事結構ある。
前できた宣言の検索(Ctrl+Shift+上下キー)とか動かない部分とかあるし。
仕方なく通常のCtrl+F2の文字列の検索でソース追うはめになったり。

402:デフォルトの名無しさん
10/03/13 04:21:43
Delphi 2010のlicense_ja.rtfに書かれている
「指名ユーザーが本製品の使用を許可された唯一の個人である場合、
 適正な数のコンピュータに本製品をインストールすることができます。」
というのは、
「俺だけが使うのなら、自宅のデスクトップPCと、カバンに入れている俺資産のノートPCと、
 XPmode上の仮想PCの3つにインストールできるじゃん」
という認識でOKでしょうか?

自宅でも出先でも開発したいのよ。

403:デフォルトの名無しさん
10/03/13 07:01:11
その認識で良いと思いますが
ライセンス関連の質問は Embarcadero サポートに問い合わせることを勧めます。


404:デフォルトの名無しさん
10/03/13 08:48:25
へー グーグルってあてにならないんだな、ヤフーサーチ使おうっと

405:デフォルトの名無しさん
10/03/13 09:47:15
>>402
その認識で良いです。

確か「ナンセンス」でない「ライセンス」という考え方で、有名な
ライセンス形態だったはずです。

406:デフォルトの名無しさん
10/03/13 10:02:52
古き良き時代の「ナンセンスではないライセンス」は、かなり以前に撤廃されています。
当時はデジタルコピーを配布することが、今よりは大変だったため、ライセンス所有者でなくても
(複数の人が同時に使うので無い限り)利用可能でした。

その後ネットワーク速度の向上により、CD 一枚くらいなら気兼ねなく複製をコピーできるようになって、
ライセンス所有者でないと利用できないように変わりました。

実際には、インストール後にアクティベーションを行い、ユーザー名とシリアル番号とコンピューターを
結びつける作業を行います。

「適正な数のコンピュータ」というのは、アクティベーションの回数に上限があることを意味しています。
普通に使う分には問題にならないはずですが、もし上限に達したらサポートにメール/電話すれば
解除してもらえます。実際の値は10回か20回くらいらしいです。


407:405
10/03/13 10:38:29
>>406
そうだったのですか、それは大変失礼しました。間違った
書き込みをしてすみませんでした。

408:デフォルトの名無しさん
10/03/13 11:01:41
>406
今は上限はwebからincrementできる。名義変更は電話する必要があるけど。

409:デフォルトの名無しさん
10/03/13 14:28:16
incrementは1回ずつしか増やしてくれないのが面倒といえば面倒な現在

410:402
10/03/13 16:24:40
>>403,405,406,408,409
ありがとうございます。
週明けにでもEmbacarderoさんのサポート窓口に聞いてみます。
結果が分かったら報告しますね。

411:393
10/03/13 20:00:14
>>394,395,396
回答ありがとうございます。


>D6 でどこが不満だったのかをまとめれば答えやすいと思うよ

エディタに関して言えば、
 ・フリーカーソルモードが不便(ふつうのエディタみたいなほうがいい)
 ・次を検索はF3でOKだが、前を検索はShift+F3でできて欲しい。

IDEに関して言えば、
 登録したコンポーネントを探しにくい
 
VCLに関しては、
 TListViewがショボい(.NETの方が格段に高機能)

こんなところです。
Delphi2010ではどうなんでしょうか?

412:デフォルトの名無しさん
10/03/13 22:35:40
フリーカーソルはD6の時点で無効化方法あっただろ
少しは自分で調べろよ…
Shift+F3は可能、コンポーネントは名前で探せる
TListViewはそもそもListViewのラッパーで
コモンコントロールのバージョン(OSのバージョン)によって機能が違う
D6のメインターゲットOSは2000だし機能が少なくて当然

413:デフォルトの名無しさん
10/03/14 09:44:30
>>412
Delphi 2009のVCL機能
URLリンク(www.codegear.com)
TListViewは、Windows XP/Vistaで追加された機能が使えるようになった。

414:デフォルトの名無しさん
10/03/14 09:56:13
それってExplorerのグループで表示みたいなのもできる?

415:デフォルトの名無しさん
10/03/14 13:37:52
>>414
まさしくそれが追加された。


416:デフォルトの名無しさん
10/03/14 13:46:43
SHBrowseForFolderでフォルダー選択ダイアログを出すようにしているのですが、
ダイアログを表示させる時に過去に選択されたフォルダーがある場合、そのフォルダーを
選択した状態で表示させるにはどうすればいいでしょうか?

ググってサンプルコードをコピペして試しているのですが、BrowseInfo構造体で
lpfn := @FolderCallback;
lParam := LongInt(PChar(FolderPath)); //初期フォルダ指定
って、設定してもlParamの設定がおかしいらしくコンパイルエラーになってしまいます。

Dlphi7とXPの環境です。
よろしくお願いします。

417:デフォルトの名無しさん
10/03/14 14:33:29
そのコンパイルエラーの内容を書こうぜ

418:デフォルトの名無しさん
10/03/14 15:16:18
すみません。
解決しました。
lpfn := @FolderCallback;
の@を消して

lpfn := FolderCallback;
lParam := LongInt(FolderPath);

これで動きました。
でも、ここの設定はコールバック関数を指定するから
@っているはずですよね?
ググったサンプルコードも皆@付いてました。

419:デフォルトの名無しさん
10/03/14 15:28:13
FolderCallbackが(名前で推測できるとはいえ)何を表してるのか書いてないのに、どう回答しろと?

URLリンク(homepage1.nifty.com)

420:デフォルトの名無しさん
10/03/14 15:29:05
>>412

>フリーカーソルはD6の時点で無効化方法あっただろ
>少しは自分で調べろよ…

D6にフリーカーソルモードの無効化方法があるのですか?
調べても見つかりません。
済みませんが教えていただけないでしょうか。


421:デフォルトの名無しさん
10/03/14 15:33:56
Delphi6 フリーカーソル 無効 に一致する日本語のページ 約 5,280 件中 1 - 100 件目 (0.57 秒)

422:デフォルトの名無しさん
10/03/14 17:20:50
>>420
逆に何を調べたら情報が見つからないのか教えて欲しい

423:デフォルトの名無しさん
10/03/14 17:25:56
あなたには聞いてません。黙っててください。

424:デフォルトの名無しさん
10/03/14 17:33:39
またヴビ厨の自作自演か。さっさとハローワーク行ってこい。

425:デフォルトの名無しさん
10/03/14 21:55:58
>>423は偽善です。私が本物です。

426:デフォルトの名無しさん
10/03/15 09:13:44
フリーカーソル無効化のソースをいじくってDelphi2009、2010でも
うごくようにして使ってるぞ

基本的にはコンパイルエラーを取り除くだけで動く
メモリリークしているかもしれないがw

427:デフォルトの名無しさん
10/03/15 10:19:32
>>414
URLリンク(www.gesource.jp)

428:デフォルトの名無しさん
10/03/15 12:01:32
アプリケーションの実行フォルダにできるdel01.mbっていうファイルは何ですかね。

429:デフォルトの名無しさん
10/03/15 13:35:29
最近のって例えばTStringsにShuffleメソッドを後付けするような機能ってつきました?
古いのでも無理やりできない事もなかったけどオフィシャルな機能として。

430:デフォルトの名無しさん
10/03/15 17:38:45
いい加減秋田
本当に知りたいなら体験版で試せば?

431:デフォルトの名無しさん
10/03/15 17:51:49
海の水はどうしてですか?

432:デフォルトの名無しさん
10/03/15 18:10:44
はい

433:デフォルトの名無しさん
10/03/15 18:20:00
TListViewのSubItemがダブルクリックされた時に
いい感じに編集エリアを出す方法を教えれ。

434:デフォルトの名無しさん
10/03/15 21:09:34
>428
そんなファイルができたのみたことないわ。

>429
クラスヘルパ

435:292
10/03/15 23:22:02
>>428
DBアプリでBDEが作るテンポラリーファイルだったと思う。
アプリ終了しても残ってたら削除しちゃって大丈夫のはず。

436:デフォルトの名無しさん
10/03/16 14:22:20
>>433
ダブルクリックされたら動的に生成すれば素敵やん

437:デフォルトの名無しさん
10/03/16 17:15:17
編集エリアって何??

438:デフォルトの名無しさん
10/03/16 19:08:45
ああもう説明めんどくさい
こんな感じ
URLリンク(www1.axfc.net)

URLリンク(www.codeproject.com)
これをサル移植したけど、いんだかわるいんだか。

439:デフォルトの名無しさん
10/03/16 19:18:20
わるい

440:デフォルトの名無しさん
10/03/16 19:49:02
がっかり

441:デフォルトの名無しさん
10/03/16 20:49:37
わかる

442:433
10/03/16 22:33:14
くそう
せっかく作った(?)のだがウケが悪かったか。

443:デフォルトの名無しさん
10/03/17 02:35:29
がんばれ!ベアーズ

444:デフォルトの名無しさん
10/03/17 09:32:14
ふるぅ

445:デフォルトの名無しさん
10/03/17 15:11:13
それゆけ!レッドビッキーズ

446:デフォルトの名無しさん
10/03/17 20:31:10
コンボボックスのOnMouseLeaveがなんだか変で困っています。
コンボボックス上でマウスを動かすたびにすさまじい
回数OnMouseLeaveイベントが発生します。
エディット等ではなりません。

フォームにコンボボックスとメモだけ貼り付けて、
コンボボックス上でマウスを動かすと、
メモの行数がどんどこ増えていきます。
procedure TForm1.ComboBox1MouseLeave(Sender: TObject);
begin
Memo1.Lines.Add(IntToStr(Memo1.Lines.Count));
end;

環境はDelphi2010です。
なにかうまい対処法はないでしょうか…?

447:デフォルトの名無しさん
10/03/17 21:18:44
ほんとだ、MouseMove並みに呼ばれるなw
飛んでくるウィンドウメッセージ調べたら実際に大量に飛んできてるからVCLのバグとかではなさそうだが・・・・

448:デフォルトの名無しさん
10/03/18 05:12:59
とりあえずの対処としてはイベントの中でFindVCLWindow(Mouse.CursorPos)<>Senderをチェックするのが手っ取り早そう。

449:デフォルトの名無しさん
10/03/18 15:27:19
>>446
とりあえず原因はわかったけど書くと長くなるので対処法だけ
StyleをcsDropDownListにする、これだけ
csDropDownで使う必要がある場合はちょっと面倒なことになるけど

>>448
当たり前だけど全部TComboBox宛の正規のメッセージだから意味がない
違うコントロール宛のメッセージが誤配されてるわけじゃないからね

450:446
10/03/18 16:08:58
ありがとうございます。
やりたかったのは、「自作コンボボックスでMouseLeave時にヒントを隠す」
というものでしたので、無駄にメッセージは飛んできますが、対症療法的に
↓みたいな感じにしてみました。

procedure TMyComboBox.WndProc(var AMsg: TMessage);
begin
 if (AMsg.Msg = CM_MOUSELEAVE) then
 begin
  // 自分自身の上にカーソルがあるときは捨てる
  if (FindVCLWindow(Mouse.CursorPos) = Self) then
  begin
   Exit;
  end;

  // ヒント隠す処理
  :
 end;

 inherited;
end;

ちなみに気が付いたのは、コンボボックスのCustomHintにTBalloonHintを
割り当てたときに、激しくヒントがちらついたためです。
仮にバグではないにしても、実用上問題があるような…。

>>449
ユーザーの入力で絞込み、みたいなことをする必要があるので、
csDropDownにしなくてはならないのです…ジレンマです。
エディット部分が何か悪さしているのでしょうか?

451:デフォルトの名無しさん
10/03/18 17:12:30
Delphi で書かれたアプリがあるんですが
PC 環境を入れ替えたら一部(かつメイン)のファイル出力が出来なくなってしまいました
それ自体は '06-07 ぐらいで開発が止まっています
自分の環境は XP で、最近クリーンインストールしたばかりです
ファイアウォールでの出力禁止はしていません

症状は
「ファイル」メニューから「別名でファイル保存」を選択
ファイル出力のダイアログは出ず、メニューの「別名で…」が選択不能の状態になる
エラーメッセージやイベントログへの吐き出しはありません

替わりになるようなソフトが他にないため、バージョンを遡って試したり
関連情報をググったりしていますが正直お手上げ状態です…
スレ違いかと思いますが、少しでもヒントいただければ助かります

452:デフォルトの名無しさん
10/03/18 18:20:56
>>450
本筋とは外れるけど、フィルタリングみたいなことするならComboBox不向きじゃね?
TEditとTListBoxの方がいい気が

453:デフォルトの名無しさん
10/03/18 21:14:18
>>451
MLで聞いた方が早い気がする。
作者が参加している確率高いだろうし。

454:デフォルトの名無しさん
10/03/18 23:07:43
>451
互換モードでWin2kなり何なり指定してみては?あとは作者に聞くしかなかろう。
Delphiだからどうこういう問題じゃないと思うが。

455:451
10/03/19 00:07:39
>>453-454
レスありがとうございます

そうですね、作者とやりとりできれば最善なんでしょうが
東欧の人だし自分も英語に自信がなく…
ソースは公開されているので、もうちょっとやれるとこまでやってみます

456:デフォルトの名無しさん
10/03/19 07:20:27
ソース公開されてるならリンク書いておけば見てもいいと思う奴もいるだろうに

457:デフォルトの名無しさん
10/03/19 08:58:12
オープンソースなら自分で直せよ

458:デフォルトの名無しさん
10/03/19 10:18:39
>>451
その手の問題って大抵互換モードで解決できるがダメか?
そもそもオープンソースでファイル出力に問題あるとわかっているなら
そこ書き換えるだけじゃないか?

459:デフォルトの名無しさん
10/03/19 22:52:13
あーそうですね

460:451
10/03/19 23:20:30
件のソフトは初代氏と後継氏の二人?がメインで
最新版ソースには初代氏オリジナル部分は含まれず「必要だからここでDLしてくれ」的指示が入っていました
しかし指定サイトは消滅済み
結局、初代氏サイトの旧版ソース(丸ごと)に行き着きました
そこから必要部分をきれいに引き抜けるかどうかは、いまのところ不明
ちなみに初代氏exeのファイル出力はOKでした…。使い勝手も初代と最新で一長一短

とまあ、オープンでも時間が経っていると色々あるんだなぁと思った次第です
以上報告でした。以後名無しに戻ります

461:デフォルトの名無しさん
10/03/20 00:40:52
なんか突っこむ気も起きない
帰ってくれるようだから何も言わないけれども

462:デフォルトの名無しさん
10/03/20 11:05:05
コンポーネントのあるイベントに引数を追加したい時って
コンポーネントを継承した新たなコンポーネントを作らないといけない?
それとも、イベントをオーバーライドして普通のプロシージャーみたいな
使い方って出来る?

463:デフォルトの名無しさん
10/03/20 11:35:48
そのイベントってそのクラス内から呼ばれるんだろ?
だったら持たせたい引数をクラスのメンバーにしてやればいいんじゃないの?

464:デフォルトの名無しさん
10/03/20 11:52:46
>使い方って出来る?
無理です。

OnClick(Sender)に引数追加しようとしたら
呼び出し側もOnClick(Sender, data)とやらないといけないから
どうしてもコンポ側にも手を入れないといけないので。

465:デフォルトの名無しさん
10/03/20 16:36:32
Sender に無理やりポインタ渡すとかの話かと思った。

466:デフォルトの名無しさん
10/03/20 19:25:03
>>462
呼び出し元コンポがそのイベントを呼ぶためにClickやDoClickなどのメソッドを定義していて、
なおかつそれがvirtual、dynamic、messageで宣言されているならオーバーライドできると言えなくもない

実際にClickやDblClickなどのメソッドは仮想メソッドだから、
事実上OnClickやOnDblClickなどの呼び出しはオーバーライドできるし、
それがなくてもウィンドウメッセージがイベントの起点となっているような場合は
そのメッセージハンドラをオーバーライドしてやれば同じことができる

467:デフォルトの名無しさん
10/03/21 11:59:23
>>462
コンポーネントのイベントハンドラから、引数を追加したイベントを発行するってのは?

れい
type TNotifyEventEx = procedure (Sender, Option : TObject) of object;

...

property OnNotifyEx : TNotifyEventEx;

...

procedure THoge.HogeNotifyEvent(Sender : TObject);
var
uge : TUge;
begin
if Assigned(Self.OnNotifyEx) then begin
uge := TUge.Create;
Self.OnNotifyEx(Sender, uge);
uge.Free;
end;
end;



468:462
10/03/21 12:36:02
皆さん、レス有り難うございます。
自分にはレベルの高い話の気がしないでもないですが、
出来る前提で色々試そうとも思います。


469:デフォルトの名無しさん
10/03/21 17:18:14
具体的に何したいんよ
それによっては引数なんか追加しなくてもいい気がする

470:デフォルトの名無しさん
10/03/21 18:15:39
普通に Sender だけで何が不足なのかな?
イベントハンドラ内で Sender を通してそのオブジェクトが特定できれば、public な
プロパティーやらフィールドにアクセスするのは簡単だろうに・・

471:デフォルトの名無しさん
10/03/21 22:16:51
あなたには聞いてませんからw

472:462
10/03/21 23:10:05
ListViewのSubItemの編集をしたくてググったり
MLの過去ログ見たりしたんだけど、編集するセルの
ところにEditを出す方法しか見あたらないんで、
Draw系のイベントにstringの引数を追加したら
簡単に出来ないかなと思って。

473:デフォルトの名無しさん
10/03/21 23:11:13
あなたに回答してませんから

474:デフォルトの名無しさん
10/03/21 23:53:45
あなたに答えてませんから

475:デフォルトの名無しさん
10/03/22 08:02:06
DelphiのGUIアプリから、ApacheHTTPサーバにアクセスし、様々な情報を
やりとりしたいです。

使えそうなコンポーネントありますでしょうか?
(Delphi2010 Pro版を使っています)

476:デフォルトの名無しさん
10/03/22 08:43:55
>>476
Indy?

477:デフォルトの名無しさん
10/03/22 08:44:42
安価違い。>>475だた

478:デフォルトの名無しさん
10/03/22 09:02:02
>>476

説明不足ですみません。
私が探しているのは、Indy(など)の上位層になり、例えばフォームにあるTStringGridのデータとか
TEdit.TextなどをまとめてXMLエンコードしIndyに渡すようなコンポを探しています。
フォームとIndyの中間に位置するようなコンポです。

479:デフォルトの名無しさん
10/03/22 12:25:26
冗談だよね

480:デフォルトの名無しさん
10/03/22 13:20:03
いったい何がしたいんだw

481:433
10/03/22 16:24:22
>>462
>ListViewのSubItemの編集をしたくてググったり
おまえは俺か。
URLリンク(cc.embarcadero.com)
ここのは、キャプションの編集を横取りするタイプ。
BCCの文法が混じっていてコンパイル通らないという
サンプルとしていいんだかわるいんだか。


482:デフォルトの名無しさん
10/03/22 17:26:51
>>478
渡すだけとかそんなの自分でコーディングすればええやん
10行もあれば書けるでしょ…

483:402
10/03/22 21:43:34
すみません。サポート窓口に聞くまでもなく自己解決しました。
結局、店頭で購入した場合は「指名ユーザ使用権」であり、
このライセンスなら、自分の所有する複数のPCにインストールOKでした。

定義されていたのは、下記の3カ所。

License_ja.rtfの第2条
「(略)使用証書で他の種類の権利の取得が特定されていない限り、
お客様の取得した権利は指名ユーザー使用権です。(略)」

License_ja.rtfの第2条第3項
「(略)指名ユーザーが本製品の使用を許可された唯一の個人である場合、
適正な数のコンピュータに本製品をインストールすることができます。(略)」

Database Software and Developer Tools Licensing
URLリンク(www.embarcadero.com)
「指名ユーザー ライセンスは、特定の個人に使用権が与えられるライセンスです。
ソフトウェアは複数のコンピューターにインストールして使用することができますが、
同時に 使用できるのは1つのみです。指名ユーザーライセンスを、
複数のユーザーで共有したり譲渡することはできません。
現在、多くのCodeGear開発ツール が、このライセンス形態を採用しています。」

これで安心してノートPCにもXPmodeにもインストールできます。

みなさんコメントありがとうございました。
では名無しに戻ります。

484:デフォルトの名無しさん
10/03/22 22:32:58


485:デフォルトの名無しさん
10/03/25 14:15:19
TPrinterを使用して印刷しているのですがこの場合印刷データを
ファイルに保存することは出来ないのでしょうか?

TPrinterはBeginDocの時にヌルクリアしたDocInfoを使って
StartDocを呼び出しているのでlpszOutputを指定する方法が無く困っています。
なにかいい案がありましたらお願いします。

486:デフォルトの名無しさん
10/03/25 15:19:48
dekimasu

487:デフォルトの名無しさん
10/03/26 01:19:42
TPrinterから派生したクラスを作って、そのインスタンスをSetPrinterで設定するとか。

488:485
10/03/26 08:42:22
>>487
それも考えたのですがTPrinterを使う他のコンポーネントが存在しており
TPrinterは1プログラム1インスタンスで動作するので躊躇していました
(印刷処理以外でもプリンタの状態確認にTPrinter()を使ってます)

派生したクラスを同時に使っても問題無いのでしょうか?

489:デフォルトの名無しさん
10/03/26 15:05:04
質問です。Delphi2010にて、"Generics.Collections"をusesして
ジェネリクスなオブジェクトのリストのコレクションのメンバにアクセスしたとき、
コンパイルは正しくとおって実行してもエラーなく動作するんですが、左上のエラーが消えません。
例えば TObjectList<TForm> だと、

FL:=TObjectList<TForm>.Create;
FL.Add(Form1);
FL[0].Caption:='abc';

というようにメンバにアクセスすると、コンパイルは正しく通るのですが左上のエラーの欄で

!'TObejectList<TForm>'hは'Caption'という名前のメンバを含んでいません。

というようなエラーが消えません。
どういう理由があってこのような状況になってるか、どなたかご教示いただけないでしょうか?

490:デフォルトの名無しさん
10/03/26 20:15:43
コンパイラは最新だがIDEは最新じゃない、と思っておいた方がいい

491:デフォルトの名無しさん
10/03/27 00:07:38
行き詰っているので相談させてください
環境はDeklphi2007です。
delphiでDBの操作ソフトの修正に関わっているのですが、コンパイルすると
SrtingtoTdatabaseは互換性がありません
とエラーがでてとまります。
変数(A,B,C,D)
という行があり、Aは同じソースファイルの中でString宣言、BはTdatabese
宣言、C,Dは不明でA,Bの宣言を書き換えても駄目でした。
元々はDelphi6で前任者が作成したものを小生がXpで使用する為に2007で
コンパイルしています。6の環境は残っておらず、前任者とも連絡が取れません。
C、Dの宣言を探す以外になにかよい解決は無いでしょうか?

492:デフォルトの名無しさん
10/03/27 01:06:58
>488
普通に印刷するときは通常の(デフォルトの)TPrinterのインスタンスを、ファイルに出力するときは
それ用のTPrinterからの派生クラスのインスタンスを、それぞれとっかえひっかえでSetPrinterすれば
いいんじゃないの?

>489
普通にコンパイルするときとエラーインサイトやコードナビゲーションで使用するコンパイラは
違うものなのでそういう現象がおきる。

>491
プログラミングとかDelphiとかそういうものを理解してる?わからないならわからないって上司に
相談したほうがいいと思うが。できなければソフト屋に外注に出すとか。さもなきゃここに
晒すしかない。すくなくとも
> 変数(A,B,C,D)
> という行があり、
とか
> C、Dの宣言を探す以外になにかよい解決は無いでしょうか?
とか意味不明にもほどがある。

493:デフォルトの名無しさん
10/03/27 03:37:29
うるせーばか

494:デフォルトの名無しさん
10/03/27 11:06:13
>>492
上司に相談して解決するなら最初からここにくる訳が無い。
1の書き込みを鵜呑みにしてここに書いた俺が馬鹿だったって事だな。
金輪際来ませんのでご安心ください。。


495:デフォルトの名無しさん
10/03/27 16:15:22
よかった。もう来ないんだって。

誰だって気違いの相手はしたくないもんね。

496:デフォルトの名無しさん
10/03/27 21:12:04
マジレスすると、おそらく関数のパラメータ並びが変更されているのでそれを直す必要がある。
必要な情報は関数のパラメータそれぞれの型とその意味、現在指定されている(エラーになっている)
パラメータそれぞれの型とその意味(内容)。だからCとDの型とその内容は必須な情報。でも
Ctrl+クリックで探せないか?

497:デフォルトの名無しさん
10/03/28 01:06:08
>>489 明示的にTFormにキャストすれば?

498:デフォルトの名無しさん
10/03/28 03:32:37
それやったらジェネリクスの意味ないだろ
馬鹿か?

499:デフォルトの名無しさん
10/03/28 07:55:03
と、馬鹿が申しております。

500:デフォルトの名無しさん
10/03/28 13:17:30
ジェネリクスとTObjectListの区別がつかない

501:デフォルトの名無しさん
10/03/28 14:17:23
>>499
それ本気で言ってるとしたら頭疑うわ
ジェネリクスって何だか分かってる?

502:489
10/03/28 22:37:31
>>497
はじめはTListやTObjectListに入れてキャストしたのをpropertyにしてたんですけど、
ダウンキャストをしたくないのと、getter setterを一々書くのが面倒なんでジェネリクスを使ってるんですよ。

とりあえず割り切ってエラーは見ないように割り切る他ないんでしょうかね。

503:デフォルトの名無しさん
10/03/28 22:39:27
いろいろ書き直してたら日本語おかしいまま書きこんでしまった・・・
最後の行は脳内修正して読んでください・・・

504:デフォルトの名無しさん
10/03/28 23:11:19
まぁエラーインサイトとかは他でも誤動作するし、気にしすぎないほうがいいと思う。

505:デフォルトの名無しさん
10/03/29 02:38:37
エラーインサイトは実装当時から切ってるな
役に立った試しがない

506:デフォルトの名無しさん
10/03/29 21:54:11
お世話になります。
TMemoで行や桁があふれたときだけスクロールバーを出すにはどうしたら良いのでしょうか。
ScrollBarsをBothに設定すると常に出っぱなしで見苦しいのです。
他のコントロールだと自動で出したり引っ込めたりするのに、なぜ?

507:デフォルトの名無しさん
10/03/29 22:02:16
んー自分でOnChangeイベントあたりで制御するしかないんじゃないかなぁ。何でそうなっているかって?
WindowsのEDITコントロールがそう作られているからだな。

508:デフォルトの名無しさん
10/03/29 22:57:00
>>506
SynEditなんてどう?などと適当なことを言ってみる。

509:デフォルトの名無しさん
10/03/30 01:27:19
>>507
そうなんですか…。
Delphiの構文さえ理解してないレベルの自分には難しそうです。
>>508
SynEdit調べましたが、ちょっと用途が違うような。
ただシンプルにテキストが入出力できれば良いので。

ふと思い立って、TRichEditならどうかと。
これはMemoと違い、あふれたときだけスクロールバーが出るじゃありませんか!
これでヨシ!と思ったんですが、今度はポップアップメニューが出ません orz

510:デフォルトの名無しさん
10/03/30 02:43:38
PopupMenuを設定すれば?

511:デフォルトの名無しさん
10/03/30 09:01:56
>>510
やってみます。スクロールバーを出すよりは難しくなさそうなので。

512:デフォルトの名無しさん
10/03/30 22:44:01
Delphi6 Personalを使用中
ヘルプが変です
キーワード検索すれば出てくるけど、VCLリファレンス目次のルーチン一覧(カテゴリ別)には
見当たらない項目がいっぱいあるんですけど、これは仕様でしょうか
FileAge関数とか、カテゴリMBCSユーティリティの全部とか

MBCSユーティリティは重要視されてないのかな

AnsiCompareFileName関数の説明もよく分かりません
・ AnsiCompareFileName 関数は,大文字と小文字を区別しないで S1 と S2 を比較します。比較演算は,現在のロケールに基づいて行われます。
AnsiCompareText('AA','aa') { 0 を返す }
AnsiCompareFileName('AA','aa') { 0 ではなく 1 を返す }
大文字と小文字を区別しないはずなのに…?

AnsiLastChar関数は、文字列処理ルーチン(ヌルで終わる)に入れるべきかと

513:デフォルトの名無しさん
10/03/31 10:58:29
最小化した時も処理を続けていて、その時のデータに応じて
タスクバーに表示される文字を変更したいんだけど
どうしたらいいですか?


514:デフォルトの名無しさん
10/03/31 11:11:06
フォームのCaptionかApplication.Titleを変更する。

515:デフォルトの名無しさん
10/03/31 13:31:53
>>512
そんな10年も前の終わったバージョンに対して文句言うとか頭おかしいんじゃないでしょうか

516:デフォルトの名無しさん
10/03/31 18:19:57
デザイン時にTPageControlを右クリックすると
「ページ新規作成」や「ページの削除」といった
メニューが表示され、追加・削除が出来ますが
これはどのように実現したらよいのでしょうか?

「子・孫を持つパネル」のような自作コンポーネントを
作成していて、その子・孫パネルを追加するのに、
メニューでやりたいなと思った次第です。

517:デフォルトの名無しさん
10/03/31 19:32:09
目で見たものを真似できない人は何も作れないと思う

518:デフォルトの名無しさん
10/03/31 21:33:33
つまり>>517は自分は何も作れないと宣言したかったんですね、わかります
わかりますがそういうのはチラシの裏にでも書いて下さい

519:デフォルトの名無しさん
10/04/01 02:43:49
>>518
わざわざ自己紹介ご苦労さん

520:デフォルトの名無しさん
10/04/01 03:42:49
顔真っ赤だよ?どうしたの?

521:デフォルトの名無しさん
10/04/01 06:50:33
と、顔を真っ赤にして申しております。


522:デフォルトの名無しさん
10/04/01 09:14:51
>>520
つ 鏡

523:デフォルトの名無しさん
10/04/01 12:10:51
ListViewのことで質問です。
セルをクリックした時に何行目何列のセルかを知りたくて
下記のサンプルを見つけました。
Item部のCaption文字列の上とSubItemの部分をクリックした時はいいのですが、
Item部の余白部分をクリックすると何も取得出来ません。
Item部のどこをクリックしても取得出来るようにするにはどうしたらいいですか?

var
wCtrl : TListView;
wStruct: TLVHitTestInfo;

begin
 wCtrl:= (Sender as TListView);
FillChar(wStruct, SizeOf(TLVHitTestInfo), 0);

// マウスカーソルの座標を取得
GetCursorPos(wStruct.pt);
// スクリーン座標からクライアント座標に変換
wStruct.pt:= wCtrl.ScreenToClient(wStruct.pt);

//repeat
wStruct.pt.X:=10;
// 選択された項目の判定
if wCtrl.Perform(LVM_SUBITEMHITTEST, 0, LPARAM(@wStruct)) >= 0 then
with wStruct do
begin
Item:=(Sender as TListView).Items.Item[iItem];
end;


524:520
10/04/01 13:33:09
>>521-522
>>518に向けて書いたんだけど、ひょっとして思い当たる節でもあったの?

525:デフォルトの名無しさん
10/04/01 13:36:00
結局>516が分からない馬鹿しかいないんですね
レベル低いですねもう来ません

526:デフォルトの名無しさん
10/04/01 17:07:10
逆ギレ乙です

527:デフォルトの名無しさん
10/04/02 01:27:09
なんつーか、回答する気も起こらないつまらん質問ってあるよね。
PopupMenu の使い方を知らんのか、動的にコンポつくる方法が知らんのか
こっちが勝手に想像するのも面倒くさいような質問とか。

528:デフォルトの名無しさん
10/04/02 04:22:45
527 はこのスレの意義を理解できないのか?

>Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
>もしくは質問者自身何が何だか分からない質問を
>勇気を持って書き込むスレッドです。

回答する気にならないのなら、黙っていなさい。無理にコメントを書くことは無い。

529:デフォルトの名無しさん
10/04/02 07:08:59
>516が知りたいのはToolsAPI(OTA)の話だと思う。ListViewとかTreeViewのように
デザイナ上でそのコンポーネントのカスタム項目を使えるようにしたい、とか。Inside Delphi
あたりに載ってたような。

530:デフォルトの名無しさん
10/04/02 08:01:18
>>528
拍手ーー

531:516
10/04/02 09:01:08
>>529
仰るとおりです。デザイン時の話です。
ToolsAPIというのは初めて聞きました。ググって見た感じでは
まさにそれっぽいのですが、ちょっと私には敷居が高そうだなあ…。

とりあえず子パネルのSetParentと親パネルのValidateInsertを
overrideして他のコンポーネントを(に)置けないようにして
デザイナ上で貼り付けさせるとかしてお茶を濁すことにします。

532:デフォルトの名無しさん
10/04/02 10:35:21
Source\ToolsAPIとSource\Win32\Property Editorsを参考に(場所はDelphiの
バージョンで違ってくるかも)。

533:デフォルトの名無しさん
10/04/02 13:02:05
もう少しちゃんと説明して下さい

534:516
10/04/02 13:33:33
IDが出ないのをいいことに質問者のフリをして煽る人がいるみたいですね。
まあ句読点とかの文体が違うので、皆さんも分かってるとは思いますけど…。

535:デフォルトの名無しさん
10/04/02 14:41:00
13:33:33

536:デフォルトの名無しさん
10/04/02 15:15:12
>>534
そんなのどうでもいいし
帰れ

537:523
10/04/02 23:12:57
また、Listviewで質問なんだけどmousedownとかうpを
受け付けてもらえないんだけど、なんか設定とかある?

538:デフォルトの名無しさん
10/04/04 20:53:06
エクセルオートシェイプの矢印をTImageやTFormに描き、
bmpで保存したいのですが、それは加納ですか?
というか、滑らかで綺麗な矢印がTImageに描ければ
いいだけなんですけど・・・
誰かソース書いてもらえません?

539:デフォルトの名無しさん
10/04/04 21:04:59
化膿です

540:デフォルトの名無しさん
10/04/04 22:53:11
適当なグラフィックツールで2倍とか4倍に描いたものを縮小してBMP形式で保存して
取り込めばいいんじゃね?

541:デフォルトの名無しさん
10/04/06 11:56:00
オートシェイプをPrtScnキーで取り込んでMSペイントで保存してTImageでStretchする。

542:デフォルトの名無しさん
10/04/06 23:29:32
フォームの上にパネルを1個置き、パネルのボーダースタイルをbsSingleにします。
そのパネルの上にボタンを置きます。ボタンのアンカープロパティを[akRight,akBottom]に設定します。
で、フォームの右クリックメニューから「エディタで表示」して、「フォームを表示」で元に戻します。
これを繰り返すとボタンの位置がどんどんずれていきます。マジで堪りません。
プロジェクトを開くたびにどんどんおかしくなっていきます。


543:デフォルトの名無しさん
10/04/06 23:35:15
パネル以外のコンテナでもページコントロールのBorderWidthを設定したり、
スクロールボックスでも発生します。アンカーはデフォルト以外に設定すると
位置がずれていたり、サイズが変わったりします。
ポトペタが売りの製品で基本の部分でバグるなんてあまりにもひどすぎます。
クソツールのようです。



544:デフォルトの名無しさん
10/04/07 01:53:38
そういうのはオッチャスレでやってください
ここは質問スレです

545:デフォルトの名無しさん
10/04/07 02:00:21
一応手持ちの歴代Delphi(6~2010)で試してみたけど発生しないなw
捏造もオッチャスレの受け持ちなんでやっぱりあっちでどうぞ
バージョン書いてない時点で結構怪しかったけど
もしくはパッチあててないだけという情けない落ち?

546:デフォルトの名無しさん
10/04/07 09:52:03
>>545
まじで言ってます?2010でも2005でも発生しますよ。それ以前は試してません。
「エディタで表示」ってのはフォームのDFMをテキスト形式でみるメニューのことです。
で、「フォームを表示」で元に戻すと、1回やるたびに4ピクセル分ずれます。
4ピクセルってボーダーの幅(GetSystemMetrics(SM_CXBOARDER)で、その分、クライアント領域が
小さくなるのにAnchorsなどの配置処理で考慮に入れてないんじゃ?と思ってます。
ソース追っかけ中。

547:デフォルトの名無しさん
10/04/07 10:01:07
環境によって変わるのでわ?

自分もPanelの中に貼り付けたコンポをalclientにしているのに高さが追随してくれない現象を体験しているので。
この現象が出るのはXPでW2Kは問題なしだが、自分以外のXPマシンでどうだかは知らない。
(Del7pro/W2Kでコンパイル/パッチは全部当ててるはず)

548:デフォルトの名無しさん
10/04/07 10:07:20
自分の試した環境ではWinXPモードとWin7とWin2000で発生します。
ここではボタンを配置しましたが、Anchorsプロパティをデフォルトの[akLeft,akTop]以外に
設定したコントロールすべての位置、サイズがどんどんずれていきます。
コンテナの方はパネル、スクロールボックス、ページコントールのタブシートなどです。



549:デフォルトの名無しさん
10/04/07 13:17:22
2k+D7Pro発生せず。
他のコンポでも試したがなんもおこらんよ。
手順は>>542の通りやった。


550:デフォルトの名無しさん
10/04/07 13:42:02
XP+2010で発生せずだなー。
Turboもあるけど試してない

551:デフォルトの名無しさん
10/04/07 14:47:13
よほど特殊な環境なんだろうな
なのに環境情報は後出し、しかも小出し
解決する気のないただのアホにしか見えない

552:デフォルトの名無しさん
10/04/07 16:41:28
URLリンク(www1.axfc.net)
のコメントDelのSc_100990.zipでアップロードしておきました。5秒で再現できるんですが。
上記の操作を繰り返すとボタンの位置がずれていきます。


553:デフォルトの名無しさん
10/04/07 18:38:24
2k+D6Per発生せず。
手順は>>542の通りやった。

554:デフォルトの名無しさん
10/04/07 19:23:08
xp(sp3)+d7ent(sp1)だけど発生しなかった。

HDDを交換でXPをクリーンインストールしたいんだけど
D7のライブラリパスとかを一発で元に戻す事ってできる?

555:デフォルトの名無しさん
10/04/07 20:24:04
>>553
んー。発生しませんか。お手数おかけました。ありがとうございます。
しばらくもうちょっと調べてみます。


556:デフォルトの名無しさん
10/04/07 22:17:01
>554
該当レジストリを持っていくっていう手もあると思うが>設定の引っ越し。

557:デフォルトの名無しさん
10/04/07 22:55:14
xp sp3+turbo delphiで発生しますた

558:デフォルトの名無しさん
10/04/08 10:51:28
発生してた奴はOSとDのバージョンだけじゃなくて
ウィンドウ周りに関する環境設定情報を全部書き出せ

559:デフォルトの名無しさん
10/04/08 10:55:20
そんな書き方じゃまともな情報は上がってこないぞ

560:デフォルトの名無しさん
10/04/08 17:14:14
今のところ再現画像、再現動画等なし

561:デフォルトの名無しさん
10/04/08 19:32:37
オレのところでも発生したわ。
557と同じXPSP3+Turboだけど。

bsSingleとかで検索したら、似て非なる事例が何個か出てくる。

562:デフォルトの名無しさん
10/04/09 11:22:49
自演、乙。
オッチャ盛況だよ。

563:デフォルトの名無しさん
10/04/09 16:00:49
何個かしかないなら挙げればいいのに、しないのは何故なんだろうね

564:561
10/04/09 16:55:56
Win98+Del6Per(XPSP3上のVirtual PC 2007)では発生しなかったわ。
アンカーの両側がオンだと、繰り返すたびにボタンが縮んでいくのが笑える。

まあ確かに、くだすれの話題ではないか。

565:デフォルトの名無しさん
10/04/11 13:25:46
Del7のVCLに直接手を入れて使ってる人いる?
VCLってリコンパイルできるのかな。

566:191
10/04/11 14:21:39
超初心者スレなのにみんなレベル高すぎでついていけませんT_T

567:デフォルトの名無しさん
10/04/11 14:39:48
途中で書き込んじゃった。
最近のバージョンって書籍でリファレンスって出てないんでしょうか。
自分としては首っ引きでページ捲り捲り勉強する方がしっくり来るのですが…
昔はパッケージにちゃんと含まれてたんですよね?

568:デフォルトの名無しさん
10/04/11 15:30:19
>>565
できる
>>566-567
印刷

569:デフォルトの名無しさん
10/04/11 20:14:09
コミュニケーションのとれないおっさんだなw

570:デフォルトの名無しさん
10/04/12 00:41:45
おっさんきもい

571:デフォルトの名無しさん
10/04/12 13:10:21
おっさんかっこいい

572:デフォルトの名無しさん
10/04/12 14:25:42
あっちゃんかっこいい

573:デフォルトの名無しさん
10/04/13 11:51:03
>>569

574:554
10/04/13 22:35:55
ライブラリパスって普通にテキストでコピーしとけば良かったのね。


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