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


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

Delphi初心者のための寺子屋



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分もかからないと思うが、どうよ?

625 名前:デフォルトの名無しさん [2009/06/18(木) 20:49:46 ]
Delphi2009 を使っています。

VCLコンポーネントから派生したコンポーネントを
作るにはどうすればいいでしょうか?

626 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:05:12 ]
ウィザード一発じゃねぇの?ファイル→新規作成→その他あたり。



627 名前:デフォルトの名無しさん [2009/06/18(木) 21:10:00 ]
>>626
ありがとうございます。
派生したコンポーネントを使いたいのですが
どうすればいいでしょうか?

フォームに派生クラスのコントロールをどうやって置いたら
よいのかわからなくて、適当なコントロールを置いた後に
dfm ファイルを直接書き換えてみたのですが、見つからない
と言われた挙げ句、関連している pasファイルを破壊されて
しまいました。



628 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:14:31 ]
コンポーネント開発は開発者ドキュメントと適当な解説書買って読まないと辛いよ。
OOPの知識なんかも結構必要になるし。

629 名前:デフォルトの名無しさん [2009/06/18(木) 21:17:15 ]
>>628
ありがとうございます。

ただ単純に TRadioButton の CreateParams を
オーバライドしたいだけなのです。

630 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:26:52 ]
以下のようなユニットを通常の手順で作ってあとはIDEからコンポーネント|インストールで登録。
2009は持ってないから変わってるかもしれないが。

unit cMyRadioButtonEx;

uses // todo:必要なユニットを列挙

type
    TRadioButtonEx = class(TRadioButton) // or TCustomRadioButton;
        ...
    end;
   
procedure Register;

implementation

procedure Register;
begin
    RegisterComponents('Samples', [TRadioButtonEx]);
end;

// todo: TRadioButtonExの実装

end.

631 名前:デフォルトの名無しさん [2009/06/18(木) 21:31:53 ]
>>630
メニューには、コンポーネント|インポートと
コンポーネント|新規VCLコンポーネントの
2種類しかなく、インポートはタイプライブラリと
ActiveXコントロール、.NETアセンブリの取り込み
の3種類しかありませんでした。

新規VCLコンポーネントで派生クラスを作れるような
雰囲気でしたが、実際に操作してみると内部エラー
らしきエラーが出て処理が進まないのです。

Delphi2009はバグだらけという事で諦めるしかないの
でしょうか?

632 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:36:29 ]
いまさらデルピィやる意味あんのか?
gui作るならpythonで十分だろ

633 名前:デフォルトの名無しさん [2009/06/18(木) 21:37:49 ]
>>632
6万もしたのに、この有様です。
泣けてきます。

634 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:43:29 ]
一人で舞い上がってないで操作手順とエラーメッセージくらい書けばいいのに。
CreateParamで具体的に何指定したいかとかさ。

635 名前:デフォルトの名無しさん [2009/06/18(木) 21:45:56 ]
>>634
ありがとうございます。

BS_PUSHLIKEスタイルを付けたいだけなのです。

636 名前:デフォルトの名無しさん [2009/06/18(木) 21:52:31 ]
モジュール 'coreide120.bpl'のアドレス 206B39D7で
アドレス 00000018 に対する読み込み違反がおきました。

というエラーです。



637 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:28:28 ]
ウィザード使わなくたって手で書けばいいじゃん
できたユニットをパッケージにつっこんで
右のプロジェクトマネージャからパッケージを右クリック→
インストールを選択で終わりだろ

638 名前:デフォルトの名無しさん [2009/06/18(木) 22:32:54 ]
>>637
それを試してみたら 636 に書いた例外が
発生して止まってしまいました。

フォームの dfm を手で編集してみると、
その フォームに関係する Pascalのソースファイルが
破壊されます。

639 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:36:41 ]
unit RadioButton1;

interface

uses
 SysUtils, Classes, Controls, StdCtrls;

type
 TRadioButtonEx = class(TRadioButton)
 end;

640 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:37:07 ]
procedure Register;

implementation

procedure Register;
begin
 RegisterComponents('Samples', [TRadioButtonEx]);
end;

end.

641 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:38:09 ]
↑にCreateParamsを実装、パッケージに入れて>>637

642 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 01:06:47 ]
>>638
暇だから作ってみた
ttp://swfup.info/view.php/11076.swf
サイズ情報が間違ってるっぽいので"保存用リンク"を
クリックして見てくれ

643 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 03:57:52 ]
update 3/4は適用した?

644 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 04:53:37 ]
>>643
エラーが出るとか言っているから入れてなさそうだよな

645 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:41:58 ]
>>642
そのまま見れるように直してみた。URLはそのまま

646 名前:ミ,,゚Д゚彡 ◆A6VzDeLphI mailto:sage [2009/06/19(金) 12:27:46 ]
親切ですね



647 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 13:32:54 ]
>>638
ここからUpdate3を落としてインスコしてね
ttp://cc.embarcadero.com/item/26921
日本語Readme ttp://edn.embarcadero.com/article/39592/

>>646 暇は世界を救う

648 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:23:41 ]
楽しい。

type
 TRecHoge = record
  X: Integer;
  Answer: string;
 end;

function Hoge(value: Integer): TRecHoge;
var
 returnValue: TRecHoge;
begin
 if value = 1 then begin
  returnValue.Answer := '戻り値をセットしました。';
  Result := returnValue;
 end;
end;

procedure HogeCall;
var
 buf: TRecHoge;
begin
 buf := Hoge(0);
 ShowMessage(buf.Answer);
 buf := Hoge(1);
 ShowMessage(buf.Answer);
 buf := Hoge(0);
 ShowMessage(buf.Answer);
end;

649 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:33:49 ]
Result または関数名に値を代入せずに関数の実行が終了した場合,関数の戻り値は未定義になります。

650 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:46:58 ]
>>649
その通りなんだけど、レコード型を戻り値にした場合はコンパイラが警告出さないんだよね。

651 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:57:06 ]
value=0のときの記述をするかローカル変数は前もってクリアしておく
このクセを付ければどの言語に移ってもおk

652 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:58:06 ]
日本語がおかしいやw
ローカル変数を前もってクリアしておくというクセを付けとけばいいよと

653 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 17:50:33 ]
>>652
この場合、ローカル変数をクリアするのは解決にならないと思われ

654 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:32:25 ]
Windowsのフォルダ選択ダイアログって開けましたっけ?

655 名前:デフォルトの名無しさん [2009/06/23(火) 18:31:00 ]
> SGet: String;
> if WinExec( PChar( SGet), SW_SHOW) < 31 then

>[DCC エラー] main.pas(1314): E2010 'Char' と 'AnsiChar' には互換性がありません

D2009だと何でエラーになるのですか?

656 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:49:14 ]
>>664
SelectDirectory?

>>655
edn.embarcadero.com/jp/print/38791

って、ここは質問スレじゃない気がする



657 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 21:32:38 ]
ここは未来の質問に答えるスレですか?

658 名前:654 mailto:sage [2009/06/25(木) 08:58:33 ]
>>656
SelectDirectoryってWin標準じゃないですよね?

659 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 09:04:54 ]
Delphiの関数でしょ。

660 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 09:20:05 ]
>>658
マルチ氏ね
pc12.2ch.net/test/read.cgi/tech/1217575832/662-664

661 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 12:47:10 ]
>>648
しばらく触ってなかったが、俺のDel7では
 TRecHoge = record
ですらエラーで受け付けん・・・?何が不正な文字列だ?

662 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 12:48:02 ]
全角スペースが混ざってるとかじゃないの

663 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 15:27:32 ]
うわ、インデントの前のスペースだった・・・
こんなだったっけ?
コピペでそのまま使えた気がするけどな

664 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 18:26:52 ]
全角スペースでインデントすると手っ取り早いからね。
&nbsp;にすればコピペだけでちゃんと動く。

>>650
構造体にはフィールドの内容によってゴミのままの部分も出てくるから
全部代入するのを強制するのは無駄って話だね。

type // Win32APIでまれによくある構造体
    TMyRec = record
        flags: byte; // foo, bar, bazを使うかどうかを指定するビットフラグ;
        foo: Integer;
        bar: Char;
        baz: String;
    end;
     

665 名前:デフォルトの名無しさん [2009/07/10(金) 21:28:27 ]
久しぶりに Delphi2009 使ってみたけど、
Update3/4 適用済でもダメだわこれ。

666 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 10:09:37 ]
Delphi2.0使えば?



667 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:59:56 ]
>>665
どこがどうだめなの?updateしようと思ってるんだけど

668 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 21:51:37 ]
お勧めは Delphi8

669 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:18:04 ]
>>668
Del7だろ常考

670 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:03:31 ]
結局、どうダメなのかよ。generics周りですかね

671 名前:デフォルトの名無しさん [2009/07/16(木) 08:56:16 ]
F1キーを押したときの処理を書きたいのですが、
フォーム毎に書くと大変なので、
TApplicationにやらせたいと思っていますが、
できますか?

672 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 11:15:06 ]
TAppじゃなくTMyForm/TFormEx=class(TForm)でやったら。
これに共通の処理足しまくるとめっちゃ快適になる。
で、使うときはTForm1 = class(TFormEx)とかに書き換えるだけ。

自分ならTAction継承した独自のアクションに
F1のショートカット設定してそっちに振るけどな。

673 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 11:17:29 ]
なるほど、TFormExも検討してみまつ

674 名前:foi.americanprogress.org mailto:age [2009/08/17(月) 17:49:50 ]
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その1
『アパッチ砲はワシが作った』

jbbs.livedoor.jp/bbs/read.cgi/internet/134/1229674638/5062
自分の管理するしたらばで借りた掲示板にて

> 5062 :自動保守 ◆AOIMAD.NZM [] :2009/08/16(日) 00:46:29 ID:nQYgq9jg0
> そもそも、アパッチ砲っていうのは、私が指揮官になった時代に私の先輩たちが導入して
> 先輩たちが命名したもの、っていうかまぁ、そういう砲は今まで存在してないから
> 名前つけなくちゃいけないしw
>
> ってことで、使っているうちに広まった名前なので、それが正式名称になるんじゃないかと。
>
> www.paradisearmy.com/doujin/pasok_apache.htm(俺の先輩が命名)
> www.paradisearmy.com/doujin/pasok_hping.htm(俺が命名?)

※注 「アパッチ砲」の正式名称は「Apache Jmeter」で、もちろん自動焼人の先輩が作ったものではありません


----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください

675 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:58:10 ]
動的配列どころかIntegerですら危険だよ。
threadvar以外のものは全部保護すべき。

676 名前:デフォルトの名無しさん [2009/09/09(水) 10:00:19 ]
Del5で作ったアプリをDel2007に移行してるんだけど、
ボタンを貼り付けても、今風の角が取れたボタンになるFormと、
昔ながらの角張ったボタンになってしまうFormに分かれてしまう。
ボタンのプロパティいじっても今風にならないんだが、なぜなんだ?



677 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 10:59:57 ]
同じように貼ってみて
両方コピーしてメモ帳とかに張ってみたら異なるプロパティ判るんじゃないかな?

678 名前:676 mailto:sage [2009/09/09(水) 11:28:42 ]
>>677
なるほど!
早速やってみます。

679 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 11:32:21 ]
ALT+F12使えよ。

680 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 23:39:57 ]
is演算子、as演算子は
C++でいうdynamic_castとほぼ同じような物ですか?


681 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 03:25:53 ]
未だにD6使いのバカ野郎です。
次の環境を模索してます。

.Net ですか? Win32ですか?

Delphi(Object Pascal)は生き残りますか?

D6から成長してない45歳、会社で唯一人のプログラマっす。


682 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 09:03:21 ]
BCB++で両方やればいいじゃん

683 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 09:11:13 ]
>会社で唯一 人のプログラマ
他のヤツは人じゃないのか

684 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 10:09:25 ]
ただひとりw

685 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 16:51:07 ]
Delphiが生き残ってると言える状況かどうかは別にして
45歳ならDelphiより自分の職業プログラマ人生の方が先に終(ry

686 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 17:43:54 ]
でも、プログラマただ一人ってよくないか?そういうところは開発メインじゃないだろうし。
いわゆる、近所のPCの便利屋さんみたいな立場。
すごい重宝がられているはずだが。



687 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 17:44:37 ]
>>681
マジレスすると.NET(C#)だろ。

688 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 17:02:36 ]
D6で事足りるならD6でいいんじゃない?
Win32で事足りるなら・・・

自営や零細相手に細々とやってるがまだまだD7でいけそう。
用途次第、客ありきなら相手次第やね。維持>発展ならw

689 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 03:12:17 ]
これだけ普及したWin32がそうそう無くなるわけないし、
Win32上でWin16がエミュレーションで動いているようにWin64上にもWin32のエミュレーションがあるから、
仮にWin64がメインストリームになったとしてもWin32で事足りる場面が多いと思う
現実的に考えるとWin64がメインになるのはまだまだ先のことだろうしWin32は安泰

690 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 13:49:53 ]
D6からD2010にすれば、ドトネト、Win32/64、カバーになるんじゃね?
さらにDelがARMプロセッサも将来サポートするとか逝ってるし、って組み込み不要なんだろw
なら、ドトネト系なんか捨てといて、スクリプト系のウェブアプリ作れるようになった方がプラスかも。

691 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 14:25:47 ]
そこまでDelに頼ってやる必要も時間もねーなw

692 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 15:04:34 ]
その前に質問者はすでにDel厨wwwww

693 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 22:20:34 ]
言語がひとつしかできないやつって終わってるね

694 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 22:26:34 ]
Delphi程度なら片手間で習得できないとお話にならない

695 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 01:29:39 ]
>>693
日本語しかまともに喋れない大半の日本人終わったな

696 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 10:15:11 ]
日本語すらもまともに書けないねらー達はどうなる?



697 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 17:31:27 ]
Del厨になる

698 名前:デフォルトの名無しさん [2009/09/24(木) 16:50:32 ]
メインフォームじゃないウィンドウで最小化ボタンを押すと、
タスクバーに入らずデスクトップ左下にアイコン化してしまう(ためタスクバーから復帰できない)のですが、
対処方法はありますか?

699 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 17:40:20 ]
>>698
hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200601/06010024.txt

700 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 17:55:27 ]
d>>699

しかし、ビミョにやりたいことと違う。。。

701 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 18:30:41 ]
>>698
子窓を最小化したときにタスクバーに入れたいなら
ttp://www2.big.or.jp/~osamu/Delphi/Tips/edit.cgi?file=0232.txt&rev=1.3

アプリケーションごと仕舞いたいなら
ttp://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/01178.html

702 名前:デフォルトの名無しさん [2009/10/17(土) 23:35:42 ]
delphi5の初心者です。コンボボックスで「3」を選択した際に、
グリットを可変させて、変数ABCを
1,1にA 1,2にB 1,3にCを
グリット内に書き出したいのですが、わかりません。
どなたか、お知恵を拝借したく思います。
突然の乱入すみません。よろしくお願いします。

procedure TForm1.ComboBox1Change(Sender: TObject);
var
x :integer ;
y :string ;
lp:integer;
z :string;

begin
z:='ABC';
x:=combobox1.ItemIndex ;
y:=combobox1.Items[x];

StringGrid1.RowCount:=StrToInt(y)+1;

// 項目部設定
StringGrid1.Cells[1,0] := '東京';
StringGrid1.Cells[2,0] := '大阪';
StringGrid1.Cells[3,0] := '沖縄';

for lp:=1 to strtoint(y) do begin
StringGrid1.Cells[0,lp] := inttostr(lp);



703 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:26:33 ]
変数ABCなんて無いじゃん

704 名前:デフォルトの名無しさん [2009/10/28(水) 14:19:49 ]
Delphi6のプロジェクトをDelphi2010に移行してとりあえずコンパイルできるようにしようと思って
Char→AnsiChar string→AnsiStringで置換掛けてコンパイルしてみました。
ところが実行時にStrToIntでエラーが出ます。
処理するレコードは固定長レコードなのですがある項目が全角日本語だったり半角だったりするために
Ansiにしたことで変換対象のロケーションが以前と違っていることが判りました。
StrToIntの引数は固定長だしと直値で指定している箇所がたくさんあり、
全角半角を判定してとかはやりたくないのですがいい方法は無いでしょうか?

705 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:39:11 ]
何気に2005以前のユーザーは年末までに買えばアップグレード料金でとか
いう戦略でアップグレードしてる奴多そうだな。


706 名前:704 [2009/10/28(水) 18:35:39 ]
すいません、他スレで聞いてみるので質問を取り消します。



707 名前:デフォルトの名無しさん [2009/11/14(土) 15:36:17 ]
delphi5と6(フリー版)、TURBODELPHIを使っています。
次のようなプログラムを考えています。

プログラムを起動

ファイル(群)を選択

選択したファイル(群)をプログラムに取り込み(一つのファイルにする)パスワードをかける。

取り込み処理終わり


復元処理

プログラムを実行、パスワードを入力

一定回数パスワードを間違えたら、プログラムごとファイルを消去。

こういう事って可能ですか?
取り込み処理では圧縮をしてもしなくても構いませんが、最終的に一つのファイルになるのが必須です。

708 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:31:36 ]
そりゃできるのは当たり前だけど、そういう動作はいかがなものかと思うが

709 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:33:13 ]
第一自身を消去したところであらかじめコピーをされてたら何の意味もない

710 名前:707 [2009/11/14(土) 19:38:02 ]
>>708、709

>>あらかじめコピーをされてたら何の意味もない
それについては次のステップの課題なんだけど、コピーをされたら内部で「パスワード」を変更するようにする。
つまり、永久に開く事が不可能となる、というのを考えている。

>>そういう動作はいかがなものかと思うが
これは、セキュリティ対策の一環としてアイデアが出たモノで、これで決定というわけではない。
ただ、試行して結果が好ましかったら本採用になる。
というわけで、いくつかある仕様の一つなので、今の段階では善し悪しが判定できない。


という事情があります。

711 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 19:48:14 ]
>>710
コピーされたかどうかが分かるぐらいなら、ソフトの不法コピー問題なんて起こらないよ

712 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:09:53 ]
>710
なんか根本的なところが間違ってる、とまではいわないまでも、考え違いをしているような気がする。
もういちどスタートラインに戻って考え直してみてはいかが?

713 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:54:06 ]
>>710
それが可能かどうか判断が付かないレベルでは、作るのは到底無理だと思うよ

714 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:56:31 ]
>>711
ファイルシステムから作れば可能ではあると思うよw

715 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 08:45:08 ]
>>710
まず先に、OSのファイルコピーなどをフックするrootkitをインストールか動作させる必要があるなw

716 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 08:47:03 ]
ああでも、あらかじめコピーしたら意味ないかw他のOSでブートしてコピーとか、ファイル共有越しにコピーとかいくらでも方法あるな



717 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:42:22 ]
すべてのOSに常駐してコピーを監視するウィルスのようなソフトを作るとかw

718 名前:デフォルトの名無しさん [2009/11/15(日) 18:04:25 ]
6なんですが、本体が手に入ったとして、インストール番号とかは現在も取得できるのでしょうか?
以下のURLを見ると、インストール番号などがないと使用許諾コードを取得できないようなのですが。
edn.embarcadero.com/article/33580

719 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:16:41 ]
電話すればいいんだっけ?

720 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 22:29:21 ]
www.eurus.dti.ne.jp/~yoneyama/Word/art/w_art-33.gif
delphiで画像の一番上左から4番目のワードアートと似たような文字を表示したいのですが、
可能でしょうか?
win32apiのパスを使えばできそうだけど、分からないですorz

721 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:36:43 ]
ok

722 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 11:01:05 ]
>>720
Officeのワードアート機能を使うサンプルは見たことがあるけど
直接表示するのは知らないなあ。

723 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 20:42:25 ]
これか?
ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200904/09040002.txt

724 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 20:56:27 ]
>>723
そんな感じです!文字を変形させるのに使う計算が理解できなくて苦しんでます。

www.geocities.jp/asumaroyuumaro/program/winapi/path/flattenpath.html
これを元にやってみてはいるんですが、うまくいかないorz

725 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 17:43:14 ]
までも無料版のdelfaiってあるのですか?

726 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 19:06:18 ]
誰かくだすれ建てないのかな
俺のホストじゃ無理だった



727 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 00:20:06 ]
>>726 俺じゃないが
pc12.2ch.net/test/read.cgi/tech/1259667697/

728 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 17:30:13 ]
デルフォイ デルフォイ

729 名前:デフォルトの名無しさん [2009/12/05(土) 00:23:18 ]
TMemorystreamの基本的な使い方を教えて下さい。
・整数値を書き込む、読み出す
・文字列を書き込む、読み出す
・あるアドレスからあるサイズだけ読み出すってのがわかりません。

730 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 01:53:26 ]
マルチ乙

731 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 09:00:01 ]
>729
その前に派生元であるTStreamの使い方を調べるべきだ。

>730
またお前か。さっさと吊れ。


732 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 16:02:24 ]
さっさと吊れ(キリッ

だってw
くっさww

733 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 19:53:23 ]
キモイ

734 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 23:01:04 ]
>>732
       _, ._   んもー / NMO
     ( ・ω・)
     ○={=}〇,
      |:::::::::\, ', ´
   .wwし w`(.@)wwwwwwww

735 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 23:57:36 ]
さっさと吊れ(キリッ

だってv
くっさvv

736 名前:デフォルトの名無しさん [2009/12/07(月) 22:09:28 ]
case文なんてelseifがあればいらねんじゃね



737 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 23:14:26 ]
     /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ    ___
     /;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、  /     ヽ
    /ヽヽ: ://: :!:,X~::|: /;,,;,/: :/  リ!: ::/ノ  l`ヽl !: : |: : : :l: :l: リ / そ そ お \
   /: : ヽヾ/: : l/::l |/|||llllヾ,、  / |: :/ , -==、 l\:::|: : : :|i: | /   う う  前  |
.   /: : : //ヾ ; :|!: イ、||ll|||||::||    ノノ  イ|||||||ヾ、 |: ::|!: : イ: ::|/   な 思 が
   /: : ://: : :ヽソ::ヽl |{ i||ll"ン    ´   i| l|||l"l `|: /|: : /'!/l     ん う
 ∠: : : ~: : : : : : : :丶ゝ-―-      ,  ー=z_ソ   |/ ハメ;, :: ::|.   だ ん
   i|::ハ: : : : : : : : : : : 、ヘヘヘヘ     、  ヘヘヘヘヘ /: : : : : \,|.   ろ な
   |!l |: : : : : : : : :、: ::\    、-―-,      / : : :丶;,,;,:ミヽ   う  ら
     丶: :ハ、lヽ: :ヽ: : ::\__  `~ "      /: : ト; lヽ)   ゝ
       レ `| `、l`、>=ニ´        ,  _´ : :} `   /
         ,,、r"^~´"''''"t-`r、 _  -、 ´ヽノ \ノ   /    お ・
       ,;'~  _r-- 、__     ~f、_>'、_         |  で  前 ・
      f~  ,;"     ~"t___    ミ、 ^'t         |  は  ん ・
      ,"  ,~         ヾ~'-、__ ミ_ξ丶     |  な  中 ・
     ;'  ,イ ..          ヽ_   ヾ、0ヽ丶    l         /
     ( ;":: |: :: ..          .`,   ヾ 丶 !    \____/
     ;;;; :: 入:: :: ::      l`ー-、   )l   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶

738 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 23:23:22 ]
まあ、10年ぶりにプログラム組もうとしたら、すっかり
頭の中がリセットされていたことに笑いが止まらなかった。

739 名前:デフォルトの名無しさん [2009/12/08(火) 08:17:29 ]
ならデルヒなんてやめとけ

740 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 14:12:11 ]
>>739
      ____
     /      \
    /|   _ =    ミ
   彡  -、 , 、 _,-  ミ _
   { `| ,=・ァ = ,r・=、, |´ }
   ヽ{!  '" , ',:、 '" ,' |}ノ   黙れ小僧!
    |  /`'ー'"ヽ- ト、
__,.-ヽ ノー=-' } /:: \_
: : : : : :/`ー、__ノ-'/ : : : |: :`ー
: : : : く: /:| \_,.-"/:: : : : |: : :
: : : : /: : :|/|:::∧ /:: : : /: : :
: : : :|: : : : :| /:く /:: : : ;\: : : :
: : : :|: : : : :|'::::::::/: : :◎: :/: : : :

741 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:05:26 ]
TStringGridを継承したコンポーネントを作ってるんですが、設計の都合でVCLのGrid.pasを
改造する必要が出てきました。

今作ってるコンポーネント以外にはGrid.pasの変更を波及させたくないので、コンポーネントの
プロジェクトからだけ改造したGrid.pasを参照するようにしたいんですが、うまく行きません。
ソースコード上はAlt+↑で継承元を辿っていくとちゃんと改造したGrid.pasに辿り着くんですが、
いざコンパイルを掛けるとTCustmoGridに追加した変数が認識されずエラーとなります。

こういう場合はどうしたら良いでしょうか?

 A.諦めて継承先のコンポーネントで何とかする
 B.DELPHIが参照しているVCL本体を置き換える。
 C.改造したGrid.pasをGrid2.pasのように別名保存し、コンポーネントのプロジェクト内では
  Grid.pasの代わりにGrid2.pasを参照する。

のような案を考えましたが、他に何か良い案が有れば宜しくお願いします。

742 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:14:00 ]
修正部分だけコーディングしてあとは元のコードを使うようにできるんじゃなかったっけ?
それくらいじゃ対処できないってんならC案だろうけど。

743 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:43:05 ]
>>741
プロジェクトのフォルダに改造したGrid.pasを入れればそっちを参照するんじゃない?
その方法が開発チーム内で許されていればだけど。

744 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 00:33:54 ]
そもそもGrid.pasを改造する必要が本当にあったのか

745 名前:741 mailto:sage [2009/12/14(月) 03:56:07 ]
今作ってるプロジェクトはパッケージなんですが、通常のプロジェクトとは違って>>743の方法が使えないみたいです。
containsにGrids.pasを書くと、
「パッケージ 'vcl' はすでにユニット 'Grids' を含んでいます」
というエラーが発生してコンパイルできません。
containsに書かずにプロジェクトのソースディレクトリにGrids.pasを置くとvclパッケージ内部のGrids.pasが優先して参照されてしまいます。

継承先でどうにかする方法も模索中ですが、TCustomGridがprivateで持っているメンバーにたくさんアクセスする必要があるため難航しています。

746 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 10:30:49 ]
ひょっとして「実行時パッケージを使って構築」にチェック入れてる?
vclを外す事は許されないんだろうか。



747 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:53:58 ]
>>745
対象バージョンが固定ならprivateメンバーにアクセスする方法はいくらでもある
まあ別にバージョン固定じゃなくてもその分分岐すればいいんだけど

748 名前:741 mailto:sage [2009/12/17(木) 19:21:57 ]
>>746

チェックは入れていません。
というかチェックボックスが触れない状態です。

>>747

例えばどんな方法が有るでしょうか?

749 名前:デフォルトの名無しさん [2009/12/17(木) 22:12:16 ]
すみません。教えて下さい。

TClientDataSet が保っているデータセットを
結合して1つのDBGridに表示したいのですが、
どうすればいいでしょうか?

宜しくお願いします。

750 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 23:15:32 ]
>>749
一方のDataSetにFieldKindがfkLookupの
TFieldを用意し、他方のDataSetを参照すればいけそう。な気
がする。

やり方
つttp://docwiki.embarcadero.com/RADStudio/ja/参照項目を
定義する


751 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 23:25:32 ]
>>748
最初に確認すべきだったけど、Delphiのバージョンとエディションは?

752 名前:デフォルトの名無しさん [2009/12/17(木) 23:45:34 ]
>>750
的確なアドバイスありがとうございました。

これで眠れそうです。

753 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 00:05:15 ]
>>748
TObjectからTCustomGridまでに宣言されてるすべてのメンバー変数を抽出して、
それをレコードか何かとして宣言して、インスタンスをそのレコードでキャストすれば直接アクセスできる
それぞれの変数間に詰め物もあるけど、その辺はデバッガでメモリ覗く等して一度調べればOK
多少語弊があるかもしれないけど、簡単に言えばクラスってのは継承できるレコードに過ぎないからね

他にもprivate変数をpublicにしただけのクローンクラスを作ってキャストしても同じ効果が得られる
もちろん目的のprivate変数自体のオフセットが分かってればインスタンスアドレスから直接取り出した方が早いけど
ただしこの説明で何やってるかピンと来なければ危険なのでやらない方がいい

754 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 03:15:07 ]
オブジェクト指向における継承の概念をしっかり理解しない人が
コンポーネント改造しようだなんて10年早い

755 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 04:03:16 ]
こういうことを書いてる人が本当に理解できてた例を見た試しがない

756 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 04:49:30 ]
ftTimestamp型が使えなくて泣いてみたりして



757 名前:デフォルトの名無しさん [2010/01/13(水) 14:25:34 ]
フォルダ作成機能付きのフォルダ選択ダイアログありますか?

758 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 14:33:43 ]
>>757
SelectDirectory(Delphi2009で確認)

759 名前:デフォルトの名無しさん [2010/01/13(水) 16:19:00 ]
BDEを使わずにODBCアクセスってどうやれば良いですか?

760 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 20:57:58 ]
がんばる

761 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 00:03:06 ]
つActiveX


762 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 14:09:31 ]
ActiveXでODBCアクセスって出来ましたっけ?

763 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:30:36 ]
ADOがあるじゃない

764 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:33:45 ]
sites.google.com/site/delphibasics/

765 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:22:08 ]
Delphi の購入で、Pro版かEnt版かで悩んでいます。
開発ターゲットは、SQLServerを使うDBアプリです。

Ent版ならSQLServerのNativeDriverが付いてきますよね。
でも、Pro版でもADOやODBC経由でSQLserverを使えるはず。

ADOやODBC経由と比較し、NativeDriveerが使えるメリットって、
何があるのでしょうか?


766 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:31:43 ]
・Delphi付属のDBコンポーネントが使える
・SQLServerの全機能をDelphiから扱える




767 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:07:41 ]
リモートでDBXを使える(ProはDBXをリモートで使えない)。

768 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 18:51:03 ]
>>767が、とっても重要で見落としてはいけないことを言った

769 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 18:11:25 ]
フォームのクライアント領域の一部に長方形や円を描きたいと思い、フォームのOnPaintで

Self.Canvas.Brush.Color := clBlack;
Self.Canvas.Rectangle(10, 10, 200, 100);

のようにしました。
この描画結果をデザイン時でもに見えるようにするにはどうしたら良いでしょうか?
フォーム自体のコードではデザイン時に無反応なので無理だと判断しています。

そこで、試しにカスタムコンポーネントTDrawTestを作って

constructor TDrawTest.Create(AOwner: TComponent);
begin
 inherited;
 if AOwner is TForm then begin
  FParent := TForm(AOwner);
  FParent.OnPaint := Self.ParentDraw;
  FParent.OnResize := Self.ParentDraw;
 end;
end;

procedure TDrawTest.ParentDraw(Sender: TObject);
begin
 FParent.Canvas.Brush.Color := clBlack;
 FParent.Canvas.Rectangle(10, 10, 200, 100);
end;

のようにしてやり、このコンポーネントを対象のフォームに配置しました。
すると、デザイン時にフォームをリサイズした時に長方形が描画されたのですが、フォームを他の画面の後ろに隠して再び前に出した時など、サイズ変更が伴わない再描画処理では長方形が描画されませんでした。
処理対象のイベントを増やしていけば一応は動作するのでしょうが、根本的に方法がおかしいような気もします。
何か良い方法は無いでしょうか?

770 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 20:03:16 ]
新規作成→ダイアログで作ったダイアログでOKを押しても
条件によって、そのダイアログを表示し続けるにはどうしたらいいですか?


771 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 22:21:30 ]
フォーム(ダイアログ)のOnCloseQueryでCanCloseにFalseを設定する。

772 名前:770 mailto:sage [2010/04/08(木) 10:10:55 ]
トンです。

773 名前:デフォルトの名無しさん [2010/04/13(火) 17:59:42 ]
IdHTTPでgetメソッド行うときってtimeout設定出来ましたっけ?

timeoutでググルと下が出てきましたがエラー一覧だった:

ttp://mrxray.on.coocan.jp/Delphi/plSamples/772_Indy_HTTPGet.htm


774 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 00:28:13 ]
Indy10ならTIdHTTP.ReadTimeoutはどう?

775 名前:773 mailto:sage [2010/04/14(水) 11:42:49 ]
C++ Builder 6なので、TIdHTTP.ReadTimeoutが無いみたいです。

実際に発生しているエラーは、
Getメソッドを繰り返し行って4回目くらいに、Connection Closed Gracefully、が発生です。
どうもPCのスペックが悪いのか(Win7のネットブック)、時間がかかってるのが目に見えるようなのでやっぱタイムアウトかな、と思います。

776 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:54:12 ]
Gracefullyの意味を辞書で調べてくるといいと思うよ^^



777 名前:773 mailto:sage [2010/04/14(水) 13:58:30 ]

>ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200512/05120092.txt
(FTPですが)にも書いてあるように、
VCLコントロールが内部から投げてる例外って意味ですが、
やっぱ、その場合にもエラー処理を行うのが対処みたいで、
正常終了ということでは無さそうです。

実際、
>Connection Closed Gracefully
が発生しているのは、
何十〜何百台あるPCの1、2台だけっぽいです。

778 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:08:50 ]
ネットワークものは素人の推測でどうこうするのではなく、まずはWiresharkでパケットをキャプれ。
話はそれからだ。

TIdHTTP.ReadTimeoutはIndy9にもある。というかあんまり古いバージョンはお勧めしない。
C++Builder6ならIndy9まではあげたほうがいい。

779 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:32:31 ]
>>775
Connection Closed Gracefullyがでるときは大抵POSTミスやら通信ミスってるだけだろ

780 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:24:20 ]
Connection Closed Gracefully自体には悪い意味はなくGracefull shutdown(ttp://msdn.microsoft.com/en-us/library/ms738547%28VS.85%29.aspx)
のことだろ?たぶん。Gracefullな手順踏んで正常にコネクションが切断されただけだろ。
タイムアウトじゃねぇかな。

781 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:33:06 ]
うそ書いた。正常にコネクション切断されたなら、タイムアウトすると矛盾するな。
すまそ。

782 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 14:24:25 ]
HTTP 1.0と1.1の違い知ってる? 前者はコネクションをいちいち切る 後者はつなげたまま

783 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 16:25:23 ]
Delphi 2010に、TurboPower SysToolsをインストールしようとしています。
EDN(エンバカデロデベロッパーネットワーク)のWebページの通りにインストールしたのですが、
コンパイルエラーになってしまいます。
エラーメッセージとエラー箇所のコードを下記に示します。
対処方法を教えていただけないでしょうか?


■エラーメッセージは次の通りです。
 [DCC エラー] StBarC.pas(1751): E2030 case 文のラベルが重複して定義されています
 [DCC 警告] StBarC.pas(1752): W1063 指定された AnsiChar 定数 (#$84) を WideChar に
   拡大変換した結果、情報が失われました

■エラー箇所のコードは次の通りです。
 > procedure GetACode128CDigit (c : Char; var Index : Integer;
 > var bcDigitPos : Integer);
 > var
 > J : Integer;
 >
 > begin
 > case (c) of
 > #130 : bcDigits[bcDigitPos + 1] := 98; {rest are manufactured characters}
 > #131 : bcDigits[bcDigitPos + 1] := 97;  <− ★ここで上記のコンパイルエラーになります★



784 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 19:05:28 ]
AnsiChar(c)

785 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 21:21:42 ]
>>784
ありがとう。やってみます。

Delphi2010+TurboPowerSysToolsのインストール解説ページにソースコードの
変更が必要など書いてなかったです。
必要なら書いてほしいなぁ・・・

786 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 06:25:15 ]
>>783
Delphi 2010に、TurboPower SysToolsをインストールするHPって、
 edn.embarcadero.com/article/40498
だよな。
公式ページに掲載されてる情報なんだから、コード修正なんて不要だと思うのだが。




787 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 13:21:27 ]
やってみてから言えよ屑

788 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 04:57:24 ]
やってみました。

確かに StBarC.pas の数箇所で変更が必要です。
修正箇所は、こんな感じ。

修正前: Case c :
修正後: Case AnsiChar(c) :

修正前: if c in [...]
修正後:if CharInSet(c, [...])


>>787
批判するだけで建設的な意見を書き込めない「無能者」は、
どんな社会でも受け入れられないでしょう。
幸いにも受け入れられる社会を見つけても、そこはキミと同じ無能者
の巣窟だろうね。


789 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 07:31:19 ]
マジになんなよ

790 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 03:45:29 ]
>>788
公式だからと鵜呑みにしたのは無能じゃないの?
馬鹿なの?

791 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:14:30 ]
>>788
見当違いの>>786みたいなレスも社会では受け入れられないよね、無能の屑さん^^

792 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 20:09:24 ]
デルフィアン!

793 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 21:01:59 ]
スペル・デルフィン

794 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 19:51:14 ]
delphi使っている人って、
独法などで研究やっている人が多いんだよね?ちがう?

795 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 00:03:18 ]
ちがうね

796 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 12:00:40 ]
おじゃまします、IDE上で、コード上の大文字/小文字の区別をさせる、何かしらの設定みたいなものって無いんでしょうか
とりあえずヘルプなど当たってみましたが、見つけることができませんでした

例えばMessageBoxとmessageBoxを区別したい(表記が統一されていなければわかるようにしたい)のですが…



797 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 12:04:26 ]
>>796
何したいのかよくわかんないけど、検索のオプションには大小区別のオプションはあるよ。

798 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 15:36:56 ]
なるほど、レスありがとうございます

いえ、色々な人間がコーディングしていると、人によってはMessageBoxだったり、またある人はmessageboxだったり、messageBOXだったり、まちまちになるとソースが読みにくくなるんです。
まぁ一括置換をしてやれば良いんですが、できればコーディングしている段階で、その人がわかるようにコンパイルで弾いてやれないかなと思ったんです

神経質といえば神経質ですね

799 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 13:46:44 ]
Canvasにアルミのヘアライン仕上げみたいな描画をしたいのですが、
やり方載ってるページとか無いですかね?

検索してもPhotoshopでのやり方とかは出てくるんですがねぇ・・・
Bitmapに保存しておいて、それを貼り付ける方法も考えたのですが、
出来れば、コードで描きたいんですけど。



800 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 18:39:30 ]
>799
漏れはプログラムは組めるが絵心が無いんで
Illustratorでヘアライン仕上げみたいな描画をする方法を教えてくれ。
そうしたら実現コード考えてもいい。

801 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 11:34:05 ]
タイマーをいくつも使ってイベントで処理するのと、
マルチスレッドってやつ使うのとは何が違うの?
タイマー使った方がお手軽に並列処理出来ると思ったけど
違うっぽいんで教えてくだしゃぁ

802 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 15:24:36 ]
>>800

すみません、規制で書き込みませんでした。


ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1225706387?fr=shopping_search

こんな感じですが。
よろしくお願いします。



803 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 15:46:02 ]
>>801

タイマーのインターバルを50msec位にして、タイマーのイベントで100msec位かかる処理を行うとどうなりますか?
また、スレッドを50msec毎に作成して100msec位かかる処理を行うとどうなりますか?



804 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 22:31:38 ]
>801
タイマを使うってのはメインスレッドの中で処理が順次行われていくってこと。例えていうなら
中の人が5分おきに電話で起こされて仕事をしてまた寝るってのを繰り返す感じ。だから
処理は並行には行われない。それに対してスレッドのほうは中の人を5人用意してそれぞれに
仕事を割り振って一斉に(でなくてもいいけど)平行して仕事をしてもらう。でも1つしかない
資源は排他的に扱う(一度に一人だけが使用する)ようにしなければならない。

勘違いしやすいのは、タイマはタイマ割り込みではなく、指定した時間が経過したことを
示すフラグでしかない(WM_TIMERはフラグが立ったことの通知)というあたり。

805 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 23:45:33 ]
>>803,804
ありがとうございました。
すっきりしますた。

806 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 01:06:28 ]
>>802
なんかオレにも出来そうだな。
ちょっと書いてみるか。



807 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 12:26:43 ]
複数のスレッドが並列処理されることは保証されるの? 片方のスレッドが停滞することは
ありえないの?

808 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 12:48:02 ]
>>803の答えはどうなるの? タイマは呼び出しスタックが積み上がるイメージだけど

809 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 13:35:27 ]
>>807
マルチタスクで片方のタスクが停滞することはありえないの?

810 名前:806 mailto:sage [2010/05/22(土) 21:35:02 ]
挫折

811 名前:デフォルトの名無しさん [2010/05/24(月) 14:48:48 ]
Exeのアイコンをタスクバーでは非表示にして、
タスクバーのツールバー(?)に表示するには、
どうしたら良いのでしょう?

812 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 15:15:45 ]
タスクトレイ?

813 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 15:51:40 ]
その通りです!!!

タスクバーのアイコンを非表示にして、タスクトレイにアイコンを表示したいでつ。

814 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 16:10:48 ]
そうか。わかった。

815 名前:デフォルトの名無しさん [2010/05/24(月) 16:12:33 ]
教えて下さいorz

816 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 16:23:18 ]
>>815
えっと、質問何だったっけ?



817 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 17:19:24 ]
見つけました:

ttp://kazina.seesaa.net/article/20890953.html

818 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 11:18:13 ]
Delphi 6 を最近始めました。
 シリアル通信で マイクロソフトのActiveX MSCOMM32.OCX を使った場合
 処理の途中でポートが開いているか判別するのに

if MSComm1.PortOpen = False then // クローズ状態
begin
{ ポートがクローズしていた場合の処理 }
end else
begin
{ ポートがオープンしていた場合の処理 }
end;

とやるところを、CommX で
www.moriq.com/apollo/ext/comm/Phi/CommX.html
ttp://www.moriq.com/delphi/CommX106.lzh

TCommX.Handleプロパティ
>property Handle: THandle;
>通信ハンドルの値を示します。

819 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 11:19:16 ]
-続き-

>このプロパティは、拡張のために用意されています。
>また、オープンされていない状態のときは、
>必ず -1 となるので通信コンポーネントの状態を知ることもできます。
とあるので

if CommX1.Handle = -1 then // クローズ状態?
begin
{ ポートがクローズしていた場合の処理 }
end else
begin
{ ポートがオープンしていた場合の処理 }
end;

とやってもポートopen/close 関わらず片一方の処理しかできません。
ポートの開閉状態を知るのに何かコツでもあるのでしょうか?
検索を掛けても、手動でボタンなどを操作するソースばかりでわかりません。
壮絶な勘違いをしているかもしれませんが、教えてください。

820 名前:818-819 です mailto:sage [2010/05/27(木) 17:43:42 ]
半分 自己解決です。
この場合の if CommX1.Handle = -1 then
−1は
Integer型「符号あり整数値」= −1
 じゃなくて
Cardinal(UINT)型 = 4294967295
 になるんですね・・・

又は 16進数で = FFFFFFFF

if CommX1.Handle = 4294967295 then
if CommX1.Handle = $FFFFFFFF then

で逝けました・・・

821 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 21:00:45 ]
つ INVALID_HANDLE_VALUE

822 名前:818-819 です mailto:sage [2010/05/27(木) 22:47:47 ]
>>821 (〃▽〃) おぉそのような文字列があったのですね・・・

しかし、MSCOMM32.OCX から CommX に変えると、シリアル経由で
1秒間隔毎にだらだらと送られてくる文字を足していって #13#10 で区切って文字列にし、
必用な部分を抜いて、別に送ると
これまでの約5倍ほどの遅延が発生するようになってしまいました。

ttp://sourceforge.net/projects/comport/files/
TComPort に切り替えて読み込みの遅延は押さえ込めそうなのですが、
今度は>>818 の処理をさせる書式が見当たりません。
どなたか判る方、教えていただけませんでしょうか?

823 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 22:56:05 ]
遅延はやり方が悪いだけだろ

824 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 23:55:38 ]
>822
つ Connected

825 名前:824 mailto:sage [2010/05/28(金) 00:00:45 ]
>822
あ、OnRxCharのようなデータの受信イベントで処理するのが常道だから。

826 名前:818-819 です mailto:sage [2010/05/28(金) 01:56:16 ]
>>824
行けました・・とサクっと書きたかったのですが、
最初入れていたのが TComPort component version 1.50 で、その書式だとエラー
なんとか比較的新しいコンポーネントに入れなおして突破できました。
ありがとうございました。
>>825 地道に理解していきます m(_ _)m



827 名前:デフォルトの名無しさん [2010/06/18(金) 14:29:38 ]
BDE無しでODBC使いたいです。

828 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 16:33:12 ]
ADOは?

829 名前:827 mailto:sage [2010/06/18(金) 17:01:15 ]
d

実は、C++ Builder 6 なんですが、ADO経由でODBC出来るんでしたっけ?

830 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 17:07:22 ]
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1126289866

831 名前:827 mailto:sage [2010/06/18(金) 17:09:14 ]
d

とりあえず、ADOアクセス検討してみまつ。






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

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

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