[表示 : 全て 最新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初心者が問題をコツコツと解きながらレベルアップするためのスレです。


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