[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 02/07 11:17 / Filesize : 190 KB / Number-of Response : 625
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Delphi初心者のための寺子屋



1 名前:デフォルトの名無しさん mailto:sage [2005/11/23(水) 23:31:08 ]
Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。


175 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:19:34 ]
>>173
BDE使ってるならEDBEngineErrorでcatchすれば
エラーの詳細が取れるけど。
どうやって接続してるの?

176 名前:173 [2006/10/19(木) 11:24:15 ]
>>174
すみません、もっと根本的な問題だったようです。
やりたいことは、レコードロックによるタイムアウトエラーを取得したいのですが、
タイムアウトはEDatabaseErrorではないようです。

タイムアウトはEDatabaseError以外のどのExxxErrorでとれるのでしょうか?

177 名前:173 [2006/10/19(木) 11:25:55 ]
>>175
データモジュールにADOConnectionを貼り、ADOQueryで実行しています。

178 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:35:44 ]
>>176
そこまで細かいことは自分で調べちゃった方が早くね?

179 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:46:42 ]
>>176
on E: Exception で捕まえて、E.ClassNameを調べる

180 名前:173 mailto:sage [2006/10/19(木) 15:30:24 ]
>>178、179
ありがとうございました。
調べたところ、EOleExceptionと出ました。



181 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 19:10:27 ]
SyncObjsの中にあるTCriticalSectionですが、
EnterとAcquire、LeaveとReleaseの違いは何ですか?
いろいろ試した限りでは同じ処理に見えるのですが・・・

182 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 22:59:27 ]
>>181
ヘルプ見た?
その上で動作が同じだと判断するなら同じなんです
深く考えすぎないほうが良いかと

183 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 22:23:11 ]
>>182
TCriticalSectionのページに行こうとしても、
リンクがみつかりません って出るんですよ
無料のDelphi6だからかな? まぁ気にしないことにします



184 名前:デフォルトの名無しさん [2006/11/07(火) 11:13:41 ]
QuickReport印刷内容をビットマップ(Jpegでもおk)に落とす方法教えて下さい。

185 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 18:24:07 ]
そういうプリンタドライバがあるよ

186 名前:デフォルトの名無しさん [2006/11/23(木) 13:53:16 ]
リレー動作のプログラムなんですが64個のリレーを
チェックボックスに分けて選んでリレーを
ON/OFFしたいんですが

procedure TForm1.Button1Click(Sender: TObject);
begin
Relay[Time]:=True;
Time:=Time+1;

RelayChange;
end;

これからどう増やせばいいでしょうか?
どうかよろしくお願いいたします。

187 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 20:25:23 ]
>>186
日本語でおk

188 名前:デフォルトの名無しさん [2006/11/25(土) 17:27:49 ]
IsDelphiで、このソフトが、Delphi製とでるのですが、
www.highdots.com/css-tab-designer/
オフィスっぽいGUIは、どんなコンポーネントを使っているんでしょうか?

189 名前:188 [2006/11/25(土) 17:28:27 ]
すみません。超初心者スレと間違えました(汗

190 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 17:35:38 ]
コンストラクタ内で例外を発生させるのってまずい?

自作クラスのコンストラクタの引数で作業フォルダのパスを指定して
フォルダが存在しなければ作成ってのをやろうと思うんだけど、
try〜finallyの手前でCreateすると例外が発生したときに例外を捕まえられないし
try内の先頭でCreateするとコンパイルで「初期化されていない可能性があります」と警告が出る。

コンストラクタは内部変数の初期化だけにしておいて
作業フォルダのパス指定は別メソッドにしておいたほうがいいのだろうか・・・

191 名前:デフォルトの名無しさん mailto:Tage [2006/12/25(月) 19:14:46 ]
>>190

try
 Create
 try
  hoge
 finally
  hoge
 end;
finally
 hoge
end;

192 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 14:20:58 ]
>190
Delphiにおいてはコンストラクタ内で発生して捕捉されない例外は
コンストラクタの失敗を意味する。

193 名前:デフォルトの名無しさん [2007/01/06(土) 19:54:05 ]
hosyu



194 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 03:40:04 ]
2chブラウザのJaneみたいな動かせるメニューバーってどうやって作ったらよいのでしょうか。

195 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 03:58:26 ]
>>194
TCoolBar のバンドの .Control に TToolBar 設定して、
TToolBar.Menu に TMainMenu 設定。

196 名前:デフォルトの名無しさん [2007/01/31(水) 17:58:13 ]
Bitmap画像をレイアウト部分はコーディングでなくてポトペタで作成したいのですが、
良い方法はありますか?

QuickReportで良いのですがQuickReportは汎用画像出力が出来ないので...

197 名前:196 [2007/01/31(水) 19:05:07 ]
そういう機能をレポーティング コンポーネントって言うらしいですね。
でもWin32用が無いお。

198 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 23:11:14 ]
>196
日本語でおk

199 名前:デフォルトの名無しさん [2007/01/31(水) 23:15:30 ]
グラフィックソフトとか、ワープロでつくるようなをDelphiでやりたいんじゃないの?
で、最終的に、印刷じゃなくて、画像にしたいと。

200 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 07:58:21 ]
.netを普及させる方法を思いついた!
win32に、WCaption: WideString みたいなメンバを追加して
さらにくそでかく遅いバイナリしか生成できなくする。
これなら.netでいいや、ってなりwin32死滅。


201 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 16:54:35 ]
日本語でおk

202 名前:入門きぼん mailto:sage [2007/03/18(日) 23:52:34 ]
 すみません。教えて下さい。
DelphiTurboExplorerを、サイトからDLして使用したいと考えているのですが、
ユーザー登録をすませても、DLページに行けずに困っています。

それと、フリーのデーターベースであるFirebirdと
繋げられるのでしょうか?
やはり製品版でないと無理なのでしょうか?

自分は、単純に初心者向けプログラムである。
CDやDVDの在庫管理アプリを作りたいだけなんですが、
自分の労力以外は、極力フリーで作りたいと思っています。
可能でしょうか?

宜しくお願いします。

203 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:54:43 ]
www.turboexplorer.com/downloads



204 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 01:06:50 ]
>>203
The page cannot be found

205 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 06:01:06 ]
www.turboexplorer.com/mirror

206 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 11:33:22 ]
>>204,205

HTTP Error 404 - File or directory not found.


207 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 20:46:50 ]

ttp://torrent.borland.com/turbodelphi_jp.exe

208 名前:202 mailto:sage [2007/03/19(月) 21:55:11 ]
>>207

すみません。
やはりHTTP Error 404 - File or directory not found.になります。

みなさん、ありがとうございました。
残念で、悲しいですが、すみませんがDelphiあきらめます。

209 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:07:23 ]
繋がるけどなぁ
www.codegear.com/tabid/144/Default.aspx

210 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:22:27 ]
>203 >205 >209は普通に繋がるね。

211 名前:デフォルトの名無しさん [2007/03/21(水) 07:19:26 ]
普通につながるけど?

212 名前:デフォルトの名無しさん [2007/03/21(水) 23:56:26 ]
条件文がたくさんあって、それらを同じ処理するときはどうしたらいいですか?
ifのあとに条件をズラーッとandでくっつけるしかないのでしょうか?
例えばxが1 3 5 6 7 10・・100と不規則なときに、一定の動作をさせたいです。

213 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 00:14:26 ]
case x of
1,3,5,6,7,10,100: 〜〜';
else
〜〜;
end;



214 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 07:13:44 ]
if x in [1,3,5,6,7,10..100] then XX;
ってのもあるよ

215 名前:デフォルトの名無しさん [2007/03/22(木) 14:14:54 ]

二次元配列があり地図のようになってるとします。

その時に●から一番近い5(複数ある)への経路を求める問題。
マスは30*30
●は(16、16)
0は通れる、1は通れない、4はいやな人
で、5の周りに4がいた場合それは目的の5にはなりません。

000000000000000000000000000000
000000000000000000000000000000
000000111100000000050000000000
000000001100000000000000000000
000000000100541110000000000000
000000000000111111000000000000
000000000000000000000000000000
001100000000000000000000000000
00000000000000●000000000000000
000100000000000000000000000000
000100000000000111111110000000
000000000000000000000000000000
000000500000000000050000000000
000000000000000000000000000000
000000000000000000000000000000

216 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 12:23:28 ]
>>215
2chのレス数じゃ無理w
試しに幅優先探索して書こうとしたら、600行超えたからやめたw

217 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 17:39:42 ]
>>215
たけしのコマ大かと思った・・・。

斜め移動はあり?
地形は固定?
障害物1等のオブジェクトは、定数?

つっこむ所が多々ありそうだなぁ。

218 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 19:35:42 ]
>>215
普通にA*でいいんじゃないの?

>>216
600行はありえん。

219 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 00:12:27 ]
>>217
俺は斜め移動無し、固定でMAPはファイルからそのまんま読み込んだ状態としたよ
んで、今の箇所から上下左右で自分の関数を呼び出して、再起関数にして探してった。
でもこれじゃ全数検索になってしまう。
こういうアルゴリズム習ったけどやり方有ってるか不明

>>218
A*って何?

220 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 04:42:33 ]
工場勤務でブルーワーカなのだが、明日から夜勤なので睡眠時間調整の
暇つぶしに >>215 をやってみた。5時間かかったお。

再帰呼び出しとかは使えないし分からんので、長めになっちゃった。
キュー(FIFO)をやってみようと思って、ポインタとか使ってみたけど訳分からん。

ttp://strawberry.web-sv.com/cgi/up/iuy/nm4383.zip.html
(フォームにボタン1個要)

だって、MC工作機械マクロ言語に再帰呼び出しとかポインタなんて無いよ orz
あ、でも、なんちゃってポインタは出来るかな? #(#10) な感じで。

221 名前:デフォルトの名無しさん [2007/03/25(日) 07:25:37 ]
A Starでやれ

222 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 02:25:05 ]
昔Delphi6触ったときにはたしか標準でフォルダ選択ダイアログってなかったような気がするんですが

TurboExplorerにもなかったりします?

223 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 06:53:37 ]
SelectDirectoryなら昔からあったと思うが?
名前がセレクトフォルダじゃないからダメなの?



224 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:12:04 ]
Delphi6のSelectDirectoryはダイアログの表示位置がずれるバグがあるんだよな

225 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:45:16 ]
バグじゃないよ、たんに場所指定してないだけ。ML の過去ログやら、コンポ
で解決したのがわんさかあったけど、いまは知らない

226 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:54:17 ]
まあ、フォルダのD&Dに対応しとけば、みんなソレ使うから
SelectDirectoryはとりあえずあればいいやみたいなもんだし

227 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 21:40:15 ]
uses
FileCtrl;

procedure TForm1.Button1Click(Sender: TObject);
var
dir: string;
begin
MoveWindow(Application.Handle , Left ,Top ,0 ,0 ,False);
SelectDirectory('表題', '', dir);
Label1.Caption := dir;
end;


228 名前:215 mailto:sage [2007/03/29(木) 09:06:36 ]
>>220
遅くなったがサンクス!
ただ、速度おっそいなぁw

229 名前:デフォルトの名無しさん [2007/03/31(土) 10:40:58 ]
保守

230 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 19:52:37 ]
現在BDEで作成されているものをFirebirdに簡単に変更できるものでしょうか
Firebirdはまだ触ったこともないし、BDEもそのとき玉々作ってみただけの
データベース素人ですが。

231 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 13:26:52 ]
>>230
どういう作りになっているのかにも寄るけど
簡単には無理じゃね。

232 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 20:33:05 ]
>>231
ありがとうございますm(_ _)m
やっぱ作り直しですか。

233 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 20:57:31 ]
いや、普通にコンポーネント貼り付けて作ってるなら
InterBase Data Access に変えるだけで問題ないだろし
そうでないなら、それなりに大変だろうってだけさ



234 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 21:59:34 ]
やってみまふ。

235 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 13:29:14 ]
ヒント: Firebird ODBCドライバ

236 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:04:01 ]
今しばらくは生きていけそうです

237 名前:疑問 mailto:sage [2007/04/16(月) 02:52:02 ]
なんでIntegerとかが予約語になっていないのでしょうか

var
Integer: string;
begin
Integer := 'Double';
Writeln(Integer);
end.


238 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 08:03:01 ]
Integerは予約語ではないけど定義済の型名だから
変数として使うと、
使った後整数型の定義とか、型変換とかで困ってしまうよ

他の型名とか自分で定義する型名も同じ事情があるよ。

239 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 16:19:27 ]
回答になってねぇw

240 名前:デフォルトの名無しさん [2007/04/16(月) 23:21:03 ]
>>237
なんでだろ。
Windows.hとかのCからコンバートしたときのための兼ね合い?
似たようなので、引数でも例外あったような

241 名前:名無し@沢村 [2007/04/17(火) 00:10:20 ]
おみゃーらー♪
Delphiはつまらんぞー!
おみゃーたー、『肥えた語』つー言語があるの知ってる?
おりは知ってるよ。
おりがつくった言語よ。これからh『肥えた語』の時代よ。
URLはここよ↓
www.geocities.jp/hontamagod/
感想を頼むなー♪


242 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 22:52:08 ]
JEDI がDelphi2005にインストールできません。
以前入れたときは確か、すんなり入ったのですが。
..\JEDI\jvcl\run\JvJVCLUtils.pas(7359) エラー: E2010 'Char' と 'string' には互換性がありません
..\JEDI\jvcl\run\JvJVCLAboutForm.pas(115) 致命的エラー: F2063 '..\..\run\JvJVCLUtils.pas' ユニットはコンパイルできませんでした
ほかにも出てきます。
pas は秀丸では欧文フォントで文字化けなしに読めたんですが「TM」とかの特殊文字が
○株みたいに扱われているんでしょうか、Shift-Jis ではChar扱いしてもらえないようです。

OSは Vista
D5 にはインストールされています。
m(_ _)m

243 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:02:28 ]
せめてバージョンくらい書こうよ・・・



244 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:05:38 ]
すんません、JVCL320CompleteJCL197-Build2172.zip でした。

245 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:07:22 ]
なんでそんなに古いのを入れようとしてるの?

246 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:17:26 ]

そんなに古いのー?

247 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:18:12 ]
すみまそん。
しばらくD5で使ってたのでそれをそのままフォルダからインストールしようとしてました。

248 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:19:48 ]
それだとD5でコンパイルされたファイルと混じっておかしくなるんじゃない?

249 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 23:28:30 ]
やっぱそうですか。
はき出す場所が違うからOKだと思っていたのですが、
とりあえず2005には最新版を入れてみます。

250 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 20:28:58 ]
JVCL331CompleteJCL199-Build2551.zip
入れてみましたが状況は変わりませんでした(x.x)

251 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 21:14:09 ]
前にインストールしたときのゴミが残ってるんじゃないかね。
とりあえずJcl*.bplとJv*.bplを削除してみたら?

252 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 21:28:50 ]
ってことは皆さん問題なく入れていたということなんでしょうね。
結局使わない部分っぽかったので修正して無理矢理入れてしまいました。

JvgUtils.pas
function Transliterate(const Str: string; RusToLat: Boolean): string;
コメントアウトで Result := Str;

JvDBGrid.pas
FCharList :=
['A'..'Z', 'a'..'z', ' ', '-', '+', '0'..'9', '.', ',', Backspace{,
'e', 'e', 'e', 'e', 'o', 'o', 'u', 'u', 'a', 'a', 'a', 'i', 'i', 'c'}];
下半分をコメントアウト

JvJVCLUtils.pas
// Text: Char;
Text: string[2];
Char を string に変更

JvStrToHtml.pas
特殊文字 27 個コメントアウト

ありがとうございましたm(_ _)m

253 名前:デフォルトの名無しさん [2007/04/24(火) 21:35:10 ]
Delphi5って、サポートされてたっけ?



254 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 22:06:55 ]
されてる。

255 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 22:44:22 ]
JCL/JVCLって昔試したときマルチバイト文字に対応してなかったような記憶が
あったようななかったような・・・

256 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 23:15:42 ]
コンポーネントによってされてたりされてなかったりだね。

257 名前:デフォルトの名無しさん [2007/06/18(月) 23:36:07 ]
コンポーネントがDesignideを使っててコンパイルできなくなるとかの
問題でずっと悩まされてます・・・
古いIDE組み込み型のコンポーネントって
新しくなるとコンパイルが通らなくなる・・(泣

Designideで悩まない方法はありますか?


258 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 05:33:00 ]
D6パーではHelpに書いてある。互換性の問題

259 名前:ミ,,゚Д゚ミノ ◆A6VzDeLphI mailto:sage [2007/06/19(火) 14:05:42 ]
こんなんでよい?

-- DsgnIntfが見つからない場合 --

コンポーネントをインストールするときに
DsgnIntfが無いといってエラーになる場合があります。

Delphi5からDsgnIntf.dcuのコンパイル済みユニットが
無くなったからこのような現象が起きるそうです。

Delphi6からはDesignIntfという名前に変更されています。

DsgnIntf Unit はおもに、コンポーネントエディタやプロパティエ
ディタを作るときに利用するものです。

「環境オプション/ライブラリパス」に
$(DELPHI)\Source\Toolsapi
を追加してみましょう。

解決するはずです。

本当は、この方法を用いるとプロパティエディタのコードが
実行ファイルに含まれてしまうので、そういう書き方をしている
コンポーネントが悪いので、自分の作る物ではこういう問題が発生しないように
気をつけましょう。

参照────────────────────
[Delphi:42979] Delphi5 変更点
www2.big.or.jp/~osamu/Delphi/browse.cgi?index=42979

260 名前:デフォルトの名無しさん [2007/06/21(木) 20:49:16 ]
Delphi7を使ってます。
designide.dcuが見つからないという
エラーが出てしまいます・・orz


261 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 22:17:40 ]
そうですか

262 名前:デフォルトの名無しさん [2007/06/28(木) 07:12:16 ]
TUIWebBrowserで読み込んだFlash上の入力ボックスで
BackSpaceキーは効くものの
Enterキーがきかないのですが
効くようにすることは可能でしょうか?



263 名前:デフォルトの名無しさん [2007/06/30(土) 08:58:54 ]
>>259
ありがとうございます。
いろいろいじっていて
実行時パッケージでない方でビルドできました。



264 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 22:34:43 ]
ナッキーのdelphi奮戦記面白い
間違いなくナッキーは淫乱

ペイントソフト楽に作れ杉

265 名前:デフォルトの名無しさん [2007/07/04(水) 09:36:13 ]
TShapeじゃなくて、ラインをペタペタ貼るコンポーネントありましたっけ?

266 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:44:58 ]
直線だけなら OnPaintに Canvas.MoveTo Canvas.LineToで簡単に引けるから需要無いかと


267 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:49:35 ]
Delアメ猫だったかの人がフサギコと絡んで、マウスで直線を動かせるようなコンポーネントの原型を作って
どっかにアップしてたように思うのだけど、今検索してもみつからないな

268 名前:265 mailto:sage [2007/07/04(水) 09:55:01 ]
>>266
やっぱ、そうですか。

>>267
>マウスで直線を動かせるようなコンポーネントの原型を作って
欲しいもの、これですorz

269 名前:ミ,,゚Д゚ミノ ◆A6VzDeLphI mailto:sage [2007/07/04(水) 10:54:14 ]
HDDに、原型のやつがあったよ。
検索に1時間ほどかかってしまた。


270 名前:265 mailto:sage [2007/07/04(水) 11:00:48 ]
>>269
デルフサギコ様、うpをお願いしますorz

コンポーネントのソースは読めるので、
手直しとか派生くらいできますし、
使いこなせると思いまつ。

271 名前:ミ,,゚Д゚ミノ ◆A6VzDeLphI mailto:sage [2007/07/04(水) 11:00:59 ]
実行時にマウスで動かせた矢印コンポもあったような気がするんだけど
手元にあるのはShapeの矢印版っすね。

majunarrowexとか、viArrow.pas
って名前だけど、googleではでないみたいだ。

とりあえずうpろうか。午後くらいでよい?



272 名前:265 mailto:sage [2007/07/04(水) 11:03:42 ]
>午後くらいでよい?

ずっと待ってまつ。

希望では、以下の機能も欲しかったり。。。
・マウスで動かせる
・マウスで長さが変えられる
・移動や長さが変ったときに、Changeイベント
・矢印をオフにして単なるライン化

273 名前:ミ,,゚Д゚ミノ ◆A6VzDeLphI mailto:sage [2007/07/04(水) 11:09:05 ]
delfusa.main.jp/compo/majunarrowex.zip

いや、はようpっとくよ。

もっといいものをつくってくれた人もいたきがするんだが...

あの時期てきにホットゾヌの作者の中の人だった気がするが
確証無しで。

このコンポ、いったい誰作なんだろう...中国の方かしら。



274 名前:ミ,,゚Д゚ミノ ◆A6VzDeLphI mailto:sage [2007/07/04(水) 11:11:48 ]
設計時なら
>・マウスで動かせる
>・マウスで長さが変えられる


>・移動や長さが変ったときに、Changeイベント
わからない。というか、Resizeイベントはなさそうだから
どっちにしても自作だね。

>・矢印をオフにして単なるライン化
なぜか出来ないみたいだ。
改造すれば簡単でしょう。



275 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 11:20:24 ]
コレの事?
delwiki.info/?c=plugin;plugin=attach_download;p=%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2FDraw%A5%B3%A5%F3%A5%DD%A4%CE%B8%B6%B7%BF;file_name=MyDraw.pas


276 名前:265 mailto:sage [2007/07/04(水) 11:27:46 ]
>>274
>>275

サンクス!

両方ダウソしました。
どっち使うか決めなきゃ。。。

277 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 11:53:46 ]
>>273
・1個だけ
・設計中のみ変更可能
・コードはシンプル

>>275
・複数のラインやオブジェクトが1コントロールに入る
・フォームにフックさせて最下面に無理やり描画するのも出来る
・実行中に移動等も可能
・出来る事が大きいだけに、けっこう複雑

278 名前:265 mailto:sage [2007/07/04(水) 11:56:32 ]
>>277
サンクス

どっちもクセ多杉orz

やりたいことは275なんだけどメッセージフック&インライン汗と、
何かあったとき対処できるかなとドンビキ。

273に275のコード混ぜるかなぁ。。。

279 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 12:06:35 ]
>>275 には コンポが2つ入っていて、片方は TGraphicControl でメッセージフックは使ってない。
インラインアセンブラの部分はたぶん変更しなくていいいだろう。

ただ、文字を回転させるのに端ではなくて 真中というのは、チョットとまどった

あと、DesignProcでマウス応答全部やってるので
右ボタンメニューに対応させるとか、ココでやらんとあかんのかも


280 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 12:50:49 ]
アセンブラの部分は 浮動小数点に置き換えたらいいんじゃないの?
iHypot -> math.Hypot で代用
MulSubDiv はコメント通りに浮動小数点で計算させる

281 名前:265 mailto:sage [2007/07/04(水) 13:02:06 ]
汗は汗のままでも良いです。

>あと、DesignProcでマウス応答全部やってるので

この作り、拡張性大丈夫かなぁ。

282 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:11:00 ]
WndProc で inherited してるから大丈夫じゃないの?
気になるなら、それぞれ分けたらいいだけで

ひとつはデザイン中だけ処理させる判定を1箇所にまとめたかったのと、
TMyFormDraw と TMyDraw の両方で使いたくてコピペが楽だからそうしたんだろな


283 名前:265 mailto:sage [2007/07/04(水) 13:19:59 ]
>WndProc で inherited してるから大丈夫じゃないの?

了解でつ。

このコンポってStringsの中身をLines1つにすれば1本の線になるんですね。
動きも面白いし、機能は完璧。

最期の悩みは、このまま使うか、Linesプロパティを削除して、1本の線のコントロールとサブセットコントロール化するか。。。



284 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/07/04(水) 13:21:48 ]
 ∩ ∩
 ミ ゙''゙〜     ________
 ミ∧,,∧   /
 ミ,,゚Д゚彡 < おお。あったですかぁ。
 U U    \あっててよかったDelWiki新
           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
こういうのって、コンポインストールしないとサンプルプログラムが
コンパイルできない形になってて、非常に面倒よね〜
コンパイルしたsample.exeを是非に付けて欲しいもので。
まあ、漏れも付けてないんだけど。

それにしても、MyDraw....すごすぎだな。
(って何年も前にも言った感じがとてもデジャブー)

>>283さん
贅沢な悩みだな。(w

みつかってよかったね。


285 名前:265 mailto:sage [2007/07/04(水) 13:25:23 ]
>>284
有難う。

デルフサさんて、一時期見かけなかったような。。。

286 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:27:30 ]
MyDraw1.Lines.Add('LINE');
で実行中に、線を増やせるね。

287 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2007/07/04(水) 13:30:56 ]
いつもひっそりと
草葉の陰から見つめているんですよ。

288 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 15:13:17 ]
>>コンパイルしたsample.exeを是非に付けて欲しいもので。
そんな物、ダウソして実行する馬鹿がいたら是非お目にかかりたい物でwwww



289 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:28:34 ]
たくさんいますよ

290 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 19:37:14 ]
何か呼ばれた気がしたので来ました。

291 名前:デフォルトの名無しさん [2007/07/04(水) 20:00:09 ]
デモには、実行ファイルをつけようよ・・・

292 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:15:30 ]
delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2FDraw%A5%B3%A5%F3%A5%DD%A4%CE%B8%B6%B7%BF
ココに、サンプル書いてみた。

右ボタンで削除出来るようにコンポ側に少し追加もした

でも、コレ、誰がItemのオブジェクト削除してくれてるんだろ?
テキストを変更してもメモリリークしないんだろか?

293 名前:初心者++ [2007/07/05(木) 00:11:28 ]
いきなり割り込んで書き込みます、すいません。 
初心者です。データベースの接続で困ってます。
TTableのDataBaseNameで
サンプルのDBDEMOSでは無事接続できるんですが、
ほかのアリエス名(MSAccess,Excel...)では
ログインダイアログでユーザー名 パスワードをきかれ、
先へ進めません。どなたか教えてください。

  Turbo Delphi for wind32
OS : wind2000です。



294 名前:初心者++ [2007/07/05(木) 00:15:55 ]
いきなり割り込んで書き込みます、すいません。 
初心者です。データベースの接続で困ってます。
TTableのDataBaseNameで
サンプルのDBDEMOSでは無事接続できるんですが、
ほかのアリエス名(MSAccess,Excel...)では
ログインダイアログでユーザー名 パスワードをきかれ、
先へ進めません。どなたか教えてください。

  Turbo Delphi for wind32
OS : wind2000です。


295 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 16:25:33 ]
>>294
ttp://www.lares.dti.ne.jp/~hida/tips/bde_MSACCESS.htm

296 名前:デフォルトの名無しさん [2007/07/05(木) 16:38:53 ]
こんにちは。Delphi製ブラウザコンポーネント
(TUIWebBrowser)のFlash上の
テキスト入力コントロールでEnter入力が
できない問題について質問した者です。

RADながらWin32APIとの親和性,
カスタマイズ性が高くアセンブラも使え、
デフォルトコントロールの綺麗さなど、
色々優れた点がある中で、生産コストを下げる目的で
Delphiを選ぶときについて意見をお伺いしたいです。

ブラウザを作る際に、
まずTWebBrowserを使ってみて、入力に関する
致命的なバグがあったために、そのバグを修正した
TUIWebBrowserを使ったのですが、
そこでまた入力バグに出会ってしまい、
これらの問題が、VC++での開発でははじめから起きない
問題であったために、VC++で作り直すべきか考えています。

流通しているDelphi製のブラウザ系ソフトにも同じバグが見れました。
しかし、作りやすいので本当はDelphiを使いたいです。

Delphiで、資料やバグフィクス情報が無く、
節約できるはずの時間が、逆に冗長になるケースを考慮したとき、
そういった面を考えても、Delphiの生産性を活用するためには
どういったことが必要になりますでしょうか。
Delphi開発の先輩である皆さんに
お考えをお聞かせ願いたいです。



297 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 17:19:12 ]
>そういった面を考えても、Delphiの生産性を活用するためには
>どういったことが必要になりますでしょうか。

VCLコードを読んで理解する事。

298 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 17:46:02 ]
VC++で解決出来るんなら、 それを見て自分で修正すればいいんじゃないの?
でも、たぶん VC++でも色々拡張しようとすると、いろんな問題が出ると思うよ。
他人の作ったコードをソース無しに使おうってんだから当然だ。

TWebBrowser ならともかく TUIWebBrowser は使ってる人が少ないだろうし
さらに Flash となると、問題に答えてくれる人は少ないと思うよ。

>>262 の問題は メッセージポンプの所で流れてるメッセージ
を(Application.OnMessage とかで)見て、なんとか出来ないか考えてみたら?


299 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 17:47:05 ]
ActiveX や OLEControl の制御は VCL のソースを読んでも、個人レベルでは
解決は難しい。TWebBrowser やその派生コントロールは、Delphi で簡単に
使えるように見えるが、Delphi での細かい制御が一番面倒なもののひとつ。
VC++ でできるなら、そっちでやればいいでしょう。

300 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 17:49:23 ]
いまさらだがMLに投げてみりゃよかったのに。

301 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 17:54:18 ]
まぁなんでもMLに投げてみりゃいいんだよな。

302 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:45:41 ]
Delphi TWebbrowser Enter ぐぐれかす

303 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:02:10 ]
>>302
TWebBrowserのバグを回避した
TUIWebBrowserでFlashActiveX上のコントロールを経由した
ときだけ起こるって言ってるし
TWebBrowserの有名な入力バグは普通もう回避してるだろう。




304 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:25:45 ]
コード量が短いので>>273を参考にして勉強中のものです。

そこで質問です。>>273
.dfm に記述されたコードを .pas側で実行時に自動生成する
形に書き直すと、どういう風になりますか?じぶんはテキスト
エディタ派なのでコードの編集はできればテキストエディタで
やりたいとです。。。

プロジェクトを立ち上げると、

フォーム作成中にエラーが発生しました。(中略)
クラス TviArrowが見つかりません
とか出て上手くゆかなかったとです。

viArrow.pas をプロジェクトに追加して
プロジェクトを再構築。でコンパイルしたら実行
ファイルのほうは簡単にできてちょっと感動したとです。ひろしですひろしですひろしです

305 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:39:05 ]
>>304
なあ、こっちも実行してみてくれ。
delwiki.info/?c=plugin;plugin=attach_download;p=%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2FDraw%A5%B3%A5%F3%A5%DD%A4%CE%B8%B6%B7%BF;file_name=MyDrawSample.lzh


306 名前:304 mailto:sage [2007/07/05(木) 23:07:33 ]
>>305
1000行越えのコードの解読は厳しかったとです orz

307 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 07:39:12 ]
>>304
.dfm にはコンポーネントのプロパティが入っている。
実行中に位置やサイズを変更したいなら、 Left, Top, Right, Bottom をコードで弄る必要がある

>>305のは、コンポーネントを登録しなくてもいいように作られている
位置やサイズは文字列で与えてるようだ

308 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/07/06(金) 09:35:55 ]
    ∧,,∧  オハヨ
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)  旦~~
]]]]]]]]]]]]]]]]]]]]]]]]]]]]

自動生成する形になってて、いいっすね
>>305さん

どうせなら、バイナリも含んじゃえばいいのに。(w
IDE起動するのメンド(い人もいるかもね。)

>>307さん
MyDrawコンポーネントは単体で
たくさんの矢印や
矩形を処理するようになっていて
その位置を元々TStrings系でもっているのですよ。



309 名前:デフォルトの名無しさん [2007/07/09(月) 18:36:58 ]
TFormとかTImageってCanvasプロパティがありますよね。

TScrollBoxみたいにCanvasプロパティの無いコンポーネントにお絵かきするには、
どうすれば良いですか?

310 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 22:34:16 ]
1.Canvasがある他のコンポーネント(TImageとか)を貼る。
2.TWinControlから派生したものであれば、さらに派生させてCanvasプロパティをpublicにする。
ん〜これしか思いつかなかった。もう少し具体的にやりたいことを書けば、もう少しまともな
回答がつくと思うよ。

311 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 22:42:34 ]
var
 Canvas: TCanvas;
begin
 Canvas := TCanvas.Create;
 try
  Canvas.Handle := GetDC(hoge.Handle);
  try
   Canvas.TextOut(0, 0, 'HOGE');
  finally
   ReleaseDC(hoge.Handle, Canvas.Handle);
  end;
 finally
  Canvas.Free;
 end;
end;

312 名前:309 mailto:sage [2007/07/10(火) 08:56:46 ]
サンクス>>310 >>311

具体的には、
TScrollBoxの上にTImage、その上にMyDrawを乗せています。

それで、MyDrawの図形をマウスでいじると、
TImageが物凄くチラツクんですよね。

それで、TScrollBoxにもTImageの図形描いておいてやろうかな、と。

313 名前:309 mailto:sage [2007/07/10(火) 09:35:54 ]
TScrollBoxをやめて、TPanelにしてDoubleBufferdをtrueにしたらチラツキなくなりました。




314 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:26:17 ]
現在おされているキーをセンスする関数みたいなのはないのでしょうか?


315 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:41:54 ]
windows.getkeystate

316 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:14:11 ]
>314
つ GetAsyncKeyState
ttp://msdn.microsoft.com/library/ja/jpwinui/html/_win32_getasynckeystate.asp

>315
現在押されている、ということであればGetKeyStateは不適切。

317 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:17:05 ]
ありがとうございます。

windowsの世界だと int 21h(AH=8) みたいなのはないんでしょうか。
シーラカンスですんません。


318 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:08:04 ]
意味不明。何をしたいのかを具体的に。
たとえばOnKeyPressとかTForm.KeyPreviewあたりは幸せになれるかも?

319 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 06:53:33 ]
ごめんどうおかけします。

やりたいのは、コンソールアプリケションで、
enter (1-9 or q):
みたいなプロンプトをだして、一文字キーボードから入力してもらい、
入力された文字で処理を分岐させようというだけです。
つまりread(c); でreturn を入れなくても一文字読み込みたいというだけです。


320 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 08:00:06 ]
コンソール入力はwindows側でバッファされてるから、イベント入力を使う必要がある
GUIアプリの例だと、ボタンとメモと、タイマーを貼り付けて
procedure TForm1.Button1Click(Sender: TObject);
begin
 AllocConsole;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 pirBuffer: INPUT_RECORD;
 hdl: THandle;
 lpcRead: DWORD;
begin
 hdl := GetStdHandle(STD_INPUT_HANDLE);
 if integer(hdl) < 0 then
 exit;
 while ReadConsoleInput(hdl, pirBuffer, 1, lpcRead) do
  with pirBuffer do case EventType of
    KEY_EVENT: //Event.KeyEvent
     if Event.KeyEvent.bKeyDown then
      Memo1.Lines.Add('KEY=' + Event.KeyEvent.AsciiChar);
    _MOUSE_EVENT: //Event.MOUSE_EVENT
     with Event.MouseEvent do
      Memo1.Lines.Add(format('%5d %5d ', [dwMousePosition.x, dwMousePosition.y]));
    WINDOW_BUFFER_SIZE_EVENT, //Event. WindowBufferSizeEvent
     MENU_EVENT, // Event. MenuEvent
     FOCUS_EVENT: //Event.FocusEvent
   end;
end;

コンソールアプリだと、このタイマーの部分でキー入力があるまで無限ループする関数を書く事になるだろな

321 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 07:16:47 ]
ありがとうございます。
これを参考にコンソール用に書き直してみます。


322 名前:296 [2007/07/13(金) 17:53:11 ]
お世話になります。
ブラウザコンポーネント上の
FlashActiveX上の入力問題で質問した>>296です。
みなさんありがとうございました。
時間がかかりましたが、
なんとか解析して自己解決できました。
これでDelphiのままいけそうです。


323 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 03:42:15 ]
>>322
解析結果を書いてくれるとみんなが幸せになれるかもよ



324 名前:デフォルトの名無しさん [2007/07/28(土) 20:12:22 ]
>>323
スクリプトによって書かれて配置される
FlashActiveXが、1ページに2つ以上あるときに、
従来の方法で
2つ目のものにメッセージを送れていない場合があるようです。
ウィンドウを細かく検索することで回避しました。


325 名前:デフォルトの名無しさん [2007/09/17(月) 21:48:04 ]
前スレうp頼む

326 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 21:56:24 ]
っ 前スレうp

327 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 22:06:24 ]
神キタ━━━━━━(゚∀゚)━━━━━━ !!
楽しみに待ってます。本当にありがとう!!
前スレの字句解析から意味解析のログ本当に勉強になったので

328 名前:デフォルトの名無しさん [2007/09/19(水) 19:02:18 ]
EditのPopupMenuに自作PopupMenu1をセットしたら、
元々EditにあったPopupMenuが無くなりますよね。

そうじゃなくて、EditのデフォのPopupMenuに自作PopupMenu1を足すには、
どうしたら良いでしょうか?

329 名前:デフォルトの名無しさん [2007/09/19(水) 19:27:16 ]
DPAPI(データ保護 API) を 使って パスワードを
OSに記憶してもらう方法とか有ったら知りたいのですがなかなか見つかりません。
マイクロソフトのページには

DPAPI は、以下の項目を保護するのに役立ちます。
• Web ページの資格情報 (たとえば、パスワード)
• ファイル共有の資格情報
• EFS (暗号化ファイル システム)、S/MIME、および他の証明書に関連付けられた秘密キー
• CryptProtectData() 関数を使用して保護されているプログラム データ
とあるのですが このDPAPIは単純に任意のパスワード等保護してもらえる機能として
捕らえていいのでしょうか 。 delphi7を利用しています。 どなたか情報いただけませんか。


330 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:37:27 ]
>>328 もヨロ!

331 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:07:54 ]
>>328
たぶん出来ない。
右ボタンメニュを出すには TrackPopupMenu を呼び出すわけで
エディットコントロールにはデフォルトのWM_RBUTTONUP内部でコレを呼び出してる部分があるのだろう

TrackPopupMenuを呼び出すにはhMenuが必要だけど、EDITでコレを入手する方法が見つからない。
親窓なら、GetMenuでhMenuを呼び出せるけど、小窓ではそれが出来ないから。


332 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:38:35 ]
そうですか(´・ω・`)ショボーン

>親窓なら、GetMenuでhMenuを呼び出せるけど、小窓ではそれが出来ないから。

親窓を取得したりできないですかね。

差し替えたPopupMenu1のイベントハンドラを実行すると、
EditのデフォルトのPopupMenuを開きなおしたり、
とかでも良いのですが。



333 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:53:09 ]
>>332 後半なら
var SaveMenu:TPopupMenu;
begin
 SaveMenu:=Edit1.PopupMenu;
 Edit1.PopupMenu:=nil;
  SendMessage(Edit1.Handle,WM_RBUTTONDOWN,Edit1.Left,Edit1.Height);
  SendMessage(Edit1.Handle,WM_RBUTTONUP,Edit1.Left,Edit1.Height);
 Edit1.PopupMenu:=SaveMenu;
end;

と、いったんメニューを外して、右ボタンを押して離してを送りつければ出るよ



334 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:57:32 ]
有難うございます。それでやってみます。(*`∀´*)

335 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:28:00 ]
メニューを外さなくても、直接小窓にメッセージを送ると出るみたい

var pt:TPoint;
begin
pt:=ClientToScreen(Point(Edit1.Left,Edit1.Height));
PostMessage(Edit1.Handle,WM_CONTEXTMENU,Edit1.Handle,pt.x+(pt.y shl 16));
end;


336 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:49:46 ]
thx! >>333 >>335

両方おk、でした。

TPointを指定するのメンドウだから、333でやるかも。

PopupMenu1のメニューの一つに編集っていうメニューを用意して、それだとデフォメニューをオープン、
という動作でカコヨクできました。

337 名前:デフォルトの名無しさん [2007/09/21(金) 20:03:36 ]
>>326
ひょっとしてあたしを騙したの?

338 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 20:47:23 ]
勝手な思いこみ

339 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 02:55:26 ]
今からでるふぁい

340 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:11:26 ]
もう死んデルファイ

341 名前:デフォルトの名無しさん [2007/09/24(月) 00:52:44 ]
みなさん
多言語化(日本語/英語)
をするときはどうしてますか?おしえてください


342 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 00:58:53 ]
>>341
TNT+dxgettext

343 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 03:36:29 ]
素直にリソースDLLウィザード。日本語/英語以外の言語サポートが必要ならTNTも併用。



344 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 04:17:57 ]
標準VCLって役立たずだな

345 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:17:20 ]
>>341
Delphiに国際化対応のツールが付属してるでしょ、

346 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 07:52:39 ]
61 名前:34[] 投稿日:2007/09/24(月) 19:13:21
お久しぶりです。TThreadでボヤいてた者です。
TThreadをプールして使い回してみたところ問題なさそうなのでこれで行くことにしました。
あとスレッドで処理中にフォームを操作するとCPU100%のまま帰ってこなくなる現象が出ましたが、
TThreadの方にpublicで作ったAnsiStringに渡した文字列が原因だったようで、
スレッドの変数をAnsiString.Unique()して参照を切り離してやったら問題無くなりました。
これから先に嵌る人が居るかもしれないので書いておきます。

改めてありがとうございましたorz



347 名前:デフォルトの名無しさん [2007/09/27(木) 14:25:29 ]
みなさんありがとうございます。
>国際化、リソースDLL

こちらに書いてあることでしょうか?
www.wwlnk.com/boheme/delphi/tips/tec1550.htm
最後に書いてある、一度設定したらもう変更できないみたいな
ことが気になるのですが、
修正が入ったり、言語が変わると文字列の幅が変わるので
画面の調整も必要に思うんですが
みなさんどうしているのでしょうか?

何度も修正する場合
TNT+dxgettextが使われるのでしょうか。


348 名前:デフォルトの名無しさん [2007/10/04(木) 12:21:13 ]
アプリ全体のフォントサイズを大きくするって簡単ですか?

349 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 15:10:25 ]
Formのフォントサイズをでかくすれば
その上に貼り付けたコントロールも一緒にでかくなる。
ParentFont参照。
ウィンドウキャプションとかはWindowsが描いてるものだから無理。

350 名前:348 mailto:sage [2007/10/04(木) 15:20:04 ]
サンクス>>349

351 名前:デフォルトの名無しさん [2007/10/04(木) 16:38:18 ]
JPEG2000を表示する方法を教えて頂けないでしょうか?

352 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 22:53:42 ]
>>351
Susie Plug-in + SPIS

353 名前:デフォルトの名無しさん [2007/10/10(水) 11:38:53 ]
実行中のexeのリストを取得するコンポはありまつか?



354 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 14:59:41 ]
すれ違い

>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。

355 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 16:31:39 ]
>>353
マジレスするとDelphiでは無理

356 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 18:38:07 ]
>>353
コンポは知らないけど
NtQuerySystemInformation
を googleさんに begin とか pas と and で聞いたら 教えてくれるんじゃないかな

357 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 19:06:35 ]
>>353
コンボはないけど、
多分、TookHelp関数を使えば割と簡単にできると思う。
具体的にはTHelp32.pasに宣言されている、
Process32FirstとProcess32Nextを使えばいいんじゃない。

358 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 23:55:39 ]
>>355
お前の持ってるでるふゃいではな。

359 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 00:26:35 ]
API使える言語ならどれでも出来る
逆にこれをライブラリ化してる製品ってないんじゃないかな

360 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/10/11(木) 01:04:52 ]
   ∧,,∧   これつかってちょ。
  ミ,,゚Д゚彡 
   U  つ   
 @ミ  ミ    
   ∪''∪ 

DelFusa Library - Delphi OpenSource - DelFusa Floor
delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html

GetProcExeNameList


361 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 05:28:29 ]
おまいら、すれ違い

>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。

362 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 06:37:28 ]
問題
インチをセンチメートルに変換するプログラムを作って
細かい仕様は自由
ヒント:1in = 2.540cm 、StrToFloat

363 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 07:36:26 ]
program Project1;
{$APPTYPE CONSOLE}

function InchToMetre(Value:Double):Double;
const
  INCH_UNIT=0.0254;
begin
  Result := Value * INCH_UNIT;
end;

begin
  writeln(InchToMetre(0.050)); //12.7
  writeln(InchToMetre(0.045)); //7.62
  writeln(InchToMetre(0.030)); //5.56
end.




364 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 07:36:56 ]
嘘が書いてあるorz

365 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:15:41 ]
DelphiでJpeg2000を表示する方法を教えて下さいでつ。

366 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:48:48 ]
しつこい

367 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:53:58 ]
codecentral.borland.com/Item/22123

368 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 11:44:07 ]
DelphiでJpeg2000を表示する方法を教えて下さいでつ。

369 名前:365 mailto:sage [2007/10/11(木) 11:51:18 ]
368はニセモノでつ。









でも、実は未だに解決してなくて知りたかったりして。

370 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:22:13 ]
普通に>>367ので表示できたけど?

371 名前:365 mailto:sage [2007/10/11(木) 14:23:02 ]
サンクス>>370

実は自分もDel7出来ました。

が、実際の環境である、














C++ Builder 6だと上手くコンパイルできないんでつ><

372 名前:デフォルトの名無しさん [2007/10/11(木) 16:41:56 ]
Delphiアプリのメインフォームのウィンドウクラスって、TApplication固定でしたっけ?

373 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 19:19:37 ]
でつでつ言うなよ



374 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:14:07 ]
でつな

375 名前:デフォルトの名無しさん [2007/10/12(金) 15:44:09 ]
(a+3)^
ってある^はどういう意味?

376 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 16:43:45 ]
ObjectPascalの場合 後ろの^は ポインタの参照
C言語の *(a+3) と同じ

377 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 17:52:24 ]
なるほどサンクス

378 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 18:39:09 ]
よく見かける、
エディットボックスにファイルをD&Dしてそのパスを取得
はどのようにやればよいですか?

379 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 19:29:56 ]
質問はこちらにどうぞ
くだすれDelphi(超初心者用)その44
pc11.2ch.net/test/read.cgi/tech/1191657968/l50

380 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 05:15:36 ]
答えられんからって誘導とは酷いな!

381 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 17:21:40 ]
vb.netでそこそこは作れるレベルだけど、delphi始めようと思ったら最初に買うべき
本は何がいい?
それかどぼんみたく、そこだけ見ればそこそこのものは作れるようになるサイトか

382 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:12:41 ]
何を作りたいかだろ
ファイラ作りたいとか、MMO作りたいとか(スレがあっったりするが)

383 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 08:44:22 ]
ドトネトみたく環境設定も要らないし、コンポーネントも要るものはあるし。
いきなり始めて、躓いてから質問してみたら?



384 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 15:17:32 ]
VB2005はヘルプがすごく使いやすい

385 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 15:30:47 ]
ヘルプだけかよw

ネイティブアプリが作れるようになったら試しに触ってやるよ。

386 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 23:24:20 ]
ま、C#からやったらいいよ。DelphiもIDEは.NETが必要だし。
C#は良い本もヘルプもMSDNもWEBサイトも腐るほどあるし。

387 名前:デフォルトの名無しさん [2007/11/09(金) 01:23:20 ]
Del5。XPで、

Ctrl+Alt+Delを無効にする方法。
右クリックを無効にする方法。

教えて。


388 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:40:40 ]
>Ctrl+Alt+Delを無効にする方法。
マルウェアでも作るつもりですか?

389 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 05:38:41 ]
そーゆーことしたいなら自分で調べろww

390 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 06:47:53 ]
>>387
いちばん簡単なのは、DirectXのフルスクリーンモードで、そういうモードがある。
やり方は自分で調べろ

391 名前:387 [2007/11/09(金) 06:48:48 ]
いや、調べてもわからないから聞いてるんで。

ちなみに、会社のIT担当委員ってのをやってて、社員にサイバーテロの対処について教育するんだが、
本物のウィルスを使うわけにはいかないんで、ジョークウェアを作ろうと思っている。


392 名前:387 [2007/11/09(金) 06:49:39 ]
書き忘れた。

一定の時間が経過したら自動的に終了させるつもりだ。

393 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:31:11 ]
Ctrl-Alt-Deleteのキーストロークは最優先でシステムが捕捉するので、これを
無効にすることはできない。無理。不可能。Deleteキーの軸を折っちゃえ。
右クリックはマウスの右クリックのスイッチを(ry



394 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 06:56:12 ]
無理ではない。教えたいところだけど、>>391が本当か分からないし
教える立場だったら自分で調べて欲しいところ。

ヒント:海外

395 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 07:35:04 ]
ソフトウェア板の各所でも、キーロガーとか、スパウウェア用途に使われるものは紹介しないというルールだしな
おしえる側も、最低限のことは守らないと

396 名前:デフォルトの名無しさん [2007/11/10(土) 08:46:07 ]
391だけど、不正ソフトばらまくのは犯罪だってことくらい知ってるよ。
けどまぁ、信用してもらえないのも仕方がないからなんとかするわ。

397 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:10:16 ]
2chで信用しろといわれても・・・

398 名前:delphi初心者 [2007/11/12(月) 13:48:03 ]
ご質問いたします。

1.コンマ区切りの文字列をばらして配列にセットしてくれる関数はありませんか?
2.functionで配列は返せないのですか?





追伸: 「そんなこと自分で調べろ!」 と云う罵倒はおことわり。

399 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:50:46 ]
TStringList.CommaText

400 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:51:22 ]
それかTStringList.Textに入れれば、バラしてくれたかも

401 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:10:08 ]
>398
配列の型を宣言してそれを戻り値の型にすればおk


402 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 14:33:42 ]
>>401
それ、何てTStringList?

403 名前:デフォルトの名無しさん [2007/11/13(火) 18:48:49 ]
【Borland Delphi 6 Personal日本語版 入手先】
www.vector.co.jp/soft/dl/win95/prog/se205882.html
【Delphi 6 導入手順 】
www.wikihouse.com/DelphiVIP/index.php?%C6%B3%C6%FE%BC%EA%BD%E7
【インターネットダイレクト(Indy)コンポーネント導入手順 】
homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm

動作確認は、メモとIdHttpコンポーネントを貼り付けて以下のコードを書いて実行してみる。
うまくいくとこのスレがメモにダウンロードされる。
Memo1.Lines.Text := IdHttp1.Get('live19.2ch.net/test/read.cgi/stock/1144395454/l50');

【デルファイの質問所】
hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi
leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
groups.google.com/groups/search?hl=ja&q=delphi+



404 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:01:32 ]
上げ荒らしうぜえ

405 名前:初心者++ [2007/11/18(日) 11:09:49 ]
UpdateSQLがうまくいきません。以下のようなコードで実行すると、例外エラー'アップデート失敗'がでます。
propertyの設定は
cachedupdate true /requestlive true /updateobject updatesql

updatesqlのsql設定文もできてると思うんですが、、、


begin
database1.open;
database1.StartTransaction;
query1.Open;
end;

procedure TSDIAppForm.Button1Click(Sender: TObject);
begin

if query1.UpdatesPending then begin
query1.ApplyUpdates;
end;
database1.Commit;
query1.CommitUpdates;
query1.Close;
database1.Close;

end;

どこが間違ってるのでしょうか?教えてください
Turbo Delphi for wind32
OS : wind2000です。


406 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:36:44 ]
残念、スレちがいです。

>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。

407 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 17:54:22 ]
糞なテンプレでスレ立てて必死に粘着交通整理してる奴ってなんなの?

408 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:45:04 ]
自分の居場所なんだから、そりゃ必死だろう。

自分の居場所をキチンとメインテナンスするのは、それは当然ではあるまいか?

409 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:32:32 ]
自分の居場所ならグダグダ「スレ違い」とか言ってないで、問題を出題すべきだと思うんだな。
問題と解答、それに議論が無いから、過疎ってスレ違いと基地外の巣窟と化してるんだな。
問題:おみくじ
randomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ

410 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:36:13 ]
>>409

あまりにも簡単すぎるプログラム出題でワロタw

せめて、n回凶が出る確率を計算するプログラムとかにすればいいのに。

411 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:47:39 ]
>>405

Queryの更新エラーは、
query1.RequestLiveのtrue/falseが
結構関係している。

412 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 22:53:35 ]
Gandomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ


413 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:05:26 ]
>>412
CGは専門外なんで無理ですw



414 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:21:52 ]
Gandom はすれ違い。

415 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 01:02:34 ]
問題:呼び出すたびに1と0を交互に返す関数を書け。グローバル変数を使っても良い。

416 名前:初心者++ [2007/11/21(水) 02:06:06 ]
UpdateSQLのエラーが解決しました。レスを下さった方ありがとうございました。
SQL文のキー違反でした。
 SQLの勉強をもっとしないと阿寒と思いました。
 Accessのビューで作ったSQL文を貼り付けたりしておったのですが、、、。
 エラー続出でした。

417 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:30:12 ]
問題:マウスクリックすると、クリックしたマス目とその上下左右のマスが反転する。
    マス目を全て塗りつぶしたらクリアとなるゲームを作る

□□□□□             □□□□□            ■■□□□
□□□□□             □□■□□            ■□■□□
□□□□□             □■■■□            □■■■□
□□□□□             □□■□□            □□■□□
□□□□□の真ん中を押すと  □□□□□左上クリックで   .□□□□□

■■□□□           ■□□□□
■○■□□           □■□□□
□■■■□           □□■■□
□□■□□           □□■□□
□□□□□ ○を押したら  □□□□□


全部塗りつぶしたらゲームクリア
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■

418 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:43:16 ]
>>417
ライツアウト懐かしいな

419 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 00:58:06 ]
俺には作れねぇ

420 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 01:03:28 ]
頑張れば作れなくもなさそうだけど、とてつもなく無駄が多くなりそう・・。

421 名前:1/2 mailto:sage [2007/11/22(木) 01:33:44 ]
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormClick(Sender: TObject);
  private
    FTable: array[0..4, 0..4] of Boolean;
  end;

procedure TForm1.FormPaint(Sender: TObject);
const
  B2S: array[Boolean] of String = ('□', '■');
var
  x, y: Integer;
begin
  for x := 0 to 4 do
    for y := 0 to 4 do
      Canvas.TextOut(x*12, y*12, B2S[FTable[x, y]]);
end;

422 名前:2/2 mailto:sage [2007/11/22(木) 01:34:15 ]
procedure TForm1.FormClick(Sender: TObject);
var
  pt: TPoint;
begin
  pt := Self.ScreenToClient(Mouse.CursorPos);
  pt.X := pt.X div 12;
  pt.Y := pt.Y div 12;

  if (0 <= pt.X) and (pt.X <= 4) and (0 <= pt.Y) and (pt.Y <= 4) then
  begin
    FTable[pt.X, pt.Y] := not FTable[pt.X, pt.Y];

    if 1 <= pt.X then FTable[pt.X-1, pt.Y] := not FTable[pt.X-1, pt.Y];
    if pt.X <= 3 then FTable[pt.X+1, pt.Y] := not FTable[pt.X+1, pt.Y];
    if 1 <= pt.Y then FTable[pt.X, pt.Y-1] := not FTable[pt.X, pt.Y-1];
    if pt.Y <= 3 then FTable[pt.X, pt.Y+1] := not FTable[pt.X, pt.Y+1];
  end;
    
  Invalidate;
end;

423 名前:2/2 ver.2 mailto:sage [2007/11/22(木) 01:40:47 ]
クリア判定忘れてた。

procedure TForm1.FormClick(Sender: TObject);
var
  pt: TPoint;
  x, y: Integer;
  Clear: Boolean;
begin
  pt := Self.ScreenToClient(Mouse.CursorPos);
  x := pt.X div 12;
  y := pt.Y div 12;

  if (0 <= x) and (x <= 4) and (0 <= y) and (y <= 4) then
  begin
    FTable[x, y] := not FTable[x, y];

    if 1 <= x then FTable[x-1, y] := not FTable[x-1, y];
    if x <= 3 then FTable[x+1, y] := not FTable[x+1, y];
    if 1 <= y then FTable[x, y-1] := not FTable[x, y-1];
    if y <= 3 then FTable[x, y+1] := not FTable[x, y+1];
  end;



424 名前:3/2 mailto:sage [2007/11/22(木) 01:41:18 ]
  Clear := True;
  for x := 0 to 4 do
  begin
    for y := 0 to 4 do
      if not FTable[x, y] then
      begin
        Clear := False;
        Break;
      end;

    if not Clear then
      Break;
  end;

  if Clear then
    ShowMessage('おめ');

  Invalidate;
end;

425 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 02:02:47 ]
すげー!参考にさせて頂きますm(_ _)m

426 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 11:33:40 ]
implementation
{$R *.dfm}

//スペースの都合上ここに記述本当ならTForm1のprivateが望ましい
var
BTable:array of array of Boolean; 

procedure CheckComplete();
var
X,Y:Integer;
begin
for X:=1 to High(BTable)-1 do
for Y:= 1 to High(BTable[X])-1 do
if Not BTable[X,Y] then Exit;

ShowMessage('Mission Complete!');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(BTable,DrawGrid1.ColCount+1,DrawGrid1.RowCount+1);
end;


427 名前:修正1/2 (426は放置推奨 ) mailto:sage [2007/11/23(金) 11:43:25 ]

//●最初にDrawGridを貼り付け、プロパティを以下のようにセット
  Align = alClient
  DefaultDrawing = False
  ColCount = 6
  RowCount = 6

//●FormのPrivateに以下のフィールドとメソッドを追加
  BTable:array of array of Boolean; //動的二次元配列
  procedure CheckComplete();
  
//●CheckComplete関数を書く
procedure TForm1.CheckComplete();
var
  X,Y:Integer;
begin
  for X:=1 to High(BTable)-1 do
    for Y:= 1 to High(BTable[X])-1 do
      if Not BTable[X,Y] then Exit;

  ShowMessage('Mission Complete!');
end;

//●FormCreateを書く
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetLength(BTable,DrawGrid1.ColCount+1,DrawGrid1.RowCount+1);
end;

428 名前:修正(2/2) mailto:sage [2007/11/23(金) 11:43:59 ]
//●DrawGrid1DrawCellを書く
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
const
  COLORPALS:array[Boolean] of array[Boolean] of TColor = ((clWhite,clBlack),(clSilver,clSilver));
begin
  DrawGrid1.Canvas.Brush.Color := COLORPALS[(gdFixed in State) , BTable[ACol,ARow] ];
  DrawGrid1.Canvas.FillRect(Rect);
end;

//●DrawGrid1SelectCellを書く
procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean);
begin
  BTable[ACol-1,ARow] := Not BTable[ACol-1,ARow];
  BTable[ACol ,ARow] := Not BTable[ACol ,ARow];
  BTable[ACol+1,ARow] := Not BTable[ACol+1,ARow];
  BTable[ACol,ARow-1] := Not BTable[ACol,ARow-1];
  BTable[ACol,ARow+1] := Not BTable[ACol,ARow+1];
  DrawGrid1.Invalidate;
  CheckComplete();
end;


429 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 18:34:16 ]
>>417
7行スレで盛り上がりそうな内容だなw

430 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 17:46:32 ]
25ボタンの処理を全部書くことで初心者でも作れてしまうが、まじめにやれば7行に・・・・なるな多分

431 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:00:38 ]
>>157
D6からそうなったのか?
パスなしだとWINDOWSフォルダにつくられるんじゃなかった?

432 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:01:27 ]
未読位置を間違えてロングパスを放ってしまったorz

433 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 01:31:13 ]
>>417
作れたは良いんだがクリアできない
なんかコツとかある?勿論クリアするね



434 名前:デフォルトの名無しさん [2007/12/13(木) 23:00:31 ]
TMEMOの任意の行を削除するにはどうしたらいいの?

435 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:09:52 ]
>>434
TMemo.Lines.Delete

436 名前:434 [2007/12/14(金) 06:52:10 ]
>>435

ありがとう。

ごめん、質問間違えた。
あるデータと一致する行を削除 だった。
listboxだったらitems.indexとかで簡単にできるけど

437 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 22:58:42 ]
>>436
TMemo.Lines.IndexOf

438 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:30:52 ]
BDS2007を使っているんですが、コード補完機能って、すごーく
時間がかかるものなのでしょうか?
HDアクセスしまくりで、VS2005のそれとは比較にならない程遅いのですが。
それとも何か設定等が悪いのでしょうか?

OSはWinXP, メモリは2Gです。よろしくお願い致します。


439 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:36:32 ]
コンポを大量インスコしてるとか

440 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:47:31 ]
普段使わないコンポはチェック外しておくとロード時間が劇的に短くなる。

441 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:13:59 ]
普段使うコンポはチェック外さないでおくとロード時間がものすごく長い。

442 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:06:02 ]
最新式マシンに変えるとロード時間が劇的に短くなる。

443 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:49:05 ]
ちょっと前のマシンだとロード時間がはげしく長い。



444 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:11:10 ]
BDS2006で、PenD(3.0GHz) メモリ2G WinXPマシンでつこーてるが、
コード補完は、特に遅くないな。
ちなみに、起動時は、起動オプションで、Delphiのプロファイルのみ読み込み、
あと余計なDB周りのコンポなどもはずしてる。

しかしメモリ2Gで、ハードディスクカリカリは感がられんな
BDS2007が遅いということあるのかね

445 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:14:45 ]
D7En Pen3(966) MEM384MB
コード補完滅茶苦茶遅い。
数年前は大丈夫だったから多分原因はHDDだろうと勝手に思ってる。

446 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 03:44:18 ]
>>445
そのくらいのスペックで、Del6Pro つかってだけど、問題なかったぞ?

BDSの世代になって、死ぬほど重くて、マシン買い換えたが

447 名前:デフォルトの名無しさん [2007/12/31(月) 07:28:11 ]
職場のD7ENTでこちょこちょ書いてますがひたすらコピペしまくりでクラスも作った事がありません。
どこかのサイトにオプジェクト志向学ぶならC#やJavaで書かれた出来の良いコードをDelphiに移植するのが面倒だけど理解が早くなる、と言う意味の事が書かれてました。
とは言え、自分にオプジェクト志向の良いコードなのかどうか判別が出来るくらいならわざわざ移植には及ばない訳でして、適当なサンプル選びで途方に暮れています。
簡単なもの、ちょい重たいかなレベルで適当そうなコードを紹介して頂けませんか?


448 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 07:30:10 ]
スミマセン
ageてしまいました。

449 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 11:10:07 ]
どこまでもコピペするつもりですか。

*頭をたたくと「いてぇ」、わきの下をくすぐると「わははは」と笑うクラスをつくて

まじめな課題です。


450 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 11:59:29 ]
自分用のコンポーネントを自作するのが近道だよ。

451 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:06:15 ]
>>447
何度も同じコード書いてるならそこを共通化するクラスなりライブラリなりを作ってみたら。
重複部分で呼び出しているAPIなり関数なりをJediVCLでGrepかけてどうラップしてあるかを見てみればいいと思う。
あのライブラリ郡の設計が美しいかどうかは微妙なところだけど。

一番手っ取り早いのはC#をやること。
C#、Delphi両面の利点と欠点が見えてくると思う。
もちろんよりリッチなクラスライブラリの使い方も習得できるしね。

452 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 19:50:50 ]
JCLのコンテナ使いにくすぎる。おすすめせん。

俺も、C#のライブラリを参考にするのがお勧め。
標準のでいい。
インターフェスだけならMSDNで見たい放題、クラス設計の参考になる。

中のぞきたかったら、Reflectorででも、使えばソース見られる。
Reflectorなら、Delphiでも見られるしなw


あとは、OOPなら、動的型言語のRubyもお勧め。
ほとんどが、オブジェクトなので、それを前提として、
どういった便利な使い方ができるか?というのがよくわかる。
ただ、ガーベジコレクション前提でオブジェクトを使い捨てまくるので、
そのままは使えないのだが、
勉強にはなる。

453 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:14:08 ]
2005を今更再インスコしようとして、鬱になる。

#さぽきれかあ



454 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 15:25:42 ]
あー、今頃出来やがんのorz

455 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:05:07 ]
ASMならジャンプテーブルを用意すれば簡単化と思いますがDelphiなら
以下の条件ならどんなコーディングをすればいいのでしょうか?
type
TSomeInts = 0..9;
IntSet1, IntSet2 = set of TSomeInts
の条件下で
if (0 in IntSet1) and (0 in IntSet2) then ...
if (0 in IntSet1) and (1 in IntSet2) then ...
...
if (9 in IntSet1) and (9 in IntSet2) then ...
のように、IntSet1且つIntSet2の組み合わせでcase文を使用したい場合です


456 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:08:54 ]
すみません
問題を単純化するのにミスしました
type
Int1, Int2 = 0..9;
の条件下で
if (Int1 = 0) and (Int2 = 0) then ...
if (Int1 = 0) and (Int2 = 1) then ...
...
if (Int1 = 9) and (Int2 = 9) then ...
でお願いします

457 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:15:33 ]
case を2重にして全部を列挙するか
0〜9と決まってるんなら単純に

case Int1*10+Int2 of
00:
01
...
とやったら?

458 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:29:47 ]
>>457
ども
実際ご指摘のとおり
type
Suit = (Club, Diamond, Heart, Spade);
var
card1, card2: Suit;
cardbits: BYTE
とあれば
cardbits := ($01 shl Integer(card1) + ($10 shl Integer(card2));
case cardbits of
$00, $01, $02: ...
$10, $11, $03: ...
end
みたいなことで実現しているのですが、実際は条件がもっと複雑で
単純にcase文でネストする場合三重になります
この場合可視性が悪いですし
Suit = (Null, Club, Diamond, Heart, Spade, Joker);
みたいに列挙型を変更する場合も困難を極めます

459 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:04:39 ]
var jumptable: array[0..9, 0..9, club..spade] of tjumpproc;
なジャンプテーブル用意したら。

460 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:16:45 ]
>>459
どもw
ジャンプテーブルが使えたんですね・・・

何やってんだ俺orz

461 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 17:54:22 ]
×可視性
○可読性

462 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 14:54:47 ]
Delphi6のFileSeekは多重定義されてますが
function FileSeek(Handle, Offset, Origin: Integer): Integer; overload;
function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64; overload;

OffsetにInt64をあたえても上が呼ばれてるみたいなんですが
どうなんでしょう

463 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 18:45:19 ]
気のせいです



464 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:18:42 ]
Threadを使用してバックグラウンドで処理を行い、進行状況をForm1で表示する処理を行っています

Form1のLabelに表示するたびにSynchronize関数を呼び出すとそのオーバーヘッド
が凄まじく処理時間が数倍に跳ね上がってしまいます
VCLを使用する場合にはSync関数を使用して呼び出すべきとの話ですが
全てが全てSyncを使用しなければならないのでしょうか?
例えばInvalidate関数等はどのタイミングで呼び出すべきなのでしょうか

465 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:31:43 ]
スレッドセーフで無いコードはSynchronizeを使いVCLにスレッドセーフであることを保証してもらう必要がある。
初めからスレッドセーフなコードならばわざわざそんな事はしなくても良い。

466 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:33:02 ]
いろいろやり方はあるけどLabelの更新頻度を下げるのが手っ取り早い。
データがどれだけ変更されようが画面の更新は1秒に一回未満にするならこんな感じ

lastupdateview := GetTickCount;
while true do
begin
 処理
 if GetTickCount - lastupdateview > 1000 then
 begin
  lastupdateview := GetTickCount;
  Synchronize;
 end;
end;

467 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:05:17 ]
>>466
ども。
Invalidateの呼び出しはそれでやってます。

その方法では、例えば処理中のファイル名を表示しようとした場合
重い処理を行っている時は表示されているファイル名と処理している
ファイルが異なるような場面が発生しませんか?
かと言って”処理が長くなるようだったら強制的に表示する”って方法
を実現しようとするとタイマーを使用するなり手間がかかる気がするのですが・・・

468 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:30:48 ]
ファイルを処理する最初にlabel更新をしようとしたが、
全部のファイルを処理すると処理に時間がかかったということですよね?


> 重い処理を行っている時は表示されているファイル名と処理している
> ファイルが異なるような場面が発生しませんか?

それは仕方がないかと。
>>466では、1秒になってるけど、100m秒くらいにすればわからなくないかな?


ところで、VCLのスレッドセーフ周りはよく知らないのだが、
Labelの書き換え(Caption?Text?)は、メインスレッドから弄ってない場合でも、
他のスレッドどから書き替えたらダメなのものかね。

469 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:48:28 ]
>>468
ども。

>>466の例で言うならば、”処理”が重たい場合はLabelが書き換えられませんし
”処理”の前にLabelを書き換えようとした場合はLabelの書き換えがスキップ
された直後に重い処理が着ちゃうと対応できません

メインフォームにメッセージを投げて知らん振りしたほうが健全かな?とは
思いますが、Delphiっぽくなくなっちゃうんですよね

470 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 00:37:08 ]
>>469
処理するスレッドが重くてメインスレッドに反映されにくい場合なら、
スレッドの優先度変えればいけないかな・・・(未確認だが)

> メインフォームにメッセージを投げて知らん振りしたほうが健全かな?とは

いや、それもありかと思います。Delphiスレでもよく聞く話です。
VCL Formだとメッセージとりやすいですしね。

ただ、スレッドが重くてうんぬんの場合、この方法でも一緒かな?という気が

471 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:37:18 ]
Invalidate なら、ラベルの親ハンドルと、Rectをメインスレッドから用意しておいて
IntersectRectをスレッド側で発行すればいいでしょ。

472 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:39:04 ]
×IntersectRect
○InvalidateRect

473 名前:デフォルトの名無しさん mailto:age [2008/02/02(土) 22:21:03 ]
にゃあ



474 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 04:23:31 ]
if i < 0 then i := 0;
といったコードがあるとします
i := Max(0, i);
と書いたほうがスマートな気がしますし
i := Max(0, Min(i, count-1));
と書くと簡単に範囲を限定できます

しかし、冗長に思えるif分の繰り返しのほうがいいコードが生成されます
この場合どちらを使用すべきなんでしょうか・・・

475 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 05:20:29 ]
> しかし、冗長に思えるif分の繰り返しのほうがいいコードが生成されます

マシンスペックが高い今、そんなことはいまどき考える必要はない
わかりやすい方にしる

476 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:29:24 ]
Abs()なら組み込み関数で、マクロ的に展開されるんだけど
Maxはmathユニットの実関数だから仕方ない。

どうしてもというならアセンブラ使え

procedure TForm1.Button2Click(Sender: TObject);
 function LimitZero(d:Integer):Integer;
 asm
  CDQ ;//eaxが負数ならedx=-1
  not edx;
  and eax,edx ;//
 end;
var i:Integer;
begin
  AllocConsole;
  for i:=-10 to 10 do begin
   WriteLn( LimitZero(i));
  end;
end;


477 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:13:05 ]
くだらん。
どうしても転化したければ、inline使え

478 名前:デフォルトの名無しさん [2008/02/24(日) 05:53:01 ]
TImage に 上から半透明のセロファンがかかってるような
フィルタをかけたかったらどうすりゃいいですかね?

俺が思いつくのは同じ大きさのBitmapを用意して
それを一色で塗りつぶした上で半透明化とかなんですけど
これってすんげえ無駄にメモリ食いますよね?

もっといい方法ってあります?

479 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:02:23 ]
>>478
DIBにして、ScanLineでBITMAPのデータを直でいじくる

480 名前:デフォルトの名無しさん [2008/02/24(日) 06:18:28 ]
>>479
うわ、検索してみたけど難しそうだこれは
1時間ほど挑戦してムリポだったら>>478の方法使うことにします

481 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:37:09 ]
そんなに難しく考えるなよ

srcが元の色
colorがセロファンの色
destが書きこむ色
αが半透明のアルファの度合いだとしたら、

dest = color * α + src * (1 - α)
これをrgb各それぞれで計算してやるだけだぞ

こういうのは「αブレンド 計算式」ででてくればすぐにでてくるよ

482 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:47:50 ]
符号無し64bit、いわゆるulonglongを使用したいのですが何か良い方法
は無いのでしょうか?



483 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:55:55 ]
符号無し64bitで何がやりたいの? 加減算の結果は同じだよ
掛け算の場合も
(Amsb + A63)*(Bmsb + B63) = Amsb*Bmsb + Amsb*B63 + Bmsb*A63 + A63*B63

で、Amsb が符号付きだろうが符号無しだろうが、下位64bitの結果には影響しない。



484 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:52:05 ]
>>483
ulonglongを使用している構造体があったんでどう実装しようかと・・・
現状では下位32bitしか使用していないのでDWORDでも問題無いとは
思うのですが、手を抜いて将来トラブルと嫌だなぁ・・・と思った次第です


485 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 19:37:38 ]
単にInt64にしたらいいんじゃないの? 除算や右シフトをやらない限り問題ない

486 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:47:31 ]
ゴメン 算術右シフトってのがソモソモ無かった。
だから  SHR 演算は 符号無し右シフトと等価だった

487 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:01:28 ]
UInt64使えばいいだろ。

488 名前:デフォルトの名無しさん [2008/02/27(水) 20:44:10 ]
>>481
ありがとうございます
何をすればアルファブレンドできるかは理解できたんだけども

見つかったページがそれをシフト演算で行ってて
それの意味がわかんなくて困ってます

ページを貼らせてもらうと
www.sm.rim.or.jp/~shishido/delmono.html
> r:=cl and $ff; // RGB成分に分解
> g:=cl and $ff00 shr 8;
> b:=cl and $ff0000 shr 16;
必要な色成分以外を $ff なんちゃらでマスクして消しちゃってるんでしょうが
$の記号が何をするのかわからないのがひとつめ

> cl:=Round(r*0.3+g*0.59+b*0.11); // 明るさを計算
cl って RGB値じゃなかったでしたっけ? なんで明るさだけを入力できるかさっぱりなのが2つめ

> pp^:=cl+cl shl 8+cl shl 16; // (j,i)に明るさを書き戻す
さっきRGB値を明るさに変えたのになんでこんな処理ができるのか意味不明なのが3つめ

とわからないことだらけです。助けて

489 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:55:42 ]
>488
$は16進数のプレフィクス。C/C++の0xに相当。
明るさは人間の目のRGBに対する感度の違いを考慮して計算している。昔の白黒テレビで
カラー画像を見ているのと同じ。
その明るさを持つグレーの値を計算している。

490 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 04:03:23 ]
>>488
下の二つは輝度を計算するときの公式みたいなものでアルファブレンドとは全然関係ないよ

491 名前:478 mailto:sage [2008/03/01(土) 05:18:35 ]
ヤターできたよー!
もっともほんとにやりたい事は
フィルタの範囲指定したり戻したりなんで
これからもうひと頑張りいるけど、あとはなんとかなるでしょ。

ところでRGB値ってbgrの順で保存されてるんだね。変なの
>>489-490
dです

492 名前:749 mailto:sage [2008/03/01(土) 20:27:17 ]
>>491
BGRの順番で格納されているのはTColor

実際には速度の面からPixelでは無くScanLineでBMPに直接アクセスする
ことになるが、その場合の格納方法はまた違う

493 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 21:25:24 ]
バイト単位でアクセスしたら32bit色の場合、bgrだわな



494 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:12:38 ]
>>493
32bit DWORDだとrgbだな

>>478はメモリの格納順では無くて上位ビット->下位ビットで話してるからな

495 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 03:36:32 ]
>>494
何をわけの分からないこと言ってるんだ
同じことだろ

496 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 04:23:57 ]
サーセンw

497 名前:デフォルトの名無しさん [2008/03/04(火) 15:49:44 ]
こんにちは。
WriteProcessMemoryのAPIを使って値を書き込んだのですが、
おもう値が書き込まれません。以下がコードです。

GetMem(buf, 1);
buf^ := Chr($3D);
WriteProcessMemory(WindowHandle, ptr(Address), buf, NumberOfBytes, Write);

これを行うと、値が35901というのが書き込まれてしまいます。61という値を書き込みたいのですが、どのようにすればよろしいのでしょうか?


498 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 16:18:08 ]
>>497
35901 = $8C3D

正常に動いてるじゃないか

499 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 16:40:25 ]
>>498

いえ、普通に$3D(61)という値を書き込みたかったんですが、その場合はどうすればよろしいでしょうか?


500 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 17:35:44 ]
>>499
そりゃ1Byteしか書き込んでいないから。

501 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 18:29:49 ]
>>500
NumberOfBytes

を2という値に設定はしたのですが、これでは設定不足でしょうか?


502 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:08:37 ]
何で1バイトしか書き込んでいないのに読み込むときは2バイトになってるんだよ

503 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:04:31 ]
>>502
すいません、私のレベルが低くていまいちよくわかりません・・・。

WriteProcessMemory(WindowHandle, ptr(Address), buf, Sizeof(buf), Write);

上のようにすればいいという事でしょうか?
読み込む時というのがわかりません・・・。




504 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:47:00 ]
>>503
>値が35901というのが書き込まれてしまいます。
これが確認できたってことはその書き込んだアドレスから読み込んだんだろ?
その時35901だったってことは、少なくとも2bytes読み込んでいるということ。

505 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:55:22 ]
>>504
いえ書き込んだアドレスから読んだんではなくて、
表示されている値が変化したので確認できたという事です。

えとつまりは61という値にはできないという事でしょうか?

506 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:55:41 ]
>表示されている値が変化したので確認できたという事です。

意味不明なんだよ、質問が。なにをどうしたらなんの表示が変化したの?

WriteProcessMemory() の第一引数が WindowHandle って時点でどうかしてる。

507 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 23:48:37 ]
>>505
理解できてないから予期しない結果になるんだよ。
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdebug/html/_win32_writeprocessmemory.asp

508 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 07:13:00 ]
>>506
>>507

すいません、書き忘れていました。

OpenProcessでもってきたハンドルを第一引数に入れています。
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);

質問をまとめると、
var
buf: PChar;
WindowHandle: Integer;
Write: Cardinal;

WindowHandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
GetMem(buf, 1);
buf^ := Chr($3D);
WriteProcessMemory(WindowHandle, ptr(Address), buf, Sizeof(buf), Write);

で対象のプロセスの31という値を61に書き換えようとしたところ、35901という値に誤って(?)表示されてしまった。
というわけです。わかりにくくてすいません・・・。
たぶんbufの値に問題があると思いますが・・・。


509 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 08:04:08 ]
ヒント:bufのサイズをコンパイラが知れるわけがない

510 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 08:06:03 ]
初心者向けだからもう少しいえば
動的に確保されたバッファーのサイズをコンパイラが知ってるはずない

511 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 08:58:03 ]
>>509
>>510

bufのサイズを指定すればよろしいのでしょうか?
Sizeof(buf)
で行っている作業でサイズは取得できてると思うのですが、これとはまた別の話でしょうか?


512 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 09:29:57 ]
var buf:PChar つまりポインタなのだから、
Sizeof(buf)  は、ポインタのサイズを取得してるので、作業領域のサイズを得ているわけじゃない

513 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 09:39:40 ]
1、WindowHandleは適切な名前ではない。 hProces 等にする事
2、Writeも適切な名前でない。WriteSize とか cbWriteとか
3、Sizeof(buf)はポインタサイズで現在は4を返してる筈。

よって、
var
buf: string;
hProces : THandle;
WriteSize:DWORD;

WindowHandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
SetLength(buf,1);
buf[1] := Chr($3D);
WriteProcessMemory(WindowHandle, ptr(Address), PChar(buf), length(buf), Write);

ただし、35901が表示されたという事は、ホントは書きたい値は1バイトではなく2バイトか4バイト
の可能性が大。



514 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:00:22 ]
>>495
TColorと32bitRGBじゃRGBの順序が逆だよ?
そのまんまキャストは不可

ごっちゃにしてない?

515 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:36:40 ]
?
メモリ上の並びとしては R,G,B で、それを32bitの変数に読むと
エンディアンの関係で [xx ,RR , GG , BB] となるだけで、同じだろ?

516 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:53:56 ]
>>512
>>513

こんにちは。
ご教授感謝致します。以下が修正コードです。
var
buf: string;
hProces : THandle;
WriteSize:DWORD;

hProces := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
SetLength(buf,1);
buf[1] := Chr($29A);
WriteProcessMemory(hProces, ptr(Address), PChar(buf), length(buf), WriteSize);
CloseHandle(hProces);

これで望む結果を出すことができました。ありがとうございます。
SetLength はメモリを再確保してくれる関数らしいですね、てっきりSizeOfで領域まで確保してくれているとばかり思っていました。
このような初心者に手を差し伸べてくださり本当にありがとうございます。
またこれでひとつ勉強になりました。それではm(_ _)m


517 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 19:02:16 ]
Delphiヘルプより
> TColor を Graphics ユニットに定義された定数で指定せずに,4 バイトの 16 進数で指定した場合,
> 下位の 3 バイトはそれぞれ青,緑,赤の RGB カラーの輝度を表します。
> $00FF0000 という値は最高の輝度,つまり純粋の青を示し,$0000FF00 は純粋の緑を示し,
> $000000FF は純粋の赤を示します。$00000000 は黒,$00FFFFFF は白です。

>>514
これ以上に何か意見があるなら聞こうか?(笑)

518 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 20:01:01 ]
>>517
痛いヤツだな
>>493=>>495=>>517なのか?

DIB32はメモリ上はBB GG RR 00って順番で並んでいる
コレをDWORDでアクセスすると$00RRGGBBになるだろ?
TColorの$00BBGGRRとは逆になるんだよ

初心者スレで無知を晒すのは恥じゃ無いが、学ぶ能力が無いのは恥るべき

519 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:55:23 ]
BSWAPして8だけRORして…

520 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 02:29:10 ]
>>518
なんか必死だけどちゃんと仕様見てきて言えよ

521 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 05:12:31 ]
>TColorの$00BBGGRRとは逆になるんだよ

????

522 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 09:27:41 ]
>>513

昨日メモリについて質問した者です。
気になる事がありましたので、お聞き致します。
仮に

SetLength(buf,1);
buf[1] := Chr($29A);
WriteProcessMemory(hProces, ptr(Address), PChar(buf), length(buf), WriteSize);
CloseHandle(hProces);

をbuf[1] := Chr($29A);としたい場合は、
function StrToByte(const s: string): byte;
var
i, n : integer;
begin
result := 0;

n := 1;
i := Length(s);
while (i > 0) and (n <= 128) do begin
if s[i] = '1' then
Inc(result, n);

n := n *2;
Dec(i);
end;
end;

を使ってbuf[1] := Chr(StrToByte('$29A'));を使って同様の結果がでないのはなぜでしょうか?


523 名前:522 mailto:sage [2008/03/06(木) 10:13:29 ]
質問間違えました、FF(250)以上の値を書くときは、
SetLength(buf,1);
buf[1] := Chr($29A);
WriteProcessMemory(hProces, ptr(Address), PChar(buf), 3, WriteSize);
CloseHandle(hProces);

こう書いたのですが、うまくいきませんでした。上の質問意味不明ですねOrz





524 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 10:40:08 ]
ええと、255=$FF 以上は1バイトで表現出来ません。
2バイトを書きたいなら $29A なら $02 と $9Aに分けて

SetLength(buf,2);
buf[1] := Chr($9A);
buf[2] := Chr($02);
WriteProcessMemory(hProces, ptr(Address), PChar(buf), length(buf), WriteSize);

または、
var
 SendInt:WORD;

として
SendInt := $029A

WriteProcessMemory(hProces, ptr(Address), @SendInt , SizeOf(SendInt), WriteSize);


525 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 12:17:08 ]
色んな理解が足りない。

どうして PCharではなくて string を使ってるかというと、
PCharだとメモリ確保した後、開放しなければいけないけど
stringなら自動開放されるからtry〜finally を使わなくてもいいから便利だから。

PCharやstringを使うのは、可変サイズに対応する為。
3バイトでも4バイトでも同じコードで対応出来るからね。

でも固定サイズなら、ポインタで処理する必要はない。
渡す時にポインタを渡せばいい。
byte,WORD,DWORDのそれぞれの引数用の関数3つを作る方がスマートだよ


526 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 15:50:39 ]
>>524
>>525

ご回答ありがとうございます。
必要な事はできたのですが、純粋に疑問になったので思い切って質問してみた所存です。
二つに分けてやるのは知りませんでした。

Stringは自動開放されるのを知っていましたが、Pcharも自動で開放されるかと思ってました(汗

私はbyte,WORD,DWORDとかの三つの関数作るなんて思わないでがつがつ書いていましたOrz
あとこれは余談ですが、GetMEMとSetLengthとは同じなんですかね?
私がGETMEMで確保してましたが、回答してくださった方はSetLengthでやっていました。
これはアセンブラのCMPとTESTみたいな感じで好みによってでしょうか?
別にこれには答えてくださらなくても構いません。

回答者のお二人ありがとうございました、目からウロコです><



527 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 17:38:22 ]
>>526
ヘルプを読めばGetMemとSetLengthの違いがわかります

528 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 21:07:30 ]
>>527
ほんとだ・・・いつもメモリ扱う時はPchar使ってたから、意識しないで使ってたけど、
違いあったんですね・・・。
どうもでした。


529 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 11:01:59 ]
Fizz-Buzz 問題:
ttp://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
 1から100までの数をプリントするプログラムを書け。
 ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
 3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

ヒント
 GUIアプリでも AllocConsole; を入れておけばコンソールを出して write/wrilteln を使う事が出来ます
 TMemoを貼ってLines.Add をプリント代わりとしてもいいです。


530 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:51:19 ]
>>517-521
結局どっちなんだよw


531 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:04:56 ]
bitmap.PixelFormat := pf32bit;
bitmap.Canvas.Pixels[0,0] := TColor($0000FF);
PDWORD(bitmap.ScanLine[1])^ := DWORD(TColor($0000FF));
PDWORD(bitmap.ScanLine[2])^ := DWORD($0000FF);
で試してみた
結果




嘘つきばっかだなw

532 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:39:54 ]
もう放置したら?

533 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:40:34 ]
>DWORD(TColor($0000FF));
>DWORD($0000FF);

意味ねぇーー



534 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:35:55 ]
>>533
「意味が無い」ことを説明してるんでは?

TColorが上位、下位逆なのを説明されても理解できていない&認めようと
しないのが多数居たのが驚き。
いや、それだけ初心者向けの言語ってことなんだろうな。

535 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:38:44 ]
多数じゃなくて、一人だけだろw

536 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 15:15:36 ]
DLLを1つだけ LoadLibrary で読んでGetProcAddressして動かしてるプログラムがあります
このDLLをリソースには入れれたのですが実行時にDLLをHDDに書き込まずに動かす方法があれば教えてください
環境は、WinXP,Delphi6です。。。ファイルをEXE1つだけにしたいだけなのですがお願いします

537 名前:536 mailto:sage [2008/03/15(土) 16:18:06 ]
わざわざファイルに書き込まなくてもそのままでいけました。。。

538 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:09:45 ]
GPL逃れですか?

539 名前:デフォルトの名無しさん [2008/03/27(木) 17:33:47 ]
ほしゅ

540 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 06:48:24 ]
>>534
間違っています。
以上。
↓次どうぞ

541 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 15:44:57 ]
ビルドした日付を埋め込むにはどうしたらいいですか?
BCBの__DATE__みたいな奴です。

542 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:47:59 ]
できないので手動で埋め込んでください。

543 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 10:01:18 ]
$Iで埋め込んだらどうかな。
実験コード
procedure TForm1.FormCreate(Sender: TObject);
begin
with TStringList.Create do try
Add(''''+formatDateTime('yyyy/mm/dd',now)+'''');
SaveToFile('Test.dat');
finally free end;
Caption:={$I test.dat};
end;

名前付きパイプで、日付データを返すようなのを作って走らせて
{$I \\.\pipe\DatePipe } とか



544 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 11:30:32 ]
名前付きパイプは上手くゆかなかった。
APIで読めば読めるけど、LoadFromFileでは読めない。
たぶんLoadFromFileではサイズを先に読んでから処理するからなんだろう。

だから $Iでも読めないかも

545 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 18:58:18 ]
フォームに並べた10個のラベル
(名前が label1,label2..label10 とかだとして)
それぞれのラベルのCaptionにループを使ってアクセスするにはどうしたらいいんでしょう。


546 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:02:21 ]
(FindComponent('Label'+IntToStr(LabelNum))as TLabel).Caption

547 名前:545 mailto:sage [2008/04/17(木) 21:33:34 ]
助かりました、ありがとうございました!

548 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:51:42 ]
>>543
それを埋め込んだデルファイを起動するアプリを作っていいかんじになりました、どうも。

549 名前:デフォルトの名無しさん [2008/05/14(水) 16:04:58 ]
TDrawGridのColやRowプロパティが変更する場合の、
イベントハンドラを教えてくださいorz

550 名前:549 mailto:sage [2008/05/14(水) 16:16:32 ]
OnClickでできますた。

551 名前:デフォルトの名無しさん [2008/05/17(土) 13:45:07 ]
Delphianが行方不明なのでこちらに質問させてください;;
Stringでなく数値で操作できるGridコンポ探しています。
どなたかご存じないですか?

552 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 02:03:35 ]
>数値で操作できる

いみふめ

数値と文字列は相互可変なんだから TStringGrid でなにが不足なんだ?

553 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 10:57:12 ]
セルの値を直接数値で入れたり出したりしたいんだろう。素人がしたがりたそうなことだ。



554 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 11:09:12 ]
'0'..'9'のみ入れさせたいなら
StringGridKeyPressイベントで

if not (Key in ['0'..'9']) then Key := #0;
とかやって入力を潰してしまえばいい。

ペーストも含めて対策したいならSetEditTextでゴミを取り除いてCells[]にセットしてやればいい。
他にもなんか対策すべきだったと思うが忘れた。

まあそこらへんのノウハウ込みのコンポを探してるんだろうが。

555 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:02:23 ]
はい、日曜ど素人でございます(T_T)
StringGridKeyPressとSetEditTextで新しいコンポを作れそうです。
ありがとうございました。

556 名前:デフォルトの名無しさん [2008/05/28(水) 18:57:24 ]
TFileStreamでファイルをオープンして、
別のストリーム、たとえば、TContentStreamにファイルの中身を設定しようとすると、
どういった記述となりますか?

557 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:55:36 ]
Assignを使う。どちらもTStream派生だから。

558 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:59:25 ]
LoadFromStream はないの?

559 名前:デフォルトの名無しさん [2008/05/31(土) 02:17:47 ]
グーグルマップに自分のブックマーク(っての?)残せるやん?

ローカルの地図画像であんな感じのアプリを、db連動で作ってみたいんだけど、何を参考にすればいい? グラフィック関係かと思って、ゲーム関係見たけど、あまり参考になりそうにない。

560 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:48:36 ]
超初心者ですまん。

juni := member_suu + 1;

for t := 0 to member_suu - 1 do
begin
for k := 0 to member_suu - 1 do
begin
if StrToInt(ListBox1.Items[t]) >= StrToInt(ListBox1.Items[k]) then
juni := juni - 1;
end;
ListBox2.Items[t] := IntToStr(juni);
juni := member_suu + 1;
end;

上の関数で整数の特典に対して順位をつけたのだが、同点がおおくて1位等が重複してしまうので、
重複しないようにしたい。1位と2位の差はあまりこだわっていなく、名前順でいいしランダム(条件なし)でもいい。
アドバイスください。

561 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:38:25 ]
・名前順なら得点と名前をソートのキーとする
・ランダムなら、得点とランダム値をソートのキーとする

562 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 03:10:21 ]
Jane Doe Styleのスレッド本文の表示には何のコンポーネントを使っているのでしょうか?

563 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 03:11:13 ]
すみません、他で聞きます。



564 名前:デフォルトの名無しさん [2008/07/23(水) 17:05:00 ]
Form に Formを貼り付けると、MainMenuが表示されませんねorz

表示させる方法はあるのでしょうか?
無ければ、Menuライクなコンポーネント?

565 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 19:25:23 ]
何がやりたいの?

566 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 13:42:48 ]
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet***\Enum以下の
レジストリを操作(キー・値の変更・削除)したいんですが
SYSTEMユーザーしか操作権限がない状態です

これらを操作する方法などありますか?

567 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 22:03:58 ]
いやそれ操作したら駄目だろ。

568 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 11:06:01 ]
やっぱりタブーなのね(´・ω・`)サーセンでした

569 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:37:09 ]
なにしたいのよ?

570 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:57:37 ]
テスト環境で設定したソフトの登録情報を
本番環境とごっそり置き換える作業をプログラム化したいんです。

今、それをするのに手作業(設定時なのでAdministrato)で
レジストリのアクセス権つけて不必要な登録を消したりとかしてます。

571 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:14:04 ]
それにしてもHKLM\System以下を書き換えるなんてのはありえないと思うが?

572 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 16:17:13 ]
Enum\LEGACY*のいくつかにマシン名やコンピュータの設定が
刻まれているので消しているということらしいんですが
(この辺がテスト環境と本番環境で変わってくるので変更したい)

実際には、その環境の情報を見てはいないんですが
消す必要がないのかな・・・

573 名前:デフォルトの名無しさん [2008/08/29(金) 00:44:34 ]
画像ファイル(bmp、jpg)をテキストデータとして扱うことはできませんか。
MIMEとか、ishのような感じで、当然、可逆変換で。



574 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 08:19:15 ]
そのMIMEとかいshで変換すりゃあいいやん。意味不明。

575 名前:573 [2008/08/29(金) 19:31:44 ]
ん〜と、簡易データベースみたいなのをつくろうとしてて、テキストフィールドに画像を「テキストデータとして格納」したいってことなんだけど、意味不明?

576 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:25:36 ]
やっぱり意味不明かも。
まともなRDBMSならBLOB使うべきだし、
BLOB使えないなら別の名前を与えてファイルのまま保存、使うときは逆参照汁。

577 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:29:26 ]
まあどうしてもやりたいなら止めない。

ttp://www.google.com/codesearch?q=BASE64+lang%3Apas

この辺りでも参考にしてくれ。

578 名前:デフォルトの名無しさん [2008/08/31(日) 01:49:12 ]
あ、俺は逆のパターンを知りたい。
文字列フィールドに入りきれない文字列を画像に変換してBLOBに保存する、って無理?

579 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 11:22:22 ]
>>578
使用してるDBが分からないけど、Delphiからということを考慮するとFirebirdか?

もしそうなら、難しいこと考えず、サブタイプが1(テキスト)のBLOG作ればいいんじゃないのかな?

ほかのDBだと、
PostgreSQLはTEXT型があるから、意識する必要なし
SQL Serverも、2005からVARCHAR(MAX)があるから、意識する必要なし
MYSQLもTEXT型があるみたいだ
ORCLE, DB2はシラネ


580 名前:デフォルトの名無しさん [2008/08/31(日) 11:37:40 ]
>>579

ローカルで火鳥かMSQLか何かの組み込みエンジン(まぁ、これは何でもよい。)、相手先はOracle。

Oracleにはあらかじめ定義された文字・数値項目と画像の入力ができる。
しかし、設計が追いついていないため、利用者で必要な情報を入力する文字項目が足りない。
画像なら何十枚でも追加可能。

そこで、ローカル情報を画像に変換してオラクル側に画像として保存すれば、当面は事足りるってこと。
もちろん取り出したら、ローカル側では文字情報に戻す。

その時の変換作業用っていうか、状態確認用みたいなので、ローカルでも同じものを保存しておきたい。

と言うことなんだけど。

581 名前:デフォルトの名無しさん [2008/09/01(月) 07:15:35 ]
EditでIMEがOn/Offで背景色を変えたいんだけど
そういったサンプルコードないですか?

582 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 19:27:39 ]
無いな。だがヒントだけ教えてやろう。
IMEの状態が変わるときのメッセージ(WM_IME_NOTIFY)を受けたら
IMEの状態を取得して、ONの時はColorプロパティを適当な色に変えれば良いんだ。

583 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 01:05:42 ]
処理が大まかに2つあってタイマーを使って繰り返したい(Intervalはどちらも同じで問題ない)場合
タイマーを一つだけ使うのと、処理それぞれでタイマーを作るのでどっちが一般的なんでしょうか?
また、どっちが軽くなるんでしょうか?
よろしくお願いします。



584 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 03:24:52 ]
Intervalが同じならとりあえず一つで十分だろう。
タイマー二つまわすよりも一つの方が理屈としては軽い。
ただタイマーごときで重くなるようなPCは今時存在しない。

585 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 03:31:58 ]
>>584
ありがとうございます!
助かりました


586 名前:デフォルトの名無しさん [2008/09/08(月) 08:07:01 ]
あの・・単純な質問なのですが、TChartコンポーネントを使って
凡例を表示させると、凡例がグラフの裏側へと隠れてしまいます。
(枠の端っこのちょっとだけ見えている状態です)

これをグラフよりも手前に表示させる方法を教えてください・・

587 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:01:27 ]
ソフト公開所
namidame.2ch.net/test/read.cgi/mitemite/1220869722/
こういうスレつくってみた。

588 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 06:27:01 ]
アップローダもなしに何をどう公開しろと・・・

589 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 14:49:55 ]
板違いで失礼します。
Linux環境にてDelphi互換のLazarusをインストールして使いたいと思い
freePascal本体、Freepascalのソース、Lazarus本体をインストール致しました。
Lazarusは立ち上がり、ソース入力後
いざ実行というときに、コンパイラに弾かれてしまいます。

以下エラーメッセージです。
/usr/bin/ld: cannot find -lX11
project1.lpr(17,1) Error: Error while linking
project1.lpr(17,1) Fatal: There were 1 errors compiling module, stopping

リンク関係の設定を何かはじめに行なわないといけないのでしょうか?
もし、ご存じの方いらっしゃいましたらご教授ください。
よろしくおねがいします。

590 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:39:03 ]
>>589
とりあえずこういうスレがあるからそちらで聞くとよいと思われ。

【Delphi互換!?】FreePascal【GPL】
pc11.2ch.net/test/read.cgi/tech/1137051510/l50



591 名前:589 mailto:sage [2008/09/11(木) 09:58:00 ]
>>590
ありがとうございました。
教えていただいた、スレを拝見致しまして
無事解決することができました!

592 名前:デフォルトの名無しさん [2008/09/12(金) 13:51:14 ]
ウィンドウっとか、オブジェクトってフォームデザイナで作っておかないとだめなんでしょうか?
ユーザーの処理にあわせて、新しいフォームを作り、そこに画像を表示させたいんです。
元々用意しとくんじゃなくて、いくらでも増やせていけるように。

たとえばフォトショップでいくらでも画像ひらいて、どんどんウィンドウ増えるじゃないですか。
あーいう感じです。

593 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 13:59:37 ]
インスタンスをどんどん作ればいいじゃね?

TForm1=class(TForm)
end;

forms: array of TForm1

SetLenght( forms, 10 );
for i := 0 to 9 do
  forms[i] := TForm1.Create( Self );

って感じで。

これだったら、デザイナで1つ作って、実行時は10個フォームが出きるが。




594 名前:デフォルトの名無しさん [2008/09/12(金) 15:03:51 ]
ありがとうございます。
このフォームの上につくるオブジェクトもこれでOKですかね。
いわゆる動的生成をやるってことですよね?

595 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 15:13:38 ]
そうです。

フォーム上のObjectが同じなら最初にデザイナで作っておく。
フォームごとに変わるなら、それぞれ、動的作成するんだけど、
動的作成しなければいけないObjectが多数ある場合は、
デザイナで作った方が簡単だと思う。



596 名前:デフォルトの名無しさん [2008/09/12(金) 15:49:30 ]
ありがとうございました!

597 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:27:00 ]
>>588
アップローダー作ったら公開してくれるの?

598 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:30:44 ]
>>597
半年ROMれ

599 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:35:40 ]
---------半年後----------

600 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:47:11 ]
最終回か…。

601 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 21:18:10 ]


602 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 15:50:00 ]
>>529 3の倍数はアホになれ

603 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 23:02:01 ]
十年ほど初心者やってるんですが、先ほどFastCodeを知り試してみました
D5にFastCode.Libraries-0.6.4入れたらStrUtils.pasなど新しいものが入っていないので断念して
某所さんの古い記事にあった「詰め合わせセット RTL Replacement Pkg v0.3」を入れました
>Delphi 4 以降に対応しています。私はまだ試していないのですが、Delphi 7 以前では特にお勧めだと思います。
とあったのですがやはりエラーの嵐でサンプルすらコンパイル出来ませんでした

どなたかD5で使っておられる方は居ませんでしょうか?
D2007も持ってはいるんですが起動時間や手軽さからD5は手放せないのです



604 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 23:27:22 ]
すなおにD2007

605 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 23:29:02 ]
>>603
D5持ってたらなんなの?

606 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 23:35:15 ]
>>604
D2007ではFastCodeの効果ありますでしょうか?

607 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 23:35:47 ]
>>605
いえ、FastCodeの話です

608 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 00:44:33 ]
D2007はFastCodeもFastMoveもFastMMも採用済みじゃなかったっけ?

609 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 02:09:08 ]
FastCodeのAnsiStringReplaceは「Ansi」って付いてるけど
マルチバイト非対応なんで気を付けてね


610 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 09:14:53 ]
FastMMは使ってるから何か分かるが、
FastCodeとかFastMoveって何?

611 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 10:24:37 ]
グーグレ

612 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 14:31:52 ]
>>610
標準のシステムの関数を速いのにおきかえたものただし>>609の問題があったはず

613 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 11:32:01 ]
バグ恐いからFastMMしか使ってないな



614 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 18:23:00 ]
ちょうどCompareMemがネックになってたんでちょっと使ってみるかな。

615 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 13:17:57 ]
>CompareMem
kwsk

616 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 15:08:18 ]
TMemoryStreamの先頭3バイト削除したりできますか?

617 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:23:17 ]
だめです
先頭3バイト以降を別のStreamにコピーするとか
MemoryをPCharにキャストして[3]とか

618 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 07:53:17 ]
そもそもメモリを削除ってなによ

619 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 10:04:30 ]
cのscanf相当の関数教えて

620 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 10:27:00 ]
>>619
その前にそのscanfとやらが、Delphiでどの関数にあたるのかを説明してくれ。

621 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:21:45 ]
>>619
ないはず

622 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 16:36:03 ]
>>619 stdioはいまさらイランと仮定して、いっかい文字列に入れてから
strtoint strtofloat strtocurr他で一個づつ変換

623 名前:デフォルトの名無しさん [2009/03/24(火) 14:32:45 ]
TMemoryStreamでSizeを大きくしたら、大きくなった部分NULL埋めされるんでしたっけ?



624 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:18:41 ]
>>623
試すのに1分もかからないと思うが、どうよ?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<190KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef