1 名前:デフォルトの名無しさん mailto:sage [2005/11/23(水) 23:31:08 ] Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
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分もかからないと思うが、どうよ?