Delphi初心者のための寺子屋at TECH
Delphi初心者のための寺子屋 - 暇つぶし2ch488:デフォルトの名無しさん
08/02/27 20:44:10
>>481
ありがとうございます
何をすればアルファブレンドできるかは理解できたんだけども

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

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

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

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

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

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

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

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

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

492:749
08/03/01 20:27:17
>>491
BGRの順番で格納されているのはTColor

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

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

494:デフォルトの名無しさん
08/03/02 13:12:38
>>493
32bit DWORDだとrgbだな

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

495:デフォルトの名無しさん
08/03/04 03:36:32
>>494
何をわけの分からないこと言ってるんだ
同じことだろ

496:デフォルトの名無しさん
08/03/04 04:23:57
サーセンw

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

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

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


498:デフォルトの名無しさん
08/03/04 16:18:08
>>497
35901 = $8C3D

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

499:デフォルトの名無しさん
08/03/04 16:40:25
>>498

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


500:デフォルトの名無しさん
08/03/04 17:35:44
>>499
そりゃ1Byteしか書き込んでいないから。

501:デフォルトの名無しさん
08/03/04 18:29:49
>>500
NumberOfBytes

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


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

503:デフォルトの名無しさん
08/03/04 21:04:31
>>502
すいません、私のレベルが低くていまいちよくわかりません・・・。

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

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


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

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

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

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

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

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

507:デフォルトの名無しさん
08/03/04 23:48:37
>>505
理解できてないから予期しない結果になるんだよ。
URLリンク(msdn.microsoft.com)

508:デフォルトの名無しさん
08/03/05 07:13:00
>>506
>>507

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

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

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

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

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


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

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

511:デフォルトの名無しさん
08/03/05 08:58:03
>>509
>>510

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


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

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

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

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

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

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

ごっちゃにしてない?

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

516:デフォルトの名無しさん
08/03/05 13:53:56
>>512
>>513

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

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

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


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

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

518:デフォルトの名無しさん
08/03/05 20:01:01
>>517
痛いヤツだな
>>493=>>495=>>517なのか?

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

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

519:デフォルトの名無しさん
08/03/06 00:55:23
BSWAPして8だけRORして…

520:デフォルトの名無しさん
08/03/06 02:29:10
>>518
なんか必死だけどちゃんと仕様見てきて言えよ

521:デフォルトの名無しさん
08/03/06 05:12:31
>TColorの$00BBGGRRとは逆になるんだよ

????

522:デフォルトの名無しさん
08/03/06 09:27:41
>>513

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

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

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

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

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

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


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

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



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

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

または、
var
 SendInt:WORD;

として
SendInt := $029A

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


525:デフォルトの名無しさん
08/03/06 12:17:08
色んな理解が足りない。

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

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

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


526:デフォルトの名無しさん
08/03/06 15:50:39
>>524
>>525

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

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

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

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



527:デフォルトの名無しさん
08/03/06 17:38:22
>>526
ヘルプを読めばGetMemとSetLengthの違いがわかります

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


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

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


530:デフォルトの名無しさん
08/03/07 13:51:19
>>517-521
結局どっちなんだよw


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




嘘つきばっかだなw

532:デフォルトの名無しさん
08/03/07 22:39:54
もう放置したら?

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

意味ねぇーー

534:デフォルトの名無しさん
08/03/12 12:35:55
>>533
「意味が無い」ことを説明してるんでは?

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

535:デフォルトの名無しさん
08/03/12 18:38:44
多数じゃなくて、一人だけだろw

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

537:536
08/03/15 16:18:06
わざわざファイルに書き込まなくてもそのままでいけました。。。

538:デフォルトの名無しさん
08/03/15 20:09:45
GPL逃れですか?

539:デフォルトの名無しさん
08/03/27 17:33:47
ほしゅ

540:デフォルトの名無しさん
08/04/11 06:48:24
>>534
間違っています。
以上。
↓次どうぞ

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

542:デフォルトの名無しさん
08/04/16 22:47:59
できないので手動で埋め込んでください。

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

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

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

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

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


546:デフォルトの名無しさん
08/04/17 21:02:21
(FindComponent('Label'+IntToStr(LabelNum))as TLabel).Caption

547:545
08/04/17 21:33:34
助かりました、ありがとうございました!

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

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

550:549
08/05/14 16:16:32
OnClickでできますた。

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

552:デフォルトの名無しさん
08/05/18 02:03:35
>数値で操作できる

いみふめ

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

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

554:デフォルトの名無しさん
08/05/18 11:09:12
'0'..'9'のみ入れさせたいなら
StringGridKeyPressイベントで

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

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

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

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

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

557:デフォルトの名無しさん
08/05/28 19:55:36
Assignを使う。どちらもTStream派生だから。

558:デフォルトの名無しさん
08/05/28 19:59:25
LoadFromStream はないの?

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

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

560:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/11 14:38:25
・名前順なら得点と名前をソートのキーとする
・ランダムなら、得点とランダム値をソートのキーとする

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

563:デフォルトの名無しさん
08/06/22 03:11:13
すみません、他で聞きます。

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

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

565:デフォルトの名無しさん
08/07/23 19:25:23
何がやりたいの?

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

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

567:デフォルトの名無しさん
08/08/08 22:03:58
いやそれ操作したら駄目だろ。

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

569:デフォルトの名無しさん
08/08/10 14:37:09
なにしたいのよ?

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

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

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

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

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

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

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

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

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

577:デフォルトの名無しさん
08/08/29 21:29:26
まあどうしてもやりたいなら止めない。

URLリンク(www.google.com)

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

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

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

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

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


580:デフォルトの名無しさん
08/08/31 11:37:40
>>579

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

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

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

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

と言うことなんだけど。

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

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

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

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

585:デフォルトの名無しさん
08/09/02 03:31:58
>>584
ありがとうございます!
助かりました


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

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

587:デフォルトの名無しさん
08/09/08 20:01:27
ソフト公開所
スレリンク(mitemite板)
こういうスレつくってみた。

588:デフォルトの名無しさん
08/09/09 06:27:01
アップローダもなしに何をどう公開しろと・・・

589:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/10 18:39:03
>>589
とりあえずこういうスレがあるからそちらで聞くとよいと思われ。

【Delphi互換!?】FreePascal【GPL】
スレリンク(tech板)l50



591:589
08/09/11 09:58:00
>>590
ありがとうございました。
教えていただいた、スレを拝見致しまして
無事解決することができました!

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

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

593:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/12 15:03:51
ありがとうございます。
このフォームの上につくるオブジェクトもこれでOKですかね。
いわゆる動的生成をやるってことですよね?

595:デフォルトの名無しさん
08/09/12 15:13:38
そうです。

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



596:デフォルトの名無しさん
08/09/12 15:49:30
ありがとうございました!

597:デフォルトの名無しさん
08/09/17 18:27:00
>>588
アップローダー作ったら公開してくれるの?

598:デフォルトの名無しさん
08/09/18 00:30:44
>>597
半年ROMれ

599:デフォルトの名無しさん
08/09/18 00:35:40
---------半年後----------

600:デフォルトの名無しさん
08/09/18 00:47:11
最終回か…。

601:デフォルトの名無しさん
08/09/20 21:18:10


602:デフォルトの名無しさん
08/10/11 15:50:00
>>529 3の倍数はアホになれ

603:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/18 23:27:22
すなおにD2007

605:デフォルトの名無しさん
08/11/18 23:29:02
>>603
D5持ってたらなんなの?

606:デフォルトの名無しさん
08/11/18 23:35:15
>>604
D2007ではFastCodeの効果ありますでしょうか?

607:デフォルトの名無しさん
08/11/18 23:35:47
>>605
いえ、FastCodeの話です

608:デフォルトの名無しさん
08/11/19 00:44:33
D2007はFastCodeもFastMoveもFastMMも採用済みじゃなかったっけ?

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


610:デフォルトの名無しさん
08/11/19 09:14:53
FastMMは使ってるから何か分かるが、
FastCodeとかFastMoveって何?

611:デフォルトの名無しさん
08/11/19 10:24:37
グーグレ

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

613:デフォルトの名無しさん
08/11/22 11:32:01
バグ恐いからFastMMしか使ってないな

614:デフォルトの名無しさん
09/02/02 18:23:00
ちょうどCompareMemがネックになってたんでちょっと使ってみるかな。

615:デフォルトの名無しさん
09/02/05 13:17:57
>CompareMem
kwsk

616:デフォルトの名無しさん
09/02/19 15:08:18
TMemoryStreamの先頭3バイト削除したりできますか?

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

618:デフォルトの名無しさん
09/02/20 07:53:17
そもそもメモリを削除ってなによ

619:デフォルトの名無しさん
09/02/21 10:04:30
cのscanf相当の関数教えて

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

621:デフォルトの名無しさん
09/02/21 15:21:45
>>619
ないはず

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

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

624:デフォルトの名無しさん
09/03/24 15:18:41
>>623
試すのに1分もかからないと思うが、どうよ?

625:デフォルトの名無しさん
09/06/18 20:49:46
Delphi2009 を使っています。

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

というエラーです。

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

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

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

639:デフォルトの名無しさん
09/06/18 23:36:41
unit RadioButton1;

interface

uses
 SysUtils, Classes, Controls, StdCtrls;

type
 TRadioButtonEx = class(TRadioButton)
 end;

640:デフォルトの名無しさん
09/06/18 23:37:07
procedure Register;

implementation

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

end.

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

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

643:デフォルトの名無しさん
09/06/19 03:57:52
update 3/4は適用した?

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

645:デフォルトの名無しさん
09/06/19 11:41:58
>>642
そのまま見れるように直してみた。URLはそのまま

646:ミ,,゚Д゚彡 ◆A6VzDeLphI
09/06/19 12:27:46
親切ですね

647:デフォルトの名無しさん
09/06/19 13:32:54
>>638
ここからUpdate3を落としてインスコしてね
URLリンク(cc.embarcadero.com)
日本語Readme URLリンク(edn.embarcadero.com)

>>646 暇は世界を救う

648:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/22 16:33:49
Result または関数名に値を代入せずに関数の実行が終了した場合,関数の戻り値は未定義になります。

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

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

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

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

654:デフォルトの名無しさん
09/06/23 17:32:25
Windowsのフォルダ選択ダイアログって開けましたっけ?

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

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

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

656:デフォルトの名無しさん
09/06/23 19:49:14
>>664
SelectDirectory?

>>655
URLリンク(edn.embarcadero.com)

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

657:デフォルトの名無しさん
09/06/23 21:32:38
ここは未来の質問に答えるスレですか?

658:654
09/06/25 08:58:33
>>656
SelectDirectoryってWin標準じゃないですよね?

659:デフォルトの名無しさん
09/06/25 09:04:54
Delphiの関数でしょ。

660:デフォルトの名無しさん
09/06/25 09:20:05
>>658
マルチ氏ね
スレリンク(tech板:662-664番)

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

662:デフォルトの名無しさん
09/06/25 12:48:02
全角スペースが混ざってるとかじゃないの

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

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

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

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

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

666:デフォルトの名無しさん
09/07/11 10:09:37
Delphi2.0使えば?

667:デフォルトの名無しさん
09/07/11 15:59:56
>>665
どこがどうだめなの?updateしようと思ってるんだけど

668:デフォルトの名無しさん
09/07/11 21:51:37
お勧めは Delphi8

669:デフォルトの名無しさん
09/07/11 22:18:04
>>668
Del7だろ常考

670:デフォルトの名無しさん
09/07/12 13:03:31
結局、どうダメなのかよ。generics周りですかね

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

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

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

673:デフォルトの名無しさん
09/07/16 11:17:29
なるほど、TFormExも検討してみまつ

674:foi.americanprogress.org
09/08/17 17:49:50
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

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

URLリンク(jbbs.livedoor.jp)
自分の管理するしたらばで借りた掲示板にて

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

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


----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
スレリンク(sec2chd板)
にて自動焼人 ★までご連絡ください

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

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

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

678:676
09/09/09 11:28:42
>>677
なるほど!
早速やってみます。

679:デフォルトの名無しさん
09/09/09 11:32:21
ALT+F12使えよ。

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


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

.Net ですか? Win32ですか?

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

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


682:デフォルトの名無しさん
09/09/12 09:03:21
BCB++で両方やればいいじゃん

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

684:デフォルトの名無しさん
09/09/12 10:09:25
ただひとりw

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

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

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

688:デフォルトの名無しさん
09/09/13 17:02:36
D6で事足りるならD6でいいんじゃない?
Win32で事足りるなら・・・

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

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

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

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

692:デフォルトの名無しさん
09/09/16 15:04:34
その前に質問者はすでにDel厨wwwww

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

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

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

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

697:デフォルトの名無しさん
09/09/20 17:31:27
Del厨になる

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

699:デフォルトの名無しさん
09/09/24 17:40:20
>>698
URLリンク(hpcgi1.nifty.com)

700:デフォルトの名無しさん
09/09/24 17:55:27
>>699

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

701:デフォルトの名無しさん
09/09/24 18:30:41
>>698
子窓を最小化したときにタスクバーに入れたいなら
URLリンク(www2.big.or.jp)

アプリケーションごと仕舞いたいなら
URLリンク(delfusa.main.jp)

702:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/10/20 00:26:33
変数ABCなんて無いじゃん

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

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


706:704
09/10/28 18:35:39
すいません、他スレで聞いてみるので質問を取り消します。

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

プログラムを起動

ファイル(群)を選択

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

取り込み処理終わり


復元処理

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

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

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

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

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

710:707
09/11/14 19:38:02
>>708、709

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

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


という事情があります。

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

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

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

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

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

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

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

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

719:デフォルトの名無しさん
09/11/15 18:16:41
電話すればいいんだっけ?

720:デフォルトの名無しさん
09/11/18 22:29:21
URLリンク(www.eurus.dti.ne.jp)
delphiで画像の一番上左から4番目のワードアートと似たような文字を表示したいのですが、
可能でしょうか?
win32apiのパスを使えばできそうだけど、分からないですorz

721:デフォルトの名無しさん
09/11/18 23:36:43
ok

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

723:デフォルトの名無しさん
09/11/20 20:42:25
これか?
URLリンク(hpcgi1.nifty.com)

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

URLリンク(www.geocities.jp)
これを元にやってみてはいるんですが、うまくいかないorz

725:デフォルトの名無しさん
09/11/26 17:43:14
までも無料版のdelfaiってあるのですか?

726:デフォルトの名無しさん
09/12/01 19:06:18
誰かくだすれ建てないのかな
俺のホストじゃ無理だった

727:デフォルトの名無しさん
09/12/02 00:20:06
>>726 俺じゃないが
スレリンク(tech板)

728:デフォルトの名無しさん
09/12/03 17:30:13
デルフォイ デルフォイ

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

730:デフォルトの名無しさん
09/12/05 01:53:26
マルチ乙

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

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


732:デフォルトの名無しさん
09/12/05 16:02:24
さっさと吊れ(キリッ

だってw
くっさww

733:デフォルトの名無しさん
09/12/05 19:53:23
キモイ

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

735:デフォルトの名無しさん
09/12/05 23:57:36
さっさと吊れ(キリッ

だってv
くっさvv

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

737:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/07 23:23:22
まあ、10年ぶりにプログラム組もうとしたら、すっかり
頭の中がリセットされていたことに笑いが止まらなかった。

739:デフォルトの名無しさん
09/12/08 08:17:29
ならデルヒなんてやめとけ

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

741:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/11 16:14:00
修正部分だけコーディングしてあとは元のコードを使うようにできるんじゃなかったっけ?
それくらいじゃ対処できないってんならC案だろうけど。

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

744:デフォルトの名無しさん
09/12/12 00:33:54
そもそもGrid.pasを改造する必要が本当にあったのか

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

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

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

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

748:741
09/12/17 19:21:57
>>746

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

>>747

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

749:デフォルトの名無しさん
09/12/17 22:12:16
すみません。教えて下さい。

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

宜しくお願いします。

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

やり方
URLリンク(docwiki.embarcadero.com)参照項目を
定義する


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

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

これで眠れそうです。

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

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

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

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

756:デフォルトの名無しさん
09/12/19 04:49:30
ftTimestamp型が使えなくて泣いてみたりして

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

758:デフォルトの名無しさん
10/01/13 14:33:43
>>757
SelectDirectory(Delphi2009で確認)

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

760:デフォルトの名無しさん
10/01/13 20:57:58
がんばる

761:デフォルトの名無しさん
10/01/14 00:03:06
つActiveX


762:デフォルトの名無しさん
10/01/14 14:09:31
ActiveXでODBCアクセスって出来ましたっけ?

763:デフォルトの名無しさん
10/01/15 10:30:36
ADOがあるじゃない

764:デフォルトの名無しさん
10/03/24 23:33:45
URLリンク(sites.google.com)

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

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

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


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


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

768:デフォルトの名無しさん
10/04/03 18:51:03
>>767が、とっても重要で見落としてはいけないことを言った

769:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/07 20:03:16
新規作成→ダイアログで作ったダイアログでOKを押しても
条件によって、そのダイアログを表示し続けるにはどうしたらいいですか?


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

772:770
10/04/08 10:10:55
トンです。

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

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

URLリンク(mrxray.on.coocan.jp)


774:デフォルトの名無しさん
10/04/14 00:28:13
Indy10ならTIdHTTP.ReadTimeoutはどう?

775:773
10/04/14 11:42:49
C++ Builder 6なので、TIdHTTP.ReadTimeoutが無いみたいです。

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

776:デフォルトの名無しさん
10/04/14 13:54:12
Gracefullyの意味を辞書で調べてくるといいと思うよ^^

777:773
10/04/14 13:58:30

URLリンク(hpcgi1.nifty.com)
(FTPですが)にも書いてあるように、
VCLコントロールが内部から投げてる例外って意味ですが、
やっぱ、その場合にもエラー処理を行うのが対処みたいで、
正常終了ということでは無さそうです。

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

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

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

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

780:デフォルトの名無しさん
10/04/14 22:24:20
Connection Closed Gracefully自体には悪い意味はなくGracefull shutdown(URLリンク(msdn.microsoft.com))
のことだろ?たぶん。Gracefullな手順踏んで正常にコネクションが切断されただけだろ。
タイムアウトじゃねぇかな。

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

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

783:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/16 19:05:28
AnsiChar(c)

785:デフォルトの名無しさん
10/04/16 21:21:42
>>784
ありがとう。やってみます。

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

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


787:デフォルトの名無しさん
10/04/24 13:21:27
やってみてから言えよ屑

788:デフォルトの名無しさん
10/04/25 04:57:24
やってみました。

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

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

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


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


789:デフォルトの名無しさん
10/04/25 07:31:19
マジになんなよ

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

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

792:デフォルトの名無しさん
10/04/27 20:09:24
デルフィアン!

793:デフォルトの名無しさん
10/04/28 21:01:59
スペル・デルフィン

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

795:デフォルトの名無しさん
10/05/11 00:03:18
ちがうね

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

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

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

798:デフォルトの名無しさん
10/05/14 15:36:56
なるほど、レスありがとうございます

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

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

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

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



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

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

802:デフォルトの名無しさん
10/05/17 15:24:36
>>800

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


URLリンク(detail.chiebukuro.yahoo.co.jp)

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



803:デフォルトの名無しさん
10/05/17 15:46:02
>>801

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



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

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

805:デフォルトの名無しさん
10/05/17 23:45:33
>>803,804
ありがとうございました。
すっきりしますた。

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

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

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

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

810:806
10/05/22 21:35:02
挫折

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

812:デフォルトの名無しさん
10/05/24 15:15:45
タスクトレイ?

813:デフォルトの名無しさん
10/05/24 15:51:40
その通りです!!!

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

814:デフォルトの名無しさん
10/05/24 16:10:48
そうか。わかった。

815:デフォルトの名無しさん
10/05/24 16:12:33
教えて下さいorz

816:デフォルトの名無しさん
10/05/24 16:23:18
>>815
えっと、質問何だったっけ?

817:デフォルトの名無しさん
10/05/24 17:19:24
見つけました:

URLリンク(kazina.seesaa.net)

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

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

とやるところを、CommX で
URLリンク(www.moriq.com)
URLリンク(www.moriq.com)

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

819:デフォルトの名無しさん
10/05/27 11:19:16
-続き-

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

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

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

820:818-819 です
10/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:デフォルトの名無しさん
10/05/27 21:00:45
つ INVALID_HANDLE_VALUE

822:818-819 です
10/05/27 22:47:47
>>821 (〃▽〃) おぉそのような文字列があったのですね・・・

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

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

823:デフォルトの名無しさん
10/05/27 22:56:05
遅延はやり方が悪いだけだろ

824:デフォルトの名無しさん
10/05/27 23:55:38
>822
つ Connected

825:824
10/05/28 00:00:45
>822
あ、OnRxCharのようなデータの受信イベントで処理するのが常道だから。

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

827:デフォルトの名無しさん
10/06/18 14:29:38
BDE無しでODBC使いたいです。

828:デフォルトの名無しさん
10/06/18 16:33:12
ADOは?

829:827
10/06/18 17:01:15


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

830:デフォルトの名無しさん
10/06/18 17:07:22
URLリンク(detail.chiebukuro.yahoo.co.jp)

831:827
10/06/18 17:09:14


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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch