06/10/19 11:19:34
>>173
BDE使ってるならEDBEngineErrorでcatchすれば
エラーの詳細が取れるけど。
どうやって接続してるの?
176:173
06/10/19 11:24:15
>>174
すみません、もっと根本的な問題だったようです。
やりたいことは、レコードロックによるタイムアウトエラーを取得したいのですが、
タイムアウトはEDatabaseErrorではないようです。
タイムアウトはEDatabaseError以外のどのExxxErrorでとれるのでしょうか?
177:173
06/10/19 11:25:55
>>175
データモジュールにADOConnectionを貼り、ADOQueryで実行しています。
178:デフォルトの名無しさん
06/10/19 11:35:44
>>176
そこまで細かいことは自分で調べちゃった方が早くね?
179:デフォルトの名無しさん
06/10/19 11:46:42
>>176
on E: Exception で捕まえて、E.ClassNameを調べる
180:173
06/10/19 15:30:24
>>178、179
ありがとうございました。
調べたところ、EOleExceptionと出ました。
181:デフォルトの名無しさん
06/11/04 19:10:27
SyncObjsの中にあるTCriticalSectionですが、
EnterとAcquire、LeaveとReleaseの違いは何ですか?
いろいろ試した限りでは同じ処理に見えるのですが・・・
182:デフォルトの名無しさん
06/11/04 22:59:27
>>181
ヘルプ見た?
その上で動作が同じだと判断するなら同じなんです
深く考えすぎないほうが良いかと
183:デフォルトの名無しさん
06/11/06 22:23:11
>>182
TCriticalSectionのページに行こうとしても、
リンクがみつかりません って出るんですよ
無料のDelphi6だからかな? まぁ気にしないことにします
184:デフォルトの名無しさん
06/11/07 11:13:41
QuickReport印刷内容をビットマップ(Jpegでもおk)に落とす方法教えて下さい。
185:デフォルトの名無しさん
06/11/07 18:24:07
そういうプリンタドライバがあるよ
186:デフォルトの名無しさん
06/11/23 13:53:16
リレー動作のプログラムなんですが64個のリレーを
チェックボックスに分けて選んでリレーを
ON/OFFしたいんですが
procedure TForm1.Button1Click(Sender: TObject);
begin
Relay[Time]:=True;
Time:=Time+1;
RelayChange;
end;
これからどう増やせばいいでしょうか?
どうかよろしくお願いいたします。
187:デフォルトの名無しさん
06/11/23 20:25:23
>>186
日本語でおk
188:デフォルトの名無しさん
06/11/25 17:27:49
IsDelphiで、このソフトが、Delphi製とでるのですが、
URLリンク(www.highdots.com)
オフィスっぽいGUIは、どんなコンポーネントを使っているんでしょうか?
189:188
06/11/25 17:28:27
すみません。超初心者スレと間違えました(汗
190:デフォルトの名無しさん
06/12/25 17:35:38
コンストラクタ内で例外を発生させるのってまずい?
自作クラスのコンストラクタの引数で作業フォルダのパスを指定して
フォルダが存在しなければ作成ってのをやろうと思うんだけど、
try~finallyの手前でCreateすると例外が発生したときに例外を捕まえられないし
try内の先頭でCreateするとコンパイルで「初期化されていない可能性があります」と警告が出る。
コンストラクタは内部変数の初期化だけにしておいて
作業フォルダのパス指定は別メソッドにしておいたほうがいいのだろうか・・・
191:デフォルトの名無しさん
06/12/25 19:14:46
>>190
try
Create
try
hoge
finally
hoge
end;
finally
hoge
end;
192:デフォルトの名無しさん
06/12/29 14:20:58
>190
Delphiにおいてはコンストラクタ内で発生して捕捉されない例外は
コンストラクタの失敗を意味する。
193:デフォルトの名無しさん
07/01/06 19:54:05
hosyu
194:デフォルトの名無しさん
07/01/27 03:40:04
2chブラウザのJaneみたいな動かせるメニューバーってどうやって作ったらよいのでしょうか。
195:デフォルトの名無しさん
07/01/27 03:58:26
>>194
TCoolBar のバンドの .Control に TToolBar 設定して、
TToolBar.Menu に TMainMenu 設定。
196:デフォルトの名無しさん
07/01/31 17:58:13
Bitmap画像をレイアウト部分はコーディングでなくてポトペタで作成したいのですが、
良い方法はありますか?
QuickReportで良いのですがQuickReportは汎用画像出力が出来ないので...
197:196
07/01/31 19:05:07
そういう機能をレポーティング コンポーネントって言うらしいですね。
でもWin32用が無いお。
198:デフォルトの名無しさん
07/01/31 23:11:14
>196
日本語でおk
199:デフォルトの名無しさん
07/01/31 23:15:30
グラフィックソフトとか、ワープロでつくるようなをDelphiでやりたいんじゃないの?
で、最終的に、印刷じゃなくて、画像にしたいと。
200:デフォルトの名無しさん
07/03/02 07:58:21
.netを普及させる方法を思いついた!
win32に、WCaption: WideString みたいなメンバを追加して
さらにくそでかく遅いバイナリしか生成できなくする。
これなら.netでいいや、ってなりwin32死滅。
201:デフォルトの名無しさん
07/03/02 16:54:35
日本語でおk
202:入門きぼん
07/03/18 23:52:34
すみません。教えて下さい。
DelphiTurboExplorerを、サイトからDLして使用したいと考えているのですが、
ユーザー登録をすませても、DLページに行けずに困っています。
それと、フリーのデーターベースであるFirebirdと
繋げられるのでしょうか?
やはり製品版でないと無理なのでしょうか?
自分は、単純に初心者向けプログラムである。
CDやDVDの在庫管理アプリを作りたいだけなんですが、
自分の労力以外は、極力フリーで作りたいと思っています。
可能でしょうか?
宜しくお願いします。
203:デフォルトの名無しさん
07/03/19 00:54:43
URLリンク(www.turboexplorer.com)
204:デフォルトの名無しさん
07/03/19 01:06:50
>>203
The page cannot be found
205:デフォルトの名無しさん
07/03/19 06:01:06
URLリンク(www.turboexplorer.com)
206:デフォルトの名無しさん
07/03/19 11:33:22
>>204,205
HTTP Error 404 - File or directory not found.
207:デフォルトの名無しさん
07/03/19 20:46:50
URLリンク(torrent.borland.com)
208:202
07/03/19 21:55:11
>>207
すみません。
やはりHTTP Error 404 - File or directory not found.になります。
みなさん、ありがとうございました。
残念で、悲しいですが、すみませんがDelphiあきらめます。
209:デフォルトの名無しさん
07/03/19 22:07:23
繋がるけどなぁ
URLリンク(www.codegear.com)
210:デフォルトの名無しさん
07/03/20 00:22:27
>203 >205 >209は普通に繋がるね。
211:デフォルトの名無しさん
07/03/21 07:19:26
普通につながるけど?
212:デフォルトの名無しさん
07/03/21 23:56:26
条件文がたくさんあって、それらを同じ処理するときはどうしたらいいですか?
ifのあとに条件をズラーッとandでくっつけるしかないのでしょうか?
例えばxが1 3 5 6 7 10・・100と不規則なときに、一定の動作をさせたいです。
213:デフォルトの名無しさん
07/03/22 00:14:26
case x of
1,3,5,6,7,10,100: ~~';
else
~~;
end;
214:デフォルトの名無しさん
07/03/22 07:13:44
if x in [1,3,5,6,7,10..100] then XX;
ってのもあるよ
215:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/03/23 12:23:28
>>215
2chのレス数じゃ無理w
試しに幅優先探索して書こうとしたら、600行超えたからやめたw
217:デフォルトの名無しさん
07/03/23 17:39:42
>>215
たけしのコマ大かと思った・・・。
斜め移動はあり?
地形は固定?
障害物1等のオブジェクトは、定数?
つっこむ所が多々ありそうだなぁ。
218:デフォルトの名無しさん
07/03/24 19:35:42
>>215
普通にA*でいいんじゃないの?
>>216
600行はありえん。
219:デフォルトの名無しさん
07/03/25 00:12:27
>>217
俺は斜め移動無し、固定でMAPはファイルからそのまんま読み込んだ状態としたよ
んで、今の箇所から上下左右で自分の関数を呼び出して、再起関数にして探してった。
でもこれじゃ全数検索になってしまう。
こういうアルゴリズム習ったけどやり方有ってるか不明
>>218
A*って何?
220:デフォルトの名無しさん
07/03/25 04:42:33
工場勤務でブルーワーカなのだが、明日から夜勤なので睡眠時間調整の
暇つぶしに >>215 をやってみた。5時間かかったお。
再帰呼び出しとかは使えないし分からんので、長めになっちゃった。
キュー(FIFO)をやってみようと思って、ポインタとか使ってみたけど訳分からん。
URLリンク(strawberry.web-sv.com)
(フォームにボタン1個要)
だって、MC工作機械マクロ言語に再帰呼び出しとかポインタなんて無いよ orz
あ、でも、なんちゃってポインタは出来るかな? #(#10) な感じで。
221:デフォルトの名無しさん
07/03/25 07:25:37
A Starでやれ
222:デフォルトの名無しさん
07/03/27 02:25:05
昔Delphi6触ったときにはたしか標準でフォルダ選択ダイアログってなかったような気がするんですが
TurboExplorerにもなかったりします?
223:デフォルトの名無しさん
07/03/27 06:53:37
SelectDirectoryなら昔からあったと思うが?
名前がセレクトフォルダじゃないからダメなの?
224:デフォルトの名無しさん
07/03/28 09:12:04
Delphi6のSelectDirectoryはダイアログの表示位置がずれるバグがあるんだよな
225:デフォルトの名無しさん
07/03/28 09:45:16
バグじゃないよ、たんに場所指定してないだけ。ML の過去ログやら、コンポ
で解決したのがわんさかあったけど、いまは知らない
226:デフォルトの名無しさん
07/03/28 09:54:17
まあ、フォルダのD&Dに対応しとけば、みんなソレ使うから
SelectDirectoryはとりあえずあればいいやみたいなもんだし
227:デフォルトの名無しさん
07/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
07/03/29 09:06:36
>>220
遅くなったがサンクス!
ただ、速度おっそいなぁw
229:デフォルトの名無しさん
07/03/31 10:40:58
保守
230:デフォルトの名無しさん
07/04/07 19:52:37
現在BDEで作成されているものをFirebirdに簡単に変更できるものでしょうか
Firebirdはまだ触ったこともないし、BDEもそのとき玉々作ってみただけの
データベース素人ですが。
231:デフォルトの名無しさん
07/04/08 13:26:52
>>230
どういう作りになっているのかにも寄るけど
簡単には無理じゃね。
232:デフォルトの名無しさん
07/04/08 20:33:05
>>231
ありがとうございますm(_ _)m
やっぱ作り直しですか。
233:デフォルトの名無しさん
07/04/08 20:57:31
いや、普通にコンポーネント貼り付けて作ってるなら
InterBase Data Access に変えるだけで問題ないだろし
そうでないなら、それなりに大変だろうってだけさ
234:デフォルトの名無しさん
07/04/08 21:59:34
やってみまふ。
235:デフォルトの名無しさん
07/04/10 13:29:14
ヒント: Firebird ODBCドライバ
236:デフォルトの名無しさん
07/04/10 20:04:01
今しばらくは生きていけそうです
237:疑問
07/04/16 02:52:02
なんでIntegerとかが予約語になっていないのでしょうか
var
Integer: string;
begin
Integer := 'Double';
Writeln(Integer);
end.
238:デフォルトの名無しさん
07/04/16 08:03:01
Integerは予約語ではないけど定義済の型名だから
変数として使うと、
使った後整数型の定義とか、型変換とかで困ってしまうよ
他の型名とか自分で定義する型名も同じ事情があるよ。
239:デフォルトの名無しさん
07/04/16 16:19:27
回答になってねぇw
240:デフォルトの名無しさん
07/04/16 23:21:03
>>237
なんでだろ。
Windows.hとかのCからコンバートしたときのための兼ね合い?
似たようなので、引数でも例外あったような
241:名無し@沢村
07/04/17 00:10:20
おみゃーらー♪
Delphiはつまらんぞー!
おみゃーたー、『肥えた語』つー言語があるの知ってる?
おりは知ってるよ。
おりがつくった言語よ。これからh『肥えた語』の時代よ。
URLはここよ↓
URLリンク(www.geocities.jp)
感想を頼むなー♪
242:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/04/23 23:02:28
せめてバージョンくらい書こうよ・・・
244:デフォルトの名無しさん
07/04/23 23:05:38
すんません、JVCL320CompleteJCL197-Build2172.zip でした。
245:デフォルトの名無しさん
07/04/23 23:07:22
なんでそんなに古いのを入れようとしてるの?
246:デフォルトの名無しさん
07/04/23 23:17:26
そんなに古いのー?
247:デフォルトの名無しさん
07/04/23 23:18:12
すみまそん。
しばらくD5で使ってたのでそれをそのままフォルダからインストールしようとしてました。
248:デフォルトの名無しさん
07/04/23 23:19:48
それだとD5でコンパイルされたファイルと混じっておかしくなるんじゃない?
249:デフォルトの名無しさん
07/04/23 23:28:30
やっぱそうですか。
はき出す場所が違うからOKだと思っていたのですが、
とりあえず2005には最新版を入れてみます。
250:デフォルトの名無しさん
07/04/24 20:28:58
JVCL331CompleteJCL199-Build2551.zip
入れてみましたが状況は変わりませんでした(x.x)
251:デフォルトの名無しさん
07/04/24 21:14:09
前にインストールしたときのゴミが残ってるんじゃないかね。
とりあえずJcl*.bplとJv*.bplを削除してみたら?
252:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/04/24 21:35:10
Delphi5って、サポートされてたっけ?
254:デフォルトの名無しさん
07/04/24 22:06:55
されてる。
255:デフォルトの名無しさん
07/04/24 22:44:22
JCL/JVCLって昔試したときマルチバイト文字に対応してなかったような記憶が
あったようななかったような・・・
256:デフォルトの名無しさん
07/04/24 23:15:42
コンポーネントによってされてたりされてなかったりだね。
257:デフォルトの名無しさん
07/06/18 23:36:07
コンポーネントがDesignideを使っててコンパイルできなくなるとかの
問題でずっと悩まされてます・・・
古いIDE組み込み型のコンポーネントって
新しくなるとコンパイルが通らなくなる・・(泣
Designideで悩まない方法はありますか?
258:デフォルトの名無しさん
07/06/19 05:33:00
D6パーではHelpに書いてある。互換性の問題
259:ミ,,゚Д゚ミノ ◆A6VzDeLphI
07/06/19 14:05:42
こんなんでよい?
-- DsgnIntfが見つからない場合 --
コンポーネントをインストールするときに
DsgnIntfが無いといってエラーになる場合があります。
Delphi5からDsgnIntf.dcuのコンパイル済みユニットが
無くなったからこのような現象が起きるそうです。
Delphi6からはDesignIntfという名前に変更されています。
DsgnIntf Unit はおもに、コンポーネントエディタやプロパティエ
ディタを作るときに利用するものです。
「環境オプション/ライブラリパス」に
$(DELPHI)\Source\Toolsapi
を追加してみましょう。
解決するはずです。
本当は、この方法を用いるとプロパティエディタのコードが
実行ファイルに含まれてしまうので、そういう書き方をしている
コンポーネントが悪いので、自分の作る物ではこういう問題が発生しないように
気をつけましょう。
参照──────────
[Delphi:42979] Delphi5 変更点
URLリンク(www2.big.or.jp)
260:デフォルトの名無しさん
07/06/21 20:49:16
Delphi7を使ってます。
designide.dcuが見つからないという
エラーが出てしまいます・・orz
261:デフォルトの名無しさん
07/06/21 22:17:40
そうですか
262:デフォルトの名無しさん
07/06/28 07:12:16
TUIWebBrowserで読み込んだFlash上の入力ボックスで
BackSpaceキーは効くものの
Enterキーがきかないのですが
効くようにすることは可能でしょうか?
263:デフォルトの名無しさん
07/06/30 08:58:54
>>259
ありがとうございます。
いろいろいじっていて
実行時パッケージでない方でビルドできました。
264:デフォルトの名無しさん
07/06/30 22:34:43
ナッキーのdelphi奮戦記面白い
間違いなくナッキーは淫乱
ペイントソフト楽に作れ杉
265:デフォルトの名無しさん
07/07/04 09:36:13
TShapeじゃなくて、ラインをペタペタ貼るコンポーネントありましたっけ?
266:デフォルトの名無しさん
07/07/04 09:44:58
直線だけなら OnPaintに Canvas.MoveTo Canvas.LineToで簡単に引けるから需要無いかと
267:デフォルトの名無しさん
07/07/04 09:49:35
Delアメ猫だったかの人がフサギコと絡んで、マウスで直線を動かせるようなコンポーネントの原型を作って
どっかにアップしてたように思うのだけど、今検索してもみつからないな
268:265
07/07/04 09:55:01
>>266
やっぱ、そうですか。
>>267
>マウスで直線を動かせるようなコンポーネントの原型を作って
欲しいもの、これですorz
269:ミ,,゚Д゚ミノ ◆A6VzDeLphI
07/07/04 10:54:14
HDDに、原型のやつがあったよ。
検索に1時間ほどかかってしまた。
270:265
07/07/04 11:00:48
>>269
デルフサギコ様、うpをお願いしますorz
コンポーネントのソースは読めるので、
手直しとか派生くらいできますし、
使いこなせると思いまつ。
271:ミ,,゚Д゚ミノ ◆A6VzDeLphI
07/07/04 11:00:59
実行時にマウスで動かせた矢印コンポもあったような気がするんだけど
手元にあるのはShapeの矢印版っすね。
majunarrowexとか、viArrow.pas
って名前だけど、googleではでないみたいだ。
とりあえずうpろうか。午後くらいでよい?
272:265
07/07/04 11:03:42
>午後くらいでよい?
ずっと待ってまつ。
希望では、以下の機能も欲しかったり。。。
・マウスで動かせる
・マウスで長さが変えられる
・移動や長さが変ったときに、Changeイベント
・矢印をオフにして単なるライン化
273:ミ,,゚Д゚ミノ ◆A6VzDeLphI
07/07/04 11:09:05
URLリンク(delfusa.main.jp)
いや、はようpっとくよ。
もっといいものをつくってくれた人もいたきがするんだが...
あの時期てきにホットゾヌの作者の中の人だった気がするが
確証無しで。
このコンポ、いったい誰作なんだろう...中国の方かしら。
274:ミ,,゚Д゚ミノ ◆A6VzDeLphI
07/07/04 11:11:48
設計時なら
>・マウスで動かせる
>・マウスで長さが変えられる
桶
>・移動や長さが変ったときに、Changeイベント
わからない。というか、Resizeイベントはなさそうだから
どっちにしても自作だね。
>・矢印をオフにして単なるライン化
なぜか出来ないみたいだ。
改造すれば簡単でしょう。
275:デフォルトの名無しさん
07/07/04 11:20:24
コレの事?
URLリンク(delwiki.info)
276:265
07/07/04 11:27:46
>>274
>>275
サンクス!
両方ダウソしました。
どっち使うか決めなきゃ。。。
277:デフォルトの名無しさん
07/07/04 11:53:46
>>273
・1個だけ
・設計中のみ変更可能
・コードはシンプル
>>275
・複数のラインやオブジェクトが1コントロールに入る
・フォームにフックさせて最下面に無理やり描画するのも出来る
・実行中に移動等も可能
・出来る事が大きいだけに、けっこう複雑
278:265
07/07/04 11:56:32
>>277
サンクス
どっちもクセ多杉orz
やりたいことは275なんだけどメッセージフック&インライン汗と、
何かあったとき対処できるかなとドンビキ。
273に275のコード混ぜるかなぁ。。。
279:デフォルトの名無しさん
07/07/04 12:06:35
>>275 には コンポが2つ入っていて、片方は TGraphicControl でメッセージフックは使ってない。
インラインアセンブラの部分はたぶん変更しなくていいいだろう。
ただ、文字を回転させるのに端ではなくて 真中というのは、チョットとまどった
あと、DesignProcでマウス応答全部やってるので
右ボタンメニューに対応させるとか、ココでやらんとあかんのかも
280:デフォルトの名無しさん
07/07/04 12:50:49
アセンブラの部分は 浮動小数点に置き換えたらいいんじゃないの?
iHypot -> math.Hypot で代用
MulSubDiv はコメント通りに浮動小数点で計算させる
281:265
07/07/04 13:02:06
汗は汗のままでも良いです。
>あと、DesignProcでマウス応答全部やってるので
この作り、拡張性大丈夫かなぁ。
282:デフォルトの名無しさん
07/07/04 13:11:00
WndProc で inherited してるから大丈夫じゃないの?
気になるなら、それぞれ分けたらいいだけで
ひとつはデザイン中だけ処理させる判定を1箇所にまとめたかったのと、
TMyFormDraw と TMyDraw の両方で使いたくてコピペが楽だからそうしたんだろな
283:265
07/07/04 13:19:59
>WndProc で inherited してるから大丈夫じゃないの?
了解でつ。
このコンポってStringsの中身をLines1つにすれば1本の線になるんですね。
動きも面白いし、機能は完璧。
最期の悩みは、このまま使うか、Linesプロパティを削除して、1本の線のコントロールとサブセットコントロール化するか。。。
284:Delフサギコ ◆A6VzDeLphI
07/07/04 13:21:48
∩ ∩
ミ ゙''゙~ ________
ミ∧,,∧ /
ミ,,゚Д゚彡 < おお。あったですかぁ。
U U \あっててよかったDelWiki新
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
こういうのって、コンポインストールしないとサンプルプログラムが
コンパイルできない形になってて、非常に面倒よね~
コンパイルしたsample.exeを是非に付けて欲しいもので。
まあ、漏れも付けてないんだけど。
それにしても、MyDraw....すごすぎだな。
(って何年も前にも言った感じがとてもデジャブー)
>>283さん
贅沢な悩みだな。(w
みつかってよかったね。
285:265
07/07/04 13:25:23
>>284
有難う。
デルフサさんて、一時期見かけなかったような。。。
286:デフォルトの名無しさん
07/07/04 13:27:30
MyDraw1.Lines.Add('LINE');
で実行中に、線を増やせるね。
287:|Д゚彡 ◆A6VzDeLphI
07/07/04 13:30:56
いつもひっそりと
草葉の陰から見つめているんですよ。
288:デフォルトの名無しさん
07/07/04 15:13:17
>>コンパイルしたsample.exeを是非に付けて欲しいもので。
そんな物、ダウソして実行する馬鹿がいたら是非お目にかかりたい物でwwww
289:デフォルトの名無しさん
07/07/04 18:28:34
たくさんいますよ
290:デフォルトの名無しさん
07/07/04 19:37:14
何か呼ばれた気がしたので来ました。
291:デフォルトの名無しさん
07/07/04 20:00:09
デモには、実行ファイルをつけようよ・・・
292:デフォルトの名無しさん
07/07/04 21:15:30
URLリンク(delwiki.info)
ココに、サンプル書いてみた。
右ボタンで削除出来るようにコンポ側に少し追加もした
でも、コレ、誰がItemのオブジェクト削除してくれてるんだろ?
テキストを変更してもメモリリークしないんだろか?
293:初心者++
07/07/05 00:11:28
いきなり割り込んで書き込みます、すいません。
初心者です。データベースの接続で困ってます。
TTableのDataBaseNameで
サンプルのDBDEMOSでは無事接続できるんですが、
ほかのアリエス名(MSAccess,Excel...)では
ログインダイアログでユーザー名 パスワードをきかれ、
先へ進めません。どなたか教えてください。
Turbo Delphi for wind32
OS : wind2000です。
294:初心者++
07/07/05 00:15:55
いきなり割り込んで書き込みます、すいません。
初心者です。データベースの接続で困ってます。
TTableのDataBaseNameで
サンプルのDBDEMOSでは無事接続できるんですが、
ほかのアリエス名(MSAccess,Excel...)では
ログインダイアログでユーザー名 パスワードをきかれ、
先へ進めません。どなたか教えてください。
Turbo Delphi for wind32
OS : wind2000です。
295:デフォルトの名無しさん
07/07/05 16:25:33
>>294
URLリンク(www.lares.dti.ne.jp)
296:デフォルトの名無しさん
07/07/05 16:38:53
こんにちは。Delphi製ブラウザコンポーネント
(TUIWebBrowser)のFlash上の
テキスト入力コントロールでEnter入力が
できない問題について質問した者です。
RADながらWin32APIとの親和性,
カスタマイズ性が高くアセンブラも使え、
デフォルトコントロールの綺麗さなど、
色々優れた点がある中で、生産コストを下げる目的で
Delphiを選ぶときについて意見をお伺いしたいです。
ブラウザを作る際に、
まずTWebBrowserを使ってみて、入力に関する
致命的なバグがあったために、そのバグを修正した
TUIWebBrowserを使ったのですが、
そこでまた入力バグに出会ってしまい、
これらの問題が、VC++での開発でははじめから起きない
問題であったために、VC++で作り直すべきか考えています。
流通しているDelphi製のブラウザ系ソフトにも同じバグが見れました。
しかし、作りやすいので本当はDelphiを使いたいです。
Delphiで、資料やバグフィクス情報が無く、
節約できるはずの時間が、逆に冗長になるケースを考慮したとき、
そういった面を考えても、Delphiの生産性を活用するためには
どういったことが必要になりますでしょうか。
Delphi開発の先輩である皆さんに
お考えをお聞かせ願いたいです。
297:デフォルトの名無しさん
07/07/05 17:19:12
>そういった面を考えても、Delphiの生産性を活用するためには
>どういったことが必要になりますでしょうか。
VCLコードを読んで理解する事。
298:デフォルトの名無しさん
07/07/05 17:46:02
VC++で解決出来るんなら、 それを見て自分で修正すればいいんじゃないの?
でも、たぶん VC++でも色々拡張しようとすると、いろんな問題が出ると思うよ。
他人の作ったコードをソース無しに使おうってんだから当然だ。
TWebBrowser ならともかく TUIWebBrowser は使ってる人が少ないだろうし
さらに Flash となると、問題に答えてくれる人は少ないと思うよ。
>>262 の問題は メッセージポンプの所で流れてるメッセージ
を(Application.OnMessage とかで)見て、なんとか出来ないか考えてみたら?
299:デフォルトの名無しさん
07/07/05 17:47:05
ActiveX や OLEControl の制御は VCL のソースを読んでも、個人レベルでは
解決は難しい。TWebBrowser やその派生コントロールは、Delphi で簡単に
使えるように見えるが、Delphi での細かい制御が一番面倒なもののひとつ。
VC++ でできるなら、そっちでやればいいでしょう。
300:デフォルトの名無しさん
07/07/05 17:49:23
いまさらだがMLに投げてみりゃよかったのに。
301:デフォルトの名無しさん
07/07/05 17:54:18
まぁなんでもMLに投げてみりゃいいんだよな。
302:デフォルトの名無しさん
07/07/05 18:45:41
Delphi TWebbrowser Enter ぐぐれかす
303:デフォルトの名無しさん
07/07/05 19:02:10
>>302
TWebBrowserのバグを回避した
TUIWebBrowserでFlashActiveX上のコントロールを経由した
ときだけ起こるって言ってるし
TWebBrowserの有名な入力バグは普通もう回避してるだろう。
304:デフォルトの名無しさん
07/07/05 22:25:45
コード量が短いので>>273を参考にして勉強中のものです。
そこで質問です。>>273の
.dfm に記述されたコードを .pas側で実行時に自動生成する
形に書き直すと、どういう風になりますか?じぶんはテキスト
エディタ派なのでコードの編集はできればテキストエディタで
やりたいとです。。。
プロジェクトを立ち上げると、
フォーム作成中にエラーが発生しました。(中略)
クラス TviArrowが見つかりません
とか出て上手くゆかなかったとです。
viArrow.pas をプロジェクトに追加して
プロジェクトを再構築。でコンパイルしたら実行
ファイルのほうは簡単にできてちょっと感動したとです。ひろしですひろしですひろしです
305:デフォルトの名無しさん
07/07/05 22:39:05
>>304
なあ、こっちも実行してみてくれ。
URLリンク(delwiki.info)
306:304
07/07/05 23:07:33
>>305
1000行越えのコードの解読は厳しかったとです orz
307:デフォルトの名無しさん
07/07/06 07:39:12
>>304
.dfm にはコンポーネントのプロパティが入っている。
実行中に位置やサイズを変更したいなら、 Left, Top, Right, Bottom をコードで弄る必要がある
>>305のは、コンポーネントを登録しなくてもいいように作られている
位置やサイズは文字列で与えてるようだ
308:Delフサギコ ◆A6VzDeLphI
07/07/06 09:35:55
∧,,∧ オハヨ
ミ,,゚Д゚彡
ミ つ旦)~~
~と,,,~),,~) 旦~~
]]]]]]]]]]]]]]]]]]]]]]]]]]]]
自動生成する形になってて、いいっすね
>>305さん
どうせなら、バイナリも含んじゃえばいいのに。(w
IDE起動するのメンド(い人もいるかもね。)
>>307さん
MyDrawコンポーネントは単体で
たくさんの矢印や
矩形を処理するようになっていて
その位置を元々TStrings系でもっているのですよ。
309:デフォルトの名無しさん
07/07/09 18:36:58
TFormとかTImageってCanvasプロパティがありますよね。
TScrollBoxみたいにCanvasプロパティの無いコンポーネントにお絵かきするには、
どうすれば良いですか?
310:デフォルトの名無しさん
07/07/09 22:34:16
1.Canvasがある他のコンポーネント(TImageとか)を貼る。
2.TWinControlから派生したものであれば、さらに派生させてCanvasプロパティをpublicにする。
ん~これしか思いつかなかった。もう少し具体的にやりたいことを書けば、もう少しまともな
回答がつくと思うよ。
311:デフォルトの名無しさん
07/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
07/07/10 08:56:46
サンクス>>310 >>311
具体的には、
TScrollBoxの上にTImage、その上にMyDrawを乗せています。
それで、MyDrawの図形をマウスでいじると、
TImageが物凄くチラツクんですよね。
それで、TScrollBoxにもTImageの図形描いておいてやろうかな、と。
313:309
07/07/10 09:35:54
TScrollBoxをやめて、TPanelにしてDoubleBufferdをtrueにしたらチラツキなくなりました。
314:デフォルトの名無しさん
07/07/10 22:26:17
現在おされているキーをセンスする関数みたいなのはないのでしょうか?
315:デフォルトの名無しさん
07/07/10 22:41:54
windows.getkeystate
316:デフォルトの名無しさん
07/07/10 23:14:11
>314
つ GetAsyncKeyState
URLリンク(msdn.microsoft.com)
>315
現在押されている、ということであればGetKeyStateは不適切。
317:デフォルトの名無しさん
07/07/11 22:17:05
ありがとうございます。
windowsの世界だと int 21h(AH=8) みたいなのはないんでしょうか。
シーラカンスですんません。
318:デフォルトの名無しさん
07/07/12 00:08:04
意味不明。何をしたいのかを具体的に。
たとえばOnKeyPressとかTForm.KeyPreviewあたりは幸せになれるかも?
319:デフォルトの名無しさん
07/07/12 06:53:33
ごめんどうおかけします。
やりたいのは、コンソールアプリケションで、
enter (1-9 or q):
みたいなプロンプトをだして、一文字キーボードから入力してもらい、
入力された文字で処理を分岐させようというだけです。
つまりread(c); でreturn を入れなくても一文字読み込みたいというだけです。
320:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/13 07:16:47
ありがとうございます。
これを参考にコンソール用に書き直してみます。
322:296
07/07/13 17:53:11
お世話になります。
ブラウザコンポーネント上の
FlashActiveX上の入力問題で質問した>>296です。
みなさんありがとうございました。
時間がかかりましたが、
なんとか解析して自己解決できました。
これでDelphiのままいけそうです。
323:デフォルトの名無しさん
07/07/16 03:42:15
>>322
解析結果を書いてくれるとみんなが幸せになれるかもよ
324:デフォルトの名無しさん
07/07/28 20:12:22
>>323
スクリプトによって書かれて配置される
FlashActiveXが、1ページに2つ以上あるときに、
従来の方法で
2つ目のものにメッセージを送れていない場合があるようです。
ウィンドウを細かく検索することで回避しました。
325:デフォルトの名無しさん
07/09/17 21:48:04
前スレうp頼む
326:デフォルトの名無しさん
07/09/17 21:56:24
っ 前スレうp
327:デフォルトの名無しさん
07/09/17 22:06:24
神キタ━━━(゚∀゚)━━━ !!
楽しみに待ってます。本当にありがとう!!
前スレの字句解析から意味解析のログ本当に勉強になったので
328:デフォルトの名無しさん
07/09/19 19:02:18
EditのPopupMenuに自作PopupMenu1をセットしたら、
元々EditにあったPopupMenuが無くなりますよね。
そうじゃなくて、EditのデフォのPopupMenuに自作PopupMenu1を足すには、
どうしたら良いでしょうか?
329:デフォルトの名無しさん
07/09/19 19:27:16
DPAPI(データ保護 API) を 使って パスワードを
OSに記憶してもらう方法とか有ったら知りたいのですがなかなか見つかりません。
マイクロソフトのページには
DPAPI は、以下の項目を保護するのに役立ちます。
• Web ページの資格情報 (たとえば、パスワード)
• ファイル共有の資格情報
• EFS (暗号化ファイル システム)、S/MIME、および他の証明書に関連付けられた秘密キー
• CryptProtectData() 関数を使用して保護されているプログラム データ
とあるのですが このDPAPIは単純に任意のパスワード等保護してもらえる機能として
捕らえていいのでしょうか 。 delphi7を利用しています。 どなたか情報いただけませんか。
330:デフォルトの名無しさん
07/09/20 08:37:27
>>328 もヨロ!
331:デフォルトの名無しさん
07/09/20 12:07:54
>>328
たぶん出来ない。
右ボタンメニュを出すには TrackPopupMenu を呼び出すわけで
エディットコントロールにはデフォルトのWM_RBUTTONUP内部でコレを呼び出してる部分があるのだろう
TrackPopupMenuを呼び出すにはhMenuが必要だけど、EDITでコレを入手する方法が見つからない。
親窓なら、GetMenuでhMenuを呼び出せるけど、小窓ではそれが出来ないから。
332:デフォルトの名無しさん
07/09/20 12:38:35
そうですか(´・ω・`)ショボーン
>親窓なら、GetMenuでhMenuを呼び出せるけど、小窓ではそれが出来ないから。
親窓を取得したりできないですかね。
差し替えたPopupMenu1のイベントハンドラを実行すると、
EditのデフォルトのPopupMenuを開きなおしたり、
とかでも良いのですが。
333:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/20 12:57:32
有難うございます。それでやってみます。(*`∀´*)
335:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/20 13:49:46
thx! >>333 >>335
両方おk、でした。
TPointを指定するのメンドウだから、333でやるかも。
PopupMenu1のメニューの一つに編集っていうメニューを用意して、それだとデフォメニューをオープン、
という動作でカコヨクできました。
337:デフォルトの名無しさん
07/09/21 20:03:36
>>326
ひょっとしてあたしを騙したの?
338:デフォルトの名無しさん
07/09/21 20:47:23
勝手な思いこみ
339:デフォルトの名無しさん
07/09/22 02:55:26
今からでるふぁい
340:デフォルトの名無しさん
07/09/22 18:11:26
もう死んデルファイ
341:デフォルトの名無しさん
07/09/24 00:52:44
みなさん
多言語化(日本語/英語)
をするときはどうしてますか?おしえてください
342:デフォルトの名無しさん
07/09/24 00:58:53
>>341
TNT+dxgettext
343:デフォルトの名無しさん
07/09/24 03:36:29
素直にリソースDLLウィザード。日本語/英語以外の言語サポートが必要ならTNTも併用。
344:デフォルトの名無しさん
07/09/24 04:17:57
標準VCLって役立たずだな
345:デフォルトの名無しさん
07/09/24 12:17:20
>>341
Delphiに国際化対応のツールが付属してるでしょ、
346:デフォルトの名無しさん
07/09/25 07:52:39
61 名前:34[] 投稿日:2007/09/24(月) 19:13:21
お久しぶりです。TThreadでボヤいてた者です。
TThreadをプールして使い回してみたところ問題なさそうなのでこれで行くことにしました。
あとスレッドで処理中にフォームを操作するとCPU100%のまま帰ってこなくなる現象が出ましたが、
TThreadの方にpublicで作ったAnsiStringに渡した文字列が原因だったようで、
スレッドの変数をAnsiString.Unique()して参照を切り離してやったら問題無くなりました。
これから先に嵌る人が居るかもしれないので書いておきます。
改めてありがとうございましたorz
347:デフォルトの名無しさん
07/09/27 14:25:29
みなさんありがとうございます。
>国際化、リソースDLL
こちらに書いてあることでしょうか?
URLリンク(www.wwlnk.com)
最後に書いてある、一度設定したらもう変更できないみたいな
ことが気になるのですが、
修正が入ったり、言語が変わると文字列の幅が変わるので
画面の調整も必要に思うんですが
みなさんどうしているのでしょうか?
何度も修正する場合
TNT+dxgettextが使われるのでしょうか。
348:デフォルトの名無しさん
07/10/04 12:21:13
アプリ全体のフォントサイズを大きくするって簡単ですか?
349:デフォルトの名無しさん
07/10/04 15:10:25
Formのフォントサイズをでかくすれば
その上に貼り付けたコントロールも一緒にでかくなる。
ParentFont参照。
ウィンドウキャプションとかはWindowsが描いてるものだから無理。
350:348
07/10/04 15:20:04
サンクス>>349
351:デフォルトの名無しさん
07/10/04 16:38:18
JPEG2000を表示する方法を教えて頂けないでしょうか?
352:デフォルトの名無しさん
07/10/04 22:53:42
>>351
Susie Plug-in + SPIS
353:デフォルトの名無しさん
07/10/10 11:38:53
実行中のexeのリストを取得するコンポはありまつか?
354:デフォルトの名無しさん
07/10/10 14:59:41
すれ違い
>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
355:デフォルトの名無しさん
07/10/10 16:31:39
>>353
マジレスするとDelphiでは無理
356:デフォルトの名無しさん
07/10/10 18:38:07
>>353
コンポは知らないけど
NtQuerySystemInformation
を googleさんに begin とか pas と and で聞いたら 教えてくれるんじゃないかな
357:デフォルトの名無しさん
07/10/10 19:06:35
>>353
コンボはないけど、
多分、TookHelp関数を使えば割と簡単にできると思う。
具体的にはTHelp32.pasに宣言されている、
Process32FirstとProcess32Nextを使えばいいんじゃない。
358:デフォルトの名無しさん
07/10/10 23:55:39
>>355
お前の持ってるでるふゃいではな。
359:デフォルトの名無しさん
07/10/11 00:26:35
API使える言語ならどれでも出来る
逆にこれをライブラリ化してる製品ってないんじゃないかな
360:Delフサギコ ◆A6VzDeLphI
07/10/11 01:04:52
∧,,∧ これつかってちょ。
ミ,,゚Д゚彡
U つ
@ミ ミ
∪''∪
DelFusa Library - Delphi OpenSource - DelFusa Floor
URLリンク(delfusa.main.jp)
GetProcExeNameList
361:デフォルトの名無しさん
07/10/11 05:28:29
おまいら、すれ違い
>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
362:デフォルトの名無しさん
07/10/11 06:37:28
問題
インチをセンチメートルに変換するプログラムを作って
細かい仕様は自由
ヒント:1in = 2.540cm 、StrToFloat
363:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/11 07:36:56
嘘が書いてあるorz
365:デフォルトの名無しさん
07/10/11 09:15:41
DelphiでJpeg2000を表示する方法を教えて下さいでつ。
366:デフォルトの名無しさん
07/10/11 09:48:48
しつこい
367:デフォルトの名無しさん
07/10/11 09:53:58
URLリンク(codecentral.borland.com)
368:デフォルトの名無しさん
07/10/11 11:44:07
DelphiでJpeg2000を表示する方法を教えて下さいでつ。
369:365
07/10/11 11:51:18
368はニセモノでつ。
でも、実は未だに解決してなくて知りたかったりして。
370:デフォルトの名無しさん
07/10/11 13:22:13
普通に>>367ので表示できたけど?
371:365
07/10/11 14:23:02
サンクス>>370
実は自分もDel7出来ました。
が、実際の環境である、
C++ Builder 6だと上手くコンパイルできないんでつ><
372:デフォルトの名無しさん
07/10/11 16:41:56
Delphiアプリのメインフォームのウィンドウクラスって、TApplication固定でしたっけ?
373:デフォルトの名無しさん
07/10/11 19:19:37
でつでつ言うなよ
374:デフォルトの名無しさん
07/10/11 22:14:07
でつな
375:デフォルトの名無しさん
07/10/12 15:44:09
(a+3)^
ってある^はどういう意味?
376:デフォルトの名無しさん
07/10/12 16:43:45
ObjectPascalの場合 後ろの^は ポインタの参照
C言語の *(a+3) と同じ
377:デフォルトの名無しさん
07/10/12 17:52:24
なるほどサンクス
378:デフォルトの名無しさん
07/10/12 18:39:09
よく見かける、
エディットボックスにファイルをD&Dしてそのパスを取得
はどのようにやればよいですか?
379:デフォルトの名無しさん
07/10/12 19:29:56
質問はこちらにどうぞ
くだすれDelphi(超初心者用)その44
スレリンク(tech板)l50
380:デフォルトの名無しさん
07/10/13 05:15:36
答えられんからって誘導とは酷いな!
381:デフォルトの名無しさん
07/10/17 17:21:40
vb.netでそこそこは作れるレベルだけど、delphi始めようと思ったら最初に買うべき
本は何がいい?
それかどぼんみたく、そこだけ見ればそこそこのものは作れるようになるサイトか
382:デフォルトの名無しさん
07/10/17 23:12:41
何を作りたいかだろ
ファイラ作りたいとか、MMO作りたいとか(スレがあっったりするが)
383:デフォルトの名無しさん
07/10/18 08:44:22
ドトネトみたく環境設定も要らないし、コンポーネントも要るものはあるし。
いきなり始めて、躓いてから質問してみたら?
384:デフォルトの名無しさん
07/10/18 15:17:32
VB2005はヘルプがすごく使いやすい
385:デフォルトの名無しさん
07/10/18 15:30:47
ヘルプだけかよw
ネイティブアプリが作れるようになったら試しに触ってやるよ。
386:デフォルトの名無しさん
07/10/18 23:24:20
ま、C#からやったらいいよ。DelphiもIDEは.NETが必要だし。
C#は良い本もヘルプもMSDNもWEBサイトも腐るほどあるし。
387:デフォルトの名無しさん
07/11/09 01:23:20
Del5。XPで、
Ctrl+Alt+Delを無効にする方法。
右クリックを無効にする方法。
教えて。
388:デフォルトの名無しさん
07/11/09 01:40:40
>Ctrl+Alt+Delを無効にする方法。
マルウェアでも作るつもりですか?
389:デフォルトの名無しさん
07/11/09 05:38:41
そーゆーことしたいなら自分で調べろww
390:デフォルトの名無しさん
07/11/09 06:47:53
>>387
いちばん簡単なのは、DirectXのフルスクリーンモードで、そういうモードがある。
やり方は自分で調べろ
391:387
07/11/09 06:48:48
いや、調べてもわからないから聞いてるんで。
ちなみに、会社のIT担当委員ってのをやってて、社員にサイバーテロの対処について教育するんだが、
本物のウィルスを使うわけにはいかないんで、ジョークウェアを作ろうと思っている。
392:387
07/11/09 06:49:39
書き忘れた。
一定の時間が経過したら自動的に終了させるつもりだ。
393:デフォルトの名無しさん
07/11/09 23:31:11
Ctrl-Alt-Deleteのキーストロークは最優先でシステムが捕捉するので、これを
無効にすることはできない。無理。不可能。Deleteキーの軸を折っちゃえ。
右クリックはマウスの右クリックのスイッチを(ry
394:デフォルトの名無しさん
07/11/10 06:56:12
無理ではない。教えたいところだけど、>>391が本当か分からないし
教える立場だったら自分で調べて欲しいところ。
ヒント:海外
395:デフォルトの名無しさん
07/11/10 07:35:04
ソフトウェア板の各所でも、キーロガーとか、スパウウェア用途に使われるものは紹介しないというルールだしな
おしえる側も、最低限のことは守らないと
396:デフォルトの名無しさん
07/11/10 08:46:07
391だけど、不正ソフトばらまくのは犯罪だってことくらい知ってるよ。
けどまぁ、信用してもらえないのも仕方がないからなんとかするわ。
397:デフォルトの名無しさん
07/11/12 07:10:16
2chで信用しろといわれても・・・
398:delphi初心者
07/11/12 13:48:03
ご質問いたします。
1.コンマ区切りの文字列をばらして配列にセットしてくれる関数はありませんか?
2.functionで配列は返せないのですか?
追伸: 「そんなこと自分で調べろ!」 と云う罵倒はおことわり。
399:デフォルトの名無しさん
07/11/12 13:50:46
TStringList.CommaText
400:デフォルトの名無しさん
07/11/12 13:51:22
それかTStringList.Textに入れれば、バラしてくれたかも
401:デフォルトの名無しさん
07/11/12 22:10:08
>398
配列の型を宣言してそれを戻り値の型にすればおk
402:デフォルトの名無しさん
07/11/13 14:33:42
>>401
それ、何てTStringList?
403:デフォルトの名無しさん
07/11/13 18:48:49
【Borland Delphi 6 Personal日本語版 入手先】
URLリンク(www.vector.co.jp)
【Delphi 6 導入手順 】
URLリンク(www.wikihouse.com)
【インターネットダイレクト(Indy)コンポーネント導入手順 】
URLリンク(homepage3.nifty.com)
動作確認は、メモとIdHttpコンポーネントを貼り付けて以下のコードを書いて実行してみる。
うまくいくとこのスレがメモにダウンロードされる。
Memo1.Lines.Text := IdHttp1.Get('スレリンク(stock板)l50');
【デルファイの質問所】
URLリンク(hpcgi1.nifty.com)
URLリンク(leed.t.u-tokyo.ac.jp)
URLリンク(groups.google.com)
404:デフォルトの名無しさん
07/11/13 20:01:32
上げ荒らしうぜえ
405:初心者++
07/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:デフォルトの名無しさん
07/11/18 15:36:44
残念、スレちがいです。
>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
407:デフォルトの名無しさん
07/11/18 17:54:22
糞なテンプレでスレ立てて必死に粘着交通整理してる奴ってなんなの?
408:デフォルトの名無しさん
07/11/18 18:45:04
自分の居場所なんだから、そりゃ必死だろう。
自分の居場所をキチンとメインテナンスするのは、それは当然ではあるまいか?
409:デフォルトの名無しさん
07/11/20 17:32:32
自分の居場所ならグダグダ「スレ違い」とか言ってないで、問題を出題すべきだと思うんだな。
問題と解答、それに議論が無いから、過疎ってスレ違いと基地外の巣窟と化してるんだな。
問題:おみくじ
randomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ
410:デフォルトの名無しさん
07/11/20 17:36:13
>>409
あまりにも簡単すぎるプログラム出題でワロタw
せめて、n回凶が出る確率を計算するプログラムとかにすればいいのに。
411:デフォルトの名無しさん
07/11/20 17:47:39
>>405
Queryの更新エラーは、
query1.RequestLiveのtrue/falseが
結構関係している。
412:デフォルトの名無しさん
07/11/20 22:53:35
Gandomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ
413:デフォルトの名無しさん
07/11/20 23:05:26
>>412
CGは専門外なんで無理ですw
414:デフォルトの名無しさん
07/11/20 23:21:52
Gandom はすれ違い。
415:デフォルトの名無しさん
07/11/21 01:02:34
問題:呼び出すたびに1と0を交互に返す関数を書け。グローバル変数を使っても良い。
416:初心者++
07/11/21 02:06:06
UpdateSQLのエラーが解決しました。レスを下さった方ありがとうございました。
SQL文のキー違反でした。
SQLの勉強をもっとしないと阿寒と思いました。
Accessのビューで作ったSQL文を貼り付けたりしておったのですが、、、。
エラー続出でした。
417:デフォルトの名無しさん
07/11/21 23:30:12
問題:マウスクリックすると、クリックしたマス目とその上下左右のマスが反転する。
マス目を全て塗りつぶしたらクリアとなるゲームを作る
□□□□□ □□□□□ ■■□□□
□□□□□ □□■□□ ■□■□□
□□□□□ □■■■□ □■■■□
□□□□□ □□■□□ □□■□□
□□□□□の真ん中を押すと □□□□□左上クリックで .□□□□□
■■□□□ ■□□□□
■○■□□ □■□□□
□■■■□ □□■■□
□□■□□ □□■□□
□□□□□ ○を押したら □□□□□
全部塗りつぶしたらゲームクリア
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
418:デフォルトの名無しさん
07/11/21 23:43:16
>>417
ライツアウト懐かしいな
419:デフォルトの名無しさん
07/11/22 00:58:06
俺には作れねぇ
420:デフォルトの名無しさん
07/11/22 01:03:28
頑張れば作れなくもなさそうだけど、とてつもなく無駄が多くなりそう・・。
421:1/2
07/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
07/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
07/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
07/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:デフォルトの名無しさん
07/11/22 02:02:47
すげー!参考にさせて頂きますm(_ _)m
426:デフォルトの名無しさん
07/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は放置推奨 )
07/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)
07/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:デフォルトの名無しさん
07/11/23 18:34:16
>>417
7行スレで盛り上がりそうな内容だなw
430:デフォルトの名無しさん
07/11/28 17:46:32
25ボタンの処理を全部書くことで初心者でも作れてしまうが、まじめにやれば7行に・・・・なるな多分
431:デフォルトの名無しさん
07/11/28 23:00:38
>>157
D6からそうなったのか?
パスなしだとWINDOWSフォルダにつくられるんじゃなかった?
432:デフォルトの名無しさん
07/11/28 23:01:27
未読位置を間違えてロングパスを放ってしまったorz
433:デフォルトの名無しさん
07/12/08 01:31:13
>>417
作れたは良いんだがクリアできない
なんかコツとかある?勿論クリアするね
434:デフォルトの名無しさん
07/12/13 23:00:31
TMEMOの任意の行を削除するにはどうしたらいいの?
435:デフォルトの名無しさん
07/12/13 23:09:52
>>434
TMemo.Lines.Delete
436:434
07/12/14 06:52:10
>>435
ありがとう。
ごめん、質問間違えた。
あるデータと一致する行を削除 だった。
listboxだったらitems.indexとかで簡単にできるけど
437:デフォルトの名無しさん
07/12/14 22:58:42
>>436
TMemo.Lines.IndexOf
438:デフォルトの名無しさん
07/12/22 19:30:52
BDS2007を使っているんですが、コード補完機能って、すごーく
時間がかかるものなのでしょうか?
HDアクセスしまくりで、VS2005のそれとは比較にならない程遅いのですが。
それとも何か設定等が悪いのでしょうか?
OSはWinXP, メモリは2Gです。よろしくお願い致します。
439:デフォルトの名無しさん
07/12/23 18:36:32
コンポを大量インスコしてるとか
440:デフォルトの名無しさん
07/12/24 09:47:31
普段使わないコンポはチェック外しておくとロード時間が劇的に短くなる。
441:デフォルトの名無しさん
07/12/26 21:13:59
普段使うコンポはチェック外さないでおくとロード時間がものすごく長い。
442:デフォルトの名無しさん
07/12/26 22:06:02
最新式マシンに変えるとロード時間が劇的に短くなる。
443:デフォルトの名無しさん
07/12/27 01:49:05
ちょっと前のマシンだとロード時間がはげしく長い。
444:デフォルトの名無しさん
07/12/27 02:11:10
BDS2006で、PenD(3.0GHz) メモリ2G WinXPマシンでつこーてるが、
コード補完は、特に遅くないな。
ちなみに、起動時は、起動オプションで、Delphiのプロファイルのみ読み込み、
あと余計なDB周りのコンポなどもはずしてる。
しかしメモリ2Gで、ハードディスクカリカリは感がられんな
BDS2007が遅いということあるのかね
445:デフォルトの名無しさん
07/12/28 23:14:45
D7En Pen3(966) MEM384MB
コード補完滅茶苦茶遅い。
数年前は大丈夫だったから多分原因はHDDだろうと勝手に思ってる。
446:デフォルトの名無しさん
07/12/29 03:44:18
>>445
そのくらいのスペックで、Del6Pro つかってだけど、問題なかったぞ?
BDSの世代になって、死ぬほど重くて、マシン買い換えたが
447:デフォルトの名無しさん
07/12/31 07:28:11
職場のD7ENTでこちょこちょ書いてますがひたすらコピペしまくりでクラスも作った事がありません。
どこかのサイトにオプジェクト志向学ぶならC#やJavaで書かれた出来の良いコードをDelphiに移植するのが面倒だけど理解が早くなる、と言う意味の事が書かれてました。
とは言え、自分にオプジェクト志向の良いコードなのかどうか判別が出来るくらいならわざわざ移植には及ばない訳でして、適当なサンプル選びで途方に暮れています。
簡単なもの、ちょい重たいかなレベルで適当そうなコードを紹介して頂けませんか?
448:デフォルトの名無しさん
07/12/31 07:30:10
スミマセン
ageてしまいました。
449:デフォルトの名無しさん
07/12/31 11:10:07
どこまでもコピペするつもりですか。
*頭をたたくと「いてぇ」、わきの下をくすぐると「わははは」と笑うクラスをつくて
まじめな課題です。
450:デフォルトの名無しさん
07/12/31 11:59:29
自分用のコンポーネントを自作するのが近道だよ。
451:デフォルトの名無しさん
07/12/31 12:06:15
>>447
何度も同じコード書いてるならそこを共通化するクラスなりライブラリなりを作ってみたら。
重複部分で呼び出しているAPIなり関数なりをJediVCLでGrepかけてどうラップしてあるかを見てみればいいと思う。
あのライブラリ郡の設計が美しいかどうかは微妙なところだけど。
一番手っ取り早いのはC#をやること。
C#、Delphi両面の利点と欠点が見えてくると思う。
もちろんよりリッチなクラスライブラリの使い方も習得できるしね。
452:デフォルトの名無しさん
07/12/31 19:50:50
JCLのコンテナ使いにくすぎる。おすすめせん。
俺も、C#のライブラリを参考にするのがお勧め。
標準のでいい。
インターフェスだけならMSDNで見たい放題、クラス設計の参考になる。
中のぞきたかったら、Reflectorででも、使えばソース見られる。
Reflectorなら、Delphiでも見られるしなw
あとは、OOPなら、動的型言語のRubyもお勧め。
ほとんどが、オブジェクトなので、それを前提として、
どういった便利な使い方ができるか?というのがよくわかる。
ただ、ガーベジコレクション前提でオブジェクトを使い捨てまくるので、
そのままは使えないのだが、
勉強にはなる。
453:デフォルトの名無しさん
08/01/02 23:14:08
2005を今更再インスコしようとして、鬱になる。
#さぽきれかあ
454:デフォルトの名無しさん
08/01/03 15:25:42
あー、今頃出来やがんのorz
455:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/18 16:15:33
case を2重にして全部を列挙するか
0~9と決まってるんなら単純に
case Int1*10+Int2 of
00:
01
...
とやったら?
458:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/18 17:04:39
var jumptable: array[0..9, 0..9, club..spade] of tjumpproc;
なジャンプテーブル用意したら。
460:デフォルトの名無しさん
08/01/18 17:16:45
>>459
どもw
ジャンプテーブルが使えたんですね・・・
何やってんだ俺orz
461:デフォルトの名無しさん
08/01/19 17:54:22
×可視性
○可読性
462:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/28 18:45:19
気のせいです
464:デフォルトの名無しさん
08/02/01 22:18:42
Threadを使用してバックグラウンドで処理を行い、進行状況をForm1で表示する処理を行っています
Form1のLabelに表示するたびにSynchronize関数を呼び出すとそのオーバーヘッド
が凄まじく処理時間が数倍に跳ね上がってしまいます
VCLを使用する場合にはSync関数を使用して呼び出すべきとの話ですが
全てが全てSyncを使用しなければならないのでしょうか?
例えばInvalidate関数等はどのタイミングで呼び出すべきなのでしょうか
465:デフォルトの名無しさん
08/02/01 22:31:43
スレッドセーフで無いコードはSynchronizeを使いVCLにスレッドセーフであることを保証してもらう必要がある。
初めからスレッドセーフなコードならばわざわざそんな事はしなくても良い。
466:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/01 23:05:17
>>466
ども。
Invalidateの呼び出しはそれでやってます。
その方法では、例えば処理中のファイル名を表示しようとした場合
重い処理を行っている時は表示されているファイル名と処理している
ファイルが異なるような場面が発生しませんか?
かと言って”処理が長くなるようだったら強制的に表示する”って方法
を実現しようとするとタイマーを使用するなり手間がかかる気がするのですが・・・
468:デフォルトの名無しさん
08/02/01 23:30:48
ファイルを処理する最初にlabel更新をしようとしたが、
全部のファイルを処理すると処理に時間がかかったということですよね?
> 重い処理を行っている時は表示されているファイル名と処理している
> ファイルが異なるような場面が発生しませんか?
それは仕方がないかと。
>>466では、1秒になってるけど、100m秒くらいにすればわからなくないかな?
ところで、VCLのスレッドセーフ周りはよく知らないのだが、
Labelの書き換え(Caption?Text?)は、メインスレッドから弄ってない場合でも、
他のスレッドどから書き替えたらダメなのものかね。
469:デフォルトの名無しさん
08/02/01 23:48:28
>>468
ども。
>>466の例で言うならば、”処理”が重たい場合はLabelが書き換えられませんし
”処理”の前にLabelを書き換えようとした場合はLabelの書き換えがスキップ
された直後に重い処理が着ちゃうと対応できません
メインフォームにメッセージを投げて知らん振りしたほうが健全かな?とは
思いますが、Delphiっぽくなくなっちゃうんですよね
470:デフォルトの名無しさん
08/02/02 00:37:08
>>469
処理するスレッドが重くてメインスレッドに反映されにくい場合なら、
スレッドの優先度変えればいけないかな・・・(未確認だが)
> メインフォームにメッセージを投げて知らん振りしたほうが健全かな?とは
いや、それもありかと思います。Delphiスレでもよく聞く話です。
VCL Formだとメッセージとりやすいですしね。
ただ、スレッドが重くてうんぬんの場合、この方法でも一緒かな?という気が
471:デフォルトの名無しさん
08/02/02 07:37:18
Invalidate なら、ラベルの親ハンドルと、Rectをメインスレッドから用意しておいて
IntersectRectをスレッド側で発行すればいいでしょ。
472:デフォルトの名無しさん
08/02/02 07:39:04
×IntersectRect
○InvalidateRect
473:デフォルトの名無しさん
08/02/02 22:21:03
にゃあ
474:デフォルトの名無しさん
08/02/09 04:23:31
if i < 0 then i := 0;
といったコードがあるとします
i := Max(0, i);
と書いたほうがスマートな気がしますし
i := Max(0, Min(i, count-1));
と書くと簡単に範囲を限定できます
しかし、冗長に思えるif分の繰り返しのほうがいいコードが生成されます
この場合どちらを使用すべきなんでしょうか・・・
475:デフォルトの名無しさん
08/02/09 05:20:29
> しかし、冗長に思えるif分の繰り返しのほうがいいコードが生成されます
マシンスペックが高い今、そんなことはいまどき考える必要はない
わかりやすい方にしる
476:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/09 18:13:05
くだらん。
どうしても転化したければ、inline使え
478:デフォルトの名無しさん
08/02/24 05:53:01
TImage に 上から半透明のセロファンがかかってるような
フィルタをかけたかったらどうすりゃいいですかね?
俺が思いつくのは同じ大きさのBitmapを用意して
それを一色で塗りつぶした上で半透明化とかなんですけど
これってすんげえ無駄にメモリ食いますよね?
もっといい方法ってあります?
479:デフォルトの名無しさん
08/02/24 06:02:23
>>478
DIBにして、ScanLineでBITMAPのデータを直でいじくる
480:デフォルトの名無しさん
08/02/24 06:18:28
>>479
うわ、検索してみたけど難しそうだこれは
1時間ほど挑戦してムリポだったら>>478の方法使うことにします
481:デフォルトの名無しさん
08/02/24 06:37:09
そんなに難しく考えるなよ
srcが元の色
colorがセロファンの色
destが書きこむ色
αが半透明のアルファの度合いだとしたら、
dest = color * α + src * (1 - α)
これをrgb各それぞれで計算してやるだけだぞ
こういうのは「αブレンド 計算式」ででてくればすぐにでてくるよ
482:デフォルトの名無しさん
08/02/26 14:47:50
符号無し64bit、いわゆるulonglongを使用したいのですが何か良い方法
は無いのでしょうか?
483:デフォルトの名無しさん
08/02/26 16:55:55
符号無し64bitで何がやりたいの? 加減算の結果は同じだよ
掛け算の場合も
(Amsb + A63)*(Bmsb + B63) = Amsb*Bmsb + Amsb*B63 + Bmsb*A63 + A63*B63
で、Amsb が符号付きだろうが符号無しだろうが、下位64bitの結果には影響しない。
484:デフォルトの名無しさん
08/02/26 17:52:05
>>483
ulonglongを使用している構造体があったんでどう実装しようかと・・・
現状では下位32bitしか使用していないのでDWORDでも問題無いとは
思うのですが、手を抜いて将来トラブルと嫌だなぁ・・・と思った次第です
485:デフォルトの名無しさん
08/02/26 19:37:38
単にInt64にしたらいいんじゃないの? 除算や右シフトをやらない限り問題ない
486:デフォルトの名無しさん
08/02/27 11:47:31
ゴメン 算術右シフトってのがソモソモ無かった。
だから SHR 演算は 符号無し右シフトと等価だった
487:デフォルトの名無しさん
08/02/27 19:01:28
UInt64使えばいいだろ。
488:デフォルトの名無しさん
08/02/27 20:44:10
>>481
ありがとうございます
何をすればアルファブレンドできるかは理解できたんだけども
見つかったページがそれをシフト演算で行ってて
それの意味がわかんなくて困ってます
ページを貼らせてもらうと
URLリンク(www.sm.rim.or.jp)
> 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:デフォルトの名無しさん
08/02/27 21:55:42
>488
$は16進数のプレフィクス。C/C++の0xに相当。
明るさは人間の目のRGBに対する感度の違いを考慮して計算している。昔の白黒テレビで
カラー画像を見ているのと同じ。
その明るさを持つグレーの値を計算している。
490:デフォルトの名無しさん
08/02/29 04:03:23
>>488
下の二つは輝度を計算するときの公式みたいなものでアルファブレンドとは全然関係ないよ
491:478
08/03/01 05:18:35
ヤターできたよー!
もっともほんとにやりたい事は
フィルタの範囲指定したり戻したりなんで
これからもうひと頑張りいるけど、あとはなんとかなるでしょ。
ところでRGB値ってbgrの順で保存されてるんだね。変なの
>>489-490
㌧です
492:749
08/03/01 20:27:17
>>491
BGRの順番で格納されているのはTColor
実際には速度の面からPixelでは無くScanLineでBMPに直接アクセスする
ことになるが、その場合の格納方法はまた違う
493:デフォルトの名無しさん
08/03/01 21:25:24
バイト単位でアクセスしたら32bit色の場合、bgrだわな
494:デフォルトの名無しさん
08/03/02 13:12:38
>>493
32bit DWORDだとrgbだな
>>478はメモリの格納順では無くて上位ビット->下位ビットで話してるからな
495:デフォルトの名無しさん
08/03/04 03:36:32
>>494
何をわけの分からないこと言ってるんだ
同じことだろ
496:デフォルトの名無しさん
08/03/04 04:23:57
サーセンw
497:デフォルトの名無しさん
08/03/04 15:49:44
こんにちは。
WriteProcessMemoryのAPIを使って値を書き込んだのですが、
おもう値が書き込まれません。以下がコードです。
GetMem(buf, 1);
buf^ := Chr($3D);
WriteProcessMemory(WindowHandle, ptr(Address), buf, NumberOfBytes, Write);
これを行うと、値が35901というのが書き込まれてしまいます。61という値を書き込みたいのですが、どのようにすればよろしいのでしょうか?
498:デフォルトの名無しさん
08/03/04 16:18:08
>>497
35901 = $8C3D
正常に動いてるじゃないか
499:デフォルトの名無しさん
08/03/04 16:40:25
>>498
いえ、普通に$3D(61)という値を書き込みたかったんですが、その場合はどうすればよろしいでしょうか?
500:デフォルトの名無しさん
08/03/04 17:35:44
>>499
そりゃ1Byteしか書き込んでいないから。
501:デフォルトの名無しさん
08/03/04 18:29:49
>>500
NumberOfBytes
を2という値に設定はしたのですが、これでは設定不足でしょうか?
502:デフォルトの名無しさん
08/03/04 20:08:37
何で1バイトしか書き込んでいないのに読み込むときは2バイトになってるんだよ
503:デフォルトの名無しさん
08/03/04 21:04:31
>>502
すいません、私のレベルが低くていまいちよくわかりません・・・。
WriteProcessMemory(WindowHandle, ptr(Address), buf, Sizeof(buf), Write);
上のようにすればいいという事でしょうか?
読み込む時というのがわかりません・・・。
504:デフォルトの名無しさん
08/03/04 21:47:00
>>503
>値が35901というのが書き込まれてしまいます。
これが確認できたってことはその書き込んだアドレスから読み込んだんだろ?
その時35901だったってことは、少なくとも2bytes読み込んでいるということ。
505:デフォルトの名無しさん
08/03/04 21:55:22
>>504
いえ書き込んだアドレスから読んだんではなくて、
表示されている値が変化したので確認できたという事です。
えとつまりは61という値にはできないという事でしょうか?
506:デフォルトの名無しさん
08/03/04 22:55:41
>表示されている値が変化したので確認できたという事です。
意味不明なんだよ、質問が。なにをどうしたらなんの表示が変化したの?
WriteProcessMemory() の第一引数が WindowHandle って時点でどうかしてる。
507:デフォルトの名無しさん
08/03/04 23:48:37
>>505
理解できてないから予期しない結果になるんだよ。
URLリンク(msdn.microsoft.com)
508:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/03/05 08:04:08
ヒント:bufのサイズをコンパイラが知れるわけがない
510:デフォルトの名無しさん
08/03/05 08:06:03
初心者向けだからもう少しいえば
動的に確保されたバッファーのサイズをコンパイラが知ってるはずない
511:デフォルトの名無しさん
08/03/05 08:58:03
>>509
>>510
bufのサイズを指定すればよろしいのでしょうか?
Sizeof(buf)
で行っている作業でサイズは取得できてると思うのですが、これとはまた別の話でしょうか?
512:デフォルトの名無しさん
08/03/05 09:29:57
var buf:PChar つまりポインタなのだから、
Sizeof(buf) は、ポインタのサイズを取得してるので、作業領域のサイズを得ているわけじゃない
513:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/03/05 11:00:22
>>495
TColorと32bitRGBじゃRGBの順序が逆だよ?
そのまんまキャストは不可
ごっちゃにしてない?
515:デフォルトの名無しさん
08/03/05 11:36:40
?
メモリ上の並びとしては R,G,B で、それを32bitの変数に読むと
エンディアンの関係で [xx ,RR , GG , BB] となるだけで、同じだろ?
516:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/03/05 19:02:16
Delphiヘルプより
> TColor を Graphics ユニットに定義された定数で指定せずに,4 バイトの 16 進数で指定した場合,
> 下位の 3 バイトはそれぞれ青,緑,赤の RGB カラーの輝度を表します。
> $00FF0000 という値は最高の輝度,つまり純粋の青を示し,$0000FF00 は純粋の緑を示し,
> $000000FF は純粋の赤を示します。$00000000 は黒,$00FFFFFF は白です。
>>514
これ以上に何か意見があるなら聞こうか?(笑)
518:デフォルトの名無しさん
08/03/05 20:01:01
>>517
痛いヤツだな
>>493=>>495=>>517なのか?
DIB32はメモリ上はBB GG RR 00って順番で並んでいる
コレをDWORDでアクセスすると$00RRGGBBになるだろ?
TColorの$00BBGGRRとは逆になるんだよ
初心者スレで無知を晒すのは恥じゃ無いが、学ぶ能力が無いのは恥るべき
519:デフォルトの名無しさん
08/03/06 00:55:23
BSWAPして8だけRORして…
520:デフォルトの名無しさん
08/03/06 02:29:10
>>518
なんか必死だけどちゃんと仕様見てきて言えよ
521:デフォルトの名無しさん
08/03/06 05:12:31
>TColorの$00BBGGRRとは逆になるんだよ
????
522:デフォルトの名無しさん
08/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
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/03/06 12:17:08
色んな理解が足りない。
どうして PCharではなくて string を使ってるかというと、
PCharだとメモリ確保した後、開放しなければいけないけど
stringなら自動開放されるからtry~finally を使わなくてもいいから便利だから。
PCharやstringを使うのは、可変サイズに対応する為。
3バイトでも4バイトでも同じコードで対応出来るからね。
でも固定サイズなら、ポインタで処理する必要はない。
渡す時にポインタを渡せばいい。
byte,WORD,DWORDのそれぞれの引数用の関数3つを作る方がスマートだよ
526:デフォルトの名無しさん
08/03/06 15:50:39
>>524
>>525
ご回答ありがとうございます。
必要な事はできたのですが、純粋に疑問になったので思い切って質問してみた所存です。
二つに分けてやるのは知りませんでした。
Stringは自動開放されるのを知っていましたが、Pcharも自動で開放されるかと思ってました(汗
私はbyte,WORD,DWORDとかの三つの関数作るなんて思わないでがつがつ書いていましたOrz
あとこれは余談ですが、GetMEMとSetLengthとは同じなんですかね?
私がGETMEMで確保してましたが、回答してくださった方はSetLengthでやっていました。
これはアセンブラのCMPとTESTみたいな感じで好みによってでしょうか?
別にこれには答えてくださらなくても構いません。
回答者のお二人ありがとうございました、目からウロコです><
527:デフォルトの名無しさん
08/03/06 17:38:22
>>526
ヘルプを読めばGetMemとSetLengthの違いがわかります
528:デフォルトの名無しさん
08/03/06 21:07:30
>>527
ほんとだ・・・いつもメモリ扱う時はPchar使ってたから、意識しないで使ってたけど、
違いあったんですね・・・。
どうもでした。
529:デフォルトの名無しさん
08/03/07 11:01:59
Fizz-Buzz 問題:
URLリンク(www.aoky.net)
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
ヒント
GUIアプリでも AllocConsole; を入れておけばコンソールを出して write/wrilteln を使う事が出来ます
TMemoを貼ってLines.Add をプリント代わりとしてもいいです。
530:デフォルトの名無しさん
08/03/07 13:51:19
>>517-521
結局どっちなんだよw
531:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/03/07 22:39:54
もう放置したら?
533:デフォルトの名無しさん
08/03/08 17:40:34
>DWORD(TColor($0000FF));
>DWORD($0000FF);
意味ねぇーー
534:デフォルトの名無しさん
08/03/12 12:35:55
>>533
「意味が無い」ことを説明してるんでは?
TColorが上位、下位逆なのを説明されても理解できていない&認めようと
しないのが多数居たのが驚き。
いや、それだけ初心者向けの言語ってことなんだろうな。
535:デフォルトの名無しさん
08/03/12 18:38:44
多数じゃなくて、一人だけだろw
536:デフォルトの名無しさん
08/03/15 15:15:36
DLLを1つだけ LoadLibrary で読んでGetProcAddressして動かしてるプログラムがあります
このDLLをリソースには入れれたのですが実行時にDLLをHDDに書き込まずに動かす方法があれば教えてください
環境は、WinXP,Delphi6です。。。ファイルをEXE1つだけにしたいだけなのですがお願いします
537:536
08/03/15 16:18:06
わざわざファイルに書き込まなくてもそのままでいけました。。。
538:デフォルトの名無しさん
08/03/15 20:09:45
GPL逃れですか?
539:デフォルトの名無しさん
08/03/27 17:33:47
ほしゅ
540:デフォルトの名無しさん
08/04/11 06:48:24
>>534
間違っています。
以上。
↓次どうぞ
541:デフォルトの名無しさん
08/04/16 15:44:57
ビルドした日付を埋め込むにはどうしたらいいですか?
BCBの__DATE__みたいな奴です。
542:デフォルトの名無しさん
08/04/16 22:47:59
できないので手動で埋め込んでください。
543:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/17 11:30:32
名前付きパイプは上手くゆかなかった。
APIで読めば読めるけど、LoadFromFileでは読めない。
たぶんLoadFromFileではサイズを先に読んでから処理するからなんだろう。
だから $Iでも読めないかも
545:デフォルトの名無しさん
08/04/17 18:58:18
フォームに並べた10個のラベル
(名前が label1,label2..label10 とかだとして)
それぞれのラベルのCaptionにループを使ってアクセスするにはどうしたらいいんでしょう。
546:デフォルトの名無しさん
08/04/17 21:02:21
(FindComponent('Label'+IntToStr(LabelNum))as TLabel).Caption
547:545
08/04/17 21:33:34
助かりました、ありがとうございました!
548:デフォルトの名無しさん
08/04/24 20:51:42
>>543
それを埋め込んだデルファイを起動するアプリを作っていいかんじになりました、どうも。
549:デフォルトの名無しさん
08/05/14 16:04:58
TDrawGridのColやRowプロパティが変更する場合の、
イベントハンドラを教えてくださいorz
550:549
08/05/14 16:16:32
OnClickでできますた。
551:デフォルトの名無しさん
08/05/17 13:45:07
Delphianが行方不明なのでこちらに質問させてください;;
Stringでなく数値で操作できるGridコンポ探しています。
どなたかご存じないですか?
552:デフォルトの名無しさん
08/05/18 02:03:35
>数値で操作できる
いみふめ
数値と文字列は相互可変なんだから TStringGrid でなにが不足なんだ?
553:デフォルトの名無しさん
08/05/18 10:57:12
セルの値を直接数値で入れたり出したりしたいんだろう。素人がしたがりたそうなことだ。
554:デフォルトの名無しさん
08/05/18 11:09:12
'0'..'9'のみ入れさせたいなら
StringGridKeyPressイベントで
if not (Key in ['0'..'9']) then Key := #0;
とかやって入力を潰してしまえばいい。
ペーストも含めて対策したいならSetEditTextでゴミを取り除いてCells[]にセットしてやればいい。
他にもなんか対策すべきだったと思うが忘れた。
まあそこらへんのノウハウ込みのコンポを探してるんだろうが。
555:デフォルトの名無しさん
08/05/20 12:02:23
はい、日曜ど素人でございます(T_T)
StringGridKeyPressとSetEditTextで新しいコンポを作れそうです。
ありがとうございました。
556:デフォルトの名無しさん
08/05/28 18:57:24
TFileStreamでファイルをオープンして、
別のストリーム、たとえば、TContentStreamにファイルの中身を設定しようとすると、
どういった記述となりますか?
557:デフォルトの名無しさん
08/05/28 19:55:36
Assignを使う。どちらもTStream派生だから。
558:デフォルトの名無しさん
08/05/28 19:59:25
LoadFromStream はないの?
559:デフォルトの名無しさん
08/05/31 02:17:47
グーグルマップに自分のブックマーク(っての?)残せるやん?
ローカルの地図画像であんな感じのアプリを、db連動で作ってみたいんだけど、何を参考にすればいい? グラフィック関係かと思って、ゲーム関係見たけど、あまり参考になりそうにない。